diff --git a/prule/__init__.py b/prule/__init__.py index af345adbc3cfe5c188ce73269a474e3212a1b821..32f6fd71554835ba04636d376b2d65ba8095faf3 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"]])