# `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.

Adicionado 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.

    Adicionado na versão 3.7.

  children

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

    Adicionado na versão 3.7.

  is_async

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

    Adicionado 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.

    Adicionado na versão 3.7.

  children

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

    Adicionado 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.