2013-05-09 2 views
5
構築することが

Sphinxでautodocされたモジュールの "重大ID:重複した"警告を避けるにはどうすればよいですか?

...Code/doc/code.rst:3: SEVERE: Duplicate ID: "module-toast". 

私のPythonのソースファイルがそうのように文書化されているような警告を投げていたとき、私はしかし、私はPythonを文書化するためにRST /スフィンクスを使用してい

#!/usr/bin/env python 
''' 
.. module:: toast 
    :synopsis: Processes the blobs produced by :mod:`bread`. 
''' 
# my inline-rST documented code... 

とRSTファイルを使用オートドックはautomoduleディレクティブを使用して、すべてのドキュメントストリングを取り出し、すべてのメンバーを文書化しました。

Toast 
-------------------------------- 

.. automodule:: toast 
    :members: 

上記のコンボはうまくいくようですが、エラーは適切な方法があることを暗示しているようです。ソースファイルの上からモジュールディレクティブを削除すると、エラーは消えてしまいますが、Sphinxが取り上げたソースには概要オプションを追加できません。

答えて

4

私は確信していませんが、automoduleディレクティブはmoduleディレクティブを独自に作成すると信じています。それで、あなたは既に1つを指定しているので、2つあります。したがって、IDメッセージが重複しています。

moduleではなく、の代わりにcurrentmoduleというディレクティブをモジュールのマークアップで使用してみてください。 になるはずですが、私は実際に試していないことを認めています。

+0

'currentmodule'は':synopsis: 'オプションを受け入れないので、これをrSTファイルに移動する必要があります。ソースに' module'ディレクティブがあれば余分です。私は私が望むものが(現時点で)不可能であるかどうか疑問に思います。 ':/' –

+0

実際それは可能なようです。 'SEVERE'の警告は気にされる... –

7

一方向は、:noindex:フラグを使用することです。

使用できるソースコードに続いて
.. automodule:: toast 
    :members: 
    :noindex: 

#!/usr/bin/env python 
''' 
.. module:: toast 
    :synopsis: Processes the blobs produced by :mod:`bread`. 
''' 

概要にはSEVERE警告とメッセージは、モジュールインデックスには表示されませんがあることでしょう。

反対側の:noindex:は、ソースファイルに.. module::がない場合、モジュールをインデックスから隠します。

0

automodule::)はsimnoによって書かれていますが、perma-linkやcross-link(例えば:func:)の作成はできません。 :noindex:module::に追加すると、すべてが正常に機能し、currentmoduleを使用する必要はありません。