Próbuję odwzorować zastosowania/przyczyny funkcji i zmiennych w pakiecie Pythona na poziomie funkcji. Istnieje kilka modułów, gdzie funkcje/zmienne są wykorzystywane w innych celach i chciałabym utworzyć słownik, który wygląda mniej więcej tak:Jak znaleźć wszystkie zastosowania funkcji lub zmiennej Pythona w pakiecie Pythona
{'function_name':{'uses': [...functions used in this function...],
'causes': [...functions that use this function...]},
...
}
funkcji, które mam na myśli muszą być zdefiniowane w modułach pakiet.
Jak mam zacząć od tego? Wiem, że mogę iterację pakietu __dict__
i test funkcji zdefiniowanych w pakiecie wykonując:
import package
import inspect
import types
for name, obj in vars(package).items():
if isinstance(obj, types.FunctionType):
module, *_ = inspect.getmodule(obj).__name__.split('.')
if module == package.__name__:
# Now that function is obtained need to find usages or functions used within it
Ale potem muszę znaleźć funkcje wykorzystywane w bieżącej funkcji. Jak to zrobić? Czy jest coś już opracowanego do tego typu pracy? Myślę, że profilowanie bibliotek może wymagać czegoś podobnego.
sprawdź to https://docs.python.org/2/library/ast.html –
Wygląda obiecująco. Podobno są to "brakujące" dokumenty "ast": https://greentreesnakes.readthedocs.io/en/latest/index.html – pbreach
@Ni. Dziękuję za sugestię tego modułu. Skończyło się na tym, że wprowadziłem coś, co zadziałało. – pbreach