sphinx.ext.inheritance_diagram – 継承図の挿入

バージョン 0.6 で追加.

この拡張機能を使用すると、Graphviz 拡張機能によってレンダリングされた継承図を挿入できます。

このディレクティブを追加します

.. inheritance-diagram::

このディレクティブには、それぞれモジュール名またはクラス名を示す1つ以上の引数があります。クラス名は修飾されていない場合があります。その場合、それらは現在記述されているモジュールに存在すると見なされます(py:module を参照)。

指定された各クラス、および指定された各モジュール内の各クラスについて、基底クラスが決定されます。次に、すべてのクラスとその基底クラスから、グラフが生成され、graphviz 拡張機能によって有向グラフにレンダリングされます。

このディレクティブは、parts というオプションをサポートしています。指定する場合、整数値でなければならず、表示される名前のドットで区切られた部分を(右から左へ)その数だけ保持するようにディレクティブに指示します。たとえば、parts=1 は、クラス名のみを表示し、それらを含むモジュールの名前は表示しません。

バージョン 2.0 で変更: parts の値は負にすることもでき、左からいくつの部分を削除するかを示します。たとえば、すべてのクラス名が lib. で始まる場合、:parts: -1 を指定して、表示されるノード名からそのプレフィックスを削除できます。

ディレクティブは、private-bases フラグオプションもサポートしています。指定されている場合、プライベート基底クラス(名前が _ で始まるクラス)が含まれます。

caption オプションを使用して、図にキャプションを付けることができます。

バージョン 1.1 で変更: private-bases オプションが追加されました。以前は、すべての基底クラスが常に含まれていました。

バージョン 1.5 で変更: caption オプションが追加されました

また、コンマで区切られた1つ以上のクラス名を必要とする top-classes オプションもサポートしています。指定されている場合、継承のトラバーサルは指定されたクラス名で停止します。次の Python モジュールがあるとします

"""
       A
      / \
     B   C
    / \ / \
   E   D   F
"""

class A:
    pass

class B(A):
    pass

class C(A):
    pass

class D(B, C):
    pass

class E(B):
    pass

class F(C):
    pass

継承図にモジュールを次のように指定した場合

.. inheritance-diagram:: dummy.test
   :top-classes: dummy.test.B, dummy.test.C

top-classes の祖先であり、同じモジュールで定義されている基底クラスは、スタンドアロンノードとしてレンダリングされます。この例では、クラス A はグラフ内のスタンドアロンノードとしてレンダリングされます。これは、この拡張機能の内部動作が原因で発生する既知の問題です。

クラス A(または他の祖先)を表示したくない場合は、次のように図を生成したいクラスのみを指定します

.. inheritance-diagram:: dummy.test.D dummy.test.E dummy.test.F
   :top-classes: dummy.test.B, dummy.test.C

バージョン 1.7 で変更: 継承グラフのスコープを制限する top-classes オプションが追加されました。

以下は、ディレクティブを実装する内部 InheritanceDiagram クラスのさまざまな継承図です。

フルネームの場合

.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
Inheritance diagram of sphinx.ext.inheritance_diagram.InheritanceDiagram

クラス名のみを表示する場合

.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
   :parts: 1
Inheritance diagram of sphinx.ext.inheritance_diagram.InheritanceDiagram

sphinx.util.docutils.SphinxDirective(Sphinx の一部である最上位のスーパー クラス)で図を停止し、すべての名前から共通の左端の部分(sphinx)を削除する場合

.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
   :top-classes: sphinx.util.docutils.SphinxDirective
   :parts: -1
Inheritance diagram of sphinx.ext.inheritance_diagram.InheritanceDiagram
class sphinx.ext.inheritance_diagram.InheritanceDiagram

inheritance-diagram ディレクティブを実装する内部クラス。

設定

inheritance_graph_attrs

継承図の graphviz グラフ属性の辞書。

例:

inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"',
                               fontsize=14, ratio='compress')
inheritance_node_attrs

継承図の graphviz ノード属性の辞書。

例:

inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75,
                              color='dodgerblue1', style='filled')
inheritance_edge_attrs

継承図の graphviz エッジ属性の辞書。

inheritance_alias

クラスの完全修飾名をカスタム値にマッピングできるようにします(クラスの基になるパスを公開することが望ましくない場合に役立ちます。たとえば、プライベートクラスであり、ユーザーによってインスタンス化されるべきではない場合)。

例:

inheritance_alias = {'_pytest.Magic': 'pytest.Magic'}