Spaces:
Runtime error
Runtime error
File size: 1,267 Bytes
a908fc5 2323639 a908fc5 2323639 a908fc5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import ast
from pprint import pprint
import requests
class CodeAnalyzer:
class NodeVisitor(ast.NodeVisitor):
def __init__(self, imports):
self.imports = imports
def visit_Import(self, node):
for alias in node.names:
self.imports[-1]["imports"].append(
{"module": None, "name": alias.name, "level": -1}
)
self.generic_visit(node)
def visit_ImportFrom(self, node):
for alias in node.names:
self.imports[-1]["imports"].append(
{"module": node.module, "name": alias.name, "level": node.level}
)
self.generic_visit(node)
def __init__(self, python_files):
self.imports = []
self.python_files = python_files
self._node_visitor = CodeAnalyzer.NodeVisitor(self.imports)
def analyze_imports(self):
for python_file in self.python_files:
program = requests.get(python_file["download_url"]).text
tree = ast.parse(program)
self.imports += [{"file_name": python_file["name"], "imports": []}]
self._node_visitor.visit(tree)
return self
def report(self):
pprint(self.imports)
|