【问题标题】:Get "flat" member output for sphinx automodule获取 sphinx 自动模块的“平面”成员输出
【发布时间】:2011-11-13 08:12:48
【问题描述】:

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

我尝试使用以下方法:

.. automodule:: modname
   :members:

但是,这样做有两个问题:

  1. 它包含模块的文档字符串,我在此处不需要

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

但是,我找不到任何配置选项可以让我有选择地禁用这两个方面,同时仍然自动列出所有模块成员。

我目前的计划是仅使用自动功能(等)并明确枚举要记录的成员,但我仍然想知道我是否错过了实现我最初想要的简单方法。

更新:我至少找到了第二部分的解决方法:在conf.py 中设置add_module_names=False。不过这是一个全局设置,所以它并不能真正回答我最初的问题。

【问题讨论】:

  • 您应该将您的解决方案添加为答案,而不是评论,以便对其进行投票。
  • 已更新以更清楚地表明我从未真正回答过我最初的问题 - 我只是找到了其中一部分的部分解决方法。我现在怀疑根本没有一种简单的方法可以做我最初想做的事情。 (我对它的渴望已经消退,因为我改进了文档相关部分的结构)。

标签: python python-sphinx autodoc


【解决方案1】:

查看此answer 到类似问题,我发现您可以使用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 过滤仅几个模块的文档字符串,同时保留其他模块的文档字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多