From a1e72a7a60a48993c02d66b33c01700336a7474f Mon Sep 17 00:00:00 2001
From: David Schaefer <david.schaefer@ufz.de>
Date: Tue, 20 Dec 2022 09:42:46 +0100
Subject: [PATCH] lift the value range restriction from the FloatFlagger

---
 saqc/core/translation/basescheme.py | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/saqc/core/translation/basescheme.py b/saqc/core/translation/basescheme.py
index cf3f0ab78..1d8943276 100644
--- a/saqc/core/translation/basescheme.py
+++ b/saqc/core/translation/basescheme.py
@@ -199,22 +199,20 @@ class FloatScheme(TranslationScheme):
 
     DFILTER_DEFAULT: float = FILTER_ALL
 
-    def _check(self, val):
-        return ~((val < 0) | (val > 255) | (val != UNFLAGGED))
-
     def __call__(self, flag: float | int) -> float:
-        if self._check(flag):
+
+        try:
             return float(flag)
-        raise ValueError(
-            f"invalid flag, expected a numerical value in the interval [0, 255], got: {flag}"
-        )
+        except (TypeError, ValueError, OverflowError):
+            raise ValueError(f"invalid flag, expected a numerical value, got: {flag}")
 
     def forward(self, flags: pd.DataFrame | DictOfSeries) -> Flags:
-        if self._check(flags):
-            return Flags(flags)
-        raise ValueError(
-            f"invalid flag, expected a collection of numerical value in the interval [0, 255], got: {flags}"
-        )
+        try:
+            return Flags(flags.astype(float))
+        except (TypeError, ValueError, OverflowError):
+            raise ValueError(
+                f"invalid flag(s), expected a collection of numerical values, got: {flags}"
+            )
 
     def backward(self, flags: Flags, attrs: dict | None = None) -> DictOfSeries:
         out = flags.toDios()
-- 
GitLab