6

我知道如何通过设置“add_module_names = False”来删除自动模块指令中函数的模块前缀。 从 sphinx 函数中删除包和模块名称

但是它不能删除 automodule 指令中 args 的模块前缀。下面是automodule生成的文档。

您可以看到 self arg 的数据类型有一个长前缀,例如“PyPhysLeo.data_core”。


data_core 子模块

class BufferDataD 同时管理CPU缓冲区和GPU缓冲区的类,数据类型为double

CPU2GPU(self: PyPhysLeo.data_core.BufferDataD) → 无

GPU2CPU(self: PyPhysLeo.data_core.BufferDataD) → 无

分配CPU(自我:PyPhysLeo.data_core.BufferDataD)→无

allocateGPU(self: PyPhysLeo.data_core.BufferDataD) → 无

setZeroCPU(self: PyPhysLeo.data_core.BufferDataD) → 无

setZeroGPU(self: PyPhysLeo.data_core.BufferDataD) → 无

大小(自我:PyPhysLeo.data_core.BufferDataD)→ int

4

1 回答 1

1

pybind11 生成的签名总是冗长乏味的(有 self arg,类型可能有长模块前缀)。所以最好的方法是通过py::options options;options.disable_function_signatures();在你的模块初始化函数中添加代码来禁用这些签名。然后你需要在文档字符串的第一行写下你自己的签名,比如

setZeroGPU() -> None

    reset GPU buffer data to zero

    :return: None
    :rtype: None

setZeroGPU() -> None 是签名,它在第一行。

因为 conf.py 中的“autodoc_docstring_signature”默认设置为 True,所以 sphinx 会自动尝试从 docstring 的第一行读取函数签名。最后,你可以得到这样一个漂亮的文档。

setZeroGPU() → None
    reset GPU buffer data to zero

    返回: None
    返回类型:   None
于 2018-07-18T17:33:29.203 回答