prefix_graph#

实现有向图以排序和操作前缀内的包。

对象继承

Inheritance diagram of PrefixGraph, GeneralGraph

#

PrefixGraph

用于排序前缀中包 (prefix_records) 和

GeneralGraph

与 PrefixGraph 相比,此类接受给定名称的多个记录,

class PrefixGraph(records, specs=())#

用于排序前缀中包 (prefix_records) 和操作前缀内包(例如,删除和修剪)的有向图结构。

用于边方向的术语是“父节点”和“子节点”,而不是“后继节点”和“前驱节点”。记录的父节点是图中与记录的“depends”字段匹配的那些记录。例如,NodeA 依赖于 NodeB,则 NodeA 是 NodeB 的子节点,而 NodeB 是 NodeA 的父节点。节点可以有零个父节点,也可以有两个以上的父节点。

大多数公共方法会改变图形。

property records#
remove_spec(spec)#

删除所有匹配的节点以及任何关联的子节点。

参数:

spec (MatchSpec)

返回:

已删除的节点。

返回类型:

tuple[PrefixRecord]

remove_youngest_descendant_nodes_with_specs()#

用于仅确定请求规范的依赖关系的专用方法。

返回:

已删除的节点。

返回类型:

tuple[PrefixRecord]

prune()#

修剪所有包,直到所有子节点都由规范锚定。

返回:

修剪后的节点。

返回类型:

tuple[PrefixRecord]

get_node_by_name(name)#
all_descendants(node)#
all_ancestors(node)#
_remove_node(node)#

删除此节点和所有引用它的边。

_toposort()#
classmethod _toposort_raise_on_cycles(graph)#
classmethod _topo_sort_handle_cycles(graph)#
static _toposort_pop_key(graph)#

从图中弹出一个父节点最少的项。如果平局,则使用包名称按字母顺序排列在前的节点。

static _toposort_prepare_graph(graph)#
class GeneralGraph(records, specs=())#

基类: PrefixGraph

与 PrefixGraph 相比,此类接受给定名称的多个记录,并跨任何匹配的依赖项从更高的视图对该图进行操作。它不是前缀事物,而更像是“所有可能的候选对象图”事物,用于不满足性分析

breadth_first_search_by_name(root_spec, target_spec)#

返回从 root_spec 到 spec_name 的最短路径