20

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:

\__metaclass__また、blockList は、メタクラスに設定されている API.list.list を拡張します。

私が言えることから、スフィンクスは組み込み型クラスが存在するとは考えていません。組み込み型をインポートして、スフィンクスにその存在を認識させようとしましたが、うまくいきませんでした。

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

4

1 に答える 1

24

これは単なる 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 の壊れた参照に対応しており、一般的に役立つ可能性があります。

于 2015-06-03T15:10:12.740 に答える