我有一些在python中使用元类的代码。但是当运行sphinx autodoc时,它会给出错误:
WARNING: py:class reference target not found: type
错误发生在自动生成的.rst文件的一行中:
.. automodule:: API.list.blockList
:members: # this is the line in error
:show-inheritance:
blockList扩展了API.list.list,\__metaclass__
设置为我的元类。
据我所知,sphinx并不认为内置类型类存在。我已经尝试导入内置类型以使sphinx意识到它在那里但是没有用。
如果我从API.list.list中删除元类赋值,并从代码中删除元类,那么sphinx工作正常。
答案 0 :(得分:13)
这只是Python文档中的一个错误 - 对某些Python内置函数(包括type
)的引用无法正确解析(例如,参见https://bugs.python.org/issue11975)。
要使警告消失,您可以将nitpick_ignore
选项添加到Sphinx配置中。例如,在Astropy项目中,我们有:
nitpick_ignore = [('py:class', 'type')]
事实上,有足够的例外,我们只是将它们全部放在一个单独的文件中,我们将它们读出来。参见:
https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/conf.py#L195
和异常文件本身:
上述文件中的许多异常都是特定于Astropy的,但是其他异常处理Python和Numpy中的一些损坏的引用,并且可能通常有用。