From d264631d9206ade5452e6c102359175c5ba092c4 Mon Sep 17 00:00:00 2001
From: Alex Wiens <alex.wiens@uni-paderborn.de>
Date: Wed, 12 Mar 2025 18:38:33 +0100
Subject: [PATCH] Prule: Fix scalar output value check

---
 prule/__init__.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/prule/__init__.py b/prule/__init__.py
index af345ad..32f6fd7 100644
--- a/prule/__init__.py
+++ b/prule/__init__.py
@@ -1157,7 +1157,17 @@ def rule_evaluate(rule: dict, rinput: dict, job_meta: dict, check_requirements:
             log.print(log.debug, locals[rule["output_scalar"]])
             if isinstance(locals[rule["output_scalar"]], prule.builtin.Data):
                 log.print(log.debug, locals[rule["output_scalar"]].array)
-                output["scalar"] = float(locals[rule["output_scalar"]].array)
+                scalar_tmp = locals[rule["output_scalar"]].array
+                if hasattr(scalar_tmp, 'magnitude') == True:
+                    scalar_tmp = scalar_tmp.magnitude
+                if len(scalar_tmp) == 1:
+                    scalar_tmp = float(scalar_tmp)
+                else:
+                    error = True
+                    error_msg = "Error on converting scalar output value {} for rule {}: multiple values: {} in variable of type {}".format(rule["output_scalar"], rule["name"], len(scalar_tmp), type(scalar_tmp))
+                    output["errors"].append(error_msg)
+                    log.print(log.error, error_msg)
+                    output["scalar"] = None
             else:
                 try:
                     scalar_value = float(locals[rule["output_scalar"]])
-- 
GitLab