From 26af148a048e68c56ad32aaafe69bed9eace90da Mon Sep 17 00:00:00 2001 From: David Hammer <dhammer@mailbox.org> Date: Fri, 21 Jan 2022 16:24:50 +0100 Subject: [PATCH] Wrap frame filter type in enum --- src/calng/base_correction.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py index 59c48000..14a1b6b1 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 -- GitLab