2012-07-10 44 views
9

我有一些代码在python中使用metaclass。但是,当运行狮身人面像车博士它给错误:狮身人面像autodoc给出警告:py:类参考目标未找到:键入警告

WARNING: py:class reference target not found: type

的错误是在一条线上自动的生成存在的文件.rst:

.. automodule:: API.list.blockList 
    :members: # this is the line in error 
    :show-inheritance: 

而且延伸黑名单API.list。列表中有\__metaclass__设置为我的元类。

从我可以告诉狮身人面像并不认为内建类型存在。我已经尝试导入内建类型,使狮身人面像意识到它在那里,但没有奏效。

如果我从API.list.list中删除元类的赋值,并从代码中删除元类,那么sphinx就可以正常工作。

+1

你能提供一个触发这个的最小例子吗? – Nikratio 2015-04-28 01:23:49

回答

6

这只是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

和异常文件本身:

https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/nitpick-exceptions

许多在上述文件中的例外是特定于Astropy,但其他人解决在Python和一些破碎的引用Numpy,可能是一般用途。