From e5dcdf384efc6a05aaa4d07e6d8d2ad9163f91a6 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 9 Apr 2026 16:43:29 +0100 Subject: [PATCH 01/14] Additional documentation regarding environment variables --- .../advanced/advanced_configuration.rst | 18 ++++++++++++++++++ docs/user/hyperion/configuration.rst | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 docs/user/hyperion/advanced/advanced_configuration.rst diff --git a/docs/user/hyperion/advanced/advanced_configuration.rst b/docs/user/hyperion/advanced/advanced_configuration.rst new file mode 100644 index 0000000000..eeddbbf77d --- /dev/null +++ b/docs/user/hyperion/advanced/advanced_configuration.rst @@ -0,0 +1,18 @@ +Advanced Configuration +====================== + +Environment Variables +--------------------- + +Hyperion deployment is configurable by number of different environment variables: + +.. csv-table:: Environment variables + :widths: auto + :header: "Environment Variable", "Description" + + "ISPYB_CONFIG_PATH", "Path to endpoint and credential configuration for ISPyB and ExpEye" + "LOG_DIR", "Path to the logging directory for file-based logging" + "DEBUG_LOG_DIR", "Path to the logging directory for the debug log" + "ZOCALO_CONFIG", "Path to the configuration YAML file for zocalo" + "BEAMLINE", "Defines the name of the beamline" + "CONFIG_SERVER_URL", "URL for the config server" diff --git a/docs/user/hyperion/configuration.rst b/docs/user/hyperion/configuration.rst index ff62c4a309..6f92003190 100644 --- a/docs/user/hyperion/configuration.rst +++ b/docs/user/hyperion/configuration.rst @@ -57,3 +57,8 @@ ultimately it will be the source of all configuration and the remainder of the f moved over to it. .. _Config Server: https://github.com/DiamondLightSource/daq-config-server/ + + +See also `Advanced Configuration`_ for details of configuration performed at deployment time. + +.. _`Code Map`: advanced/advanced_configuration.rst From 8c167a02a212f6f9644f52d78ca85a37ed085f82 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 9 Apr 2026 16:52:01 +0100 Subject: [PATCH 02/14] External callbacks now have configurable config server URL --- .../external_interaction/callbacks/__main__.py | 13 +++++++++++++ .../callbacks/test_external_callbacks.py | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py b/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py index c93c746221..a5f0ab770a 100644 --- a/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +++ b/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py @@ -1,4 +1,5 @@ import logging +import os from abc import abstractmethod from collections.abc import Callable from contextlib import AbstractContextManager @@ -12,6 +13,8 @@ from bluesky.callbacks.zmq import Proxy, RemoteDispatcher from bluesky_stomp.messaging import StompClient from bluesky_stomp.models import Broker +from daq_config_server import ConfigClient +from dodal.common.beamlines.beamline_utils import set_config_client from dodal.log import LOGGER as DODAL_LOGGER from dodal.log import set_up_all_logging_handlers @@ -141,6 +144,15 @@ def setup_logging(dev_mode: bool): log_debug("nexgen logger added to nexus logger") +def create_config_client() -> ConfigClient: + config_server_url = os.getenv("CONFIG_SERVER_URL") + if not config_server_url: + raise ValueError( + "CONFIG_SERVER_URL must be specified to run external callbacks." + ) + return ConfigClient(config_server_url) + + def log_info(msg, *args, **kwargs): ISPYB_ZOCALO_CALLBACK_LOGGER.info(msg, *args, **kwargs) NEXUS_LOGGER.info(msg, *args, **kwargs) @@ -157,6 +169,7 @@ class HyperionCallbackRunner: def __init__(self, callback_args: CallbackArgs) -> None: setup_logging(callback_args.dev_mode) log_info("Hyperion callback process started.") + set_config_client(create_config_client()) set_alerting_service(LoggingAlertService(CONST.GRAYLOG_STREAM_ID)) self.callbacks = setup_callbacks() diff --git a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py index 6371f553ed..227c4a6438 100644 --- a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +++ b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py @@ -33,6 +33,7 @@ ) @patch("mx_bluesky.hyperion.external_interaction.callbacks.__main__.setup_callbacks") @patch("mx_bluesky.hyperion.external_interaction.callbacks.__main__.setup_logging") +@patch("mx_bluesky.hyperion.external_interaction.callbcaks.__main__.set_config_client") @patch( "mx_bluesky.hyperion.external_interaction.callbacks.__main__.set_alerting_service" ) @@ -42,6 +43,7 @@ def test_main_function( mock_proxy: MagicMock, mock_dispatcher: MagicMock, setup_alerting: MagicMock, + set_config_client: MagicMock, setup_logging: MagicMock, setup_callbacks: MagicMock, parse_callback_args: MagicMock, @@ -60,12 +62,22 @@ def test_main_function( dispatcher_started.wait(0.5) mock_run_watchdog.wait(0.5) setup_logging.assert_called() + set_config_client.assert_called() setup_callbacks.assert_called() setup_alerting.assert_called_once() mock_run_watchdog.assert_called_once() assert isinstance(setup_alerting.mock_calls[0].args[0], LoggingAlertService) +@patch( + "mx_bluesky.hyperion.external_interaction.callbacks.__main__.parse_callback_args", + MagicMock(return_value=CallbackArgs(True, HyperionConstants.SUPERVISOR_PORT)), +) +def test_no_config_server_url_raises_exception(): + with pytest.raises(ValueError, match="CONFIG_SERVER_URL must be specified"): + main() + + def test_setup_callbacks(): current_number_of_callbacks = 8 cbs = setup_callbacks() From c204aec3d32dc0a9ecb82089441f19a3b85450ce Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Mon, 13 Apr 2026 12:15:02 +0100 Subject: [PATCH 03/14] Set CONFIG_SERVER_URL in external callback unit tests --- .../external_interaction/callbacks/test_external_callbacks.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py index 227c4a6438..0c20e2d6d2 100644 --- a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +++ b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py @@ -48,7 +48,9 @@ def test_main_function( setup_callbacks: MagicMock, parse_callback_args: MagicMock, mock_run_watchdog: MagicMock, + monkeypatch, ): + monkeypatch.setenv("CONFIG_SERVER_URL", "http://127.0.0.1:8555") proxy_started = Event() dispatcher_started = Event() watchdog_started = Event() @@ -178,7 +180,9 @@ def test_launch_with_stomp_launches_stomp_backend( mock_setup_callbacks: MagicMock, mock_client_cls: MagicMock, mock_dispatcher_cls: MagicMock, + monkeypatch, ): + monkeypatch.setenv("CONFIG_SERVER_URL", "http://127.0.0.1:8555") stomp_client = mock_client_cls.for_broker.return_value dispatcher = mock_dispatcher_cls.return_value stomp_client.is_connected.side_effect = [True, False] From 912861f6b4bac6a2f421615f476290b3552c4010 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 16 Apr 2026 10:52:19 +0100 Subject: [PATCH 04/14] Add CONFIG_SERVER_URL to the launcher script --- run_hyperion.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/run_hyperion.sh b/run_hyperion.sh index 37b95a40c4..f0299e9bac 100755 --- a/run_hyperion.sh +++ b/run_hyperion.sh @@ -110,6 +110,8 @@ if [ -z "${BEAMLINE}" ]; then exit 1 fi +export CONFIG_SERVER_URL="https://${BEAMLINE}-daq-config.diamond.ac.uk" + if [[ $STOP == 1 ]]; then if [ $IN_DEV == false ]; then check_user From 5ed0afefa7b54ac0e376d60bc13c4bfe0867547c Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 16 Apr 2026 11:01:28 +0100 Subject: [PATCH 05/14] Fix broken doc links --- docs/user/hyperion/configuration.rst | 5 +++-- docs/user/hyperion/troubleshooting.rst | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/user/hyperion/configuration.rst b/docs/user/hyperion/configuration.rst index 6f92003190..d0ed16fd33 100644 --- a/docs/user/hyperion/configuration.rst +++ b/docs/user/hyperion/configuration.rst @@ -56,9 +56,10 @@ Note that currently the rest of the configuration files are not read from the co ultimately it will be the source of all configuration and the remainder of the files in ``daq_configuration`` will be moved over to it. -.. _Config Server: https://github.com/DiamondLightSource/daq-config-server/ +See `Config Server`_ for details of the config server and how it is configured and deployed. +.. _Config Server: https://github.com/DiamondLightSource/daq-config-server/ See also `Advanced Configuration`_ for details of configuration performed at deployment time. -.. _`Code Map`: advanced/advanced_configuration.rst +.. _`Advanced Configuration`: advanced/advanced_configuration.html diff --git a/docs/user/hyperion/troubleshooting.rst b/docs/user/hyperion/troubleshooting.rst index a1b0e3ac42..75ecc99251 100644 --- a/docs/user/hyperion/troubleshooting.rst +++ b/docs/user/hyperion/troubleshooting.rst @@ -40,7 +40,7 @@ following However on inspection the start log will not show any errors. Hyperion running can be verified as above `Verifying that Hyperion is running`_ -.. _`Verifying that Hyperion is running`: advanced/install.rst +.. _`Verifying that Hyperion is running`: advanced/install.html Smargon Motion ~~~~~~~~~~~~~~ From af67b261622defc9731182d2c1f30a670a67fce6 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Mon, 13 Apr 2026 12:12:18 +0100 Subject: [PATCH 06/14] fix typo in test_external_callbacks.py --- .../external_interaction/callbacks/test_external_callbacks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py index 0c20e2d6d2..04da7ee0ac 100644 --- a/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +++ b/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py @@ -33,7 +33,7 @@ ) @patch("mx_bluesky.hyperion.external_interaction.callbacks.__main__.setup_callbacks") @patch("mx_bluesky.hyperion.external_interaction.callbacks.__main__.setup_logging") -@patch("mx_bluesky.hyperion.external_interaction.callbcaks.__main__.set_config_client") +@patch("mx_bluesky.hyperion.external_interaction.callbacks.__main__.set_config_client") @patch( "mx_bluesky.hyperion.external_interaction.callbacks.__main__.set_alerting_service" ) From 4e3020f749cbb3efdc4d67c6e7e01543ef454ac2 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Wed, 15 Apr 2026 17:18:16 +0100 Subject: [PATCH 07/14] Update uv.lock --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6ade793d98..f35ae65e60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.16.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@main", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@fix_config_server_system_test_breakage", ] From 152627f888d22b135dcac05a1364a8665281629e Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Tue, 28 Apr 2026 15:12:09 +0100 Subject: [PATCH 08/14] Unpin dodal --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f35ae65e60..6ade793d98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.16.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@fix_config_server_system_test_breakage", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@main", ] From c9e1260c82ec307454b819202038dfd712b34d68 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Fri, 10 Apr 2026 14:53:08 +0100 Subject: [PATCH 09/14] Remove insertion_prefix from WithVisit parameter model --- src/mx_bluesky/common/parameters/components.py | 2 -- tests/test_data/hyperion_blueapi/test_load_centre_collect.json | 1 - .../good_test_grid_with_edge_detect_parameters.json | 1 - .../good_test_load_centre_collect_params.json | 1 - .../good_test_load_centre_collect_params_multi_rotation.json | 1 - .../good_test_multi_rotation_scan_parameters.json | 1 - .../good_test_one_multi_rotation_scan_parameters.json | 1 - .../good_test_one_multi_rotation_scan_parameters_nomove.json | 1 - tests/test_data/parameter_json_files/good_test_parameters.json | 1 - .../good_test_pin_centre_then_xray_centre_parameters.json | 1 - .../good_test_robot_load_and_centre_params.json | 1 - .../parameter_json_files/good_test_robot_load_params.json | 1 - .../good_test_rotation_scan_parameters.json | 1 - .../ispyb_gridscan_system_test_parameters.json | 1 - .../parameter_json_files/test_gridscan_param_defaults.json | 1 - .../experiment_plans/test_load_centre_collect_full_plan.py | 2 -- 16 files changed, 18 deletions(-) diff --git a/src/mx_bluesky/common/parameters/components.py b/src/mx_bluesky/common/parameters/components.py index 97615e82a5..52d2317426 100644 --- a/src/mx_bluesky/common/parameters/components.py +++ b/src/mx_bluesky/common/parameters/components.py @@ -24,7 +24,6 @@ from semver import Version from mx_bluesky.common.parameters.constants import ( - TEST_MODE, USE_NUMTRACKER, DetectorParamConstants, GridscanParamConstants, @@ -158,7 +157,6 @@ class WithVisit(BaseModel): default=DetectorParamConstants.BEAM_XY_LUT_PATH ) detector_distance_mm: float | None = Field(default=None, gt=0) - insertion_prefix: str = "SR03S" if TEST_MODE else "SR03I" class DiffractionExperiment( diff --git a/tests/test_data/hyperion_blueapi/test_load_centre_collect.json b/tests/test_data/hyperion_blueapi/test_load_centre_collect.json index 376eeace9f..2f55a641a1 100644 --- a/tests/test_data/hyperion_blueapi/test_load_centre_collect.json +++ b/tests/test_data/hyperion_blueapi/test_load_centre_collect.json @@ -5,7 +5,6 @@ "parameter_model_version": "5.0.0", "beamline": "BL03S", "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", - "insertion_prefix": "SR03S", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json b/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json index e0b2d30681..2f196197d0 100644 --- a/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "storage_directory": "/tmp", "file_name": "file_name", "run_number": 0, diff --git a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json index 5f98f92e58..bc77e8f286 100644 --- a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +++ b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json @@ -2,7 +2,6 @@ "parameter_model_version": "5.0.0", "beamline": "BL03S", "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", - "insertion_prefix": "SR03S", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json index eb84f9bb94..a9b183631a 100644 --- a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +++ b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json @@ -2,7 +2,6 @@ "parameter_model_version": "5.0.0", "beamline": "BL03S", "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", - "insertion_prefix": "SR03S", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json index bb2958c3ef..0061c4cfbe 100644 --- a/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json @@ -6,7 +6,6 @@ "detector_distance_mm": 100.0, "demand_energy_ev": 100, "exposure_time_s": 0.1, - "insertion_prefix": "SR03S", "file_name": "file_name", "run_number": 0, "shutter_opening_time_s": 0.6, diff --git a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json index e1874e5164..738a2af0c8 100644 --- a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json @@ -6,7 +6,6 @@ "detector_distance_mm": 100.0, "demand_energy_ev": 100, "exposure_time_s": 0.1, - "insertion_prefix": "SR03S", "file_name": "file_name", "visit": "cm31105-4", "transmission_frac": 0.1, diff --git a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json index e8a2c24089..61057c8b9d 100644 --- a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +++ b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json @@ -6,7 +6,6 @@ "detector_distance_mm": 100.0, "demand_energy_ev": 100, "exposure_time_s": 0.1, - "insertion_prefix": "SR03S", "file_name": "file_name", "rotation_increment_deg": 0.1, "run_number": 0, diff --git a/tests/test_data/parameter_json_files/good_test_parameters.json b/tests/test_data/parameter_json_files/good_test_parameters.json index 14b9b80900..745d28bd59 100644 --- a/tests/test_data/parameter_json_files/good_test_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_parameters.json @@ -6,7 +6,6 @@ "detector_distance_mm": 100.0, "visit": "cm31105-4", "exposure_time_s": 0.1, - "insertion_prefix": "SR03S", "omega_start_deg": 0.0, "file_name": "file_name", "sample_id": 123456, diff --git a/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json b/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json index 4bae2ad6d8..d379d3a276 100644 --- a/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "storage_directory": "/tmp", "file_name": "file_name", "run_number": 0, diff --git a/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json b/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json index da32330450..e74fd38c31 100644 --- a/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +++ b/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "storage_directory": "/tmp/", "visit": "cm31105-4", "file_name": "file_name", diff --git a/tests/test_data/parameter_json_files/good_test_robot_load_params.json b/tests/test_data/parameter_json_files/good_test_robot_load_params.json index 72e111faa6..959fa6a999 100644 --- a/tests/test_data/parameter_json_files/good_test_robot_load_params.json +++ b/tests/test_data/parameter_json_files/good_test_robot_load_params.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "snapshot_directory": "/tmp/", "storage_directory":"/tmp/", "visit": "cm31105-4", diff --git a/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json index f149b31936..cdc7238f05 100644 --- a/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json @@ -6,7 +6,6 @@ "detector_distance_mm": 100.0, "demand_energy_ev": 100, "exposure_time_s": 0.1, - "insertion_prefix": "SR03S", "omega_start_deg": 0.0, "file_name": "file_name", "scan_width_deg": 180.0, diff --git a/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json b/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json index 490188798b..30efe5af4a 100644 --- a/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +++ b/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "storage_directory": "{tmp_data}", "file_name": "file_name", "run_number": 0, diff --git a/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json b/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json index 5383c7bea8..62f8d54f87 100644 --- a/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +++ b/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "insertion_prefix": "SR03S", "demand_energy_ev": 100, "storage_directory": "{tmp_data}", "visit": "cm31105-4", diff --git a/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py b/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py index bcff9171f4..f9f3fad209 100644 --- a/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +++ b/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py @@ -278,7 +278,6 @@ def test_params_with_different_energy_for_rotation_gridscan_rejected(tmp_path): # WithVisit ["beamline", "i03"], ["visit", "cm12345"], - ["insertion_prefix", "SR03"], ["detector_distance_mm", 123], ["det_dist_to_beam_converter_path", "/foo/bar"], ], @@ -308,7 +307,6 @@ def test_params_with_unexpected_info_in_robot_load_rejected( # WithVisit ["beamline", "i03"], ["visit", "cm12345"], - ["insertion_prefix", "SR03"], ["detector_distance_mm", 123], ["det_dist_to_beam_converter_path", "/foo/bar"], ], From aa3edff574b82fa2dff775bdc888b2e967f31391 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Fri, 10 Apr 2026 14:54:21 +0100 Subject: [PATCH 10/14] remove GDA_DOMAIN_PROPERTIES_PATH from constants.py --- src/mx_bluesky/common/parameters/constants.py | 6 ----- .../parameters/test_parameter_model.py | 22 ++++++++----------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/mx_bluesky/common/parameters/constants.py b/src/mx_bluesky/common/parameters/constants.py index 6dea822334..7fd726ece9 100644 --- a/src/mx_bluesky/common/parameters/constants.py +++ b/src/mx_bluesky/common/parameters/constants.py @@ -17,12 +17,6 @@ TEST_MODE = BEAMLINE == "test" ZEBRA_STATUS_TIMEOUT = 30 -GDA_DOMAIN_PROPERTIES_PATH = ( - "tests/test_data/test_domain_properties" - if TEST_MODE - else (f"/dls_sw/{BEAMLINE}/software/daq_configuration/domain/domain.properties") -) - @dataclass(frozen=True) class DocDescriptorNames: diff --git a/tests/unit_tests/hyperion/parameters/test_parameter_model.py b/tests/unit_tests/hyperion/parameters/test_parameter_model.py index b6ba9e24b1..2d30aa70e5 100644 --- a/tests/unit_tests/hyperion/parameters/test_parameter_model.py +++ b/tests/unit_tests/hyperion/parameters/test_parameter_model.py @@ -29,19 +29,15 @@ def always_use_beamline_i03(use_beamline_i03): ... @pytest.fixture def load_centre_collect_params_with_panda(tmp_path, request): - with patch( - "mx_bluesky.common.parameters.constants.GDA_DOMAIN_PROPERTIES_PATH", - new="tests/test_data/test_domain_properties_with_panda", - ): - params = raw_params_from_file( - "tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json", - tmp_path, - ) - params["features"]["use_panda_for_gridscan"] = True - if params_dict := getattr(request, "param", {}): - for k, v in params_dict.items(): - params.setdefault("features", {})[k] = v - return LoadCentreCollect(**params) + params = raw_params_from_file( + "tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json", + tmp_path, + ) + params["features"]["use_panda_for_gridscan"] = True + if params_dict := getattr(request, "param", {}): + for k, v in params_dict.items(): + params.setdefault("features", {})[k] = v + return LoadCentreCollect(**params) @pytest.fixture() From 8d897a4eeb28475ad5eae7eb768621b51a627069 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Fri, 10 Apr 2026 14:56:04 +0100 Subject: [PATCH 11/14] remove load_panda_yaml in favour of the copy in dodal --- src/mx_bluesky/common/device_setup_plans/setup_panda.py | 9 --------- .../hyperion/device_setup_plans/setup_panda.py | 2 +- .../common/device_setup_plans/test_setup_panda.py | 9 ++++----- 3 files changed, 5 insertions(+), 15 deletions(-) delete mode 100644 src/mx_bluesky/common/device_setup_plans/setup_panda.py diff --git a/src/mx_bluesky/common/device_setup_plans/setup_panda.py b/src/mx_bluesky/common/device_setup_plans/setup_panda.py deleted file mode 100644 index 685f5fd077..0000000000 --- a/src/mx_bluesky/common/device_setup_plans/setup_panda.py +++ /dev/null @@ -1,9 +0,0 @@ -from ophyd_async.core import YamlSettingsProvider -from ophyd_async.fastcs.panda import HDFPanda, apply_panda_settings -from ophyd_async.plan_stubs import retrieve_settings - - -def load_panda_from_yaml(yaml_directory: str, yaml_file_name: str, panda: HDFPanda): - provider = YamlSettingsProvider(yaml_directory) - settings = yield from retrieve_settings(provider, yaml_file_name, panda) - yield from apply_panda_settings(settings) diff --git a/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py b/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py index baae38ce95..4a05956d71 100644 --- a/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +++ b/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py @@ -9,13 +9,13 @@ from dodal.common.types import UpdatingPathProvider from dodal.devices.fast_grid_scan import PandAGridScanParams from dodal.devices.smargon import Smargon +from dodal.plans.load_panda_yaml import load_panda_from_yaml from ophyd_async.fastcs.panda import ( HDFPanda, SeqTable, SeqTrigger, ) -from mx_bluesky.common.device_setup_plans.setup_panda import load_panda_from_yaml from mx_bluesky.common.parameters.constants import DeviceSettingsConstants from mx_bluesky.common.utils.log import LOGGER diff --git a/tests/unit_tests/common/device_setup_plans/test_setup_panda.py b/tests/unit_tests/common/device_setup_plans/test_setup_panda.py index da62f238cb..c6e11472f7 100644 --- a/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +++ b/tests/unit_tests/common/device_setup_plans/test_setup_panda.py @@ -2,19 +2,18 @@ from bluesky.plan_stubs import null from bluesky.run_engine import RunEngine +from dodal.plans.load_panda_yaml import load_panda_from_yaml from ophyd_async.fastcs.panda import HDFPanda -from mx_bluesky.common.device_setup_plans.setup_panda import load_panda_from_yaml - def get_test_plan(*args): yield from null() return "retrieved_settings" -@patch("mx_bluesky.common.device_setup_plans.setup_panda.YamlSettingsProvider") -@patch("mx_bluesky.common.device_setup_plans.setup_panda.retrieve_settings") -@patch("mx_bluesky.common.device_setup_plans.setup_panda.apply_panda_settings") +@patch("dodal.plans.load_panda_yaml.YamlSettingsProvider") +@patch("dodal.plans.load_panda_yaml.retrieve_settings") +@patch("dodal.plans.load_panda_yaml.apply_panda_settings") def test_load_panda_from_yaml( mock_apply_panda_settings: MagicMock, mock_retrieve_settings: MagicMock, From 5da7099d28a1430d375303fe1b29e7d3ce2bf0ac Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Mon, 13 Apr 2026 11:45:10 +0100 Subject: [PATCH 12/14] Remove unused constants TEST_MODE, BEAMLINE, INSERTION_PREFIX from constants.py --- conftest.py | 2 -- src/mx_bluesky/hyperion/parameters/constants.py | 4 ---- 2 files changed, 6 deletions(-) diff --git a/conftest.py b/conftest.py index b48b008f9b..8cf90c9ddd 100644 --- a/conftest.py +++ b/conftest.py @@ -7,8 +7,6 @@ # Ensure that the blueapi entry point is not invoked by doctest as this will fail collect_ignore = ["src/mx_bluesky/hyperion/blueapi/plans.py"] -environ["HYPERION_TEST_MODE"] = "true" - pytest_plugins = ["dodal.testing.fixtures.run_engine"] diff --git a/src/mx_bluesky/hyperion/parameters/constants.py b/src/mx_bluesky/hyperion/parameters/constants.py index db10e25409..31e78dabe8 100644 --- a/src/mx_bluesky/hyperion/parameters/constants.py +++ b/src/mx_bluesky/hyperion/parameters/constants.py @@ -13,14 +13,10 @@ PlanNameConstants, ) -TEST_MODE = os.environ.get("HYPERION_TEST_MODE") - @dataclass(frozen=True) class I03Constants: - BEAMLINE = "BL03S" if TEST_MODE else "BL03I" DETECTOR = EIGER2_X_16M_SIZE - INSERTION_PREFIX = "SR03S" if TEST_MODE else "SR03I" OAV_CENTRING_FILE = OavConstants.OAV_CONFIG_JSON SHUTTER_TIME_S = 0.06 USE_GPU_RESULTS = True From 1828dd3ab3b3d44dac50233071d505e5c901c1ec Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Mon, 13 Apr 2026 12:09:37 +0100 Subject: [PATCH 13/14] remove det_dist_to_beam_converter_path from parameter model, fix unit tests, system tests still broken --- src/mx_bluesky/common/parameters/components.py | 3 --- src/mx_bluesky/common/parameters/constants.py | 6 +----- src/mx_bluesky/common/parameters/gridscan.py | 6 +----- src/mx_bluesky/common/parameters/rotation.py | 6 +----- .../hyperion_blueapi/test_load_centre_collect.json | 1 - .../good_test_grid_with_edge_detect_parameters.json | 1 - .../good_test_load_centre_collect_params.json | 1 - ...test_load_centre_collect_params_multi_rotation.json | 1 - .../good_test_multi_rotation_scan_parameters.json | 1 - .../good_test_one_multi_rotation_scan_parameters.json | 1 - ...test_one_multi_rotation_scan_parameters_nomove.json | 1 - .../parameter_json_files/good_test_parameters.json | 1 - ...od_test_pin_centre_then_xray_centre_parameters.json | 1 - .../good_test_robot_load_and_centre_params.json | 1 - .../good_test_rotation_scan_parameters.json | 1 - .../ispyb_gridscan_system_test_parameters.json | 1 - .../test_gridscan_param_defaults.json | 1 - tests/unit_tests/conftest.py | 6 ++++++ .../test_load_centre_collect_full_plan.py | 10 +++++----- 19 files changed, 14 insertions(+), 36 deletions(-) diff --git a/src/mx_bluesky/common/parameters/components.py b/src/mx_bluesky/common/parameters/components.py index 52d2317426..35ed5ebc98 100644 --- a/src/mx_bluesky/common/parameters/components.py +++ b/src/mx_bluesky/common/parameters/components.py @@ -153,9 +153,6 @@ class WithOptionalEnergyChange(BaseModel): class WithVisit(BaseModel): beamline: str = Field(default="BL03I", pattern=r"BL\d{2}[BIJS]") visit: str = Field(min_length=1) - det_dist_to_beam_converter_path: str = Field( - default=DetectorParamConstants.BEAM_XY_LUT_PATH - ) detector_distance_mm: float | None = Field(default=None, gt=0) diff --git a/src/mx_bluesky/common/parameters/constants.py b/src/mx_bluesky/common/parameters/constants.py index 7fd726ece9..f1f168d329 100644 --- a/src/mx_bluesky/common/parameters/constants.py +++ b/src/mx_bluesky/common/parameters/constants.py @@ -119,11 +119,7 @@ class RotationParamConstants: @dataclass(frozen=True) class DetectorParamConstants: - BEAM_XY_LUT_PATH = ( - "tests/test_data/test_det_dist_converter.txt" - if TEST_MODE - else f"/dls_sw/{BEAMLINE}/software/daq_configuration/lookup/DetDistToBeamXYConverter.txt" - ) + BEAM_XY_LUT_PATH = f"/dls_sw/{BEAMLINE}/software/daq_configuration/lookup/DetDistToBeamXYConverter.txt" DETECTOR = EIGER2_X_16M_SIZE diff --git a/src/mx_bluesky/common/parameters/gridscan.py b/src/mx_bluesky/common/parameters/gridscan.py index 15af489686..f33951a50e 100644 --- a/src/mx_bluesky/common/parameters/gridscan.py +++ b/src/mx_bluesky/common/parameters/gridscan.py @@ -78,10 +78,6 @@ def specified_grid_params(self) -> SpecifiedGrid | None: @property def detector_params(self): - self.det_dist_to_beam_converter_path = ( - self.det_dist_to_beam_converter_path - or DetectorParamConstants.BEAM_XY_LUT_PATH - ) optional_args = {} if self.run_number: optional_args["run_number"] = self.run_number @@ -100,7 +96,7 @@ def detector_params(self): num_images_per_trigger=1, num_triggers=self.num_images, use_roi_mode=self.use_roi_mode, - det_dist_to_beam_converter_path=self.det_dist_to_beam_converter_path, + det_dist_to_beam_converter_path=DetectorParamConstants.BEAM_XY_LUT_PATH, trigger_mode=self.trigger_mode, **optional_args, ) diff --git a/src/mx_bluesky/common/parameters/rotation.py b/src/mx_bluesky/common/parameters/rotation.py index 80a3965568..402a547864 100644 --- a/src/mx_bluesky/common/parameters/rotation.py +++ b/src/mx_bluesky/common/parameters/rotation.py @@ -67,10 +67,6 @@ class RotationExperiment(DiffractionExperiment): def _detector_params_impl( self, omega_start_deg: float, num_images_per_trigger: int, num_triggers: int ) -> DetectorParams: - self.det_dist_to_beam_converter_path = ( - self.det_dist_to_beam_converter_path - or DetectorParamConstants.BEAM_XY_LUT_PATH - ) optional_args = {} if self.run_number: optional_args["run_number"] = self.run_number @@ -88,7 +84,7 @@ def _detector_params_impl( num_images_per_trigger=num_images_per_trigger, num_triggers=num_triggers, use_roi_mode=False, - det_dist_to_beam_converter_path=self.det_dist_to_beam_converter_path, + det_dist_to_beam_converter_path=DetectorParamConstants.BEAM_XY_LUT_PATH, **optional_args, ) diff --git a/tests/test_data/hyperion_blueapi/test_load_centre_collect.json b/tests/test_data/hyperion_blueapi/test_load_centre_collect.json index 2f55a641a1..1b8e4a497c 100644 --- a/tests/test_data/hyperion_blueapi/test_load_centre_collect.json +++ b/tests/test_data/hyperion_blueapi/test_load_centre_collect.json @@ -4,7 +4,6 @@ "parameters": { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json b/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json index 2f196197d0..d4ff01b5af 100644 --- a/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json @@ -6,7 +6,6 @@ "run_number": 0, "sample_id": 123456, "use_roi_mode": false, - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "exposure_time_s": 0.1, "detector_distance_mm": 100.0, "omega_start_deg": 0.0, diff --git a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json index bc77e8f286..f134738d7a 100644 --- a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +++ b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json index a9b183631a..bb2092fca9 100644 --- a/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +++ b/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "beamline": "BL03S", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "visit": "cm31105-4", "detector_distance_mm": 255, "sample_id": 12345, diff --git a/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json index 0061c4cfbe..3d0e3d4a2d 100644 --- a/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "comment": "test", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "storage_directory": "{tmp_data}/123456/", "detector_distance_mm": 100.0, "demand_energy_ev": 100, diff --git a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json index 738a2af0c8..dbefcfee04 100644 --- a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "comment": "test", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "storage_directory": "{tmp_data}/123456/", "detector_distance_mm": 100.0, "demand_energy_ev": 100, diff --git a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json index 61057c8b9d..498791f3b7 100644 --- a/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +++ b/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "comment": "test", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "storage_directory": "{tmp_data}/123456/", "detector_distance_mm": 100.0, "demand_energy_ev": 100, diff --git a/tests/test_data/parameter_json_files/good_test_parameters.json b/tests/test_data/parameter_json_files/good_test_parameters.json index 745d28bd59..8886acdcf3 100644 --- a/tests/test_data/parameter_json_files/good_test_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_parameters.json @@ -2,7 +2,6 @@ "parameter_model_version": "5.0.0", "demand_energy_ev": 100, "comment": "test", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "detector_distance_mm": 100.0, "visit": "cm31105-4", "exposure_time_s": 0.1, diff --git a/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json b/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json index d379d3a276..b7c860c34e 100644 --- a/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json @@ -6,7 +6,6 @@ "run_number": 0, "sample_id": 123456, "use_roi_mode": false, - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "exposure_time_s": 0.1, "detector_distance_mm": 100.0, "omega_start_deg": 0.0, diff --git a/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json b/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json index e74fd38c31..3acb2b739c 100644 --- a/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +++ b/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json @@ -6,7 +6,6 @@ "file_name": "file_name", "run_number": 0, "use_roi_mode": false, - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "omega_start_deg": 0, "transmission_frac": 1.0, "exposure_time_s": 0.004, diff --git a/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json b/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json index cdc7238f05..a85d796a39 100644 --- a/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +++ b/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json @@ -1,7 +1,6 @@ { "parameter_model_version": "5.0.0", "comment": "test", - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "storage_directory": "{tmp_data}/123456/", "detector_distance_mm": 100.0, "demand_energy_ev": 100, diff --git a/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json b/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json index 30efe5af4a..15b19b5bad 100644 --- a/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +++ b/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json @@ -6,7 +6,6 @@ "run_number": 0, "sample_id": 123456, "use_roi_mode": false, - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "exposure_time_s": 0.12, "detector_distance_mm": 100.0, "omega_start_deg": 0.0, diff --git a/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json b/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json index 62f8d54f87..d273fe6bf7 100644 --- a/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +++ b/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json @@ -9,7 +9,6 @@ "run_number": 0, "comment": "Descriptive comment.", "use_roi_mode": false, - "det_dist_to_beam_converter_path": "tests/test_data/test_lookup_table.txt", "transmission_frac": 1.0, "x_steps": 40, "y_steps": 20, diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 82291f9771..7a0db24205 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -200,6 +200,12 @@ def create_gridscan_callbacks() -> tuple[ ) +@pytest.fixture(autouse=True) +def mock_default_beam_xy_lut(): + with patch("mx_bluesky.common.parameters.constants.DetectorParamConstants.BEAM_XY_LUT_PATH", "tests/test_data/test_lookup_table.txt"): + yield + + @pytest.fixture def use_beamline_t01(): """Beamline t01 is a beamline for unit tests that just contains a baton, so that diff --git a/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py b/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py index f9f3fad209..17f1dce497 100644 --- a/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +++ b/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py @@ -279,7 +279,6 @@ def test_params_with_different_energy_for_rotation_gridscan_rejected(tmp_path): ["beamline", "i03"], ["visit", "cm12345"], ["detector_distance_mm", 123], - ["det_dist_to_beam_converter_path", "/foo/bar"], ], ) def test_params_with_unexpected_info_in_robot_load_rejected( @@ -308,7 +307,6 @@ def test_params_with_unexpected_info_in_robot_load_rejected( ["beamline", "i03"], ["visit", "cm12345"], ["detector_distance_mm", 123], - ["det_dist_to_beam_converter_path", "/foo/bar"], ], ) def test_params_with_unexpected_info_in_multi_rotation_scan_rejected( @@ -560,9 +558,11 @@ def test_load_centre_collect_moves_beamstop_into_place( ) msgs = assert_message_and_return_remaining( msgs, - predicate=lambda msg: msg.command == "set" - and msg.obj.name == "beamstop-selected_pos" - and msg.args[0] == BeamstopPositions.DATA_COLLECTION, + predicate=lambda msg: ( + msg.command == "set" + and msg.obj.name == "beamstop-selected_pos" + and msg.args[0] == BeamstopPositions.DATA_COLLECTION + ), ) msgs = assert_message_and_return_remaining( msgs, predicate=lambda msg: msg.command == "pin_tip_then_flyscan_plan" From 2b017abf5106cf45d4f43015dd728a2d16be4cc1 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 16 Apr 2026 12:06:26 +0100 Subject: [PATCH 14/14] Make ruff happy --- conftest.py | 1 - src/mx_bluesky/common/parameters/components.py | 1 - src/mx_bluesky/hyperion/parameters/constants.py | 2 -- tests/unit_tests/conftest.py | 5 ++++- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/conftest.py b/conftest.py index 8cf90c9ddd..5fe22e4ebd 100644 --- a/conftest.py +++ b/conftest.py @@ -1,5 +1,4 @@ from collections.abc import Iterator -from os import environ from unittest.mock import patch import pytest diff --git a/src/mx_bluesky/common/parameters/components.py b/src/mx_bluesky/common/parameters/components.py index 35ed5ebc98..052674efc1 100644 --- a/src/mx_bluesky/common/parameters/components.py +++ b/src/mx_bluesky/common/parameters/components.py @@ -25,7 +25,6 @@ from mx_bluesky.common.parameters.constants import ( USE_NUMTRACKER, - DetectorParamConstants, GridscanParamConstants, ) diff --git a/src/mx_bluesky/hyperion/parameters/constants.py b/src/mx_bluesky/hyperion/parameters/constants.py index 31e78dabe8..ba2fb065c5 100644 --- a/src/mx_bluesky/hyperion/parameters/constants.py +++ b/src/mx_bluesky/hyperion/parameters/constants.py @@ -1,5 +1,3 @@ -import os - from dodal.devices.detector import EIGER2_X_16M_SIZE from pydantic.dataclasses import dataclass diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 7a0db24205..8273e755e2 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -202,7 +202,10 @@ def create_gridscan_callbacks() -> tuple[ @pytest.fixture(autouse=True) def mock_default_beam_xy_lut(): - with patch("mx_bluesky.common.parameters.constants.DetectorParamConstants.BEAM_XY_LUT_PATH", "tests/test_data/test_lookup_table.txt"): + with patch( + "mx_bluesky.common.parameters.constants.DetectorParamConstants.BEAM_XY_LUT_PATH", + "tests/test_data/test_lookup_table.txt", + ): yield