Make dependency validation linear
This commit is contained in:
parent
7e0eff347c
commit
3bee200234
4 changed files with 152 additions and 18 deletions
|
|
@ -479,14 +479,12 @@ def validate_graph(nodes: tuple[Node, ...], edges: tuple[Edge, ...]) -> None:
|
|||
if missing:
|
||||
raise DocForgeError("broken_edge", "Relationships target missing nodes", targets=missing)
|
||||
|
||||
dependencies = {
|
||||
node_id: sorted(
|
||||
edge.target_id
|
||||
for edge in edges
|
||||
if edge.source_id == node_id and edge.relation == "depends_on"
|
||||
)
|
||||
for node_id in sorted(node_ids)
|
||||
}
|
||||
dependencies: dict[str, list[str]] = {node_id: [] for node_id in node_ids}
|
||||
for edge in edges:
|
||||
if edge.relation == "depends_on":
|
||||
dependencies[edge.source_id].append(edge.target_id)
|
||||
for targets in dependencies.values():
|
||||
targets.sort()
|
||||
visiting: set[str] = set()
|
||||
visited: set[str] = set()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue