如何在重组文本中制作带有冒号的内联文字?
我正在尝试记录一个返回字典的 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}