【问题标题】:Can I use Sphinx automodule but drop the module name in the signature?我可以使用 Sphinx 自动模块但在签名中删除模块名称吗?
【发布时间】:2019-04-18 17:17:27
【问题描述】:

我有一个模块 mod 和一些子模块 submod 并使用 .. automodule:: mod.submod 为其生成文档。

模块中元素(函数、类等)的签名现在显示限定名称,例如mod.submod.my_function(*args, **kwargs)

我希望 Sphinx 只显示函数的名称,即签名 my_function(*args, **kwargs)

我有什么方法可以删除签名中的前导模块和子模块吗?

【问题讨论】:

    标签: python python-sphinx autodoc qualified-name sphinx-napoleon


    【解决方案1】:

    是的,在docs/mod/submod.rst 试试这个:

    .. automodule:: mod.submod
    
        .. autofunction:: my_function
    

    请参阅 Pyramid 文档中的示例 HTML buildreST source

    奖励:查看 Cross-referencing syntax 的 Sphinx 文档:

    如果您在内容前面加上~,则链接文本将只是目标的最后一个组成部分。例如,:py:meth:~Queue.Queue.get 将引用 Queue.Queue.get,但仅显示 get 作为链接文本。

    【讨论】:

    • 嗨@Steve Piercy 非常感谢您的回复!不幸的是,这似乎对我不起作用。我还检查了 Pyramid 文档的链接,它在那里工作,所以我很困惑(但它也可能是配置文件中的一些设置,对吧?)。但我在他们的conf.py 中也没有看到类似的东西......
    • 是的,我知道~ 并且我已经尝试过是否也可以将它应用于这种情况,但不幸的是它似乎不是这样......
    • 你观察到了什么?你先做了make clean吗?您的代码是否在 Python 包中(包括目录中的 __init__.py)?这不是一个设置,而仅仅是 Python 的 reST 语法,以及 Sphinx 如何仅导入 Python 包。
    【解决方案2】:

    通过在conf.py 中设置add_module_name configuration 来省略函数、方法和变量之前的模块和包名称:

    add_module_names = False
    

    这并不明显,因为众多的autodoc configurationssphinx-napoleon configurations 一起让您期待其他地方的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2016-05-05
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      相关资源
      最近更新 更多