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

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

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

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

class pyclbr.Function

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

file

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

module

Название модуля, определяющего описываемую функцию.

name

Название функции.

lineno

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

parent

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

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

children

A dictionary сопоставление имен с дескрипторами для вложенных функций и классов.

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

is_async

True для функций, которые определены с префиксом async, False в противном случае.

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

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

class pyclbr.Class

Экземпляры Class Class описывают классы, определенные инструкциями class. Они имеют те же атрибуты, что и Functions и еще два.

file

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

module

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

name

Название класса.

lineno

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

parent

Для классов верхнего уровня - Нет. Для вложенных классов - родительский.

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

children

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

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

super

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

methods

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

Вернуться на верх