From a30ee12d0f6b6260f549f2d521032b3a49e5c3a1 Mon Sep 17 00:00:00 2001 From: Nicolas Kruse Date: Wed, 3 Dec 2025 17:27:29 +0100 Subject: [PATCH] fixed get_all_dag_edges prevent it emitting edges multiple time --- src/copapy/_compiler.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/copapy/_compiler.py b/src/copapy/_compiler.py index 4eade86..e4b1553 100644 --- a/src/copapy/_compiler.py +++ b/src/copapy/_compiler.py @@ -64,9 +64,15 @@ def get_all_dag_edges(nodes: Iterable[Node]) -> Generator[tuple[Node, Node], Non Yields: Tuples of (source_node, target_node) representing edges in the DAG """ + emitted_nodes: set[tuple[Node, Node]] = set() + for node in nodes: yield from get_all_dag_edges(net.source for net in node.args) - yield from ((net.source, node) for net in node.args) + for net in node.args: + edge = (net.source, node) + if edge not in emitted_nodes: + yield edge + emitted_nodes.add(edge) def get_const_nets(nodes: list[Node]) -> list[Net]: