From 5843bf7fa9be06d75bbe2914b59ecaa522f656f1 Mon Sep 17 00:00:00 2001
From: Kevin <Kevin>
Date: Thu, 21 May 2020 20:43:04 +0200
Subject: [PATCH] Changed replace operations method

---
 b_asic/signal_flow_graph.py | 32 +++++++++++---------------------
 1 file changed, 11 insertions(+), 21 deletions(-)

diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index d2089f17..4541c367 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -416,34 +416,24 @@ class SFG(AbstractOperation):
 
         _sfg = self()
 
-        inputs = []
-        outputs = []
+        input_signals = []
+        output_signals = []
 
         for _operation in [_sfg.find_by_id(_id) for _id in operation_ids]:
-            
-            # Retrive input operations
-            for _signal in _operation.input_signals:
-                if _signal.source.operation.graph_id not in operation_ids:
-                    inputs.append(_signal.source.operation)
-
-            # Retrive output operations
-            for _signal in _operation.output_signals:
-                if _signal.destination.operation.graph_id not in operation_ids:
-                    outputs.append(_signal.destination.operation)
-
-        assert len(inputs) == operation.input_count, "The input count must match"
-        assert len(outputs) == operation.output_count, "The output count must match"
-
-        for index_in, _input in enumerate(inputs):
-            for _signal in _input.output_signals:
+            input_signals.extend(filter(lambda s: s.source.operation.graph_id not in operation_ids, _operation.input_signals))
+            output_signals.extend(filter(lambda s: s.destination.operation.graph_id not in operation_ids, _operation.output_signals))
+
+        assert len(input_signals) == operation.input_count, "The input count must match"
+        assert len(output_signals) == operation.output_count, "The output count must match"
+
+        for index_in, _signal in enumerate(input_signals):
                 _signal.remove_destination()
                 _signal.set_destination(operation.input(index_in))
 
-        for index_out, _output in enumerate(outputs):
-            for _signal in _output.input_signals:
+        for index_out, _signal in enumerate(output_signals):
                 _signal.remove_source()
                 _signal.set_source(operation.output(index_out))
-       
+      
         return _sfg()
 
     def _evaluate_source(self, src: OutputPort, results: MutableResultMap, registers: MutableRegisterMap, prefix: str) -> Number:
-- 
GitLab