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:
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user