Я ожидаю, что здесь придется использовать ast
, но в данный момент я не знаком с ним.
Пример:
src/
file1.py
file2.py
file3.py
file4.py
file1.py
import numpy as np
from file2 import second_function, CONSTANT
def first_function(a):
b = np.sum(a) * CONSTANT
return second_function(b)
file2.py
import numpy as np
from file3 import third_function
CONSTANT = 3
def second_function(a):
c = a*2
return third_function(c)
file3.py
from file4 import unnecessary_thing
def third_function(a):
return a
каждая функция вызывает следующую с несколькими битами между ними. Я хочу иметь возможность запустить это:
>>> from file1 import first_function
>>> deps = get_dependencies(first_function)
>>> print(deps)
[file2.CONSTANT, file2.second_function, file3.third_function]
Мне наплевать на numpy или другие внешние установленные модули.
Есть ли способ сделать это? Я думаю ast.NodeVisitor
Спасибо!