sphinx.ext.inheritance_diagram
– 包含继承关系图¶
Added in version 0.6.
这个扩展允许您包含继承图,通过 Graphviz 扩展
渲染.
它添加了这个指令:
- .. inheritance-diagram::¶
该指令有一个或多个参数,每个参数提供一个模块或类名.类名可以是不带限定符的;在这种情况下,它们被认为存在于当前描述的模块中(见
py:module
).对于每个给定的类,以及每个给定模块中的每个类,将确定其基类.然后,从所有类及其基类生成一个图形,该图形通过graphviz扩展渲染为有向图.
这个指令支持一个名为
parts
的选项,如果给定,必须是一个整数,建议指令在显示名称时保留那么多点分隔的部分(从右到左).例如,parts=1
只会显示类名,而不显示包含它们的模块名.在 2.0 版本发生变更: The value of for
parts
can also be negative, indicating how many parts to drop from the left. For example, if all your class names start withlib.
, you can give:parts: -1
to remove that prefix from the displayed node names.该指令还支持一个
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:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:parts: 1
停止在 sphinx.util.docutils.SphinxDirective
(Sphinx中仍然是最高父类)处的图表,并从所有名称中删除公共的最左部分( sphinx
):
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:top-classes: sphinx.util.docutils.SphinxDirective
:parts: -1
- 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'}