pyclbr — Поддержка браузера модуля Python


Модуль 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__', значением которого является список, содержащий путь поиска пакета.

Добавлено в версии 3.7: Дескрипторы для вложенных определений. Доступ к ним осуществляется через новый дочерний атрибут. У каждого есть новый родительский атрибут.

Дескрипторы, возвращаемые этими функциями, являются экземплярами классов Function и Class. От пользователей не ожидается создания экземпляров данных классов.

Функциональные объекты

Экземпляры класса Function создают функции, определённые операторами def. У них следующие атрибуты:

Function.file

Имя файла, в котором определена функция.

Function.module

Имя модуля, определяющего функцию.

Function.name

Имя функции.

Function.lineno

Номер строки в файле, с которой начинается определение.

Function.parent

Для функций верхнего уровня None. Родитель для вложенных функций.

Добавлено в версии 3.7.

Function.children

Словарь, отображающий имена в дескрипторы для вложенных функций и классов.

Добавлено в версии 3.7.

Объекты класса

Экземпляры класса Class создают классы, определённые операторами класса. У них те же атрибуты, что и у функций, и ещё два.

Class.file

Имя файла, в котором определён класс.

Class.module

Имя модуля, определяющего класс.

Class.name

Имя класса.

Class.lineno

Номер строки в файле, с которой начинается определение.

Class.parent

Для классов верхнего уровня — None. Родитель для вложенных классов.

Добавлено в версии 3.7.

Class.children

Словарь, отображающий имена в дескрипторы для вложенных функций и классов.

Добавлено в версии 3.7.

Class.super

Список объектов Class, определяющих базовые классы класса. Классы, названные суперклассами, но недоступные для обнаружения с помощью readmodule_ex(), перечислены в виде строки с именем класса, а не как объекты Class.

Class.methods

Имена методов сопоставления словаря с номерами строк. Это может быть получено из более нового дочернего словаря, но остаётся для обратной совместимости.