2012-07-10 12 views
9

Ho un codice che utilizza una metaclasse in python. Ma quando autodoc sfinge viene eseguito si sta dando l'errore:Spodx autodoc restituisce ATTENZIONE: py: destinazione di riferimento di classe non trovata: avviso di tipo

WARNING: py:class reference target not found: type

L'errore è che si verificano in una linea di un auto generato file di .rst:

.. automodule:: API.list.blockList 
    :members: # this is the line in error 
    :show-inheritance: 

E blocklist estende API.list. elenco che ha \__metaclass__ impostato sul mio metaclasse.

Da quello che posso dire, la sfinge non pensa che esista la classe del tipo incorporato. Ho provato a importare il tipo builtin per far capire alla sfinge che è lì ma non ha funzionato.

Se rimuovo l'assegnazione alla metaclasse da API.list.list e rimuovo la metaclasse dal codice, la sfinge funziona perfettamente.

+1

Potete fornire un esempio minimo che lo attiva? – Nikratio

risposta

6

Questo è semplicemente un bug nei documenti Python stessi - i riferimenti ad alcuni dei built-in Python (incluso type) non risolvono correttamente (vedere, ad esempio https://bugs.python.org/issue11975).

Per disattivare l'avviso è possibile aggiungere l'opzione nitpick_ignore alla configurazione di Sphinx. Per esempio sul progetto Astropy che abbiamo:

nitpick_ignore = [('py:class', 'type')] 

Infatti, ci siete abbastanza eccezioni che abbiamo appena metterli tutti in un file separato che li leggiamo fuori. Vedere:

https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/conf.py#L195

e per il file delle eccezioni in sé:

https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/nitpick-exceptions

Molte delle eccezioni nel file di cui sopra sono specifici per Astropy, ma altri si rivolgono alcuni riferimenti rotti in Python e in Numpy e può essere genericamente utile.

Problemi correlati