Получите дополнительную информацию о модуле Python, как импорт, функции, называемые внутри других функций и т. Д.
Установка
pip install py-module-info
Зачем использовать это?
Ну идк, проверять
Модуль в Python требует, чтобы вы импортировали модуль. Этот пакет не требует от вас, чтобы импортировать, а просто смотрит на файл Python, как обычный текстовый файл и анализирует его. Проблема с импортом заключается в том, что она может выполнить код, который может навредить вашему компьютеру. Так что, может быть ?
Что оно делает?
Получить информацию о импорте использовал
# test.py import json import pprint as p from typing import List as l from json import load, dump as d from py_module_info.main import ModuleInfo
Чтобы получить импортированные имена
from py_module_info import ModuleInfo m = ModuleInfo("test.py") imports = m.get_imports() print(imports.get_imported_names()) # output ['json', 'pprint', 'List', 'load', 'dump', 'ModuleInfo'] # in order to get the alias names used print(imports.get_imported_names(use_alias=True)) # output ['json', 'p', 'l', 'load', 'd', 'ModuleInfo']
Чтобы получить литеральную импортную строку в использовании модуля
from py_module_info import ModuleInfo m = ModuleInfo("test.py") imports = m.get_imports() print(imports.get_import_strings()) # output ['import json', 'import pprint', 'from typing import List', 'from json import load', 'from json import dump', 'from py_module_info.main import ModuleInfo'] # use alias names insted print(imports.get_import_strings(use_alias=True)) # output ['import json', 'import pprint as p', 'from typing import List as l', 'from json import load', 'from json import dump as d', 'from py_module_info.main import ModuleInfo']
Примечание
- Импорт будет разделен на индивидуальный импорт:
import test, json
- станет
import test import json
Получить информацию о функции в модуле.
# test.py import json from pprint import pprint def foo(): pprint({"Hello": "World"}) with open("test.json") as f: print(json.load(f))
Чтобы получить информацию о функциях использовать
from py_module_info import ModuleInfo m = ModuleInfo("test.py") print(m.get_funcs_info()) # output {'foo': {'args': [], 'defaults': [], 'arg_count': 0, 'calls': ['json.load(f)', 'open("test.json")', 'pprint({"Hello": "World"})', 'print(json.load(f))']}}
Выходные данные включают в себя функцию ARGS, передаваемые в функцию, значение по умолчанию для аргументов, подсчет аргумента, и все вызовы функций, которые произошли внутри функции.
Вызовы функций все расширены и включают в себя весь строку вызова.
Для того, чтобы получить только функциональные звонки
from py_module_info import ModuleInfo m = ModuleInfo("test.py") print(m.get_funcs_info(only_func_name=True)) # output {'foo': {'args': [], 'defaults': [], 'arg_count': 0, 'calls': ['load', 'open', 'pprint', 'print']}}
Получить информацию о классах в модуле
# test.py class Foo(A.Test): def __init__(self, name): self.name = name def n(): pass class Bar(): def a(): print('Hello')
Чтобы получить информацию о классах в использовании модуля
from py_module_info import ModuleInfo m = ModuleInfo("test.py") print(m.get_classes_info()) # output {'Foo': {'bases': ['A.Test'], 'methods': {'__init__': {'args': ['self', 'name'], 'defaults': [], 'arg_count': 2, 'calls': []}, 'n': {'args': [], 'defaults': [], 'arg_count': 0, 'calls': []}}}, 'Bar': {'bases': [], 'methods': {'a': {'args': [], 'defaults': [], 'arg_count': 0, 'calls': ["print('Hello')"]}}}}
В настоящее время вывод включает информацию о базовых классах и информации о различных методах в классе.
Оригинал: “https://dev.to/adwaithrajesh/get-meta-info-about-python-modules-c72”