Подключите Sphinx autodoc-skip-member к моей функции - PullRequest
29 голосов
/ 21 сентября 2010

Я хочу использовать событие sphinx autodoc-skip-member , чтобы выбрать часть членов определенного класса python для документации.

Но из документов sphinx не ясно, и я не могу найти примеров, которые иллюстрируют: где я могу поместить код, чтобы соединить это? Я вижу Sphinx.connect и подозреваю, что он идет в моем conf.py, но когда я пробую варианты этого кода в conf.py, я не могу найти объект приложения, к которому я должен подключиться ():

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)

Указатель на простой пример был бы идеальным.

Ответы [ 2 ]

41 голосов
/ 21 сентября 2010

Ага, последнее усилие по небольшому поиску в Google оказалось в этом примере , прокрутите вниз до самого дна. По-видимому, функция setup () в conf.py будет вызываться вместе с приложением. Я смог определить следующее в нижней части моего 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)

Что явно бесполезно (оно пропускает все), но это минимальный пример, который я искал и не смог найти ...

11 голосов
/ 30 января 2014

Этот ответ расширяется до ответа от bstpierre . Ниже приведена соответствующая часть из моего 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)
...