sphinx 删除自动模块中 args 的模块前缀

徐力有*_*徐力有 5 python python-sphinx pybind11

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

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

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


data_core 子模块

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

CPU2GPU(自我:PyPhysLeo.data_core.BufferDataD)?没有任何

GPU2CPU(自我:PyPhysLeo.data_core.BufferDataD)?没有任何

分配CPU(自我:PyPhysLeo.data_core.BufferDataD)?没有任何

分配GPU(自我:PyPhysLeo.data_core.BufferDataD)?没有任何

setZeroCPU(self: PyPhysLeo.data_core.BufferDataD) ?没有任何

setZeroGPU(自我:PyPhysLeo.data_core.BufferDataD)?没有任何

大小(自我:PyPhysLeo.data_core.BufferDataD)?整数

徐力有*_*徐力有 0

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

\n\n
setZeroGPU() -> None\n\n    reset GPU buffer data to zero\n\n    :return: None\n    :rtype: None\n
Run Code Online (Sandbox Code Playgroud)\n\n

setZeroGPU() -> None 是签名,位于第一行。

\n\n

由于conf.py中的“autodoc_docstring_signature”默认设置为True,sphinx将自动尝试从文档字符串的第一行读取函数签名。最后,你就可以得到这样一个漂亮的文档了。

\n\n
setZeroGPU() \xe2\x86\x92 None\n    reset GPU buffer data to zero\n\n    \xe8\xbf\x94\xe5\x9b\x9e: None\n    \xe8\xbf\x94\xe5\x9b\x9e\xe7\xb1\xbb\xe5\x9e\x8b:   None\n
Run Code Online (Sandbox Code Playgroud)\n