2012-07-16 36 views
19

Al utilizar automodule de la esfinge (http://sphinx.pocoo.org/ext/autodoc.html#directive-automodule),Sphinx, utilizando automodule encontrar submódulos

simplemente escribir en un archivo .rst:

.. automodule:: my_module 
    :members: 

Documenta my_module bien, pero no encuentra los módulos internos como my_module.inner_module0 y my_module.inner_module1. ¿Hay algo que deba especificarse en el archivo __init__.py además de la variable __all__?

Además, conozco sphinx-apidoc. Pero ese comando documenta demasiado (expone cada función/carpeta incluyendo las no documentadas).

Respuesta

25

Parece que quiere dar a la directiva automodule el nombre de un paquete y hacer que se repita en el directorio y documentar cada módulo de Python. Eso aún no es compatible. Deberá especificar el nombre del módulo con puntos completo para cada módulo que desee documentar.

Por ejemplo, dada la siguiente estructura de directorios (de la documentación de Python). No puede especificar .. automodule:: sound.formats y hacer que documente todos los módulos en el directorio. Tendrá que especificar un comando automodule para cada módulo: .. automodule:: sound.formats.waveread, .. automodule:: sound.formats.wavewrite, etc.

sound/       Top-level package 
     __init__.py    Initialize the sound package 
     formats/     Subpackage for file format conversions 
       __init__.py 
       wavread.py 
       wavwrite.py 
       aiffread.py 
       aiffwrite.py 
       auread.py 
       auwrite.py 
       ... 
     effects/     Subpackage for sound effects 
       __init__.py 
       echo.py 
       surround.py 
       reverse.py 
       ... 
1

Me parece que using the :imported-members: option (enlace no directa, no utilizar la búsqueda) Ahora debería ser posible, si las importaciones al __init__.py submódulos.

Sin embargo, personalmente no puedo hacer que esto funcione (todavía).

EDITAR: Posiblemente un known bug.

+0

No creo que esto se resuelva mediante el uso de 'imported-members'. En mi humilde opinión, la respuesta altamente votada de @ devin_s es la correcta (o al menos en el camino correcto). El asker no ha estado activo en Stack Overflow desde agosto de 2013, por lo que parece poco probable que obtengamos su confirmación. – mzjn

+0

Verdadero ... Volver a leer la pregunta, parece que no entendí bien, interpretando a través de la lente de mi propia tarea. Perdón por el ruido. –

Cuestiones relacionadas