"pyclbr" --- Soporte para navegador de módulos Python
*****************************************************

**Código fuente:** Lib/pyclbr.py

======================================================================

El módulo "pyclbr" proporciona información limitada sobre las
funciones, clases y métodos definidos en un módulo de Python. La
información es suficiente para implementar un navegador de módulos. La
información se extrae del código fuente de Python en lugar de importar
el módulo, por lo que este módulo es seguro de usar con código que no
es de confianza. Esta restricción hace que sea imposible utilizar este
módulo con módulos no implementados en Python, incluidos todos los
módulos de extensión estándar y opcionales.

pyclbr.readmodule(module, path=None)

   Retorna un diccionario que asigna nombres de clase a nivel de
   módulo con descriptores de clase. Si es posible, se incluyen
   descriptores para las clases base importadas. El parámetro *module*
   es una cadena con el nombre del módulo que se va a leer; puede ser
   el nombre de un módulo dentro de un paquete. Si se indica, *path*
   es una secuencia de rutas de directorios antepuesto a "sys.path",
   que se utiliza para localizar el código fuente del módulo.

   Esta función es la interfaz original y sólo se mantiene por
   compatibilidad. Retorna una versión filtrada de lo siguiente.

pyclbr.readmodule_ex(module, path=None)

   Retorna un árbol basado en diccionarios que contiene un descriptor
   de función o clase para cada función y clase definida en el módulo
   con una instrucción "def" o "class". El diccionario retornado
   asigna nombres de clase y función a nivel de módulo con sus
   descriptores. Los objetos anidados se introducen en el diccionario
   hijo de su elemento padre. Al igual que con *readmodule*, *module*
   nombra el módulo que se va a leer y *path* se antepone a sys.path.
   Si el módulo que se lee es un paquete, el diccionario retornado
   tiene una clave "'__path__'" cuyo valor es una lista que contiene
   la ruta del paquete.

Nuevo en la versión 3.7: Descriptores para definiciones anidadas. Se
accede a ellos a través del nuevo atributo *children*. Cada uno tiene
un nuevo atributo *parent*.

Los descriptores retornados por estas funciones son instancias de las
clases Function y Class. No se espera que los usuarios creen
instancias de estas clases.


Objetos Function
================

Las instancias de la clase "Function" describen funciones definidas
por instrucciones def. Tienen los siguientes atributos:

Function.file

   Nombre del archivo en el cual la función está definida.

Function.module

   El nombre del módulo que define la función descrita.

Function.name

   El nombre de la función.

Function.lineno

   El número de línea el en archivo donde inicia la definición.

Function.parent

   Para funciones en el nivel más alto, None. Para funciones anidadas,
   el padre.

   Nuevo en la versión 3.7.

Function.children

   Un diccionario asignando nombres con descriptores para las clases y
   funciones anidadas.

   Nuevo en la versión 3.7.

Function.is_async

   "True" para funciones que están definidas con el prefijo "async",
   de otra manera "False".

   Nuevo en la versión 3.10.


Objetos Class
=============

Las instancias de las clase "Class" describen clases definidas por
instrucciones class. Tienen los mismos atributos que Functions y dos
más.

Class.file

   Nombre del archivo en el que la clase está definida.

Class.module

   Nombre del módulo que define la clase descrita.

Class.name

   El nombre de la clase.

Class.lineno

   El número de línea el en archivo donde inicia la definición.

Class.parent

   Para clases en el nivel más alto, None. Para clases anidadas, el
   padre.

   Nuevo en la versión 3.7.

Class.children

   Un diccionario asignando nombres con descriptores para las clases y
   funciones anidadas.

   Nuevo en la versión 3.7.

Class.super

   Una lista de objetos "Class" que describen las clases base
   inmediatas de la clase que se está describiendo. Las clases que se
   denominan superclases pero que no son detectables por
   "readmodule_ex()" se enumeran como una cadena con el nombre de
   clase en lugar de objetos "Class".

Class.methods

   Un diccionario asignando los nombres de los métodos a sus números
   de línea. Esto se puede derivar del reciente diccionario children,
   pero permanece por compatibilidad.
