Sphinx交叉引用中断了在父模块中导入和记录的继承对象

安德烈·安乔斯(AndréAnjos)

我正在尝试正确构建我的Sphinx文档并正确使用交叉引用(包括那些来自继承关系的引用)。

在我的项目中,我遇到了以下示例中描述的情况,为了方便起见,在此github存储库中将其复制

$ tree .
.
├── a
│   ├── b
│   │   └── __init__.py
│   └── __init__.py
├── conf.py
├── index.rst
└── README.md

在中a.b.__init__,我声明了类ABB继承自A在中a.__init__,我导入AB喜欢:from .b import A, B我在实际项目中执行此操作的原因是减少模块上的导入路径,同时在单独的文件中保留特定类的实现。

然后,在我的第一个文件,我车博士模块a.. automodule:: a因为a.b它只是一个辅助模块,所以我不会自动为其添加文档,因为我不想重复引用相同的类,也不希望使用户混淆他们应该做什么。我还设置了show-inheritance预期a.B的反向链接a.A

如果尝试以nit-picky模式进行狮身人面像构建,则会收到以下警告:

WARNING: py:class reference target not found: a.b.A

如果查看class的生成文档B,那么我确认它与class没有正确链接A,这只是确认了以上警告。

问题:我该如何解决?

z

Sphinx使用__module__属性的值来找出定义了类/函数/方法的模块的名称(请参阅https://docs.python.org/2/reference/datamodel.html#the-standard-type -层级)。有时,这不是您在文档中想要的。

该属性是可写的。您可以通过在/__init__.py中添加以下行来解决您的问题:

A.__module__ = "a"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章