如何在长函数签名中进行换行并在 Sphinx autodoc 中对其进行漂亮的格式化

hzh*_*mhf 7 python pretty-print signature python-sphinx autodoc

我有一个带有类型提示的长签名的函数,例如

def set_parameters(
        tokenizer: Union[None, "Tokenizer", str] = None,
        vocab: Optional["Vocab"] = None,
        vocab_from: Optional[Dict[str, str]] = None,
        max_sent_length: Optional[int] = None,
        max_turn_length: Optional[int] = None,
        convert_to_lower_letter: Optional[bool] = None,
        weak=False) -> "FieldContext":
Run Code Online (Sandbox Code Playgroud)

我使用 Sphinx autodoc 生成文档字符串。

.. autofunction:: set_parameters
Run Code Online (Sandbox Code Playgroud)

然后,Sphinx 将忽略换行符并在一行中描述该函数。

set_parameters(tokenizer: Union[None, Tokenizer, str] = None, vocab: Optional[Vocab] = None, vocab_from: Optional[Dict[str, str]] = None, max_sent_length: Optional[int] = None,    max_turn_length: Optional[int] = None, convert_to_lower_letter: Optional[bool] = None, weak=False) -> FieldContext:
Run Code Online (Sandbox Code Playgroud)

它非常丑陋且难以阅读。我想要的是它要么跟随我的代码中的换行符,要么自动执行一些换行符。有什么办法可以实现吗?

Ste*_*rcy 1

一个快速但肮脏的选择是使用 CSS:

dl.class > dt > em:before {
    content: ' ';
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

它并不完美或漂亮,但它至少将参数放入一个更易于视觉扫描的列表中。