From cd39e03981e4f61441332bcc80fe64b9486395a2 Mon Sep 17 00:00:00 2001 From: David Hammer <dhammer@mailbox.org> Date: Tue, 2 Nov 2021 10:42:40 +0100 Subject: [PATCH] Karabo 2.10 does not allow slotName for KARABO_SLOT --- src/calng/base_correction.py | 37 +++++++++++++++++++----------------- src/calng/calcat_utils.py | 13 +++++++++---- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py index 2b072927..3f3d4686 100644 --- a/src/calng/base_correction.py +++ b/src/calng/base_correction.py @@ -32,6 +32,8 @@ from karabo.bound import ( ) from karabo.common.api import KARABO_SCHEMA_DISPLAY_TYPE_SCENES as DT_SCENES from karabo.common.states import State +from karabo import version as karaboVersion +from pkg_resources import parse_version from . import scenes, shmem_utils, utils from ._version import version as deviceVersion @@ -460,31 +462,32 @@ class BaseCorrection(PythonDevice): ) self._last_processing_started = 0 # not input handler should put timestamp self._rate_update_timer = utils.RepeatingTimer( - interval=0.5, + interval=1, callback=self._update_rate_and_state, ) self._buffer_lock = threading.Lock() self.KARABO_SLOT(self.loadMostRecentConstants) self.KARABO_SLOT(self.requestScene) - # TODO: the CalCatFriend could add these for us - # note: overly complicated slot function creation necessary for closure to work - def make_wrapper_capturing_constant(constant): - def aux(): - self.calcat_friend.get_specific_constant_version_and_call_me_back( - constant, self._load_constant_to_gpu + if parse_version(karaboVersion) >= parse_version("2.11"): + # TODO: the CalCatFriend could add these for us + # note: overly complicated slot function creation necessary for closure to work + def make_wrapper_capturing_constant(constant): + def aux(): + self.calcat_friend.get_specific_constant_version_and_call_me_back( + constant, self._load_constant_to_gpu + ) + + return aux + + for constant in self._constant_enum_class: + slot_name = f"foundConstants.{constant.name}.overrideConstantVersion" + meth_name = slot_name.replace(".", "_") + self.KARABO_SLOT( + make_wrapper_capturing_constant(constant), + slotName=meth_name, ) - return aux - - for constant in self._constant_enum_class: - slot_name = f"foundConstants.{constant.name}.overrideConstantVersion" - meth_name = slot_name.replace(".", "_") - self.KARABO_SLOT( - make_wrapper_capturing_constant(constant), - slotName=meth_name, - ) - def preReconfigure(self, config): for ts_path in ( "constantParameters.deviceMappingSnapshotAt", diff --git a/src/calng/calcat_utils.py b/src/calng/calcat_utils.py index 3f5753fb..1f6fec91 100644 --- a/src/calng/calcat_utils.py +++ b/src/calng/calcat_utils.py @@ -25,6 +25,8 @@ from karabo.bound import ( STRING_ELEMENT, UINT32_ELEMENT, ) +from karabo import version as karaboVersion +from pkg_resources import parse_version from . import utils @@ -91,11 +93,14 @@ def _add_status_schema_from_enum(schema, prefix, enum_class): .defaultValue("") .reconfigurable() .commit(), - SLOT_ELEMENT(schema) - .key(f"{constant_node}.overrideConstantVersion") - .displayedName("Override constant version") - .commit(), ) + if parse_version(karaboVersion) >= parse_version("2.11"): + ( + SLOT_ELEMENT(schema) + .key(f"{constant_node}.overrideConstantVersion") + .displayedName("Override constant version") + .commit(), + ) class DetectorStandin(typing.NamedTuple): -- GitLab