diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py index 59c48000a3f42a54e62ff5c780a413b3fe746dfa..14a1b6b16ad8452042136cd72a9cbd05e7f5ac41 100644 --- a/src/calng/base_correction.py +++ b/src/calng/base_correction.py @@ -1,3 +1,4 @@ +import enum import pathlib import threading from timeit import default_timer @@ -41,6 +42,13 @@ from ._version import version as deviceVersion PROCESSING_STATE_TIMEOUT = 10 + +class FramefilterSpecType(enum.Enum): + NONE = "none" + RANGE = "range" + COMMASEPARATED = "commaseparated" + + preview_schema = Schema() ( NODE_ELEMENT(preview_schema).key("image").commit(), @@ -297,7 +305,7 @@ class BaseCorrection(PythonDevice): "are parsed and passed directly to numpy.arange. 'commaseparated' " "reads a list of integers separated by commas." ) - .options("none,arange,commaseparated") + .options(",".join(spectype.value for spectype in FramefilterSpecType)) .assignmentOptional() .defaultValue("none") .reconfigurable() @@ -830,12 +838,12 @@ class BaseCorrection(PythonDevice): afterwards.""" # TODO: add some validation to preReconfigure self.log.DEBUG("Updating frame filter") - filter_type = self.get("frameFilter.type") + filter_type = FramefilterSpecType(self.get("frameFilter.type")) filter_string = self.get("frameFilter.spec") - if filter_type == "none" or filter_string.strip() == "": + if filter_type is FramefilterSpecType.NONE or filter_string.strip() == "": self._frame_filter = None - elif filter_type == "arange": + elif filter_type is Framefilterspectype.RANGE: try: numbers = tuple(int(part) for part in filter_string.split(",")) except (ValueError, TypeError): @@ -844,7 +852,7 @@ class BaseCorrection(PythonDevice): ) else: self._frame_filter = np.arange(*numbers, dtype=np.uint16) - elif filter_type == "commaseparated": + elif filter_type is Framefilterspectype.COMMASEPARATED: try: self._frame_filter = np.fromstring( filter_string, sep=",", dtype=np.uint16