私はPythonモジュールのドキュメントに取り組んでいます(SphinxとreSTを使用)。他のPythonオブジェクト(モジュール、クラス、関数など)を相互参照すると、完全なオブジェクト名が非常に長くなることがわかりました。多くの場合、80文字を超えるので、絶対に避けたいと思います。
次に例を示します。
def exampleFunction():
'''Here is an example docstring referencing another
:class:`module1.module2.module3.module4.module5.ReallyLongExampleClassName`
'''
問題は、ReallyLongExampleClassNameクラスのドキュメントを作成するときに、フルパス名用にドキュメントを生成したことですmodule1.module2.module3.module4.module5.ReallyLongExampleClassaName
。
これを解決する方法はありますか?私は次の方法を試しましたが、成功しませんでした。
1)モジュール名の途中に改行を追加します。例:
:class:`module1.module2.module3.module4.
module5.ReallyLongExampleClassName`
2)別の(ただしPythonでインポート可能な)方法でクラス名を参照する。例:
:class:`module1.module2.ReallyLongClassName`
のドキュメントReallyLongClassName
はフルパス名に関連付けられているため、Sphinxは短縮バージョンを完全な名前のバージョンと関連付けることができないと思います。
2012年4月5日編集:
j13rの回答/提案(以下を参照)に従って、私は次のことを試みました:
:class:`module1.module2.module3.module4.module5\
ReallyLongExampleClassName`
そして、これはうまくいきました。これを機能させるための唯一の注意点は、2行目の前にスペースを入れてはならないということです(これをdocstringで使用する場合は非常にイライラします)。したがって、元の例を機能させるには、次のようになります。
def exampleFunction():
'''Here is an example docstring referencing another
:class:`module1.module2.module3.module4.module5.\
ReallyLongExampleClassName`
'''
いい、そして醜い。ReallyLongExampleClassName
その上の行と同じレベルにインデントする前にスペースを入れると、出力にはスペースが含まれるため、Sphinxは。のようなものを参照しようとしますmodule1.module2.module3.module4.module5.ReallyLongExampleClassName
。
また、これの他の2つのバリエーションを試しましたが、機能しませんでした。
# Note: Trying to put a space before the '\'
:class:`module1.module2.module3.module4.module5. \
ReallyLongExampleClassName`
# Note: Trying to leave out the '\'
:class:`module1.module2.module3.module4.module5.
ReallyLongExampleClassName`
docstringのフォーマットを破壊しない解決策を探していましたが、それでうまくいくと思います...実際には、これよりも80文字を超える行の方が好きだと思います。
答えてくれたj13rに感謝します!