From 9ee2a373416ab56422465a2daf8778d34e6f6d0b Mon Sep 17 00:00:00 2001 From: Matthew Carre Date: Mon, 18 May 2026 09:24:29 +0100 Subject: [PATCH 1/4] Adds initial circular plans --- .../test_arithmetic_conversions.py | 21 ++++++++++++++ .../test_transmission_interconversion.py | 29 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/tests/common/general_maths/test_arithmetic_conversions.py b/tests/common/general_maths/test_arithmetic_conversions.py index 6a69519692f..fdd40f09706 100644 --- a/tests/common/general_maths/test_arithmetic_conversions.py +++ b/tests/common/general_maths/test_arithmetic_conversions.py @@ -56,6 +56,27 @@ def test_conversion_from_microns_to_centimetres(input, result): assert convert_microns_to_cm(input) == pytest.approx(result) +# circularity tests (expected success, all numbers here arbitrary) + + +@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) +def test_circular_cm_to_mm_and_back(input): + assert convert_cm_to_mm(convert_mm_to_cm(input)) == input + assert convert_mm_to_cm(convert_cm_to_mm(input)) == input + + +@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) +def test_circular_microns_to_mm_and_back(input): + assert convert_microns_to_mm(convert_mm_to_microns(input)) == input + assert convert_mm_to_microns(convert_microns_to_mm(input)) == input + + +@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) +def test_circular_percentage_to_factor(input): + assert convert_percentage_to_factor(convert_factor_to_percentage(input)) == input + assert convert_factor_to_percentage(convert_percentage_to_factor(input)) == input + + # The inauspicuous path @pytest.mark.parametrize( "bad_input", diff --git a/tests/common/general_maths/test_transmission_interconversion.py b/tests/common/general_maths/test_transmission_interconversion.py index db3fa312932..ad1289ab797 100644 --- a/tests/common/general_maths/test_transmission_interconversion.py +++ b/tests/common/general_maths/test_transmission_interconversion.py @@ -98,6 +98,35 @@ def test_attenuation_from_natural_log_of_transmission(ln_t, result): assert attenuation_from_natural_log_of_transmission(ln_t) == pytest.approx(result) +# circularity tests, all numbers here are arbitrary + + +@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) +def test_circular_attenuation_from_log_and_back(input): + assert ( + attenuation_from_natural_log_of_transmission( + natural_log_of_transmission_from_attenuation(input) + ) + == input + ) + assert ( + natural_log_of_transmission_from_attenuation( + attenuation_from_natural_log_of_transmission(input) + ) + == input + ) + + +@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) +def test_circular_attenuation_from_transmission_and_back(input): + assert attenuation_from_transmission( + transmission_from_attenutation(input) + ) == pytest.approx(input) + assert transmission_from_attenutation( + attenuation_from_transmission(input) + ) == pytest.approx(input) + + # inauspicious: @pytest.mark.parametrize("bad_input", ["a", [], None, math.sin, object(), False]) def test_natural_log_of_transmission_from_attenuation_raises_error(bad_input): From f474d7e6f0cb84c16c6748ed426c7ab4acdfc8ab Mon Sep 17 00:00:00 2001 From: Matthew Carre Date: Wed, 20 May 2026 11:58:51 +0100 Subject: [PATCH 2/4] fixed last part --- .../test_arithmetic_conversions.py | 21 -------------- .../test_transmission_interconversion.py | 29 ------------------- 2 files changed, 50 deletions(-) diff --git a/tests/common/general_maths/test_arithmetic_conversions.py b/tests/common/general_maths/test_arithmetic_conversions.py index fdd40f09706..6a69519692f 100644 --- a/tests/common/general_maths/test_arithmetic_conversions.py +++ b/tests/common/general_maths/test_arithmetic_conversions.py @@ -56,27 +56,6 @@ def test_conversion_from_microns_to_centimetres(input, result): assert convert_microns_to_cm(input) == pytest.approx(result) -# circularity tests (expected success, all numbers here arbitrary) - - -@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) -def test_circular_cm_to_mm_and_back(input): - assert convert_cm_to_mm(convert_mm_to_cm(input)) == input - assert convert_mm_to_cm(convert_cm_to_mm(input)) == input - - -@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) -def test_circular_microns_to_mm_and_back(input): - assert convert_microns_to_mm(convert_mm_to_microns(input)) == input - assert convert_mm_to_microns(convert_microns_to_mm(input)) == input - - -@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) -def test_circular_percentage_to_factor(input): - assert convert_percentage_to_factor(convert_factor_to_percentage(input)) == input - assert convert_factor_to_percentage(convert_percentage_to_factor(input)) == input - - # The inauspicuous path @pytest.mark.parametrize( "bad_input", diff --git a/tests/common/general_maths/test_transmission_interconversion.py b/tests/common/general_maths/test_transmission_interconversion.py index ad1289ab797..db3fa312932 100644 --- a/tests/common/general_maths/test_transmission_interconversion.py +++ b/tests/common/general_maths/test_transmission_interconversion.py @@ -98,35 +98,6 @@ def test_attenuation_from_natural_log_of_transmission(ln_t, result): assert attenuation_from_natural_log_of_transmission(ln_t) == pytest.approx(result) -# circularity tests, all numbers here are arbitrary - - -@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) -def test_circular_attenuation_from_log_and_back(input): - assert ( - attenuation_from_natural_log_of_transmission( - natural_log_of_transmission_from_attenuation(input) - ) - == input - ) - assert ( - natural_log_of_transmission_from_attenuation( - attenuation_from_natural_log_of_transmission(input) - ) - == input - ) - - -@pytest.mark.parametrize("input", [1.0, 10.0, 100.0]) -def test_circular_attenuation_from_transmission_and_back(input): - assert attenuation_from_transmission( - transmission_from_attenutation(input) - ) == pytest.approx(input) - assert transmission_from_attenutation( - attenuation_from_transmission(input) - ) == pytest.approx(input) - - # inauspicious: @pytest.mark.parametrize("bad_input", ["a", [], None, math.sin, object(), False]) def test_natural_log_of_transmission_from_attenuation_raises_error(bad_input): From e0cc93d4df47dd746edac79b59ea458f126b0adc Mon Sep 17 00:00:00 2001 From: Matthew Carre Date: Wed, 20 May 2026 12:02:22 +0100 Subject: [PATCH 3/4] adds config --- src/dodal/beamlines/i19_2.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/dodal/beamlines/i19_2.py b/src/dodal/beamlines/i19_2.py index d341c764e8a..165f8349fa6 100644 --- a/src/dodal/beamlines/i19_2.py +++ b/src/dodal/beamlines/i19_2.py @@ -1,6 +1,7 @@ from functools import cache from pathlib import Path +from daq_config_server import ConfigClient from ophyd_async.core import PathProvider from ophyd_async.fastcs.eiger import EigerDetector from ophyd_async.fastcs.panda import HDFPanda @@ -8,6 +9,7 @@ from dodal.common.beamlines.beamline_utils import ( set_beamline as set_utils_beamline, ) +from dodal.common.beamlines.beamline_utils import set_config_client from dodal.common.visit import StaticVisitPathProvider from dodal.device_manager import DeviceManager from dodal.devices.beamlines.i19.access_controlled.attenuator_motor_squad import ( @@ -54,6 +56,14 @@ devices = DeviceManager() +@devices.fixture +@cache +def config_client() -> ConfigClient: + client = ConfigClient() + set_config_client(client) + return client + + @devices.fixture @cache def path_provider() -> PathProvider: From 100204f0d3ac0754449923161aa6380b90a9666c Mon Sep 17 00:00:00 2001 From: Matthew Carre Date: Wed, 20 May 2026 12:21:34 +0100 Subject: [PATCH 4/4] Changes existing test - unsure if its correct? it does seem to work though. --- tests/common/beamlines/test_config_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/common/beamlines/test_config_client.py b/tests/common/beamlines/test_config_client.py index ad47c7fcc1c..b7ae4def1e6 100644 --- a/tests/common/beamlines/test_config_client.py +++ b/tests/common/beamlines/test_config_client.py @@ -1,7 +1,7 @@ import pytest from daq_config_server import ConfigClient -from dodal.beamlines import i03, i04 +from dodal.beamlines import i03, i04, i19_1, i19_2 @pytest.mark.parametrize( @@ -9,6 +9,8 @@ [ (i03.config_client(), "https://i03-daq-config.diamond.ac.uk"), (i04.config_client(), "https://i04-daq-config.diamond.ac.uk"), + (i19_1.config_client(), "https://daq-config.diamond.ac.uk"), + (i19_2.config_client(), "https://daq-config.diamond.ac.uk"), ], ) def test_config_client_has_correct_url_for_each_beamline(