dls-dodal 1.47.0__tar.gz → 1.49.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_test.yml +15 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.gitignore +2 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/PKG-INFO +3 -2
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/conftest.py +1 -0
- dls_dodal-1.49.0/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +21 -0
- dls_dodal-1.49.0/docs/explanations/umls/apple2_design.png +0 -0
- dls_dodal-1.49.0/docs/explanations/umls/i10_id_design.png +0 -0
- dls_dodal-1.49.0/docs/how-to/create-device.md +28 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/pyproject.toml +10 -12
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/PKG-INFO +3 -2
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/SOURCES.txt +22 -4
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/requires.txt +2 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/_version.py +2 -2
- dls_dodal-1.49.0/src/dodal/beamlines/aithre.py +30 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/b01_1.py +1 -1
- dls_dodal-1.49.0/src/dodal/beamlines/b16.py +65 -0
- dls_dodal-1.49.0/src/dodal/beamlines/b18.py +38 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i03.py +21 -6
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i04.py +17 -10
- dls_dodal-1.49.0/src/dodal/beamlines/i10.py +221 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i18.py +1 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i19_1.py +9 -6
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i24.py +5 -5
- dls_dodal-1.49.0/src/dodal/beamlines/k11.py +35 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/beamlines/beamline_parameters.py +2 -28
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/beamlines/device_helpers.py +1 -0
- dls_dodal-1.49.0/src/dodal/devices/aithre_lasershaping/goniometer.py +49 -0
- dls_dodal-1.49.0/src/dodal/devices/aithre_lasershaping/laser_robot.py +27 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/apple2_undulator.py +257 -136
- dls_dodal-1.49.0/src/dodal/devices/b16/detector.py +34 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/bimorph_mirror.py +29 -36
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/__init__.py +28 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -6
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/abstract/base_detector.py +98 -0
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +235 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +7 -3
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/detector.py +141 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/specs/__init__.py +3 -2
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/specs/detector.py +13 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +27 -3
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/specs/enums.py +8 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/specs/region.py +3 -2
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/types.py +32 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/util.py +1 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +3 -2
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/vgscienta/detector.py +22 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +33 -4
- dls_dodal-1.49.0/src/dodal/devices/electron_analyser/vgscienta/enums.py +19 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +7 -23
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/fast_grid_scan.py +1 -1
- dls_dodal-1.49.0/src/dodal/devices/i04/murko_results.py +192 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/i10_apple2.py +181 -126
- dls_dodal-1.49.0/src/dodal/devices/i18/diode.py +50 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i22/nxsas.py +1 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/mx_phase1/beamstop.py +23 -6
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/oav_detector.py +101 -25
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/oav_parameters.py +46 -16
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +2 -2
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/robot.py +20 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/smargon.py +43 -4
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zebra/zebra.py +8 -0
- dls_dodal-1.49.0/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +167 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/system_tests/test_adsim.py +40 -8
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/system_tests/test_oav_to_redis_system.py +3 -3
- dls_dodal-1.49.0/tests/beamlines/unit_tests/test_b16.py +69 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/beamlines/test_beamline_parameters.py +27 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/beamlines/test_beamline_utils.py +2 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/conftest.py +22 -0
- dls_dodal-1.49.0/tests/devices/aithre_lasershaping/test_goniometer.py +61 -0
- dls_dodal-1.49.0/tests/devices/i04/test_murko_results.py +495 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/test_i10Apple2.py +198 -102
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i22/test_dcm.py +68 -122
- {dls_dodal-1.47.0/tests/devices/i03 → dls_dodal-1.49.0/tests/devices/mx_phase1}/test_beamstop.py +37 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py +32 -22
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py +31 -42
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/conftest.py +57 -24
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/specs/test_detector.py +0 -3
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py +26 -30
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/specs/test_region.py +10 -4
- dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser/test_util.py +35 -0
- dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/test_util.py → dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser/util.py +33 -9
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py +0 -3
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py +17 -21
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_region.py +2 -2
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i03/test_undulator_dcm.py +2 -1
- dls_dodal-1.49.0/tests/devices/unit_tests/oav/conftest.py +56 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_oav.py +62 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +32 -5
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_apple2_undulator.py +62 -44
- dls_dodal-1.49.0/tests/devices/unit_tests/test_bimorph_mirror.py +158 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_eiger.py +6 -37
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_smargon.py +57 -2
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_undulator.py +1 -1
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_zebra.py +5 -0
- dls_dodal-1.49.0/tests/devices/unit_tests/util/__init__.py +0 -0
- dls_dodal-1.49.0/tests/fake_zocalo/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plan_stubs/test_wrapped_stubs.py +4 -4
- dls_dodal-1.49.0/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +66 -0
- dls_dodal-1.49.0/tests/unit_tests/__init__.py +0 -0
- dls_dodal-1.47.0/docs/how-to/make-new-ophyd-async-device.rst +0 -67
- dls_dodal-1.47.0/src/dodal/beamlines/aithre.py +0 -9
- dls_dodal-1.47.0/src/dodal/beamlines/i10.py +0 -413
- dls_dodal-1.47.0/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -15
- dls_dodal-1.47.0/src/dodal/devices/electron_analyser/__init__.py +0 -8
- dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -210
- dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -121
- dls_dodal-1.47.0/src/dodal/devices/electron_analyser/specs/detector.py +0 -29
- dls_dodal-1.47.0/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -36
- dls_dodal-1.47.0/src/dodal/devices/i04/murko_results.py +0 -195
- dls_dodal-1.47.0/src/dodal/devices/i18/diode.py +0 -17
- dls_dodal-1.47.0/src/dodal/plan_stubs/electron_analyser/__init__.py +0 -3
- dls_dodal-1.47.0/src/dodal/plan_stubs/electron_analyser/configure_driver.py +0 -92
- dls_dodal-1.47.0/tests/devices/i04/test_murko_results.py +0 -361
- dls_dodal-1.47.0/tests/devices/unit_tests/oav/conftest.py +0 -26
- dls_dodal-1.47.0/tests/devices/unit_tests/test_bimorph_mirror.py +0 -167
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_check.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/Dockerfile +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/LICENSE +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/README.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/conf.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/explanations.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/genindex.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/create-beamline.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/external-io-devices.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/how-to.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/index.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/reference/standards.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/reference.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/pull_request_template.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/setup.cfg +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/adsim.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/b07.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/b07_1.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i09.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i09_1.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i19_2.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i19_optics.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/p60.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/cli.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/data_util.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/CTAB.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/adsim.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/aperturescatterguard.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/i13_1 → dls_dodal-1.49.0/src/dodal/devices/b16}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/baton.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/common_dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/eiger.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/eiger_odin.py +0 -0
- /dls_dodal-1.47.0/src/dodal/devices/electron_analyser/types.py → /dls_dodal-1.49.0/src/dodal/devices/electron_analyser/enums.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/focusing_mirror.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i03/dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i04/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i04/constants.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/i19 → dls_dodal-1.49.0/src/dodal/devices/i10}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/diagnostics.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/i20_1 → dls_dodal-1.49.0/src/dodal/devices/i13_1}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i18/KBMirror.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i18/table.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/i24 → dls_dodal-1.49.0/src/dodal/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i19/beamstop.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i19/hutch_access.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i19/shutter.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/oav → dls_dodal-1.49.0/src/dodal/devices/i20_1}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i22/dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/p99 → dls_dodal-1.49.0/src/dodal/devices/i24}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/pmac.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/training_rig → dls_dodal-1.49.0/src/dodal/devices/oav}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/util → dls_dodal-1.49.0/src/dodal/devices/p99}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/p99/andor2_point.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/positioner.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/thawer.py +0 -0
- {dls_dodal-1.47.0/src/dodal/devices/zebra → dls_dodal-1.49.0/src/dodal/devices/training_rig}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/undulator.py +0 -0
- {dls_dodal-1.47.0/src/dodal/plan_stubs → dls_dodal-1.49.0/src/dodal/devices/util}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/util/epics_util.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/util/test_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/xbpm_feedback.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.47.0/src/dodal/plans/preprocessors → dls_dodal-1.49.0/src/dodal/devices/zebra}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.47.0/system_tests → dls_dodal-1.49.0/src/dodal/plan_stubs}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.47.0/tests → dls_dodal-1.49.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.47.0/tests/beamlines → dls_dodal-1.49.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.47.0/tests/beamlines/unit_tests → dls_dodal-1.49.0/tests}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/common → dls_dodal-1.49.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/common/beamlines → dls_dodal-1.49.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.47.0/tests/devices → dls_dodal-1.49.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/i03 → dls_dodal-1.49.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/constants.py +0 -0
- {dls_dodal-1.47.0/tests/devices/i04 → dls_dodal-1.49.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/i19 → dls_dodal-1.49.0/tests/devices/i03}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests → dls_dodal-1.49.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i18/test_table.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser → dls_dodal-1.49.0/tests/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i19/test_beamstop.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i19/test_shutter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/abstract → dls_dodal-1.49.0/tests/devices/mx_phase1}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/test_common_dcm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/specs → dls_dodal-1.49.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/vgscienta → dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/i03 → dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser/abstract}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/i24 → dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser/specs}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/oav → dls_dodal-1.49.0/tests/devices/unit_tests/electron_analyser/vgscienta}/__init__.py +0 -0
- {dls_dodal-1.47.0/tests/devices/unit_tests/util → dls_dodal-1.49.0/tests/devices/unit_tests/i03}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i03/test_dcm.py +0 -0
- {dls_dodal-1.47.0/tests/fake_zocalo → dls_dodal-1.49.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
- {dls_dodal-1.47.0/tests/unit_tests → dls_dodal-1.49.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_backlight.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_baton.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_motors.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_positioner.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_slits.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_thawer.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_turbo_slit.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_webcam.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plan_stubs/test_data_session.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plan_stubs/test_topup_plan.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/conftest.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/electron_analyser/specs_sequence.seq +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/electron_analyser/vgscienta_sequence.seq +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/test_utils.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.47.0 → dls_dodal-1.49.0}/tests/unit_tests/test_log.py +0 -0
|
@@ -57,6 +57,21 @@ jobs:
|
|
|
57
57
|
run: |
|
|
58
58
|
python .github/scripts/check_test_durations.py unit-report.json 1
|
|
59
59
|
|
|
60
|
+
- name: Checkout simulated devices
|
|
61
|
+
uses: actions/checkout@v4
|
|
62
|
+
with:
|
|
63
|
+
repository: epics-containers/example-services
|
|
64
|
+
path: example-services
|
|
65
|
+
|
|
66
|
+
- name: Run docker compose
|
|
67
|
+
uses: hoverkraft-tech/compose-action@v2.2.0
|
|
68
|
+
with:
|
|
69
|
+
compose-file: "./example-services/compose.yaml"
|
|
70
|
+
services: |
|
|
71
|
+
bl01t-di-cam-01
|
|
72
|
+
bl01t-mo-sim-01
|
|
73
|
+
ca-gateway
|
|
74
|
+
|
|
60
75
|
- name: Run system tests
|
|
61
76
|
run: tox -e system-report
|
|
62
77
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.49.0
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async>=0.10.
|
|
219
|
+
Requires-Dist: ophyd-async>=0.10.0a4
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -234,6 +234,7 @@ Requires-Dist: aiohttp
|
|
|
234
234
|
Requires-Dist: redis
|
|
235
235
|
Requires-Dist: deepdiff
|
|
236
236
|
Requires-Dist: scanspec>=0.7.3
|
|
237
|
+
Requires-Dist: event-model>=1.23
|
|
237
238
|
Provides-Extra: dev
|
|
238
239
|
Requires-Dist: black; extra == "dev"
|
|
239
240
|
Requires-Dist: diff-cover; extra == "dev"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 5. Encourage aliasing at EPICS level
|
|
2
|
+
|
|
3
|
+
Date: 2025-05-13
|
|
4
|
+
|
|
5
|
+
## Status
|
|
6
|
+
|
|
7
|
+
Proposed
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
Many devices have the same functional set of PVs with differing addresses, requiring that either device classes in dodal are generic to support them or duplicate classes are created and must be maintained.
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
|
|
15
|
+
Dodal device classes should be made generic before duplicate classes are created, to ensure that upgrades and benefits are shared. Prior to making a device class generic a reasonable attempt should be made to unify the devices at the epics level.
|
|
16
|
+
|
|
17
|
+
When a new device is onboarded into dodal, there should be clear guidance for the support and controls engineers to use to determine whether an alias should be added to the support module or configurability should be added to the device class.
|
|
18
|
+
|
|
19
|
+
## Consequences
|
|
20
|
+
|
|
21
|
+
Documentation on making new devices has been updated and the commitment to trying to standardise devices has been codified.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Creating a new device
|
|
2
|
+
---------------------
|
|
3
|
+
|
|
4
|
+
Devices are written using the ophyd-async framework, the hardware abstraction library at Diamond.
|
|
5
|
+
|
|
6
|
+
Reusing an existing class
|
|
7
|
+
=========================
|
|
8
|
+
|
|
9
|
+
When creating a new device, first check if there is a device class that claims to support the device: e.g. all EPICS Motor records should use the [Motor](https://github.com/bluesky/ophyd-async/blob/main/src/ophyd_async/epics/motor.py) type; for reading or monitoring signals from the storage ring the [Synchrotron](https://github.com/DiamondLightSource/dodal/blob/main/src/dodal/devices/synchrotron.py) device should be used; AreaDetectors should use the [StandardDetector](https://github.com/bluesky/ophyd-async/blob/main/src/ophyd_async/core/_detector.py) type- of which there are examples in ophyd_async and in dodal.
|
|
10
|
+
|
|
11
|
+
If there is a compatible device class it should be used- adding it to the [the beamline](./create-beamline.rst)- this prevents reimplementing the device, and allows improvements to be shared. Improving the device to meet your use case is better than starting again.
|
|
12
|
+
|
|
13
|
+
If a device class is incompatible due to differences in PV address only, first request that an alias is added to the EPICS support module for the IOC - or request support in making that change. Only if it is not possible to add an alias, for example the support module is proprietary, add configurability to the dodal device class, taking care not to break existing devices- e.g. make new fields have a default that matches the existing pattern, and ensure that `dodal connect` is still able to connect to the device for the existing instances.
|
|
14
|
+
|
|
15
|
+
If the device class is sufficiently different (or you cannot find a similar device), create a device that connects to the required signals and can be tested for your desired behaviour. During the review process, attempts to bring it closer in line with existing devices may allow to deduplicate some parts, through inheritance or composition of the device from existing components.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Writing a device class
|
|
19
|
+
======================
|
|
20
|
+
|
|
21
|
+
The aim should be to get a new device ready for testing it on the beamline as soon as possible, to ensure fast iteration: write a device against your assumptions of how it should work, write tests against those assumptions then test your assumptions on the beamline. Write issues from beamline testing, to resolve offline to reserve as much time for testing that requires the beamline as possible.
|
|
22
|
+
|
|
23
|
+
Dodal's CLI `dodal connect <beamline>` is a useful way to verify that PV addresses are correct, together with `cainfo <PV address>` to find the datatype of signals.
|
|
24
|
+
|
|
25
|
+
If you're not sure how to represent a PV as a Signal: ask! Seek feedback early (e.g. by opening a draft PR) and merge with other devices where it makes sense to. The test suite should provide confidence to do so without breaking existing code.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
.. _ophyd-async: https://blueskyproject.io/ophyd-async/main/how-to/choose-interfaces-for-devices.html
|
|
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
|
|
|
15
15
|
dependencies = [
|
|
16
16
|
"click",
|
|
17
17
|
"ophyd",
|
|
18
|
-
"ophyd-async>=0.10.
|
|
18
|
+
"ophyd-async>=0.10.0a4",
|
|
19
19
|
"bluesky",
|
|
20
20
|
"pyepics",
|
|
21
21
|
"dataclasses-json",
|
|
@@ -24,15 +24,16 @@ dependencies = [
|
|
|
24
24
|
"requests",
|
|
25
25
|
"graypy",
|
|
26
26
|
"pydantic>=2.0",
|
|
27
|
-
"opencv-python-headless",
|
|
28
|
-
"aioca",
|
|
29
|
-
"p4p",
|
|
27
|
+
"opencv-python-headless", # For pin-tip detection.
|
|
28
|
+
"aioca", # Required for CA support with ophyd-async.
|
|
29
|
+
"p4p", # Required for PVA support with ophyd-async.
|
|
30
30
|
"numpy",
|
|
31
31
|
"aiofiles",
|
|
32
32
|
"aiohttp",
|
|
33
33
|
"redis",
|
|
34
34
|
"deepdiff",
|
|
35
35
|
"scanspec>=0.7.3",
|
|
36
|
+
"event-model>=1.23", # Until bluesky pins it https://github.com/DiamondLightSource/dodal/issues/1278
|
|
36
37
|
]
|
|
37
38
|
|
|
38
39
|
dynamic = ["version"]
|
|
@@ -103,12 +104,11 @@ reportMissingImports = false # Ignore missing stubs in imported modules
|
|
|
103
104
|
# Run pytest with all our checkers, and don't spam us with massive tracebacks on error
|
|
104
105
|
asyncio_mode = "auto"
|
|
105
106
|
markers = [
|
|
106
|
-
"
|
|
107
|
+
"requires: marks tests as requiring other infrastructure",
|
|
107
108
|
"skip_in_pycharm: marks test as not working in pycharm testrunner",
|
|
108
|
-
"system_test: marks test as other system test that requires infrastructure"
|
|
109
109
|
]
|
|
110
110
|
addopts = """
|
|
111
|
-
--cov=dodal --cov
|
|
111
|
+
--cov=src/dodal --cov=dodal --cov-report term
|
|
112
112
|
--tb=native -vv --doctest-modules --doctest-glob="*.rst"
|
|
113
113
|
"""
|
|
114
114
|
# https://iscinumpy.gitlab.io/post/bound-version-constraints/#watch-for-warnings
|
|
@@ -118,8 +118,6 @@ filterwarnings = [
|
|
|
118
118
|
"ignore:dep_util is Deprecated. Use functions from setuptools instead.:DeprecationWarning",
|
|
119
119
|
# Ignore deprecation warning from zocalo
|
|
120
120
|
"ignore:.*pkg_resources.*:DeprecationWarning",
|
|
121
|
-
# Ignore deprecation warning from setuptools_dso (remove when https://github.com/epics-base/setuptools_dso/issues/36 is released)
|
|
122
|
-
"ignore::DeprecationWarning:wheel",
|
|
123
121
|
]
|
|
124
122
|
# Doctest python code in docs, python code in src docstrings, test functions in tests
|
|
125
123
|
testpaths = "docs src tests system_tests"
|
|
@@ -154,12 +152,12 @@ allowlist_externals =
|
|
|
154
152
|
sphinx-build
|
|
155
153
|
sphinx-autobuild
|
|
156
154
|
commands =
|
|
157
|
-
tests: pytest -m 'not
|
|
155
|
+
tests: pytest -m 'not requires' {posargs}
|
|
158
156
|
type-checking: pyright src tests {posargs}
|
|
159
157
|
pre-commit: pre-commit run --all-files --show-diff-on-failure {posargs}
|
|
160
158
|
docs: sphinx-{posargs:build -E} -T docs build/html
|
|
161
|
-
unit-report: pytest
|
|
162
|
-
system-report: pytest -m 'not (
|
|
159
|
+
unit-report: pytest --cov-report xml:unit_cov.xml --json-report --json-report-file=unit-report.json tests {posargs}
|
|
160
|
+
system-report: pytest -m 'not requires(instrument="i04")' --cov-report xml:system_cov.xml --json-report --json-report-file=system-report.json system_tests {posargs}
|
|
163
161
|
"""
|
|
164
162
|
|
|
165
163
|
[tool.ruff]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.49.0
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async>=0.10.
|
|
219
|
+
Requires-Dist: ophyd-async>=0.10.0a4
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -234,6 +234,7 @@ Requires-Dist: aiohttp
|
|
|
234
234
|
Requires-Dist: redis
|
|
235
235
|
Requires-Dist: deepdiff
|
|
236
236
|
Requires-Dist: scanspec>=0.7.3
|
|
237
|
+
Requires-Dist: event-model>=1.23
|
|
237
238
|
Provides-Extra: dev
|
|
238
239
|
Requires-Dist: black; extra == "dev"
|
|
239
240
|
Requires-Dist: diff-cover; extra == "dev"
|
|
@@ -47,17 +47,20 @@ docs/explanations/decisions/0001-record-architecture-decisions.md
|
|
|
47
47
|
docs/explanations/decisions/0002-switched-to-python-copier-template.md
|
|
48
48
|
docs/explanations/decisions/0003-codeowners.md
|
|
49
49
|
docs/explanations/decisions/0004-make-devices-factory.md
|
|
50
|
+
docs/explanations/decisions/0005-standardise-devices-at-epics-level.md
|
|
50
51
|
docs/explanations/decisions/COPYME
|
|
52
|
+
docs/explanations/umls/apple2_design.png
|
|
53
|
+
docs/explanations/umls/i10_id_design.png
|
|
51
54
|
docs/how-to/build-docs.md
|
|
52
55
|
docs/how-to/contribute.md
|
|
53
56
|
docs/how-to/coverage.md
|
|
54
57
|
docs/how-to/create-beamline.rst
|
|
58
|
+
docs/how-to/create-device.md
|
|
55
59
|
docs/how-to/dev-install.md
|
|
56
60
|
docs/how-to/excalidraw.md
|
|
57
61
|
docs/how-to/external-io-devices.md
|
|
58
62
|
docs/how-to/lint.md
|
|
59
63
|
docs/how-to/lock-requirements.md
|
|
60
|
-
docs/how-to/make-new-ophyd-async-device.rst
|
|
61
64
|
docs/how-to/make-release.md
|
|
62
65
|
docs/how-to/move-code.rst
|
|
63
66
|
docs/how-to/pypi.md
|
|
@@ -95,6 +98,8 @@ src/dodal/beamlines/aithre.py
|
|
|
95
98
|
src/dodal/beamlines/b01_1.py
|
|
96
99
|
src/dodal/beamlines/b07.py
|
|
97
100
|
src/dodal/beamlines/b07_1.py
|
|
101
|
+
src/dodal/beamlines/b16.py
|
|
102
|
+
src/dodal/beamlines/b18.py
|
|
98
103
|
src/dodal/beamlines/i02_1.py
|
|
99
104
|
src/dodal/beamlines/i03.py
|
|
100
105
|
src/dodal/beamlines/i04.py
|
|
@@ -110,6 +115,7 @@ src/dodal/beamlines/i20_1.py
|
|
|
110
115
|
src/dodal/beamlines/i22.py
|
|
111
116
|
src/dodal/beamlines/i23.py
|
|
112
117
|
src/dodal/beamlines/i24.py
|
|
118
|
+
src/dodal/beamlines/k11.py
|
|
113
119
|
src/dodal/beamlines/p38.py
|
|
114
120
|
src/dodal/beamlines/p45.py
|
|
115
121
|
src/dodal/beamlines/p60.py
|
|
@@ -170,11 +176,14 @@ src/dodal/devices/watsonmarlow323_pump.py
|
|
|
170
176
|
src/dodal/devices/webcam.py
|
|
171
177
|
src/dodal/devices/xbpm_feedback.py
|
|
172
178
|
src/dodal/devices/aithre_lasershaping/goniometer.py
|
|
179
|
+
src/dodal/devices/aithre_lasershaping/laser_robot.py
|
|
173
180
|
src/dodal/devices/areadetector/plugins/CAM.py
|
|
174
181
|
src/dodal/devices/areadetector/plugins/MJPG.py
|
|
175
182
|
src/dodal/devices/attenuator/attenuator.py
|
|
176
183
|
src/dodal/devices/attenuator/filter.py
|
|
177
184
|
src/dodal/devices/attenuator/filter_selections.py
|
|
185
|
+
src/dodal/devices/b16/__init__.py
|
|
186
|
+
src/dodal/devices/b16/detector.py
|
|
178
187
|
src/dodal/devices/current_amplifiers/__init__.py
|
|
179
188
|
src/dodal/devices/current_amplifiers/current_amplifier.py
|
|
180
189
|
src/dodal/devices/current_amplifiers/current_amplifier_detector.py
|
|
@@ -188,6 +197,8 @@ src/dodal/devices/detector/det_resolution.py
|
|
|
188
197
|
src/dodal/devices/detector/detector.py
|
|
189
198
|
src/dodal/devices/detector/detector_motion.py
|
|
190
199
|
src/dodal/devices/electron_analyser/__init__.py
|
|
200
|
+
src/dodal/devices/electron_analyser/detector.py
|
|
201
|
+
src/dodal/devices/electron_analyser/enums.py
|
|
191
202
|
src/dodal/devices/electron_analyser/types.py
|
|
192
203
|
src/dodal/devices/electron_analyser/util.py
|
|
193
204
|
src/dodal/devices/electron_analyser/abstract/__init__.py
|
|
@@ -197,10 +208,12 @@ src/dodal/devices/electron_analyser/abstract/base_region.py
|
|
|
197
208
|
src/dodal/devices/electron_analyser/specs/__init__.py
|
|
198
209
|
src/dodal/devices/electron_analyser/specs/detector.py
|
|
199
210
|
src/dodal/devices/electron_analyser/specs/driver_io.py
|
|
211
|
+
src/dodal/devices/electron_analyser/specs/enums.py
|
|
200
212
|
src/dodal/devices/electron_analyser/specs/region.py
|
|
201
213
|
src/dodal/devices/electron_analyser/vgscienta/__init__.py
|
|
202
214
|
src/dodal/devices/electron_analyser/vgscienta/detector.py
|
|
203
215
|
src/dodal/devices/electron_analyser/vgscienta/driver_io.py
|
|
216
|
+
src/dodal/devices/electron_analyser/vgscienta/enums.py
|
|
204
217
|
src/dodal/devices/electron_analyser/vgscienta/region.py
|
|
205
218
|
src/dodal/devices/i03/__init__.py
|
|
206
219
|
src/dodal/devices/i03/dcm.py
|
|
@@ -209,6 +222,7 @@ src/dodal/devices/i04/__init__.py
|
|
|
209
222
|
src/dodal/devices/i04/constants.py
|
|
210
223
|
src/dodal/devices/i04/murko_results.py
|
|
211
224
|
src/dodal/devices/i04/transfocator.py
|
|
225
|
+
src/dodal/devices/i10/__init__.py
|
|
212
226
|
src/dodal/devices/i10/diagnostics.py
|
|
213
227
|
src/dodal/devices/i10/i10_apple2.py
|
|
214
228
|
src/dodal/devices/i10/i10_setting_data.py
|
|
@@ -284,9 +298,8 @@ src/dodal/plan_stubs/check_topup.py
|
|
|
284
298
|
src/dodal/plan_stubs/data_session.py
|
|
285
299
|
src/dodal/plan_stubs/motor_utils.py
|
|
286
300
|
src/dodal/plan_stubs/wrapped.py
|
|
287
|
-
src/dodal/plan_stubs/electron_analyser/__init__.py
|
|
288
|
-
src/dodal/plan_stubs/electron_analyser/configure_driver.py
|
|
289
301
|
src/dodal/plans/__init__.py
|
|
302
|
+
src/dodal/plans/configure_arm_trigger_and_disarm_detector.py
|
|
290
303
|
src/dodal/plans/save_panda.py
|
|
291
304
|
src/dodal/plans/scanspec.py
|
|
292
305
|
src/dodal/plans/verify_undulator_gap.py
|
|
@@ -312,6 +325,7 @@ tests/fake_device_factory_beamline.py
|
|
|
312
325
|
tests/test_utils.py
|
|
313
326
|
tests/beamlines/__init__.py
|
|
314
327
|
tests/beamlines/unit_tests/__init__.py
|
|
328
|
+
tests/beamlines/unit_tests/test_b16.py
|
|
315
329
|
tests/beamlines/unit_tests/test_i03.py
|
|
316
330
|
tests/beamlines/unit_tests/test_i24.py
|
|
317
331
|
tests/beamlines/unit_tests/test_mapping.py
|
|
@@ -329,8 +343,8 @@ tests/common/beamlines/test_device_instantiation.py
|
|
|
329
343
|
tests/devices/__init__.py
|
|
330
344
|
tests/devices/test_common_dcm.py
|
|
331
345
|
tests/devices/test_diamond_filter.py
|
|
346
|
+
tests/devices/aithre_lasershaping/test_goniometer.py
|
|
332
347
|
tests/devices/i03/__init__.py
|
|
333
|
-
tests/devices/i03/test_beamstop.py
|
|
334
348
|
tests/devices/i04/__init__.py
|
|
335
349
|
tests/devices/i04/test_murko_results.py
|
|
336
350
|
tests/devices/i04/test_transfocator.py
|
|
@@ -351,6 +365,8 @@ tests/devices/i19/test_shutter.py
|
|
|
351
365
|
tests/devices/i22/test_dcm.py
|
|
352
366
|
tests/devices/i22/test_fswitch.py
|
|
353
367
|
tests/devices/i22/test_metadataholder.py
|
|
368
|
+
tests/devices/mx_phase1/__init__.py
|
|
369
|
+
tests/devices/mx_phase1/test_beamstop.py
|
|
354
370
|
tests/devices/training_rig/test_sample_stage.py
|
|
355
371
|
tests/devices/unit_tests/__init__.py
|
|
356
372
|
tests/devices/unit_tests/test_OAVCentring.json
|
|
@@ -404,6 +420,7 @@ tests/devices/unit_tests/detector/test_detector.py
|
|
|
404
420
|
tests/devices/unit_tests/electron_analyser/__init__.py
|
|
405
421
|
tests/devices/unit_tests/electron_analyser/conftest.py
|
|
406
422
|
tests/devices/unit_tests/electron_analyser/test_util.py
|
|
423
|
+
tests/devices/unit_tests/electron_analyser/util.py
|
|
407
424
|
tests/devices/unit_tests/electron_analyser/abstract/__init__.py
|
|
408
425
|
tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py
|
|
409
426
|
tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py
|
|
@@ -454,6 +471,7 @@ tests/plan_stubs/test_topup_plan.py
|
|
|
454
471
|
tests/plan_stubs/test_wrapped_stubs.py
|
|
455
472
|
tests/plans/conftest.py
|
|
456
473
|
tests/plans/test_compliance.py
|
|
474
|
+
tests/plans/test_configure_arm_trigger_and_disarm_detector.py
|
|
457
475
|
tests/plans/test_scanspec.py
|
|
458
476
|
tests/plans/test_verify_undulator_gap_plan.py
|
|
459
477
|
tests/plans/test_wrapped.py
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import device_factory
|
|
2
|
+
from dodal.devices.aithre_lasershaping.goniometer import Goniometer
|
|
3
|
+
from dodal.devices.aithre_lasershaping.laser_robot import LaserRobot
|
|
4
|
+
from dodal.devices.oav.oav_detector import NullZoomController, OAVBeamCentreFile
|
|
5
|
+
from dodal.devices.oav.oav_parameters import OAVConfigBeamCentre
|
|
6
|
+
|
|
7
|
+
ZOOM_PARAMS_FILE = "/dls_sw/i23/software/aithre/aithre_oav.xml"
|
|
8
|
+
DISPLAY_CONFIG = "/dls_sw/i23/software/aithre/aithre_display.configuration"
|
|
9
|
+
|
|
10
|
+
PREFIX = "LA18L"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@device_factory()
|
|
14
|
+
def goniometer() -> Goniometer:
|
|
15
|
+
return Goniometer(f"{PREFIX}-MO-LSR-01:", "goniometer")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@device_factory()
|
|
19
|
+
def robot() -> LaserRobot:
|
|
20
|
+
return LaserRobot("robot", f"{PREFIX}-MO-ROBOT-01:")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@device_factory()
|
|
24
|
+
def oav(params: OAVConfigBeamCentre | None = None) -> OAVBeamCentreFile:
|
|
25
|
+
return OAVBeamCentreFile(
|
|
26
|
+
prefix=f"{PREFIX}-DI-OAV-01:",
|
|
27
|
+
config=params or OAVConfigBeamCentre(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
|
|
28
|
+
name="oav",
|
|
29
|
+
zoom_controller=NullZoomController(),
|
|
30
|
+
)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from ophyd_async.epics.adcore import (
|
|
4
|
+
AreaDetector,
|
|
5
|
+
)
|
|
6
|
+
from ophyd_async.epics.motor import Motor
|
|
7
|
+
|
|
8
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
9
|
+
device_factory,
|
|
10
|
+
set_path_provider,
|
|
11
|
+
)
|
|
12
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
13
|
+
from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
|
|
14
|
+
from dodal.devices.b16.detector import (
|
|
15
|
+
software_triggered_tiff_area_detector,
|
|
16
|
+
)
|
|
17
|
+
from dodal.devices.motors import XYZPositioner
|
|
18
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
19
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
20
|
+
|
|
21
|
+
BL = get_beamline_name("b16")
|
|
22
|
+
PREFIX = BeamlinePrefix(BL)
|
|
23
|
+
set_log_beamline(BL)
|
|
24
|
+
set_utils_beamline(BL)
|
|
25
|
+
|
|
26
|
+
set_path_provider(
|
|
27
|
+
StaticVisitPathProvider(
|
|
28
|
+
BL,
|
|
29
|
+
Path("/dls/b16/data/2025/cm40635-3/bluesky"),
|
|
30
|
+
client=RemoteDirectoryServiceClient("http://b16-control:8088/api"),
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@device_factory()
|
|
36
|
+
def attol1() -> Motor:
|
|
37
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT0")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@device_factory()
|
|
41
|
+
def attol2() -> Motor:
|
|
42
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT1")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@device_factory()
|
|
46
|
+
def attol3() -> Motor:
|
|
47
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT2")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@device_factory()
|
|
51
|
+
def attorot1() -> Motor:
|
|
52
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-02:ACT2")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@device_factory()
|
|
56
|
+
def fds2() -> AreaDetector:
|
|
57
|
+
prefix = f"{PREFIX.beamline_prefix}-EA-FDS-02:"
|
|
58
|
+
return software_triggered_tiff_area_detector(prefix)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@device_factory()
|
|
62
|
+
def sim_stage() -> XYZPositioner:
|
|
63
|
+
return XYZPositioner(
|
|
64
|
+
f"{PREFIX.beamline_prefix}-MO-SIM-01:", "sim_stage", infix=("M1", "M2", "M3")
|
|
65
|
+
)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
4
|
+
device_factory,
|
|
5
|
+
set_path_provider,
|
|
6
|
+
)
|
|
7
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
8
|
+
from dodal.common.visit import (
|
|
9
|
+
LocalDirectoryServiceClient,
|
|
10
|
+
StaticVisitPathProvider,
|
|
11
|
+
)
|
|
12
|
+
from dodal.devices.synchrotron import Synchrotron
|
|
13
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
14
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
15
|
+
|
|
16
|
+
BL = get_beamline_name("b18")
|
|
17
|
+
PREFIX = BeamlinePrefix(BL)
|
|
18
|
+
set_log_beamline(BL)
|
|
19
|
+
set_utils_beamline(BL)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Currently we must hard-code the visit, determining the visit at runtime requires
|
|
23
|
+
# infrastructure that is still WIP.
|
|
24
|
+
# Communication with GDA is also WIP so for now we determine an arbitrary scan number
|
|
25
|
+
# locally and write the commissioning directory. The scan number is not guaranteed to
|
|
26
|
+
# be unique and the data is at risk - this configuration is for testing only.
|
|
27
|
+
set_path_provider(
|
|
28
|
+
StaticVisitPathProvider(
|
|
29
|
+
BL,
|
|
30
|
+
Path("/dls/b18/data/2025/cm40637-3/bluesky"),
|
|
31
|
+
client=LocalDirectoryServiceClient(),
|
|
32
|
+
)
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@device_factory()
|
|
37
|
+
def synchrotron() -> Synchrotron:
|
|
38
|
+
return Synchrotron()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from ophyd_async.fastcs.eiger import EigerDetector as FastEiger
|
|
1
2
|
from ophyd_async.fastcs.panda import HDFPanda
|
|
2
3
|
|
|
3
4
|
from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
|
|
@@ -28,8 +29,8 @@ from dodal.devices.i03 import Beamstop
|
|
|
28
29
|
from dodal.devices.i03.dcm import DCM
|
|
29
30
|
from dodal.devices.i03.undulator_dcm import UndulatorDCM
|
|
30
31
|
from dodal.devices.motors import XYZPositioner
|
|
31
|
-
from dodal.devices.oav.oav_detector import
|
|
32
|
-
from dodal.devices.oav.oav_parameters import
|
|
32
|
+
from dodal.devices.oav.oav_detector import OAVBeamCentreFile
|
|
33
|
+
from dodal.devices.oav.oav_parameters import OAVConfigBeamCentre
|
|
33
34
|
from dodal.devices.oav.pin_image_recognition import PinTipDetection
|
|
34
35
|
from dodal.devices.qbpm import QBPM
|
|
35
36
|
from dodal.devices.robot import BartRobot
|
|
@@ -172,6 +173,20 @@ def eiger(mock: bool = False) -> EigerDetector:
|
|
|
172
173
|
)
|
|
173
174
|
|
|
174
175
|
|
|
176
|
+
@device_factory()
|
|
177
|
+
def fastcs_eiger() -> FastEiger:
|
|
178
|
+
"""Get the i03 FastCS Eiger device, instantiate it if it hasn't already been.
|
|
179
|
+
If this is called when already instantiated in i03, it will return the existing object.
|
|
180
|
+
"""
|
|
181
|
+
|
|
182
|
+
return FastEiger(
|
|
183
|
+
prefix=PREFIX.beamline_prefix,
|
|
184
|
+
path_provider=get_path_provider(),
|
|
185
|
+
drv_suffix="-EA-EIGER-02:",
|
|
186
|
+
hdf_suffix="-EA-EIGER-01:OD:",
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
|
|
175
190
|
@device_factory()
|
|
176
191
|
def zebra_fast_grid_scan() -> ZebraFastGridScan:
|
|
177
192
|
"""Get the i03 zebra_fast_grid_scan device, instantiate it if it hasn't already been.
|
|
@@ -197,15 +212,15 @@ def panda_fast_grid_scan() -> PandAFastGridScan:
|
|
|
197
212
|
|
|
198
213
|
@device_factory()
|
|
199
214
|
def oav(
|
|
200
|
-
params:
|
|
201
|
-
) ->
|
|
215
|
+
params: OAVConfigBeamCentre | None = None,
|
|
216
|
+
) -> OAVBeamCentreFile:
|
|
202
217
|
"""Get the i03 OAV device, instantiate it if it hasn't already been.
|
|
203
218
|
If this is called when already instantiated in i03, it will return the existing object.
|
|
204
219
|
"""
|
|
205
|
-
return
|
|
220
|
+
return OAVBeamCentreFile(
|
|
206
221
|
prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
|
|
207
222
|
name="oav",
|
|
208
|
-
config=params or
|
|
223
|
+
config=params or OAVConfigBeamCentre(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
|
|
209
224
|
)
|
|
210
225
|
|
|
211
226
|
|
|
@@ -24,7 +24,7 @@ from dodal.devices.i04.transfocator import Transfocator
|
|
|
24
24
|
from dodal.devices.ipin import IPin
|
|
25
25
|
from dodal.devices.motors import XYZPositioner
|
|
26
26
|
from dodal.devices.mx_phase1.beamstop import Beamstop
|
|
27
|
-
from dodal.devices.oav.oav_detector import
|
|
27
|
+
from dodal.devices.oav.oav_detector import OAVBeamCentrePV
|
|
28
28
|
from dodal.devices.oav.oav_parameters import OAVConfig
|
|
29
29
|
from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
|
|
30
30
|
from dodal.devices.oav.pin_image_recognition import PinTipDetection
|
|
@@ -53,7 +53,7 @@ DISPLAY_CONFIG = "/dls_sw/i04/software/gda_versions/var/display.configuration"
|
|
|
53
53
|
DAQ_CONFIGURATION_PATH = "/dls_sw/i04/software/daq_configuration"
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
BL = get_beamline_name("
|
|
56
|
+
BL = get_beamline_name("i04")
|
|
57
57
|
set_log_beamline(BL)
|
|
58
58
|
set_utils_beamline(BL)
|
|
59
59
|
|
|
@@ -297,18 +297,25 @@ def zebra() -> Zebra:
|
|
|
297
297
|
|
|
298
298
|
|
|
299
299
|
@device_factory(skip=BL == "s04")
|
|
300
|
-
def oav(
|
|
301
|
-
wait_for_connection: bool = True,
|
|
302
|
-
fake_with_ophyd_sim: bool = False,
|
|
303
|
-
params: OAVConfig | None = None,
|
|
304
|
-
) -> OAV:
|
|
300
|
+
def oav(params: OAVConfig | None = None) -> OAVBeamCentrePV:
|
|
305
301
|
"""Get the i04 OAV device, instantiate it if it hasn't already been.
|
|
306
302
|
If this is called when already instantiated in i04, it will return the existing object.
|
|
307
303
|
"""
|
|
308
|
-
return
|
|
304
|
+
return OAVBeamCentrePV(
|
|
309
305
|
prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
|
|
310
|
-
|
|
311
|
-
|
|
306
|
+
config=params or OAVConfig(ZOOM_PARAMS_FILE),
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
@device_factory(skip=BL == "s04")
|
|
311
|
+
def oav_full_screen(params: OAVConfig | None = None) -> OAVBeamCentrePV:
|
|
312
|
+
"""Get the i04 OAV device, instantiate it if it hasn't already been.
|
|
313
|
+
If this is called when already instantiated in i04, it will return the existing object.
|
|
314
|
+
"""
|
|
315
|
+
return OAVBeamCentrePV(
|
|
316
|
+
prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
|
|
317
|
+
config=params or OAVConfig(ZOOM_PARAMS_FILE),
|
|
318
|
+
overlay_channel=3,
|
|
312
319
|
)
|
|
313
320
|
|
|
314
321
|
|