获取Sphinx automodule的“扁平”成员输出
我正在使用Sphinx的autodoc扩展来为一个模块写文档,我想在文档输出中得到一个模块成员的扁平列表。
我试过使用以下代码:
.. automodule:: modname
:members:
不过,这里有两个问题:
它包含了模块的文档字符串,而我不想要这个。
每个条目的名字前面都有“modname.”的前缀,这完全是多余的(因为这个页面就是专门用来记录这个模块的)
但是,我找不到任何配置选项可以让我选择性地禁用这两个方面,同时还能自动列出所有模块成员。
我现在的计划是直接使用autofunction(等等)并明确列出要记录的成员,但我还是想知道我是否错过了实现我最初想要的简单方法。
更新:我至少找到了第二个问题的解决方法:在conf.py
中设置add_module_names=False
。不过这是一个全局设置,所以并没有真正回答我最初的问题。
1 个回答
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)
需要注意的是,del
这个语句是必须的,因为根据文档的说明,对lines
的修改必须在原地进行(也就是说,如果你创建了一个新的对象,就不管用了)。
最后,你还可以使用name
来过滤掉只有少数几个模块的文档字符串,而保留其他模块的文档字符串。