2010-09-21 14 views
27

Desidero utilizzare l'evento sphinx's autodoc-skip-member per selezionare una parte dei membri su una determinata classe python per la documentazione.Connetti Sphinx autodoc-skip-member alla mia funzione

Ma non è chiaro dai documenti sfinge e non riesco a trovare esempi che illustrino: dove inserisco il codice per connetterlo? Vedo Sphinx.connect e ho il sospetto che va nel mio conf.py, ma quando provo variazioni su questo codice in conf.py Non riesco a trovare l'oggetto applicazione che dovrei connect():

def maybe_skip_member(app, what, name, obj, skip, 
            options): 
    print app, what, name, obj, skip, options 
    return False 

# This is not even close to correct: 
#from sphinx.application import Sphinx 
#Sphinx().connect('autodoc-skip-member', maybe_skip_member) 

Un puntatore per un semplice esempio sarebbe l'ideale.

risposta

39

Aha, l'ultimo sforzo per un po 'su un po' di ricerca su google è stato visualizzato this example, scorrere verso il basso. Apparentemente una funzione setup() in conf.py verrà chiamata con l'app. Sono stato in grado di definire il seguente in fondo alla mia conf.py:

def maybe_skip_member(app, what, name, obj, skip, options): 
    print app, what, name, obj, skip, options 
    return True 

def setup(app): 
    app.connect('autodoc-skip-member', maybe_skip_member) 

che è ovviamente inutile (salta tutto), ma questo è l'esempio minimo che cercavo e non riusciva a trovare ...

11

Questa risposta si estende su answer by bstpierre. Di seguito è la parte rilevante dal mio conf.py:

autodoc_default_flags = ['members', 'private-members', 'special-members', 
         #'undoc-members', 
         'show-inheritance'] 

def autodoc_skip_member(app, what, name, obj, skip, options): 
    exclusions = ('__weakref__', # special-members 
        '__doc__', '__module__', '__dict__', # undoc-members 
       ) 
    exclude = name in exclusions 
    return skip or exclude 

def setup(app): 
    app.connect('autodoc-skip-member', autodoc_skip_member)