prefix_graph#
实现有向图以排序和操作前缀内的包。
对象继承

类#
用于排序前缀中包 (prefix_records) 和 |
|
与 PrefixGraph 相比,此类接受给定名称的多个记录, |
- class PrefixGraph(records, specs=())#
用于排序前缀中包 (prefix_records) 和操作前缀内包(例如,删除和修剪)的有向图结构。
用于边方向的术语是“父节点”和“子节点”,而不是“后继节点”和“前驱节点”。记录的父节点是图中与记录的“depends”字段匹配的那些记录。例如,NodeA 依赖于 NodeB,则 NodeA 是 NodeB 的子节点,而 NodeB 是 NodeA 的父节点。节点可以有零个父节点,也可以有两个以上的父节点。
大多数公共方法会改变图形。
- property records#
- remove_youngest_descendant_nodes_with_specs()#
用于仅确定请求规范的依赖关系的专用方法。
- 返回:
已删除的节点。
- 返回类型:
- prune()#
修剪所有包,直到所有子节点都由规范锚定。
- 返回:
修剪后的节点。
- 返回类型:
- 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 的最短路径