2010-09-21 14 views
27

Quiero utilizar el evento sphinx's autodoc-skip-member para seleccionar una parte de los miembros en una determinada clase de python para la documentación.Conectar Sphinx autodoc-skip-member a mi función

Pero no está claro en los documentos de la esfinge, y no puedo encontrar ningún ejemplo que ilustre: ¿dónde coloco el código para conectar esto? Veo Sphinx.connect y sospecho que va en mi conf.py, pero cuando intento variaciones sobre este código en conf.py No puedo encontrar el objeto aplicación que debería conectar():

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 puntero a un simple ejemplo sería ideal.

Respuesta

39

Aha, el último esfuerzo en un pequeño google encontrado this example, desplácese hacia abajo. Aparentemente se llamará a una función setup() en conf.py con la aplicación. Yo era capaz de definir lo siguiente en la parte inferior de mi 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) 

que es obviamente inútil (se salta todo), pero eso es el ejemplo mínimos que estaba buscando y no pudimos encontrar ...

11

Esta respuesta se extiende al answer by bstpierre. A continuación se muestra la parte relevante de mi 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)