in example_zoo/tools/source_finder.py [0:0]
def process_script(self, path):
# side effect: updates set self.externals and dict self.script_imports (adding value only for key = path)
# returns the script_imports of the processed script
with open(path, 'r') as f:
code = f.read()
tree = ast.parse(code)
self.script_imports[path] = set([])
for node in tree.body:
if node.__class__ is ast.Import:
module_names = [alias.name for alias in node.names]
elif node.__class__ is ast.ImportFrom:
parent_module_name = node.module
module_names = ['{}.{}'.format(parent_module_name, alias.name) for alias in node.names]
else:
continue
for module_name in module_names:
if module_name.startswith(self.package_name):
self.script_imports[path].add(module_name)
else:
self.externals.add(module_name)
return self.script_imports[path]