重构文本内联文本中的冒号



如何在重组文本中制作带有冒号的内联文字?

我正在尝试记录一个返回字典的 Python 函数,例如:

def function(...):
"""
...
Returns:
A dictionary mapping ``{id: {role: value}}``
"""

但是当我用狮身人面像编译时,它抱怨:

WARNING: Inline literal start-string without end-string.

文字结束字符串肯定在那里,它似乎没有违反其他格式规则,但我无法让它用冒号正确呈现文字(大括号不是问题;one: two在内联文字中也是有问题的(。转义无济于事:

""" ``one: two`` """   --> WARNING
""" ``one\: two`` """  --> WARNING
r""" ``one: two`` """  --> WARNING

似乎唯一有效的是:code:角色:

""" :code:`{one: {two: three}}` """  --> OK

这是狮身人面像的局限性吗?还是文档的错误?或者有没有办法在内联文字中获取冒号?

这种行为不是由于Sphinx,restructuredText或autodoc的固有限制,而是由于(当前版本的(拿破仑扩展中用于处理Google风格的文档字符串的错误。拿破仑使用正则表达式对冒号上的内容进行分区,它贪婪地消耗字符,直到到达冒号。它与:code:角色一起使用的原因是 Napoleon 在分区之前检测到这些格式,但它不会检测到内联格式(请注意,其他内联格式模式(例如*emphasis***strong**(也会出现问题(。在修复错误之前,解决错误的一种方法是在内联文字之前放置一个冒号:

def function(a, b):
"""Put *a* and *b* in a dictionary.
Returns:
dict: ``{a: b}``
"""
return {a: b}

最新更新