sphinx.ext.autodoc:将常量名称保留在签名中
我正在使用 Sphinx 的 autodoc 功能来记录我的 API。
示例:
DEFAULT_OPTION = 'default'
def do_something(msg, option=DEFAULT_OPTION):
print msg
生成的文档现在显示以下签名:
do_something(msg, option='default')
如何告诉 Sphinx 保留常量值的名称 ie
do_something(msg, option=DEFAULT_OPTION)
?
有没有我忽略的选项?如果可能的话,我不想再手写所有签名。
I'm using Sphinx's autodoc feature to document my API.
Example:
DEFAULT_OPTION = 'default'
def do_something(msg, option=DEFAULT_OPTION):
print msg
The generated documentation now shows the following signature:
do_something(msg, option='default')
How can I tell Sphinx to keep the name of the constant value i.e.
do_something(msg, option=DEFAULT_OPTION)
?
Is there an option I have overlooked? If at all possible, I'd like NOT to write all signature by hand again.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从 Sphinx 4.0 版本开始,有一个新的配置选项 (
autodoc_preserve_defaults
)。conf.py
中的设置将保留源代码中的默认值。
Since version 4.0 of Sphinx there is a new configuration option (
autodoc_preserve_defaults
). Settingin your
conf.py
will preserve the default values as they are in the source code.您可能必须在 reST 文件中手动覆盖签名。
很难想出更好的答案。 Autodoc 导入它所记录的模块,因此所有模块级代码(包括默认函数参数)都会被执行。
另请参阅这些类似的问题:此处和此处< /a>.
更新:
我刚刚意识到还有另一种选择。您可以通过将签名作为文档字符串的第一行来覆盖签名。请参阅 autodoc_docstring_signature 配置变量的文档,以及 这个答案。
You probably have to override the signature by hand in the reST file.
It's hard to come up with a better answer. Autodoc imports the modules it documents, so all module-level code (including default function arguments) is executed.
See also these similar questions: here and here.
Update:
I just realized that there is another option. You can override the signature by including it as the very first line of the docstring. See the documentation of the autodoc_docstring_signature configuration variable, and this answer.
您可以从 AST 获取带有常量名称的签名,并将其“解析”回 Python 代码。
将其放入您的
conf.py
文件中:并将其放入某个可从
conf.py
导入的unparser.py
文件中:You can get the signature with constant names from an AST and "unparse" it back to Python code.
Put this in your
conf.py
file:And this in some
unparser.py
file, importable fromconf.py
: