跳过文档中的类型提示

Skipping type hints in documentation

让我们考虑以下函数:

def f(x: int, y: int) -> int:
    """Get sum of two integers.

    Parameters
    ----------
    x : int
        first integer
    y : int
        second integer

    Returns
    -------
    int
        sum of the provided integers
    """
    return x + y

在使用 Sphinx (v3.2.1) 进行记录时,生成的文档格式如下:

但是,我没有看到像函数文档标题中的 f(x: int, y:int) -> intParameters 部分那样显示类型提示的意义。在这种情况下,它并不重要,但对于具有 4-5 个参数的函数来说,它变得非常不可读。有没有办法跳过类型提示?比如,如果标题只是 ff(x, y).

,我会更喜欢

我预计这与 add_function_parentheses 有关,但在 conf.py 中将其设置为 False 并没有我注意到的任何效果。

一个相关的问题是,如果类型提示很长,可能像 typing.Union 有多个长描述,我不想在其中使用 typing.Any,我经常将它们写在文档字符串中多行,遵守最大行数限制。在这些情况下,Parameters 部分显示类型是第一行中的内容,下一行只是描述。我没有附上这个问题的例子,因为我不确定它们是否相同。如果是,请告诉我,我会用示例进行更新。

autodoc-process-signature 事件的处理程序可以更改函数和方法的签名和 return 注释。

下面是一个简单的例子。如果将此代码添加到 conf.py,所有签名和 return 注释将从输出中删除。

def fix_sig(app, what, name, obj, options, signature, return_annotation):
    return ("", "")
 
def setup(app):
    app.connect("autodoc-process-signature", fix_sig)

sphinx.ext.autodoc 有一个选项 autodoc_typehints。这有 3 个选项:nonedescriptionsignature(默认)。使用 nonedescription 中的任何一个都将隐藏 header 行中的类型提示。我能在这两者之间找到的唯一区别是,如果文档字符串不包含类型建议,description 仍会在从类型提示收集的文档中显示它们。

要使用它,需要在 conf.py 中进行以下更改:

  1. extensions 中添加 sphinx.ext.autodoc(如果尚未完成)
  2. 设置autodoc_typehints = "none"