sphinx.ext.inheritance_diagram --包括继承关系图

Added in version 0.6.

此扩展允许您包括通过 Graphviz extension .

它添加了以下指令:

.. inheritance-diagram::

这个指令有一个或多个参数,每个参数都给出一个模块或类名。类名可以是非限定的;在这种情况下,它们被认为存在于当前描述的模块中(请参见 py:module

对于每个给定的类,以及每个给定模块中的每个类,将确定基类。然后,从所有类及其基类中,生成一个图,然后通过graphviz扩展将其呈现到有向图中。

此指令支持一个名为 parts 如果给定,它必须是一个整数,建议该指令在显示的名称中保留多个点分隔的部分(从右到左)。例如, parts=1 只显示类名,不显示包含类名的模块的名称。

在 2.0 版本发生变更: 的值 parts 也可以为负,表示要从左侧落下的零件数。例如,如果所有类名都以 lib. 你可以给 :parts: -1 从显示的节点名称中删除该前缀。

该指令还支持 private-bases 标志选项;如果给定,则为私有基类(名称以 _ )包括在内。

你可以使用 caption 为图表提供标题的选项。

在 1.1 版本发生变更: 补充 private-bases 选项;以前,总是包括所有基础。

在 1.5 版本发生变更: 补充 caption 选项

它还支持 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'}