Sphinx autodoc 拡張機能、具体的にはautomodule
ディレクティブを使用して、作業中のDjangoアプリのドキュメントを自動的に生成しようとしています。問題はプロジェクト内のすべてのクラス/関数でautoclass
とautofunction
を使用せずに、モジュール内のさまざまなクラスへの内部参照を作成したい。次のようなソースファイルの場合:
# source_code.py
class A:
"""docs for A
"""
pass
class B:
"""docs for B with
:ref:`internal reference to A <XXXX-some-reference-to-A-XXXX>`
"""
pass
次のようなスフィンクスのドキュメントファイルを作成できるようにしたいと思います。
.. automodule: source_code
XXXX-some-reference-to-A-XXXXにはどのような参照を使用できますか?これを達成する簡単な方法はありますか?よろしくお願いします。
次のようなクラスを参照できます。
class B(object):
"""docs for B with reference to :class:`.A`"""
pass
Sphinxは、あなたが何を参照しているのかをインテリジェントに把握しようとします。 A
という名前のクラスが複数ある場合、警告が表示されることがありますが、現在のモジュールにあるクラスを取得する必要があります。
私が問題を理解しているかどうかはわかりませんが、これはautodocで問題なく機能します。 相互参照Pythonオブジェクト
class FlowDirection(GeneralTable):
'''
Heat Flow Direction
:cvar int id: database primary key
:cvar unicode name: name
'''
def __repr__(self):
return u'<FlowDirection {0} instance at {1}>'.format(
self.name, hex(id(self))).encode('utf-8')
def __unicode__(self):
return self.name
class AirCavityRes(GeneralTable):
'''
Air Cavity :term:`thermal resistance`
:cvar flow_direction: heat flow direction
(see :class:`FlowDirection`)
:cvar int id: database primary key
:cvar int if_fd: database foreign key to :class:`FlowDirection`
:cvar float res: :term:`thermal resistance`
:cvar float thick: thickness
'''
def __repr__(self):
return u'<AirCavityRes {0} instance at {1}>'.format(
self.res, hex(id(self)))