scalpel - Scalpel is a Python library integrating classical program anaysis algorithms with tailored features for Python language. It aims to provide simple and efficient solutions to software engineering researchers that are accessible to everybody and reusable in various contexts...call_graph - A call graph depicts calling relationships between subroutines in a computer program. It is an essential component in most static analysis and can be leveraged to build more sophisicated applications such as profiling, vunerability propagation and refactoring.pycg - This file is a wrapper of the pycg, a practical python call graph generator. Please refer to: 1. https://github.com/vitsalis/PyCG 2. https://pypi.org/project/pycg/ 3. Vitalis Salis, Thodoris Sotiropoulos, Panos Louridas, Diomidis Spinellis and Dimitris Mitropoulos...cfg - The control-flow graph(CFG) is an essential component in static flow analysis with applications such as program optimization and taint analysis. scalpel.cfg module is used to construct the control flow graph for given python programs...builder - This implementation provides interface to build CFG(Control Flow Graph) of python files using AST (Abstract Syntax Tree). The CFGBuilder class works by walking through an AST and creating a new block for each statement...model - The module provides interface for CFG Class, which is a control flow graph (CFG) representation of a Python function or module. It is a directed graph with basic blocks as nodes and control flow jumps as edges...core - This module provides some of the core utilities of the Scalpel framework. This includes Visitor functions for classes, function definitions and calls, as well as other visitor utilities. This module also provides an interface for MNode class...base - Undocumentedscalpel_class - Undocumentedscalpel_method - Undocumentedscalpel_module - Undocumentedstmt - Undocumentedassign_stmt - Undocumentedinvoke_stmt - Undocumentedstmt - Undocumentedclass_visitor - This module extends Generic Node Visitor to visit all the Class defined within the m“node and also function definitions of the class.fun_def_visitor - This module extends Generic Node Visitor to visit different Function Definitions within the Node.func_call_visitor - The module implements the Visitor class for different Function Calls within the Node. This also provides interfaces for Function Call Transformations.kw_visitor - The module implements the Visitor class for different keywords within the Node.mnode - In this module, Scalpel provides the interface to users. Each of Python source files are fed into this module to generate a frontend object for both parsing and code instrumentation. In addition, scope information can also be given for fine-grained operations.source_visitor - This module implements a Visitor Object that collects information about the keywords used in functions and the classes that classes inherit from.util - This module provides implementation of various Utilities functions and classes for finding local modules nad iterating over different objects(i.e., statements, child nodes and fields) within the provided node.vars_visitor - This module provides a visitor class that can be used to visit all variables in a Python AST.visitors - Node visitors used for type Inference and other utilities. The abstract class is extracted from mypy project at [here](https://github.com/python/mypy/blob/master/mypy/visitor.py). This module is not intended for creating APIs._scope_graph - Undocumentedduc - This module implements a DUC class for define-use chain construction.file_system - FileSystem module for Scalpel. The original import graph will be removed while the similar functionalities are implemented in this module. The purpose of this component is to support modelling large Python project structure in a simplified way...import_graph - scalpel.import_graph is data structure for contructing an import graph of a python project. An import graph represents the dependency relationship of module files in the given project. This information can be important to understand the import flow, hierarchy, encapsulation as well as software architecture...import_graph - The module provides data structure to build import graph of a python project which represents the import relationships between different modules in the project, which can be used for program analysis.rewriter - The objective of rewriting module of Scalpel is to provide APIs that allow users to rewrite their code implementation. This can be used for various purposes such as code desugaring (removing code sugar usages), testing and code instrumentation...SSA - Static Single Assignment (SSA) is a technique of IR in the compiling thoery, it also shows great benefits to static anaysis tasks such as constant propagation, dead code elimination and etc. Constant propagation is also a matured technique in static anaysis...alg - In this code we include a lightweight adaption algorithm for dominating relationships computing. The code is adapted from Networkx Please see the original one at https://networkx.org/documentation/stable/_modules/networkx/algorithms/dominance.html#dominance_frontiers...const - In this module, the single static assignment forms are implemented to allow further analysis. The module contain a single class named SSA.def_use - In this module, We implement def-use chain structure for Scalpel framework. A def-use chain is a data structure that consists of a definition of a variable and all the uses of that variable. A def-use chain is a step in liveness analysis, so that logical representations of all the variables can be identified and tracked through the code.ssa - In this module, the single static assignment forms are implemented to allow further analysis. The module contain a single class named SSA.typeinfer - scalpel.typeinfer is provided for automatic type inference to facilitate static analysis for Python programs. The analyser takes a python file or the root folder of a whole package as input, and will output a dictionary of detailed type information for each variable...analysers - This module contains a set of helper classes for type inference, e.g. a few ast visitors for extracting data, heuristic functions, etc.classes - This module contains a set of data classes.folding - Constant folding of expressions. This is an implementation of expression node evaluation. The function serves as an alternative to ast.literal_eval(). For example, 4 + 5 can be constant folded into 9.typeinfer - This module is the main module of typeinfer. The module contains a single class named TypeInference which processes files and infer types.utilities - Utilities for type inference moduleutil - The module provides utility functions such as finding all the files with specified flag (i.e., py files) and checking python extensions.