如何在 Sphinx autodoc 中的函数签名之间创建水平线和空白

bde*_*hak 4 python formatting python-sphinx autodoc read-the-docs

我已经为我想做的大部分事情找到了 sphinx 选项,但是在使用 autodoc 时,我看不到如何在函数签名之间注入空格和水平线。

以下是 autodoc 生成的内容:

get_all_edges(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_edges

get_all_nodes(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_nodes

get_edge_count(network=None, base_url='http://localhost:1234/v1')
   docstring for get_edge_count
Run Code Online (Sandbox Code Playgroud)

这是我想要得到的:

get_all_edges(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_edges

   ------------------------------------------------------------

get_all_nodes(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_nodes

   ------------------------------------------------------------

get_edge_count(network=None, base_url='http://localhost:1234/v1')
   docstring for get_edge_count
Run Code Online (Sandbox Code Playgroud)

......或接近于此的东西。我对最后一个函数签名是否有尾随分隔符不感兴趣。也许这很简单,但我没有看到。谢谢!

仅供参考,这里是生成我的函数签名的 autodoc 指令:

PyCy3.networks module
---------------------

.. automodule:: PyCy3.networks
    :members:
    :undoc-members:
    :show-inheritance:
Run Code Online (Sandbox Code Playgroud)

bde*_*hak 6

事实证明,这并不难……经过一天的研究。:)

主要见解是:

  1. autodoc 创建 HTML 以便每个函数都有 class="function"
  2. 类“函数”未在任何地方定义......它只是用于此目的的钩子
  3. 可以在我的 doc 文件夹中使用 _template 和 _static 文件夹的组合来定义“函数”

#3 的灵感在这里:修改 Sphinx 主题“阅读文档”的内容宽度

(我正在使用 readthedocs,所以我不完全确定这是否适用于命令行 sphinx。)

就我而言,“docs”文件夹包含我所有的 sphinx 文件。我创建了新的子文件夹:“_templates”和“_static/css”。

在 _templates 中,我创建了一个新文件“layout.html”:

{% extends "!layout.html" %}
{% set css_files = css_files + [ "_static/css/functions.css" ] %}
Run Code Online (Sandbox Code Playgroud)

在 _static/css 中,我创建了一个新文件“functions.css”:

.function {
    border-bottom: 3px solid #d0d0d0;
    padding-bottom: 10px;
    padding-top: 10px;
}
Run Code Online (Sandbox Code Playgroud)

因此,layout.html 扩展了默认的 layout.html 并注入了我的新 css。

我认为 autodoc 为此目的为函数签名的各种元素创建了其他钩子(例如,sig-name、sig-paren 和 sig-param)。您可以通过在网页调试器中使用 Chrome 的页面源代码检查器来自己发现这一点。