pyclbr — Suporte a navegador de módulos do Python

Código-fonte: Lib/pyclbr.py


O módulo pyclbr fornece informações limitadas sobre as funções, classes e métodos definidos em um módulo codificado em Python. As informações são suficientes para implementar um navegador de módulos. As informações são extraídas do código-fonte do Python em vez de importar o módulo, portanto, este módulo é seguro para uso com código não confiável. Essa restrição torna impossível o uso deste módulo com módulos não implementados no Python, incluindo todos os módulos de extensão padrão e opcionais.

pyclbr.readmodule(module, path=None)

Retorna um dicionário que mapeia os nomes de classe no nível do módulo aos descritores de classe. Se possível, descritores para classes base importadas estão incluídos. O parâmetro module é uma string com o nome do módulo a ser lido; pode ser o nome de um módulo dentro de um pacote. Se fornecido, path é uma sequência de caminhos de diretório anexada a sys.path, que é usada para localizar o código-fonte do módulo.

Esta função é a interface original e é mantida apenas para compatibilidade reversa. Ela retorna uma versão filtrada da seguinte.

pyclbr.readmodule_ex(module, path=None)

Retorna uma árvore baseada em dicionário que contém uma função ou descritores de classe para cada função e classe definida no módulo com uma instrução def ou class. O dicionário retornado mapeia os nomes das funções e das classes no nível do módulo para seus descritores. Objetos aninhados são inseridos no dicionário filho de seus pais. Como em readmodule, module nomeia o módulo a ser lido e path é anexado ao sys.path. Se o módulo que está sendo lido for um pacote, o dicionário retornado terá uma chave '__path__' cujo valor é uma lista que contém o caminho de pesquisa do pacote.

Novo na versão 3.7: Descritores para definições aninhadas. Eles são acessados através do novo atributo filho. Cada um tem um novo atributo pai.

Os descritores retornados por essas funções são instâncias das classes Function e Class. Não se espera que os usuários criem instâncias dessas classes.

Objetos Função

class pyclbr.Function

Class Function instances describe functions defined by def statements. They have the following attributes:

file

Nome do arquivo no qual a função está definida.

module

O nome do módulo que define a função descrita.

name

O nome da função.

lineno

O número da linha no arquivo em que a definição é iniciada.

parent

For top-level functions, None. For nested functions, the parent.

Novo na versão 3.7.

children

A dictionary mapping names to descriptors for nested functions and classes.

Novo na versão 3.7.

is_async

True for functions that are defined with the async prefix, False otherwise.

Novo na versão 3.10.

Objetos de Class

class pyclbr.Class

Class Class instances describe classes defined by class statements. They have the same attributes as Functions and two more.

file

Nome do arquivo no qual a classe está definida.

module

O nome do módulo que define a classe descrita.

name

O nome da classe.

lineno

O número da linha no arquivo em que a definição é iniciada.

parent

Para classes de nível superior, None. Para classes aninhadas, o pai.

Novo na versão 3.7.

children

Um dicionário que mapeia nomes para descritores para funções e classes aninhadas.

Novo na versão 3.7.

super

A list of Class objects which describe the immediate base classes of the class being described. Classes which are named as superclasses but which are not discoverable by readmodule_ex() are listed as a string with the class name instead of as Class objects.

methods

A dictionary mapping method names to line numbers. This can be derived from the newer children dictionary, but remains for back-compatibility.