是否可以在 Sphinx 中隐藏 Python 函数参数?
Is it possible to hide Python function arguments in Sphinx?
假设我在 Numpydoc style, and the documentation is auto-generated with the Sphinx autofunction directive 中记录了以下函数:
def foo(x, y, _hidden_argument=None):
"""
Foo a bar.
Parameters
----------
x: str
The first argument to foo.
y: str
The second argument to foo.
Returns
-------
The barred foo.
"""
if _hidden_argument:
_end_users_shouldnt_call_this_function(x, y)
return x + y
我不想将隐藏参数作为我的 public API 的一部分进行宣传,但它显示在我自动生成的文档中。有什么方法可以告诉 Sphinx 忽略函数的特定参数,或者(甚至更好)让它自动忽略带有前导下划线的参数?
我认为 Sphinx 中没有这样的选项。无需破解代码即可实现此目的的一种可能方法是使用自定义签名。
在这种情况下,您需要这样的东西:
.. autofunction:: some_module.foo(x, y)
这将覆盖函数的参数列表并在文档中隐藏不需要的参数。
可以在 autodoc-process-signature
事件的处理程序中编辑函数签名。
事件处理程序的signature
参数持有签名; (parameter_1, parameter_2)
形式的字符串。在下面的代码片段中,split()
用于删除函数的最后一个参数:
hidden = "_hidden_argument"
def process_sig(app, what, name, obj, options, signature, return_annotation):
if signature and hidden in signature:
signature = signature.split(hidden)[0] + ")"
return (signature, return_annotation)
def setup(app):
app.connect("autodoc-process-signature", process_sig)
结果是文档将问题中函数的签名显示为 foo(x, y)
而不是 foo(x, y, _hidden_argument=None)
。
我同意这可能是设计不佳的症状——但我刚刚 运行 遇到了一个案例,我不得不插入一个无用的 **kwargs
参数来满足 mypy 静态类型检查员...
因此,根据 mzjn 的建议,我发布了一个简单的 sphix 扩展来隐藏文档中的参数:
https://pypi.org/project/sphinxcontrib-autodoc-filterparams/
假设我在 Numpydoc style, and the documentation is auto-generated with the Sphinx autofunction directive 中记录了以下函数:
def foo(x, y, _hidden_argument=None):
"""
Foo a bar.
Parameters
----------
x: str
The first argument to foo.
y: str
The second argument to foo.
Returns
-------
The barred foo.
"""
if _hidden_argument:
_end_users_shouldnt_call_this_function(x, y)
return x + y
我不想将隐藏参数作为我的 public API 的一部分进行宣传,但它显示在我自动生成的文档中。有什么方法可以告诉 Sphinx 忽略函数的特定参数,或者(甚至更好)让它自动忽略带有前导下划线的参数?
我认为 Sphinx 中没有这样的选项。无需破解代码即可实现此目的的一种可能方法是使用自定义签名。
在这种情况下,您需要这样的东西:
.. autofunction:: some_module.foo(x, y)
这将覆盖函数的参数列表并在文档中隐藏不需要的参数。
可以在 autodoc-process-signature
事件的处理程序中编辑函数签名。
事件处理程序的signature
参数持有签名; (parameter_1, parameter_2)
形式的字符串。在下面的代码片段中,split()
用于删除函数的最后一个参数:
hidden = "_hidden_argument"
def process_sig(app, what, name, obj, options, signature, return_annotation):
if signature and hidden in signature:
signature = signature.split(hidden)[0] + ")"
return (signature, return_annotation)
def setup(app):
app.connect("autodoc-process-signature", process_sig)
结果是文档将问题中函数的签名显示为 foo(x, y)
而不是 foo(x, y, _hidden_argument=None)
。
我同意这可能是设计不佳的症状——但我刚刚 运行 遇到了一个案例,我不得不插入一个无用的 **kwargs
参数来满足 mypy 静态类型检查员...
因此,根据 mzjn 的建议,我发布了一个简单的 sphix 扩展来隐藏文档中的参数:
https://pypi.org/project/sphinxcontrib-autodoc-filterparams/