diff --git a/code_to_data_dependency_graph.py b/code_to_data_dependency_graph.py index 70d85d7..3f909a7 100644 --- a/code_to_data_dependency_graph.py +++ b/code_to_data_dependency_graph.py @@ -1,13 +1,13 @@ import ast -def get_deps(code): +def get_deps(code: str) -> Tuple[Dict[str, int], Dict[str, Set[str]]]: body = ast.parse(code) _, statements = next(ast.iter_fields(body)) # Line no. at which each identifier was first seen - declaration_line_num_map = {} - ddg = {} + declaration_line_num_map: Dict[str, int] = {} + ddg: Dict[str, Set[str]] = {} def update_decls(lhs_vars_input, num): lhs_var_nodes = [] @@ -51,7 +51,7 @@ class MethodLevelDDGs: def __init__(self, code): self.parsed_ast = ast.parse(code) - def get_methods(self): + def get_methods(self) -> List[ast.FunctionDef]: fn_nodes = [] class FnVisitor(ast.NodeVisitor): @@ -90,7 +90,7 @@ def visit_Assign(self, node): return ddg -def fn_ddgs(code): +def fn_ddgs(code: str) -> Dict[str, Dict[str, Set[str]]]: method_level_ddgs = MethodLevelDDGs(code) methods = method_level_ddgs.get_methods() ddgs = {method.name: method_level_ddgs.recursive_ddg(method) for method in methods} diff --git a/var_ddg.py b/var_ddg.py index a8d2e95..5d0356c 100644 --- a/var_ddg.py +++ b/var_ddg.py @@ -2,7 +2,7 @@ class MyVisitor: - def __init__(self, path): + def __init__(self, path: str): self.GLOBAL_FN = ast.FunctionDef(name='_global_') # FunctionDef -> set(x, y) such that x reads y @@ -67,8 +67,10 @@ def ast_visit(self, node, level=0): if is_fn: self.fn_stack.pop() - def construct_ddg(self): + def construct_ddg(self) -> None: self.ast_visit(self.tree) def get_function_level_ddg(self): return {fn.name: value for fn, value in self.fn_to_ddg_map.items()} + def get_function_level_ddg(self) -> Dict[ast.FunctionDef, Set[Tuple[str, str]]]: + return {fn.name: value for fn, value in self.fn_to_ddg_map.items()}