Подтвердить что ты не робот

Подключить Sipinx autodoc-skip-member к моей функции

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

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

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)

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

4b9b3361

Ответ 1

Ага, последнее усилие на маленьком googling появилось этот пример, прокрутите вниз. По-видимому, функция 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)

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

Ответ 2

Этот ответ расширяется на ответ 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)