From 07b289e2df793e368704541b0b001e8970bf74b4 Mon Sep 17 00:00:00 2001
From: Christoph Schmidt <christoph.,schmidt@tugraz.at>
Date: Fri, 22 Dec 2023 12:20:43 +0100
Subject: [PATCH] Updated to v0.1.0. Child Process functions can be connected
 without triggering a signal when finished. Emit function bug removed

---
 src/cmp/CProcessControl.py |  4 +---
 src/cmp/CResultRecord.py   | 12 +++++++++++-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/cmp/CProcessControl.py b/src/cmp/CProcessControl.py
index 541714b..ca6df80 100644
--- a/src/cmp/CProcessControl.py
+++ b/src/cmp/CProcessControl.py
@@ -104,9 +104,7 @@ class CProcessControl(CBase, QObject):
                         self.logger.warning(f"Error cannot handle log record: {e}")
                 elif isinstance(res, cmp.CResultRecord):
                     try:
-                        if isinstance(res, Signal):
-                            res.emit_signal(self._signal_class)
-                            self._internal_logger.debug(f"Emitted {res} in {self._signal_class.__class__.__name__}.")
+                        res.emit_signal(self._signal_class)
                     except Exception as e:
                         self._internal_logger.error(f"Error while emitting {res} in {self.__class__.__name__}: {e}")
                 else:
diff --git a/src/cmp/CResultRecord.py b/src/cmp/CResultRecord.py
index 54c5c84..af26e01 100644
--- a/src/cmp/CResultRecord.py
+++ b/src/cmp/CResultRecord.py
@@ -1,3 +1,4 @@
+import logging
 from inspect import Signature, Parameter
 
 from cmp import CProcessControl as CProcessControl
@@ -12,7 +13,16 @@ class CResultRecord:
 
     def emit_signal(self, class_object: CProcessControl):
         if hasattr(class_object, '_internal_logger'):
-            class_object._internal_logger.info(f"Function {self.function_name} returned {self.result}. "
+            logger: logging.Logger =  class_object._internal_logger
+        else:
+            logger = logging.getLogger(f"{__name__} - fallback")
+
+        if self.signal_name is None:
+            logger.info(f"Function {self.function_name} returned {self.result}. "
+                                               f"No signal to emit.")
+            return
+        if hasattr(class_object, '_internal_logger'):
+            logger.info(f"Function {self.function_name} returned {self.result}. "
                                                f"Emitting {self} in {class_object.__class__.__name__}.")
         emitter = getattr(class_object, self.signal_name).emit
         if isinstance(self.result, tuple):
-- 
GitLab