1
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2026-01-01 03:21:19 +01:00

fix: add metadata to scan control export

This commit is contained in:
2025-10-30 16:25:24 +01:00
committed by wyzula-jan
parent f7210b88ea
commit 17fa18d9d2
4 changed files with 12 additions and 5 deletions

View File

@@ -467,6 +467,8 @@ class ScanControl(BECWidget, QWidget):
for box in self.kwarg_boxes:
box_kwargs = box.get_parameters(bec_object)
kwargs.update(box_kwargs)
if self._scan_metadata is not None:
kwargs["metadata"] = self._scan_metadata
return args, kwargs
def restore_scan_parameters(self, scan_name: str):
@@ -519,7 +521,6 @@ class ScanControl(BECWidget, QWidget):
def run_scan(self):
"""Starts the selected scan with the given parameters."""
args, kwargs = self.get_scan_parameters()
kwargs["metadata"] = self._scan_metadata
self.scan_args.emit(args)
scan_function = getattr(self.scans, self.comboBox_scan_selection.currentText())
if callable(scan_function):

View File

@@ -89,7 +89,7 @@ class ScanControlDialog(QDialog):
# Add keyword arguments (excluding metadata)
if processed_kwargs:
kwargs_strs = [f"{k}={v}" for k, v in processed_kwargs.items() if k != "metadata"]
kwargs_strs = [f"{k}={v}" for k, v in processed_kwargs.items()]
all_args.extend(kwargs_strs)
# Join all arguments and create the scan call

View File

@@ -116,5 +116,5 @@ def test_monaco_widget_get_scan_control_code(monaco_widget: MonacoWidget, qtbot,
scan_control_dialog.accept()
out = scan_control_dialog.get_scan_code()
expected_code = "scans.grid_scan(dev.samx, -10.0, 10.0, 20, dev.samy, -5.0, 5.0, 10, exp_time=0.2, settling_time=0.1, burst_at_each_point=2, relative=False, optim_trajectory=None)"
expected_code = "scans.grid_scan(dev.samx, -10.0, 10.0, 20, dev.samy, -5.0, 5.0, 10, exp_time=0.2, settling_time=0.1, burst_at_each_point=2, relative=False, optim_trajectory=None, metadata={'sample_name': ''})"
assert out == expected_code

View File

@@ -505,7 +505,13 @@ def test_get_scan_parameters_from_redis(scan_control, mocked_client):
args, kwargs = scan_control.get_scan_parameters(bec_object=False)
assert args == ["samx", 0.0, 2.0]
assert kwargs == {"steps": 10, "relative": False, "exp_time": 2.0, "burst_at_each_point": 1}
assert kwargs == {
"steps": 10,
"relative": False,
"exp_time": 2.0,
"burst_at_each_point": 1,
"metadata": {"sample_name": ""},
}
TEST_MD = {"sample_name": "Test Sample", "test key 1": "test value 1", "test key 2": "test value 2"}
@@ -557,7 +563,7 @@ def test_scan_metadata_is_passed_to_scan_function(scan_control: ScanControl):
scans = SimpleNamespace(grid_scan=MagicMock())
with (
patch.object(scan_control, "scans", scans),
patch.object(scan_control, "get_scan_parameters", lambda: ((), {})),
patch.object(scan_control, "get_scan_parameters", lambda: ((), {"metadata": TEST_MD})),
):
scan_control.run_scan()
scans.grid_scan.assert_called_once_with(metadata=TEST_MD)