我想用Sphinx来记录Python对象属性。我明白我应该用
:ivar varname: description
:ivar type varname: description
但是我看到了一个奇怪的行为,即Sphinx在我的项目中搜索变量名并尝试创建符号链接。 E、 g.本代码:
^{pr2}$将导致此错误:
module1.py:docstring of mylibrary.module1.A:None: WARNING: more than one target found for cross-reference u'x': mylibrary.module1.C.x, mylibrary.module1.B.x
我是否错误地理解了:ivar的目的或用法?在
以下是github上的
@acrisci
提供的一个解决方法:在变量名前面加上~.
。例如替换有了这个:
^{pr2}$来源:https://github.com/sphinx-doc/sphinx/issues/2549#issuecomment-488896939
这是一个monkey补丁(基于sphinx1.5.1),它禁用
ivar
交叉引用。我不确定什么是最好的解决方案,所以把补丁看作是一个实验性的建议。要试用它,请将下面的代码添加到conf.py
。在原始的
TypedField.make_field
方法在这里:https://github.com/sphinx-doc/sphinx/blob/master/sphinx/util/docfields.py。在正如mzjn所指,有一个open issue for this SO post。在这个线程中,也已经有了一个解决问题的方法。总之,您使用内联注释
#:
,而不是docstring。在查看用户here引用的提交中的
python.py
文件。docstring条目被删除(红线),他在构造函数中添加了内联注释(绿线)。在我一直在寻找这方面的文件,但找不到。 例如:
正如Nick Bastin所指出的那样,这种处理方法的渲染方式与
:ivar:
完全不同。不支持类型,它总是呈现默认值。在相关问题 更多 >
编程相关推荐