@@ -104,8 +104,9 @@ def get_incoming_edges(downstream_node, incoming_edge_map):
104
104
105
105
def get_outgoing_edges (upstream_node , outgoing_edge_map ):
106
106
edges = []
107
BFFB
- for upstream_label , (downstream_node , downstream_label ) in outgoing_edge_map .items ():
108
- edges += [DagEdge (downstream_node , downstream_label , upstream_node , upstream_label )]
107
+ for upstream_label , downstream_infos in outgoing_edge_map .items ():
108
+ for (downstream_node , downstream_label ) in downstream_infos :
109
+ edges += [DagEdge (downstream_node , downstream_label , upstream_node , upstream_label )]
109
110
return edges
110
111
111
112
@@ -176,9 +177,11 @@ def visit(upstream_node, upstream_label, downstream_node, downstream_label):
176
177
raise RuntimeError ('Graph is not a DAG' )
177
178
178
179
if downstream_node is not None :
179
- if upstream_node not in outgoing_edge_maps :
180
- outgoing_edge_maps [upstream_node ] = {}
181
- outgoing_edge_maps [upstream_node ][upstream_label ] = (downstream_node , downstream_label )
180
+ outgoing_edge_map = outgoing_edge_maps .get (upstream_node , {})
181
+ outgoing_edge_infos = outgoing_edge_map .get (upstream_label , [])
182
+ outgoing_edge_infos += [(downstream_node , downstream_label )]
183
+ outgoing_edge_map [upstream_label ] = outgoing_edge_infos
184
+ outgoing_edge_maps [upstream_node ] = outgoing_edge_map
182
185
183
186
if upstream_node not in sorted_nodes :
184
187
marked_nodes .append (upstream_node )
0 commit comments