2012-07-10 10 views
9

私はPythonでメタクラスを使用するいくつかのコードを持っています。しかし、スフィンクスautodocのが実行されたとき、それはエラーを与えている:Sphinx autodocは警告を出します:py:クラス参照のターゲットが見つかりません:タイプ警告

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

そして、ブロックリストはAPI.listを拡張:

WARNING: py:class reference target not found: type

エラーが自動の行で発生していることは.rstファイルを生成しました。リストは\__metaclass__が私のメタクラスに設定されています。

私はスフィンクスが組み込み型クラスが存在するとは思えません。私は組み込みタイプをインポートしてみたところ、それが実現していることがわかりましたが、うまくいきませんでした。

API.list.listからメタクラスの割り当てを削除し、コードからメタクラスを削除すると、スフィンクスはうまく動作します。

+1

これを引き起こす最小の例を教えてください。 – Nikratio

答えて

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でとの一部の破損した参照を解決ナンシー、そして一般的に有用かもしれません。

関連する問題