From 6603931f514f8b1672f1a717c060fa9caa1efb31 Mon Sep 17 00:00:00 2001 From: appel_c Date: Wed, 11 Feb 2026 21:04:44 +0100 Subject: [PATCH 1/3] feat(device): add ophyd_labels to device_info and summary --- bec_lib/bec_lib/device.py | 5 ++++- .../bec_server/device_server/devices/device_serializer.py | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bec_lib/bec_lib/device.py b/bec_lib/bec_lib/device.py index 3ccfbf40b..79b1b6ced 100644 --- a/bec_lib/bec_lib/device.py +++ b/bec_lib/bec_lib/device.py @@ -1042,6 +1042,7 @@ def summary(self): table.add_column("Kind") table.add_column("Source") table.add_column("Type") + table.add_column("Labels") table.add_column("Description") signals = self._info.get("signals", {}) signals_grouped = defaultdict(dict) @@ -1072,13 +1073,14 @@ def summary(self): signal_info.get("kind_str"), signal_info.get("describe", {}).get("source"), signal_info.get("describe", {}).get("dtype"), + ", ".join(label for label in signal_info.get("labels", set(("",)))), signal_info.get("doc"), ) kind_added = True if bec_signals: table.add_row() table.add_section() - table.add_row("BECMessageSignals", "", "", "", "", "", style="bold") + table.add_row("BECMessageSignals", "", "", "", "", "", "", style="bold") table.add_section() for signal_name, signal_info in bec_signals: table.add_row( @@ -1087,6 +1089,7 @@ def summary(self): signal_info.get("kind_str"), signal_info.get("describe", {}).get("source"), signal_info.get("describe", {}).get("dtype"), + ", ".join(label for label in signal_info.get("labels", set(("",)))), signal_info.get("doc"), ) diff --git a/bec_server/bec_server/device_server/devices/device_serializer.py b/bec_server/bec_server/device_server/devices/device_serializer.py index 84b9ad626..853f4e0d7 100644 --- a/bec_server/bec_server/device_server/devices/device_serializer.py +++ b/bec_server/bec_server/device_server/devices/device_serializer.py @@ -186,6 +186,7 @@ def get_device_info( "describe": signal_obj.describe().get(signal_obj.name, {}), # pylint: disable=protected-access "metadata": signal_obj._metadata, + "labels": signal_obj._ophyd_labels_, } } ) @@ -203,6 +204,7 @@ def get_device_info( "describe": signal_obj.describe().get(signal_obj.name, {}), # pylint: disable=protected-access "metadata": signal_obj._metadata, + "labels": signal_obj._ophyd_labels_, } } ) From 71fdd9e3c5eea13953279f391faad9bd3e0aa006 Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 12 Feb 2026 10:14:11 +0100 Subject: [PATCH 2/3] test(device-summary): fix tests for device.summary() --- bec_lib/bec_lib/device.py | 2 +- bec_lib/tests/test_devices.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bec_lib/bec_lib/device.py b/bec_lib/bec_lib/device.py index 79b1b6ced..d233c7dbb 100644 --- a/bec_lib/bec_lib/device.py +++ b/bec_lib/bec_lib/device.py @@ -1073,7 +1073,7 @@ def summary(self): signal_info.get("kind_str"), signal_info.get("describe", {}).get("source"), signal_info.get("describe", {}).get("dtype"), - ", ".join(label for label in signal_info.get("labels", set(("",)))), + ", ".join(label for label in sorted(signal_info.get("labels", set(("",))))), signal_info.get("doc"), ) kind_added = True diff --git a/bec_lib/tests/test_devices.py b/bec_lib/tests/test_devices.py index 02b449cd2..0e07cb1cf 100644 --- a/bec_lib/tests/test_devices.py +++ b/bec_lib/tests/test_devices.py @@ -768,6 +768,7 @@ def test_device_summary(dev: Any): "Kind", "Source", "Type", + "Labels", "Description", ] @@ -788,6 +789,7 @@ def test_device_summary_signal_grouping(dev: Any): "hinted", "SIM:samx", "integer", + "", "readback doc string", ) assert mock_add_row.call_args_list[1][0] == tuple() @@ -797,6 +799,7 @@ def test_device_summary_signal_grouping(dev: Any): "normal", "SIM:samx_setpoint", "integer", + "", "setpoint doc string", ) devs = [row_call[0][0] for row_call in mock_add_row.call_args_list if row_call[0]] @@ -841,6 +844,7 @@ def test_device_summary_bec_signals(dm_with_devices): "BECMessageSignal:eiger_preview", "DevicePreviewMessage", "", + "", ) ] ) From a6a997abeaa471660a55422fd6c78a3bb83762a5 Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 13 Feb 2026 10:13:43 +0100 Subject: [PATCH 3/3] refactor: cleanup use list[str] for labels instead of set --- bec_lib/bec_lib/device.py | 4 ++-- .../bec_server/device_server/devices/device_serializer.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bec_lib/bec_lib/device.py b/bec_lib/bec_lib/device.py index d233c7dbb..69163fe64 100644 --- a/bec_lib/bec_lib/device.py +++ b/bec_lib/bec_lib/device.py @@ -1073,7 +1073,7 @@ def summary(self): signal_info.get("kind_str"), signal_info.get("describe", {}).get("source"), signal_info.get("describe", {}).get("dtype"), - ", ".join(label for label in sorted(signal_info.get("labels", set(("",))))), + ", ".join(label for label in signal_info.get("labels", [])), signal_info.get("doc"), ) kind_added = True @@ -1089,7 +1089,7 @@ def summary(self): signal_info.get("kind_str"), signal_info.get("describe", {}).get("source"), signal_info.get("describe", {}).get("dtype"), - ", ".join(label for label in signal_info.get("labels", set(("",)))), + ", ".join(label for label in signal_info.get("labels", [])), signal_info.get("doc"), ) diff --git a/bec_server/bec_server/device_server/devices/device_serializer.py b/bec_server/bec_server/device_server/devices/device_serializer.py index 853f4e0d7..a7d168601 100644 --- a/bec_server/bec_server/device_server/devices/device_serializer.py +++ b/bec_server/bec_server/device_server/devices/device_serializer.py @@ -186,7 +186,7 @@ def get_device_info( "describe": signal_obj.describe().get(signal_obj.name, {}), # pylint: disable=protected-access "metadata": signal_obj._metadata, - "labels": signal_obj._ophyd_labels_, + "labels": sorted(signal_obj._ophyd_labels_), } } ) @@ -204,7 +204,7 @@ def get_device_info( "describe": signal_obj.describe().get(signal_obj.name, {}), # pylint: disable=protected-access "metadata": signal_obj._metadata, - "labels": signal_obj._ophyd_labels_, + "labels": sorted(signal_obj._ophyd_labels_), } } )