为sphinx自动模块获取"平坦"成员输出

nco*_*lan 15 python documentation python-sphinx

我正在使用Sphinx autodoc扩展来记录模块,我想在文档输出中获得模块成员的平面列表.

我尝试使用以下内容:

.. automodule:: modname
   :members:
Run Code Online (Sandbox Code Playgroud)

但是,这有两个问题:

  1. 它包括模块的文档字符串,我希望在这里.

  2. 每个条目的名称都以"modname."为前缀,这是完全冗余的(因为此页面专门用于记录此模块)

但是,我还没有找到任何配置选项,让我有选择地禁用这两个方面,同时仍然获得所有模块成员的自动列表.

我目前的计划是只使用autofunction(etc)并明确枚举要记录的成员,但我仍然想知道我是否错过了一种简单的方法来实现我原来想要的.

更新:我至少发现第二部分解决方法:设置add_module_names=Falseconf.py.这是一个全球性的环境,所以它并没有真正回答我原来的问题.

jco*_*ado 4

查看类似问题的答案,我发现您可以使用该autodoc-process-docstring事件从模块中删除文档字符串,并将以下代码附加到您的conf.py

def skip_modules_docstring(app, what, name, obj, options, lines):
    if what == 'module':
        del lines[:]

def setup(app):
    app.connect('autodoc-process-docstring', skip_modules_docstring)
Run Code Online (Sandbox Code Playgroud)

请注意,该del语句是必需的,因为根据文档,修改必须lines发生在适当的位置(如果您创建一个新对象,则它不起作用)。

最后,您还可以用来name过滤几个模块的文档字符串,同时保留其他模块的文档字符串。