sphinx - 如何包含 Python 函数作为源代码

sphinx - How to include a Python function as source code

Sphinx 非常擅长 link 特定 Python 对象。

例如写

:func:`foo.bar`

会link直接到foo.py中的bar函数。我想要同样的功能,但我不想创建可点击的 link,而是希望它成为 bar() 的代码。

.. code-block:: language 指令要求您手动编写要添加的代码。但是我想 link 使用 intersphinx 对外部 Sphinx 项目中已经存在的代码进行编码,而不是自己编写代码。 :mod::func: 和其他人只创建 links,实际上并不包含源代码。

还有 .. literalinclude:: filename 但就我而言,我无法使用它,因为该函数来自 Sphinx 项目之外(它正在 linked 使用 intersphinx 并且不是实际项目)。即使 .. literalinclude:: filename 可以以某种方式跨项目工作,我认为我仍然需要使用 :lines: 来过滤每个功能,这将是一个巨大的跟踪。

如何通过名称空间路径引用函数 / class 并使用它来将其源代码直接添加到 sphinx 第一个文件中? (不是作为可点击的 link,而是文字代码)。

没有人回复所以我自己做了:https://github.com/ColinKennedy/sphinx-code-include

此功能开箱即用。您正在寻找的是 literalinclude 指令及其 :pyobject: 参数。

---[mymodule.py]------------
def hello(who):
    print(f'Hello {who} !')


---[mydocumentation.rst]----

Bla bla bla lorem ipsum

.. literalinclude: ../../path/to/mymodule.py
   :pyobject: hello

这只会在您的文档中包含 hello() 函数的代码。