diff --git a/saqc/core/translation/basescheme.py b/saqc/core/translation/basescheme.py index cf3f0ab78846e210f634c5d0717b06a72b2112ad..1d8943276680a1186990ccc83643ed230d6da7a9 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()