2012-06-04 13 views
22

Sto costruendo un pacchetto Python e usando Sphinx per creare i documenti. A parte il mio codice pacchetto, includo anche molti script Python a riga di comando, che usano argparse. Mi stavo chiedendo se c'è un modo per ottenere Sphinx per autocalizzare questi script? L'obiettivo finale sarebbe un elenco di script ben stampato, con la stampa, gli argomenti e le opzioni di aiuto associati. E per essere chiari, sto cercando un modo preesistente per farlo, non un modo per implementarlo da solo.Sphinx e argparse - script della riga di comando di autodocumentazione?

Questo non è specifico di una domanda, come di solito chiedo su S.O., se c'è un S.E. più appropriato. sito per pubblicare questa domanda, per favore fatemelo sapere. Grazie.

+0

Unrelated, ma potrebbe essere utile. Controlla il pacchetto plac su PyPI. –

+0

Non penso che mi aiuti con questo, ma interessante, grazie per l'heads-up. – jeremiahbuddha

risposta

16

È possibile utilizzare sphinxcontrib.programoutput per includere i messaggi della guida dalla riga di comando nella documentazione.

Questo non è specifico per argparse ma può essere utilizzato per documentare qualsiasi messaggio di aiuto per la stampa di script sulla riga di comando.

16

Usa sfinge-argparse estensione:

http://sphinx-argparse.readthedocs.org/en/latest/

+1

Eccellente. C'è un modo per avere il blocco di "utilizzo" trattato in modo diverso? Per me, averlo come blocco letterale non è giusto. – orome

+1

E mentre ci sono, sarebbe bello dell'output per le opzioni abbinate a ciò che '.. option ::' produce: solo flags (nessun valore predefinito indicato), allineato tutto a sinistra con meno rientro per la descrizione , e cambiando la prima lettera in maiuscolo e aggiungendo un punto alla fine se uno non è già lì (poiché l'idioma per '--help' è di ometterli e usare tutto in minuscolo). Forse anche le voci di flag che corrispondono all'aiuto aiutano a produrre più da vicino (ad esempio '-cols [COL [COL ...]]' piuttosto che solo 'cols'), poiché tutto il testo è scritto in quel contesto. – orome

+0

Sembra avere un errore: http://pastebin.com/jXAz1qHw –

2

È possibile utilizzare sphinxcontrib.autoprogram. pip install sphinxcontrib-autoprogram, poi mettere

extensions += ['sphinxcontrib.autoprogram'] 

nel vostro conf.py. Per documentare comando cli.py importando cli con l'argparse parser oggetto parser (che può essere un'espressione Python, come una funzione get_parser()), utilizzare

.. autoprogram:: cli:parser 
    :prog: cli.py 
Problemi correlati