Как я могу извлечь все зависимости объекта Python из функции? - PullRequest
0 голосов
/ 26 июня 2019

Я ожидаю, что здесь придется использовать 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

Спасибо!

...