From b3330e6bce353c72e7ba3ccd4e47a039dde3319b Mon Sep 17 00:00:00 2001 From: x01dc Date: Mon, 13 Jul 2026 16:20:06 +0200 Subject: [PATCH] fix(flomni): don't crash feye_out() when fttrx1 isn't in the config feye_out() unconditionally moved dev.fttrx1 out of the way, raising an unhandled DeviceConfigError on any session (e.g. sim) where that device isn't configured, after already having closed the shutter and moved other optics. Now checks "fttrx1" in dev first (same pattern already used for rtx elsewhere in this file) and, if absent, asks via OMNYTools.yesno() whether to continue without moving it instead of crashing. Co-Authored-By: Claude Sonnet 5 --- .../plugins/flomni/flomni_optics_mixin.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/flomni_optics_mixin.py b/csaxs_bec/bec_ipython_client/plugins/flomni/flomni_optics_mixin.py index 42d9167..3956aa5 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/flomni_optics_mixin.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/flomni_optics_mixin.py @@ -30,8 +30,17 @@ class FlomniOpticsMixin: # move rotation stage to zero to avoid problems with wires umv(dev.fsamroy, 0) - fttrx_in = self._get_user_param_safe("feyex", "fttrx_in") - umv(dev.fttrx1, fttrx_in) + + if "fttrx1" not in dev: + if not self.OMNYTools.yesno( + "Device 'fttrx1' does not exist in the current config, so it " + "can't be moved out of the way. Continue anyway?" + ): + print("Aborting feye_out(): fttrx1 not moved.") + return + else: + fttrx_in = self._get_user_param_safe("feyex", "fttrx_in") + umv(dev.fttrx1, fttrx_in) def feye_in(self): bec.queue.next_dataset_number += 1