Рубрики
Без рубрики

Получить мета-информацию о модулях Python

Получите дополнительную информацию о модуле Python, как импорт, функции, называемые внутри других функций и т. Д. … Помечено Python, импорт.

Получите дополнительную информацию о модуле 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”