sphinx.ext.inheritance_diagram – 包含继承关系图

添加于版本 0.6。

此扩展允许您包含继承关系图,通过 Graphviz 扩展 渲染。

它添加了这个指令

.. 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 选项以限制继承图的范围。

:include-subclasses: (无值)

添加于版本 8.2。

如果给定,该类的任何子类也将添加到图中。

给定上面的 Python 模块,您可以像这样指定您的继承关系图

.. inheritance-diagram:: dummy.test.A
   :include-subclasses:

这将包括继承关系图中的类 A、B、C、D、E 和 F,但不包括模块 dummy.test 中的其他类。

示例

以下是内部 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
类型:
dict[str, str | int | float | bool]
默认值:
{}

用于继承关系图的 graphviz 图形属性字典。

例如

inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"',
                               fontsize=14, ratio='compress')
inheritance_node_attrs
类型:
dict[str, str | int | float | bool]
默认值:
{}

用于继承关系图的 graphviz 节点属性字典。

例如

inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75,
                              color='dodgerblue1', style='filled')
inheritance_edge_attrs
类型:
dict[str, str | int | float | bool]
默认值:
{}

用于继承关系图的 graphviz 边属性字典。

inheritance_alias
类型:
dict[str, str]
默认值:
{}

允许将类的完整限定名称映射到自定义值(当公开类的底层路径不可取时很有用,例如,它是一个私有类,不应由用户实例化)。

例如

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