2012-07-16 17 views
19

Quando si utilizza automodule di sfinge (http://sphinx.pocoo.org/ext/autodoc.html#directive-automodule),Sfinge, utilizzando automodule trovare sottomoduli

ho semplicemente scrivere in un file di .rst:

.. automodule:: my_module 
    :members: 

documenta bene my_module, ma non trova i moduli interni come my_module.inner_module0 e my_module.inner_module1. C'è qualcosa che deve essere specificato nel file __init__.py oltre alla variabile __all__?

Inoltre, sono a conoscenza della sfinge-apidoc. Ma questo comando documenta troppo (espone ogni funzione/cartella inclusi quelli non documentati).

risposta

25

Sembra che tu voglia dare alla direttiva automodule un nome di pacchetto e farlo recurse nella directory e documentare ogni modulo Python. Questo non è ancora supportato. Per ogni modulo che si desidera documentare, sarà necessario specificare il nome completo del modulo punteggiato .

Ad esempio, data la seguente struttura di directory (dalla documentazione di Python). Non è possibile specificare .. automodule:: sound.formats e farlo documentare tutti i moduli nella directory. Si dovrà specificare un comando automodule per ogni modulo: .. automodule:: sound.formats.waveread, .. automodule:: sound.formats.wavewrite, ecc

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

Mi sembra che using the :imported-members: option (link non diretta, non utilizzare la ricerca) dovrebbe essere possibile, se __init__.py importa chi sottomoduli.

Tuttavia, personalmente non sono in grado di farlo funzionare (ancora).

MODIFICA: Possibilmente uno known bug.

+0

Non penso che questo sia risolto usando 'imported-members'. IMHO, la risposta in altavanza di @ devin_s è quella corretta (o almeno sulla strada giusta). Il richiedente non è stato attivo su Stack Overflow da agosto 2013, quindi sembra improbabile che otterremo una conferma da lui. – mzjn

+0

Vero ... Rileggere la domanda, sembra che io abbia frainteso, interpretando attraverso la lente del mio compito. Ci scusiamo per il rumore. –

Problemi correlati