1

让我们考虑以下函数:

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) -> int函数文档的标题中以及在该Parameters部分中显示类型提示的意义。在这种情况下,这并不重要,但是对于具有 4-5 个参数的函数来说,它会变得非常不可读。有没有办法跳过类型提示?就像,如果标题只是f或,我会更喜欢f(x, y)

我预计这与add_function_parentheses,但将其设置为Falseinconf.py并没有我注意到的任何影响。

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

4

2 回答 2

2

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

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

  1. 添加sphinx.ext.autodocextensions如果尚未完成)
  2. autodoc_typehints = "none"
于 2020-08-24T12:07:06.557 回答
1

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

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

def fix_sig(app, what, name, obj, options, signature, return_annotation):
    return ("", "")
 
def setup(app):
    app.connect("autodoc-process-signature", fix_sig)
于 2020-08-22T17:16:34.030 回答