2013-05-14 3 views
14

PEP 257 dice: strumenti di elaborazionePEP 257 assestamento docstring nella libreria standard?

docstring elimineranno una quantità uniforme di rientro dal secondo e ulteriori linee della docstring, pari al rientro minimo di tutte le linee non vuote dopo la prima riga. Qualsiasi rientro nella prima riga della docstring (cioè fino alla prima riga nuova) è insignificante e rimosso. Viene mantenuto il rientro relativo delle righe successive nella docstring. Le righe vuote dovrebbero essere rimosse dall'inizio e dalla fine della docstring.

Una funzione trim che implementa questo algoritmo viene quindi visualizzata nel PEP.

Sono in grado di trovare domande in cui le persone chiedono come formattare le docstring e sono riferite a PEP 257 (ad es. this). Vedo anche alcune informazioni sugli strumenti che cercano di garantire che le tue docstring seguano PEP 257 (ad es., this). Quello che non riesco a trovare è una qualsiasi libreria Python che in realtà è uno "strumento di elaborazione docstring" che gestisce le docstring nel modo definito in PEP 257 --- o almeno, non riesco a trovare uno strumento che renda questa elaborazione docstring funzionalità direttamente disponibile.

La funzione trim visualizzata in PEP 257 esiste nella libreria standard? Ovviamente posso incollare la funzione in un file da solo, ma preferirei usarla dalla libreria standard se sto usando un altro computer dove voglio questa funzionalità, invece di copiare e incollare sempre dal PEP. Dato che la funzione è in un PEP coautore dal BDFL, avrei pensato che ci sarebbe stata una libreria ufficiale o semi-ufficiale che lo facesse.

La ragione per cui voglio scrivere è un decoratore che esegue una riformattazione interna di Python delle docstring di classi/funzioni. Non voglio generare HTML o altro; Voglio solo cambiare le attuali didascalie degli oggetti reali. Voglio prendere l'attributo di testo semplice __doc__ di un oggetto Python e riformattarlo in qualcosa che servirà come attributo di testo normale __doc__ di un oggetto Python.

+0

Beh, a occhio, 'sfinge',' pydoc', e tutti lo faranno. –

+0

@Lattyware: ho chiarito un po 'la mia domanda. Potrebbero farlo, ma per quanto posso vedere dai documenti, lo fanno come parte di un'elaborazione molto più pesante e non forniscono alcuna interfaccia per la semplice manipolazione della docstring. Hanno lo scopo di generare HTML, ecc. E non sembrano offrire un modo diretto per cancellare la docstring in chiaro. – BrenBarn

+0

Ho ancora difficoltà a capire cosa intendi qui, ma una buona parte di ciò che fa la sfinge è passare il tuo testo attraverso un parser di testo ristrutturato (con alcune estensioni speciali fornite dalla sfinge), così puoi davvero fare quello che vuoi con esso modo. –

risposta

21

In cerca di una risposta a una domanda correlata, sono riuscito a trovare la risposta a questo. L'algoritmo trim è implementato in inspect.cleandoc, di tutti i luoghi.