web-dev-qa-db-ja.com

Sphinx自動モジュール:同じモジュール内のクラスを参照する方法は?

Sphinx autodoc 拡張機能、具体的にはautomoduleディレクティブを使用して、作業中のDjangoアプリのドキュメントを自動的に生成しようとしています。問題はプロジェクト内のすべてのクラス/関数でautoclassautofunctionを使用せずに、モジュール内のさまざまなクラスへの内部参照を作成したい。次のようなソースファイルの場合:

# 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にはどのような参照を使用できますか?これを達成する簡単な方法はありますか?よろしくお願いします。

27
dino

次のようなクラスを参照できます。

class B(object):
    """docs for B with reference to :class:`.A`"""
    pass

Sphinxは、あなたが何を参照しているのかをインテリジェントに把握しようとします。 Aという名前のクラスが複数ある場合、警告が表示されることがありますが、現在のモジュールにあるクラスを取得する必要があります。

45
jterrace

私が問題を理解しているかどうかはわかりませんが、これは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)))
9
neurino