diff --git a/scripts/helpers/imports.py b/scripts/helpers/imports.py index ac949d2a8f3a7743afb68e516004774aaa92138b..042d01e063217ca92d023bbfdd31cd98b1dee708 100644 --- a/scripts/helpers/imports.py +++ b/scripts/helpers/imports.py @@ -7,6 +7,25 @@ def get_module_names(node: ast.Import): return names +def import_names(node): + result = [] + if isinstance(node, ast.Import): + print("\t", ",".join(get_module_names(node))) + result.extend(get_module_names(node)) + elif isinstance(node, ast.ImportFrom): + print("\t", node.module) + result.append(node.module) + + if isinstance(node, ast.Try): + for child in ast.iter_child_nodes(node): + result.extend(import_names(child)) + for handler in node.handlers: + for child in ast.iter_child_nodes(handler): + result.extend(import_names(child)) + + return result + + def get_imported_files( fn, modules=None, @@ -22,12 +41,10 @@ def get_imported_files( current_modules = [] with open(fn) as f: + print(f"Reading {fn}") root = ast.parse(f.read(), fn) for node in ast.iter_child_nodes(root): - if isinstance(node, ast.Import): - current_modules.extend(get_module_names(node)) - elif isinstance(node, ast.ImportFrom): - current_modules.append(node.module) + current_modules.extend(import_names(node)) current_modules = sorted(list(set(current_modules))) for module in current_modules: