Domanda

Questa domanda è ancora più difficile oggi perché non ho avuto alcuna fortuna utilizzando la funzione di ricerca nella home page Sfinge oggi.

Ho un gruppo di moduli che voglio essere documentati dalle docstring. Tuttavia, questi non sono gli script Python puri. Essi non compilare come è, perché sono gestiti da un'applicazione C # che crea una nuova variabile nel campo di applicazione di esecuzione.

Per il compilatore Python, sembra che io ho un metodo non definito (che, tecnicamente io fare, fino a quando C # crea il motore di script IronPython e crea il metodo).

Quando eseguo:

sphinx-build -b html output/html

ottengo:

NameError: name 'injected_method' is not defined

Come faccio ad avere Sfinge di ignorare errori di compilazione e solo generare la mia documentazione?

EDIT:

Se qualcuno sa se in alternativa alla Sfinge (come Epydoc) non deve compilare lo script Python per ottenere le firme di funzione e docstring, che sarebbe utile pure. Sfinge è il miglior generatore di documentazione cercando, ma io abbandonarlo se devo.

È stato utile?

Soluzione 3

Va bene, ho trovato un modo per aggirare gli errori.

Quando si imposta l'ambiente di scripting embedded, invece di usare:

ScriptScope.SetVariable("injected_method", myMethod);

Ora sto usando:

ScriptRuntime.Globals.SetVariable("injected_method", myMethod);

E poi, nello script:

import injected_method

Poi ho creato un file injected_method.py fittizio nel mio percorso di ricerca, che è vuoto. A cancellare il file fittizio durante la costruzione del mio progetto C # per evitare eventuali conflitti.

Altri suggerimenti

Bene, si potrebbe provare:

  • Avvolgere l'utilizzo di injected_method in un try / except.
  • Scrittura di uno script che filtra tutti python-codice che viene eseguito in tempo di importazione, e alimenta il risultato in Sfinge.
  • Si potrebbe .... ok, non ho più idee. :)

Forse si potrebbe definire come una funzione injected_method vuoto in modo che la documentazione funzionerà. Avrai bisogno di fare in modo che la definizione di injected_method che si sta iniettando accade dopo il nuovo stub injected_method.

#By empty function I mean a function that looks like this
def injected_method():
  pass
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top