将Sphinx autodoc-skip-member连接到我的函数

bst*_*rre 30 python python-sphinx

我想使用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)
Run Code Online (Sandbox Code Playgroud)

指向一个简单示例的指针是理想的.

bst*_*rre 42

啊哈,最后一次用谷歌搜索的努力转向了这个例子,向下滚动到底部.显然,conf.py中的setup()函数将通过app调用.我能够在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)
Run Code Online (Sandbox Code Playgroud)

这显然是无用的(它会跳过一切),但这是我寻找的最小的例子,但是找不到......


Acu*_*nus 11

这个答案扩展了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)
Run Code Online (Sandbox Code Playgroud)