pyclbr
— Поддержка браузера модулей Python¶
Источник: Lib/pyclbr.py
Модуль pyclbr
предоставляет ограниченную информацию о функциях, классах и методах, определенных в модуле, написанном на Python. Этой информации достаточно для реализации браузера модулей. Информация извлекается из исходного кода Python, а не при импорте модуля, поэтому этот модуль безопасен для использования с недоверенным кодом. Это ограничение делает невозможным использование данного модуля с модулями, не реализованными в Python, включая все стандартные и дополнительные модули расширения.
- pyclbr.readmodule(module, path=None)¶
Возвращает словарь, отображающий имена классов на уровне модуля на дескрипторы классов. Если возможно, включаются дескрипторы импортированных базовых классов. Параметр module - это строка с именем модуля для чтения; это может быть имя модуля в пакете. Если задан, то path - это последовательность путей к каталогу с предваряющим
sys.path
, которая используется для поиска исходного кода модуля.Эта функция является оригинальным интерфейсом и сохраняется только для обратной совместимости. Она возвращает отфильтрованную версию следующих данных.
- pyclbr.readmodule_ex(module, path=None)¶
Возвращает дерево на основе словаря, содержащее дескрипторы функций или классов для каждой функции и класса, определенных в модуле с оператором
def
илиclass
. Возвращаемый словарь сопоставляет имена функций и классов на уровне модуля с их дескрипторами. Вложенные объекты попадают в дочерний словарь своего родителя. Как и в readmodule, module называет читаемый модуль, а path добавляется к sys.path. Если считываемый модуль является пакетом, то возвращаемый словарь имеет ключ'__path__'
, значением которого является список, содержащий путь поиска пакета.
Added in version 3.7: Дескрипторы для вложенных определений. Доступ к ним осуществляется через атрибут new children. У каждого из них есть новый родительский атрибут.
Дескрипторы, возвращаемые этими функциями, являются экземплярами классов Function и Class. Пользователи не должны создавать экземпляры этих классов.
Функциональные объекты¶
- class pyclbr.Function¶
Экземпляры класса
Function
описывают функции, определяемые операторами def. Они имеют следующие атрибуты:- file¶
Имя файла, в котором определена функция.
- module¶
Имя модуля, определяющего описываемую функцию.
- name¶
Имя функции.
- lineno¶
Номер строки в файле, с которой начинается определение.
- parent¶
Для функций верхнего уровня -
None
. Для вложенных функций - родительская.Added in version 3.7.
- children¶
dictionary
, отображающий имена на дескрипторы для вложенных функций и классов.Added in version 3.7.
Объекты класса¶
- class pyclbr.Class¶
Экземпляры класса
Class
описывают классы, определенные в операторах классов. Они имеют те же атрибуты, что иFunctions
, и еще два.- file¶
Имя файла, в котором определен класс.
- module¶
Имя модуля, определяющего описываемый класс.
- name¶
Имя класса.
- lineno¶
Номер строки в файле, с которой начинается определение.
- parent¶
Для классов верхнего уровня -
None
. Для вложенных классов - родитель.Added in version 3.7.
- children¶
Словарь, отображающий имена на дескрипторы для вложенных функций и классов.
Added in version 3.7.
- super¶
Список объектов
Class
, описывающих непосредственные базовые классы описываемого класса. Классы, которые названы как суперклассы, но которые нельзя обнаружить с помощьюreadmodule_ex()
, перечисляются в виде строки с именем класса, а не в виде объектовClass
.
- methods¶
Словарь
dictionary
, отображающий имена методов на номера строк. Оно может быть получено из более нового словаряchildren
, но оставлено для обратной совместимости.