import ast from typing import Dict, Any class PythonASTParser: """Parses Python source code to extract symbols and import graphs.""" def parse(self, source_code: str) -> Dict[str, Any]: try: tree = ast.parse(source_code) except SyntaxError: return {"classes": [], "functions": [], "imports": []} symbols = {"classes": [], "functions": [], "imports": []} for node in ast.walk(tree): if isinstance(node, ast.ClassDef): symbols["classes"].append(node.name) elif isinstance(node, ast.FunctionDef): symbols["functions"].append(node.name) elif isinstance(node, ast.Import): for alias in node.names: symbols["imports"].append(alias.name) elif isinstance(node, ast.ImportFrom): if node.module: symbols["imports"].append(node.module) return symbols