dls-dodal 1.63.0__tar.gz → 1.64.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.63.0 → dls_dodal-1.64.0}/PKG-INFO +3 -3
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/conftest.py +4 -34
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/make-release.md +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/write-tests.md +5 -5
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/pyproject.toml +5 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/PKG-INFO +3 -3
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/SOURCES.txt +15 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/requires.txt +2 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/_version.py +3 -3
- dls_dodal-1.64.0/src/dodal/beamlines/i07.py +21 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09_1.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09_2.py +30 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i10_optics.py +50 -24
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i17.py +18 -8
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i21.py +31 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/cli.py +3 -3
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/apple2_undulator.py +19 -17
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/ccmc.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/common_dcm.py +3 -3
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/undulator_dcm.py +1 -1
- dls_dodal-1.64.0/src/dodal/devices/i07/dcm.py +33 -0
- dls_dodal-1.64.0/src/dodal/devices/i09_1_shared/__init__.py +3 -0
- dls_dodal-1.64.0/src/dodal/devices/i09_1_shared/hard_undulator_functions.py +111 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/i10_apple2.py +4 -4
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/dcm.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/dcm.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/util/lookup_tables.py +8 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/verify_undulator_gap.py +2 -2
- dls_dodal-1.64.0/src/dodal/testing/fixtures/run_engine.py +46 -0
- dls_dodal-1.64.0/src/dodal/testing/fixtures/utils.py +57 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_device_instantiation.py +2 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/conftest.py +3 -55
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/b07_1/test_ccmc.py +3 -3
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/conftest.py +4 -4
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i03/test_dcm.py +1 -1
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i03/test_undulator_dcm.py +9 -9
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i04/test_transfocator.py +6 -2
- dls_dodal-1.64.0/tests/devices/i07/test_dcm.py +36 -0
- dls_dodal-1.64.0/tests/devices/i09_1_shared/test_data/__init__.py +9 -0
- dls_dodal-1.64.0/tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt +26 -0
- dls_dodal-1.64.0/tests/devices/i09_1_shared/test_undulator_functions.py +53 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_i10_apple2.py +73 -48
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i22/test_dcm.py +6 -6
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_common_dcm.py +2 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_smargon.py +2 -2
- dls_dodal-1.64.0/tests/fake_zocalo/__init__.py +0 -0
- dls_dodal-1.64.0/tests/plan_stubs/__init__.py +0 -0
- dls_dodal-1.64.0/tests/plans/__init__.py +0 -0
- dls_dodal-1.64.0/tests/plans/test_preprocessors/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_verify_undulator_gap_plan.py +1 -1
- dls_dodal-1.64.0/tests/preprocessors/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_cli.py +2 -2
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.gitignore +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/Dockerfile +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/LICENSE +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/README.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/conf.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/umls/apple2_design.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations/umls/i10_id_design.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/explanations.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/genindex.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/create-beamline.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/create-device.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/external-io-devices.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/move-code.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to/zocalo.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/how-to.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/index.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/reference/device-standards.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/reference/standards.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/reference.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/tutorials/get_started.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/pull_request_template.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/setup.cfg +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/adsim.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/aithre.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b07.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b07_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b16.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b18.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b21.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i02_2.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i03.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i04.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i05.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i05_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i10_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i11.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i15.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i15_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i18.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_2.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_optics.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i24.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/k07.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/k11.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p60.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/data_util.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/device_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/common/watcher_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/aperturescatterguard.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/plugins/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/plugins/cam.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/plugins/mjpg.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b07/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b07/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b16/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/b16/detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/baton.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/bimorph_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/collimation_table.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/controllers.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/eiger.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/energy_sources.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/types.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/util.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/eurotherm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/fast_shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/focusing_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/fast_grid_scan.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/sample_motors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_2/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/dcm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/constants.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/murko_results.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i05/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i05/enums.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i10/rasor → dls_dodal-1.64.0/src/dodal/devices/i07}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i09/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i09/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i09_1/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i09_1/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/diagnostics.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i11 → dls_dodal-1.64.0/src/dodal/devices/i10/rasor}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i13_1 → dls_dodal-1.64.0/src/dodal/devices/i11}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/diff_stages.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/mythen.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/nx100robot.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/spinner.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i15 → dls_dodal-1.64.0/src/dodal/devices/i13_1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i17 → dls_dodal-1.64.0/src/dodal/devices/i15}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/focussing_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/jack.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/laue.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/motors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/multilayer_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/rail.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i18 → dls_dodal-1.64.0/src/dodal/devices/i17}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i17/i17_apple2.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i19 → dls_dodal-1.64.0/src/dodal/devices/i18}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i18/diode.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i18/kb_mirror.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i19/access_controlled → dls_dodal-1.64.0/src/dodal/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i20_1 → dls_dodal-1.64.0/src/dodal/devices/i19/access_controlled}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/access_controlled/blueapi_device.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/access_controlled/hutch_access.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/access_controlled/shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/beamstop.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/diffractometer.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/mapt_configuration.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/pin_col_stages.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i22 → dls_dodal-1.64.0/src/dodal/devices/i20_1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i21/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i21/enums.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/i24 → dls_dodal-1.64.0/src/dodal/devices/i22}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/mx_phase1 → dls_dodal-1.64.0/src/dodal/devices/i24}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/commissioning_jungfrau.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/pmac.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/oav → dls_dodal-1.64.0/src/dodal/devices/mx_phase1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/oav/snapshots → dls_dodal-1.64.0/src/dodal/devices/oav}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/p99 → dls_dodal-1.64.0/src/dodal/devices/oav/snapshots}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/enums.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/temperture_controller/lakeshore → dls_dodal-1.64.0/src/dodal/devices/p99}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p99/andor2_point.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/positioner.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/robot.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/smargon.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/__init__.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/util → dls_dodal-1.64.0/src/dodal/devices/temperture_controller/lakeshore}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/thawer.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/undulator.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/xspress3 → dls_dodal-1.64.0/src/dodal/devices/util}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/util/epics_util.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/v2f.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/xbpm_feedback.py +0 -0
- {dls_dodal-1.63.0/src/dodal/devices/zebra → dls_dodal-1.64.0/src/dodal/devices/xspress3}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.63.0/src/dodal/parameters → dls_dodal-1.64.0/src/dodal/devices/zebra}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.63.0/src/dodal/plan_stubs → dls_dodal-1.64.0/src/dodal/parameters}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.63.0/src/dodal/plans/preprocessors → dls_dodal-1.64.0/src/dodal/plan_stubs}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/bimorph.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.63.0/system_tests → dls_dodal-1.64.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/testing/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
- {dls_dodal-1.63.0/tests → dls_dodal-1.64.0/src/dodal/testing/fixtures}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/testing/setup.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.63.0/tests/beamlines → dls_dodal-1.64.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/system_tests/test_adsim.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/system_tests/test_oav_to_redis_system.py +0 -0
- {dls_dodal-1.63.0/tests/common → dls_dodal-1.64.0/tests}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/common → dls_dodal-1.64.0/tests}/beamlines/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/beamlines/test_b16.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/beamlines/test_i03.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/beamlines/test_i24.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/beamlines/test_mapping.py +0 -0
- {dls_dodal-1.63.0/tests/devices → dls_dodal-1.64.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/aithre_lasershaping → dls_dodal-1.64.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_commissioning_mode.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/common/test_watcher_utils.py +0 -0
- {dls_dodal-1.63.0/tests/devices/b07_1 → dls_dodal-1.64.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/current_amplifier → dls_dodal-1.64.0/tests/devices/aithre_lasershaping}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
- {dls_dodal-1.63.0/tests/devices/detector → dls_dodal-1.64.0/tests/devices/b07_1}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/electron_analyser → dls_dodal-1.64.0/tests/devices/current_amplifier}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.63.0/tests/devices/electron_analyser/abstract → dls_dodal-1.64.0/tests/devices/detector}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/detector/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/detector/test_detector.py +0 -0
- {dls_dodal-1.63.0/tests/devices/electron_analyser/specs → dls_dodal-1.64.0/tests/devices/electron_analyser}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/electron_analyser/vgscienta → dls_dodal-1.64.0/tests/devices/electron_analyser/abstract}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i02_1 → dls_dodal-1.64.0/tests/devices/electron_analyser/specs}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_energy_sources.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_util.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i03 → dls_dodal-1.64.0/tests/devices/electron_analyser/vgscienta}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i04 → dls_dodal-1.64.0/tests/devices/i02_1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i02_1/test_fast_grid_scan.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i09 → dls_dodal-1.64.0/tests/devices/i03}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i10 → dls_dodal-1.64.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i04/test_murko_results.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i11 → dls_dodal-1.64.0/tests/devices/i07}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i13_1 → dls_dodal-1.64.0/tests/devices/i09}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i15 → dls_dodal-1.64.0/tests/devices/i09_1}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i17 → dls_dodal-1.64.0/tests/devices/i09_1_shared}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i18 → dls_dodal-1.64.0/tests/devices/i10}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.63.0/tests/devices/i19 → dls_dodal-1.64.0/tests/devices/i11}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i11/test_i11devices.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i11/test_mythen.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i22 → dls_dodal-1.64.0/tests/devices/i13_1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.63.0/tests/devices/i24 → dls_dodal-1.64.0/tests/devices/i15}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/devices/mx_phase1 → dls_dodal-1.64.0/tests/devices/i17}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i17/test_i17_apple2.py +0 -0
- {dls_dodal-1.63.0/tests/devices/oav → dls_dodal-1.64.0/tests/devices/i18}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.63.0/tests/devices/oav/image_recognition → dls_dodal-1.64.0/tests/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_beamstop.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_diffractometer.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_mapt.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_pin_col.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i19/test_shutter.py +0 -0
- {dls_dodal-1.63.0/tests/devices/p60 → dls_dodal-1.64.0/tests/devices/i22}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.63.0/tests/devices/p99 → dls_dodal-1.64.0/tests/devices/i24}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i24/test_commissioning_jungfrau.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i24/test_pmac.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/i24/test_vgonio.py +0 -0
- {dls_dodal-1.63.0/tests/devices/temperature_controller → dls_dodal-1.64.0/tests/devices/mx_phase1}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
- {dls_dodal-1.63.0/tests/devices/temperature_controller/lakeshore → dls_dodal-1.64.0/tests/devices/oav}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/conftest.py +0 -0
- {dls_dodal-1.63.0/tests/devices/util → dls_dodal-1.64.0/tests/devices/oav/image_recognition}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/oav/test_snapshots.py +0 -0
- {dls_dodal-1.63.0/tests/fake_zocalo → dls_dodal-1.64.0/tests/devices/p60}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
- {dls_dodal-1.63.0/tests/plan_stubs → dls_dodal-1.64.0/tests/devices/p99}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.63.0/tests/plans → dls_dodal-1.64.0/tests/devices/temperature_controller}/__init__.py +0 -0
- {dls_dodal-1.63.0/tests/plans/test_preprocessors → dls_dodal-1.64.0/tests/devices/temperature_controller/lakeshore}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_aperture.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_aperture_scatterguard.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_apple2_undulator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_attenuator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_backlight.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_bart_robot.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_baton.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_beam_converter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_bimorph_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_controllers.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_eiger.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_fast_shutters.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_focusing_mirror.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_gridscan.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_hutch_shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_motors.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_odin.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_positioner.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_pressure_jump_cell.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_qbpm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_scintillator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_slits.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_synchrotron.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_tetramm.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_thawer.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_turbo_slit.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_undulator.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_webcam.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_xspress3.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_zebra.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_zebra_shutter.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/test_zocalo_results.py +0 -0
- {dls_dodal-1.63.0/tests/preprocessors → dls_dodal-1.64.0/tests/devices/util}/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/devices/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data_session.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_topup_plan.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/conftest.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_bimorph.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_save_panda.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/__init__.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/test_display.configuration +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_log.py +0 -0
- {dls_dodal-1.63.0 → dls_dodal-1.64.0}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.64.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -215,7 +215,7 @@ Description-Content-Type: text/markdown
|
|
|
215
215
|
License-File: LICENSE
|
|
216
216
|
Requires-Dist: click
|
|
217
217
|
Requires-Dist: ophyd
|
|
218
|
-
Requires-Dist: ophyd-async[ca,pva]>=0.13.
|
|
218
|
+
Requires-Dist: ophyd-async[ca,pva]>=0.13.5
|
|
219
219
|
Requires-Dist: bluesky>=1.14.5
|
|
220
220
|
Requires-Dist: pyepics
|
|
221
221
|
Requires-Dist: dataclasses-json
|
|
@@ -245,7 +245,7 @@ Requires-Dist: pipdeptree; extra == "dev"
|
|
|
245
245
|
Requires-Dist: pre-commit; extra == "dev"
|
|
246
246
|
Requires-Dist: psutil; extra == "dev"
|
|
247
247
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
248
|
-
Requires-Dist: pyright; extra == "dev"
|
|
248
|
+
Requires-Dist: pyright==1.1.406; extra == "dev"
|
|
249
249
|
Requires-Dist: pytest; extra == "dev"
|
|
250
250
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
251
251
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
import logging
|
|
3
2
|
import sys
|
|
4
|
-
import time
|
|
5
|
-
from collections.abc import Mapping
|
|
6
3
|
from os import environ
|
|
7
4
|
from pathlib import Path
|
|
8
5
|
from unittest.mock import MagicMock, patch
|
|
9
6
|
|
|
10
7
|
import pytest
|
|
11
|
-
from bluesky.run_engine import RunEngine
|
|
12
8
|
from ophyd.status import Status
|
|
13
9
|
from ophyd_async.core import (
|
|
14
10
|
PathInfo,
|
|
@@ -49,6 +45,10 @@ BANNED_PATHS = [Path("/dls"), Path("/dls_sw")]
|
|
|
49
45
|
environ["DODAL_TEST_MODE"] = "true"
|
|
50
46
|
|
|
51
47
|
|
|
48
|
+
# Add run_engine fixtures to be used in tests
|
|
49
|
+
pytest_plugins = ["dodal.testing.fixtures.run_engine"]
|
|
50
|
+
|
|
51
|
+
|
|
52
52
|
@pytest.fixture(autouse=True)
|
|
53
53
|
def patch_open_to_prevent_dls_reads_in_tests():
|
|
54
54
|
unpatched_open = open
|
|
@@ -105,37 +105,7 @@ async def static_path_provider(
|
|
|
105
105
|
return svpp
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
@pytest.fixture
|
|
109
|
-
def run_engine_documents(run_engine: RunEngine) -> Mapping[str, list[dict]]:
|
|
110
|
-
docs: dict[str, list[dict]] = {}
|
|
111
|
-
|
|
112
|
-
def append_and_print(name, doc):
|
|
113
|
-
if name not in docs:
|
|
114
|
-
docs[name] = []
|
|
115
|
-
docs[name] += [doc]
|
|
116
|
-
|
|
117
|
-
run_engine.subscribe(append_and_print)
|
|
118
|
-
return docs
|
|
119
|
-
|
|
120
|
-
|
|
121
108
|
def failed_status(failure: Exception) -> Status:
|
|
122
109
|
status = Status()
|
|
123
110
|
status.set_exception(failure)
|
|
124
111
|
return status
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
@pytest.fixture(scope="session", autouse=True)
|
|
128
|
-
async def _ensure_running_bluesky_event_loop():
|
|
129
|
-
run_engine = RunEngine()
|
|
130
|
-
# make sure the event loop is thoroughly up and running before we try to create
|
|
131
|
-
# any ophyd_async devices which might need it
|
|
132
|
-
timeout = time.monotonic() + 1
|
|
133
|
-
while not run_engine.loop.is_running():
|
|
134
|
-
await asyncio.sleep(0)
|
|
135
|
-
if time.monotonic() > timeout:
|
|
136
|
-
raise TimeoutError("This really shouldn't happen but just in case...")
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
@pytest.fixture()
|
|
140
|
-
async def run_engine():
|
|
141
|
-
yield RunEngine()
|
|
@@ -21,7 +21,7 @@ you will not get the option to edit the release notes.
|
|
|
21
21
|
|
|
22
22
|
A new release will be made and the wheel and sdist uploaded to PyPI.
|
|
23
23
|
|
|
24
|
-
[release]: https://github.com/DiamondLightSource/
|
|
24
|
+
[release]: https://github.com/DiamondLightSource/dodal/releases
|
|
25
25
|
|
|
26
26
|
## Deciding release numbers
|
|
27
27
|
|
|
@@ -58,9 +58,11 @@ class MyDevice(StandardReadable, Stageable):
|
|
|
58
58
|
|
|
59
59
|
In this example, we need to test the `stage` and `unstage` methods. For more complex devices, it is also a good idea to test the `read` method to confirm that we get the expected read signals back when this method is called.
|
|
60
60
|
|
|
61
|
-
We use [pytest](https://docs.pytest.org/en/stable/contents.html) for writing tests in dodal. A core part of this library is the use of fixtures. A fixture is a function decorated with `@pytest.fixture` that provides setup/teardown or reusable test data for your tests. It is defined once and can be reused across multiple tests. Fixtures are mainly used to define devices and then inject them into each test.
|
|
61
|
+
We use [pytest](https://docs.pytest.org/en/stable/contents.html) for writing tests in dodal. A core part of this library is the use of fixtures. A fixture is a function decorated with `@pytest.fixture` that provides setup/teardown or reusable test data for your tests. It is defined once and can be reused across multiple tests. Fixtures are mainly used to define devices and then inject them into each test.
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Common fixtures, such as the `run_engine` used in the below tests, can also be defined in `dodal/tests/conftest.py`, which is a special file recognised by `pytest`. These fixtures are automatically available to any test in the same directory (and its subdirectories) without needing to import them. This is useful for defining common setup code once without duplicating it across test files.
|
|
64
|
+
|
|
65
|
+
Devices are set up in the fixture using the `init_devices(mock=True)` function from `ophyd_async.core`, which automatically initialises the device in mock mode.
|
|
64
66
|
|
|
65
67
|
In order for `pytest` to detect something as a test, a function should begin with `test_*`. The test function should be self-descriptive about what it is testing, and it is acceptable (even encouraged) to have longer names for test functions for clarity.
|
|
66
68
|
|
|
@@ -75,9 +77,8 @@ from ophyd_async.testing import assert_reading, get_mock_put, partial_reading
|
|
|
75
77
|
from dodal.device.my_device import MyDevice
|
|
76
78
|
|
|
77
79
|
|
|
78
|
-
# RunEngine is needed to make sure there is an event loop when creating device.
|
|
79
80
|
@pytest.fixture
|
|
80
|
-
async def sim_my_device(
|
|
81
|
+
async def sim_my_device() -> MyDevice:
|
|
81
82
|
async with init_devices(mock=True):
|
|
82
83
|
sim_my_device = MyDevice("TEST:")
|
|
83
84
|
return sim_my_device
|
|
@@ -91,7 +92,6 @@ def test_my_device_stage(sim_my_device: MyDevice, run_engine: RunEngine) -> None
|
|
|
91
92
|
def test_my_device_unstage(sim_my_device: MyDevice, run_engine: RunEngine) -> None:
|
|
92
93
|
run_engine(bps.unstage(sim_my_device, wait=True), wait=True)
|
|
93
94
|
get_mock_put(sim_my_device.signal_b).assert_called_once_with(OnOff.OFF, wait=True)
|
|
94
|
-
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
You should test the output of a device when the device has many signals read and you want to ensure the correct ones are read at the correct times, or when the `read` method of it or one of its signals (e.g. a DerivedSignal) requires testing. Functions are defined in `ophyd-async` to aid with this. `assert_reading` allows us to compare the readings generated from a `Readable` device to the expected results.
|
|
@@ -14,7 +14,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
|
|
|
14
14
|
dependencies = [
|
|
15
15
|
"click",
|
|
16
16
|
"ophyd",
|
|
17
|
-
"ophyd-async[ca,pva]>=0.13.
|
|
17
|
+
"ophyd-async[ca,pva]>=0.13.5",
|
|
18
18
|
"bluesky>=1.14.5",
|
|
19
19
|
"pyepics",
|
|
20
20
|
"dataclasses-json",
|
|
@@ -54,7 +54,8 @@ dev = [
|
|
|
54
54
|
"pre-commit",
|
|
55
55
|
"psutil",
|
|
56
56
|
"pydata-sphinx-theme>=0.12",
|
|
57
|
-
|
|
57
|
+
# Pin to previous pyright until https://github.com/microsoft/pyright/issues/11060 is fixed
|
|
58
|
+
"pyright==1.1.406",
|
|
58
59
|
"pytest",
|
|
59
60
|
"pytest-asyncio",
|
|
60
61
|
"pytest-cov",
|
|
@@ -136,6 +137,8 @@ testpaths = "docs src tests system_tests"
|
|
|
136
137
|
exclude_also = [
|
|
137
138
|
'^"""', # Ignore the start/end of a file-level triple quoted docstring
|
|
138
139
|
]
|
|
140
|
+
# Exclude pytest.fixtures from code coverage report
|
|
141
|
+
omit = ["*/dodal/testing/fixtures/*"]
|
|
139
142
|
|
|
140
143
|
[tool.coverage.run]
|
|
141
144
|
data_file = "/tmp/dodal.coverage"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.64.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -215,7 +215,7 @@ Description-Content-Type: text/markdown
|
|
|
215
215
|
License-File: LICENSE
|
|
216
216
|
Requires-Dist: click
|
|
217
217
|
Requires-Dist: ophyd
|
|
218
|
-
Requires-Dist: ophyd-async[ca,pva]>=0.13.
|
|
218
|
+
Requires-Dist: ophyd-async[ca,pva]>=0.13.5
|
|
219
219
|
Requires-Dist: bluesky>=1.14.5
|
|
220
220
|
Requires-Dist: pyepics
|
|
221
221
|
Requires-Dist: dataclasses-json
|
|
@@ -245,7 +245,7 @@ Requires-Dist: pipdeptree; extra == "dev"
|
|
|
245
245
|
Requires-Dist: pre-commit; extra == "dev"
|
|
246
246
|
Requires-Dist: psutil; extra == "dev"
|
|
247
247
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
248
|
-
Requires-Dist: pyright; extra == "dev"
|
|
248
|
+
Requires-Dist: pyright==1.1.406; extra == "dev"
|
|
249
249
|
Requires-Dist: pytest; extra == "dev"
|
|
250
250
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
251
251
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -109,6 +109,7 @@ src/dodal/beamlines/i03.py
|
|
|
109
109
|
src/dodal/beamlines/i04.py
|
|
110
110
|
src/dodal/beamlines/i05.py
|
|
111
111
|
src/dodal/beamlines/i05_1.py
|
|
112
|
+
src/dodal/beamlines/i07.py
|
|
112
113
|
src/dodal/beamlines/i09.py
|
|
113
114
|
src/dodal/beamlines/i09_1.py
|
|
114
115
|
src/dodal/beamlines/i09_2.py
|
|
@@ -260,10 +261,14 @@ src/dodal/devices/i04/murko_results.py
|
|
|
260
261
|
src/dodal/devices/i04/transfocator.py
|
|
261
262
|
src/dodal/devices/i05/__init__.py
|
|
262
263
|
src/dodal/devices/i05/enums.py
|
|
264
|
+
src/dodal/devices/i07/__init__.py
|
|
265
|
+
src/dodal/devices/i07/dcm.py
|
|
263
266
|
src/dodal/devices/i09/__init__.py
|
|
264
267
|
src/dodal/devices/i09/enums.py
|
|
265
268
|
src/dodal/devices/i09_1/__init__.py
|
|
266
269
|
src/dodal/devices/i09_1/enums.py
|
|
270
|
+
src/dodal/devices/i09_1_shared/__init__.py
|
|
271
|
+
src/dodal/devices/i09_1_shared/hard_undulator_functions.py
|
|
267
272
|
src/dodal/devices/i10/__init__.py
|
|
268
273
|
src/dodal/devices/i10/diagnostics.py
|
|
269
274
|
src/dodal/devices/i10/i10_apple2.py
|
|
@@ -384,6 +389,9 @@ src/dodal/testing/__init__.py
|
|
|
384
389
|
src/dodal/testing/setup.py
|
|
385
390
|
src/dodal/testing/electron_analyser/__init__.py
|
|
386
391
|
src/dodal/testing/electron_analyser/device_factory.py
|
|
392
|
+
src/dodal/testing/fixtures/__init__.py
|
|
393
|
+
src/dodal/testing/fixtures/run_engine.py
|
|
394
|
+
src/dodal/testing/fixtures/utils.py
|
|
387
395
|
system_tests/__init__.py
|
|
388
396
|
system_tests/test_adsim.py
|
|
389
397
|
system_tests/test_cli.py
|
|
@@ -504,7 +512,14 @@ tests/devices/i03/test_undulator_dcm.py
|
|
|
504
512
|
tests/devices/i04/__init__.py
|
|
505
513
|
tests/devices/i04/test_murko_results.py
|
|
506
514
|
tests/devices/i04/test_transfocator.py
|
|
515
|
+
tests/devices/i07/__init__.py
|
|
516
|
+
tests/devices/i07/test_dcm.py
|
|
507
517
|
tests/devices/i09/__init__.py
|
|
518
|
+
tests/devices/i09_1/__init__.py
|
|
519
|
+
tests/devices/i09_1_shared/__init__.py
|
|
520
|
+
tests/devices/i09_1_shared/test_undulator_functions.py
|
|
521
|
+
tests/devices/i09_1_shared/test_data/__init__.py
|
|
522
|
+
tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt
|
|
508
523
|
tests/devices/i10/__init__.py
|
|
509
524
|
tests/devices/i10/test_i10_apple2.py
|
|
510
525
|
tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
click
|
|
2
2
|
ophyd
|
|
3
|
-
ophyd-async[ca,pva]>=0.13.
|
|
3
|
+
ophyd-async[ca,pva]>=0.13.5
|
|
4
4
|
bluesky>=1.14.5
|
|
5
5
|
pyepics
|
|
6
6
|
dataclasses-json
|
|
@@ -31,7 +31,7 @@ pipdeptree
|
|
|
31
31
|
pre-commit
|
|
32
32
|
psutil
|
|
33
33
|
pydata-sphinx-theme>=0.12
|
|
34
|
-
pyright
|
|
34
|
+
pyright==1.1.406
|
|
35
35
|
pytest
|
|
36
36
|
pytest-asyncio
|
|
37
37
|
pytest-cov
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.
|
|
32
|
-
__version_tuple__ = version_tuple = (1,
|
|
31
|
+
__version__ = version = '1.64.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 64, 0)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g15623816b'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import device_factory
|
|
2
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
3
|
+
from dodal.devices.i07.dcm import DCM
|
|
4
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
5
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
6
|
+
|
|
7
|
+
BL = get_beamline_name("i07")
|
|
8
|
+
set_log_beamline(BL)
|
|
9
|
+
set_utils_beamline(BL)
|
|
10
|
+
PREFIX = BeamlinePrefix(BL)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@device_factory()
|
|
14
|
+
def dcm() -> DCM:
|
|
15
|
+
"""Instantiate DCM using two PV bases"""
|
|
16
|
+
dcm = DCM(
|
|
17
|
+
f"{PREFIX.beamline_prefix}-MO-DCM-01:",
|
|
18
|
+
f"{PREFIX.beamline_prefix}-DI-DCM-01:",
|
|
19
|
+
"dcm",
|
|
20
|
+
)
|
|
21
|
+
return dcm
|
|
@@ -43,7 +43,7 @@ def dcm() -> DoubleCrystalMonochromatorWithDSpacing:
|
|
|
43
43
|
|
|
44
44
|
@device_factory()
|
|
45
45
|
def energy_source() -> DualEnergySource:
|
|
46
|
-
return DualEnergySource(dcm().
|
|
46
|
+
return DualEnergySource(dcm().energy_in_eV, pgm().energy.user_readback)
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
# Connect will work again after this work completed
|
|
@@ -34,7 +34,7 @@ def dcm() -> DoubleCrystalMonochromatorWithDSpacing:
|
|
|
34
34
|
|
|
35
35
|
@device_factory()
|
|
36
36
|
def energy_source() -> EnergySource:
|
|
37
|
-
return EnergySource(dcm().
|
|
37
|
+
return EnergySource(dcm().energy_in_eV)
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
# Connect will work again after this work completed
|
|
@@ -2,6 +2,11 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
2
2
|
device_factory,
|
|
3
3
|
)
|
|
4
4
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.apple2_undulator import (
|
|
6
|
+
Apple2,
|
|
7
|
+
UndulatorGap,
|
|
8
|
+
UndulatorPhaseAxes,
|
|
9
|
+
)
|
|
5
10
|
from dodal.devices.i09.enums import Grating
|
|
6
11
|
from dodal.devices.pgm import PGM
|
|
7
12
|
from dodal.devices.synchrotron import Synchrotron
|
|
@@ -22,3 +27,28 @@ def synchrotron() -> Synchrotron:
|
|
|
22
27
|
@device_factory()
|
|
23
28
|
def pgm() -> PGM:
|
|
24
29
|
return PGM(prefix=f"{PREFIX.beamline_prefix}-MO-PGM-01:", grating=Grating)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@device_factory()
|
|
33
|
+
def jid_gap() -> UndulatorGap:
|
|
34
|
+
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@device_factory()
|
|
38
|
+
def jid_phase() -> UndulatorPhaseAxes:
|
|
39
|
+
return UndulatorPhaseAxes(
|
|
40
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
41
|
+
top_outer="PUO",
|
|
42
|
+
top_inner="PUI",
|
|
43
|
+
btm_inner="PLI",
|
|
44
|
+
btm_outer="PLO",
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@device_factory()
|
|
49
|
+
def jid() -> Apple2:
|
|
50
|
+
"""I09 soft x-ray insertion device."""
|
|
51
|
+
return Apple2(
|
|
52
|
+
id_gap=jid_gap(),
|
|
53
|
+
id_phase=jid_phase(),
|
|
54
|
+
)
|
|
@@ -80,22 +80,35 @@ I10_CONF_CLIENT = ConfigServer(url="https://daq-config.diamond.ac.uk")
|
|
|
80
80
|
LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
|
|
81
81
|
|
|
82
82
|
|
|
83
|
+
@device_factory()
|
|
84
|
+
def idd_gap() -> UndulatorGap:
|
|
85
|
+
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@device_factory()
|
|
89
|
+
def idd_phase() -> UndulatorPhaseAxes:
|
|
90
|
+
return UndulatorPhaseAxes(
|
|
91
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
92
|
+
top_outer="RPQ1",
|
|
93
|
+
top_inner="RPQ2",
|
|
94
|
+
btm_inner="RPQ3",
|
|
95
|
+
btm_outer="RPQ4",
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@device_factory()
|
|
100
|
+
def idd_jaw_phase() -> UndulatorJawPhase:
|
|
101
|
+
return UndulatorJawPhase(
|
|
102
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
103
|
+
move_pv="RPQ1",
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
83
107
|
@device_factory()
|
|
84
108
|
def idd() -> I10Apple2:
|
|
85
109
|
"""i10 downstream insertion device:"""
|
|
86
110
|
return I10Apple2(
|
|
87
|
-
id_gap=
|
|
88
|
-
id_phase=UndulatorPhaseAxes(
|
|
89
|
-
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
90
|
-
top_outer="RPQ1",
|
|
91
|
-
top_inner="RPQ2",
|
|
92
|
-
btm_inner="RPQ3",
|
|
93
|
-
btm_outer="RPQ4",
|
|
94
|
-
),
|
|
95
|
-
id_jaw_phase=UndulatorJawPhase(
|
|
96
|
-
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
97
|
-
move_pv="RPQ1",
|
|
98
|
-
),
|
|
111
|
+
id_gap=idd_gap(), id_phase=idd_phase(), id_jaw_phase=idd_jaw_phase()
|
|
99
112
|
)
|
|
100
113
|
|
|
101
114
|
|
|
@@ -131,22 +144,35 @@ def energy_dd() -> BeamEnergy:
|
|
|
131
144
|
return BeamEnergy(id_energy=idd_energy(), mono=pgm().energy)
|
|
132
145
|
|
|
133
146
|
|
|
147
|
+
@device_factory()
|
|
148
|
+
def idu_gap() -> UndulatorGap:
|
|
149
|
+
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:")
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@device_factory()
|
|
153
|
+
def idu_phase() -> UndulatorPhaseAxes:
|
|
154
|
+
return UndulatorPhaseAxes(
|
|
155
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
156
|
+
top_outer="RPQ1",
|
|
157
|
+
top_inner="RPQ2",
|
|
158
|
+
btm_inner="RPQ3",
|
|
159
|
+
btm_outer="RPQ4",
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
@device_factory()
|
|
164
|
+
def idu_jaw_phase() -> UndulatorJawPhase:
|
|
165
|
+
return UndulatorJawPhase(
|
|
166
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
167
|
+
move_pv="RPQ1",
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
|
|
134
171
|
@device_factory()
|
|
135
172
|
def idu() -> I10Apple2:
|
|
136
173
|
"""i10 upstream insertion device"""
|
|
137
174
|
return I10Apple2(
|
|
138
|
-
id_gap=
|
|
139
|
-
id_phase=UndulatorPhaseAxes(
|
|
140
|
-
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
141
|
-
top_outer="RPQ1",
|
|
142
|
-
top_inner="RPQ2",
|
|
143
|
-
btm_inner="RPQ3",
|
|
144
|
-
btm_outer="RPQ4",
|
|
145
|
-
),
|
|
146
|
-
id_jaw_phase=UndulatorJawPhase(
|
|
147
|
-
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
148
|
-
move_pv="RPQ1",
|
|
149
|
-
),
|
|
175
|
+
id_gap=idu_gap(), id_phase=idu_phase(), id_jaw_phase=idu_jaw_phase()
|
|
150
176
|
)
|
|
151
177
|
|
|
152
178
|
|
|
@@ -47,18 +47,28 @@ def pgm() -> PGM:
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
|
|
50
|
+
@device_factory()
|
|
51
|
+
def id_gap() -> UndulatorGap:
|
|
52
|
+
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@device_factory()
|
|
56
|
+
def id_phase() -> UndulatorPhaseAxes:
|
|
57
|
+
return UndulatorPhaseAxes(
|
|
58
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
59
|
+
top_outer="RPQ1",
|
|
60
|
+
top_inner="RPQ2",
|
|
61
|
+
btm_inner="RPQ3",
|
|
62
|
+
btm_outer="RPQ4",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
50
66
|
@device_factory(skip=True)
|
|
51
67
|
def id() -> Apple2:
|
|
52
68
|
"""I17 insertion device:"""
|
|
53
69
|
return Apple2(
|
|
54
|
-
id_gap=
|
|
55
|
-
id_phase=
|
|
56
|
-
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
57
|
-
top_outer="RPQ1",
|
|
58
|
-
top_inner="RPQ2",
|
|
59
|
-
btm_inner="RPQ3",
|
|
60
|
-
btm_outer="RPQ4",
|
|
61
|
-
),
|
|
70
|
+
id_gap=id_gap(),
|
|
71
|
+
id_phase=id_phase(),
|
|
62
72
|
)
|
|
63
73
|
|
|
64
74
|
|
|
@@ -2,6 +2,11 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
2
2
|
device_factory,
|
|
3
3
|
)
|
|
4
4
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.apple2_undulator import (
|
|
6
|
+
Apple2,
|
|
7
|
+
UndulatorGap,
|
|
8
|
+
UndulatorPhaseAxes,
|
|
9
|
+
)
|
|
5
10
|
from dodal.devices.i21 import Grating
|
|
6
11
|
from dodal.devices.pgm import PGM
|
|
7
12
|
from dodal.devices.synchrotron import Synchrotron
|
|
@@ -9,7 +14,7 @@ from dodal.log import set_beamline as set_log_beamline
|
|
|
9
14
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
10
15
|
|
|
11
16
|
BL = get_beamline_name("i21")
|
|
12
|
-
PREFIX = BeamlinePrefix(BL
|
|
17
|
+
PREFIX = BeamlinePrefix(BL)
|
|
13
18
|
set_log_beamline(BL)
|
|
14
19
|
set_utils_beamline(BL)
|
|
15
20
|
|
|
@@ -25,3 +30,28 @@ def pgm() -> PGM:
|
|
|
25
30
|
prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
|
|
26
31
|
grating=Grating,
|
|
27
32
|
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@device_factory()
|
|
36
|
+
def id_gap() -> UndulatorGap:
|
|
37
|
+
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@device_factory()
|
|
41
|
+
def id_phase() -> UndulatorPhaseAxes:
|
|
42
|
+
return UndulatorPhaseAxes(
|
|
43
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
44
|
+
top_outer="PUO",
|
|
45
|
+
top_inner="PUI",
|
|
46
|
+
btm_inner="PLI",
|
|
47
|
+
btm_outer="PLO",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@device_factory()
|
|
52
|
+
def id() -> Apple2:
|
|
53
|
+
"""I21 insertion device."""
|
|
54
|
+
return Apple2(
|
|
55
|
+
id_gap=id_gap(),
|
|
56
|
+
id_phase=id_phase(),
|
|
57
|
+
)
|
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
import click
|
|
6
6
|
from bluesky.run_engine import RunEngine
|
|
7
|
-
from ophyd_async.core import
|
|
7
|
+
from ophyd_async.core import NotConnectedError, StaticPathProvider, UUIDFilenameProvider
|
|
8
8
|
from ophyd_async.plan_stubs import ensure_connected
|
|
9
9
|
|
|
10
10
|
from dodal.beamlines import all_beamline_names, module_name_for_beamline
|
|
@@ -79,7 +79,7 @@ def connect(beamline: str, all: bool, sim_backend: bool) -> None:
|
|
|
79
79
|
# If exceptions have occurred, this will print details of the relevant PVs
|
|
80
80
|
exceptions = {**instance_exceptions, **connect_exceptions}
|
|
81
81
|
if len(exceptions) > 0:
|
|
82
|
-
raise
|
|
82
|
+
raise NotConnectedError(exceptions)
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
def _report_successful_devices(
|
|
@@ -113,7 +113,7 @@ def _connect_devices(
|
|
|
113
113
|
# Connect ophyd-async devices
|
|
114
114
|
try:
|
|
115
115
|
run_engine(ensure_connected(*ophyd_async_devices.values(), mock=sim_backend))
|
|
116
|
-
except
|
|
116
|
+
except NotConnectedError as ex:
|
|
117
117
|
exceptions = {**exceptions, **ex.sub_errors}
|
|
118
118
|
|
|
119
119
|
# Only return the subset of devices that haven't raised an exception
|
|
@@ -326,8 +326,8 @@ class Apple2(StandardReadable, Movable):
|
|
|
326
326
|
Name of the device.
|
|
327
327
|
"""
|
|
328
328
|
with self.add_children_as_readables():
|
|
329
|
-
self.gap = id_gap
|
|
330
|
-
self.phase = id_phase
|
|
329
|
+
self.gap = Reference(id_gap)
|
|
330
|
+
self.phase = Reference(id_phase)
|
|
331
331
|
super().__init__(name=name)
|
|
332
332
|
|
|
333
333
|
@AsyncStatus.wrap
|
|
@@ -338,25 +338,27 @@ class Apple2(StandardReadable, Movable):
|
|
|
338
338
|
"""
|
|
339
339
|
|
|
340
340
|
# Only need to check gap as the phase motors share both fault and gate with gap.
|
|
341
|
-
await self.gap.raise_if_cannot_move()
|
|
341
|
+
await self.gap().raise_if_cannot_move()
|
|
342
342
|
await asyncio.gather(
|
|
343
|
-
self.phase.top_outer.user_setpoint.set(value=id_motor_values.top_outer),
|
|
344
|
-
self.phase.top_inner.user_setpoint.set(value=id_motor_values.top_inner),
|
|
345
|
-
self.phase.btm_inner.user_setpoint.set(value=id_motor_values.btm_inner),
|
|
346
|
-
self.phase.btm_outer.user_setpoint.set(value=id_motor_values.btm_outer),
|
|
347
|
-
self.gap.user_setpoint.set(value=id_motor_values.gap),
|
|
343
|
+
self.phase().top_outer.user_setpoint.set(value=id_motor_values.top_outer),
|
|
344
|
+
self.phase().top_inner.user_setpoint.set(value=id_motor_values.top_inner),
|
|
345
|
+
self.phase().btm_inner.user_setpoint.set(value=id_motor_values.btm_inner),
|
|
346
|
+
self.phase().btm_outer.user_setpoint.set(value=id_motor_values.btm_outer),
|
|
347
|
+
self.gap().user_setpoint.set(value=id_motor_values.gap),
|
|
348
348
|
)
|
|
349
349
|
timeout = np.max(
|
|
350
|
-
await asyncio.gather(self.gap.get_timeout(), self.phase.get_timeout())
|
|
350
|
+
await asyncio.gather(self.gap().get_timeout(), self.phase().get_timeout())
|
|
351
351
|
)
|
|
352
352
|
LOGGER.info(
|
|
353
353
|
f"Moving f{self.name} apple2 motors to {id_motor_values}, timeout = {timeout}"
|
|
354
354
|
)
|
|
355
355
|
await asyncio.gather(
|
|
356
|
-
self.gap.set_move.set(value=1, wait=False, timeout=timeout),
|
|
357
|
-
self.phase.set_move.set(value=1, wait=False, timeout=timeout),
|
|
356
|
+
self.gap().set_move.set(value=1, wait=False, timeout=timeout),
|
|
357
|
+
self.phase().set_move.set(value=1, wait=False, timeout=timeout),
|
|
358
|
+
)
|
|
359
|
+
await wait_for_value(
|
|
360
|
+
self.gap().gate, UndulatorGateStatus.CLOSE, timeout=timeout
|
|
358
361
|
)
|
|
359
|
-
await wait_for_value(self.gap.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
|
|
360
362
|
|
|
361
363
|
|
|
362
364
|
class EnergyMotorConvertor(Protocol):
|
|
@@ -448,11 +450,11 @@ class Apple2Controller(abc.ABC, StandardReadable, Generic[Apple2Type]):
|
|
|
448
450
|
raw_to_derived=self._read_pol,
|
|
449
451
|
set_derived=self._set_pol,
|
|
450
452
|
pol=self.polarisation_setpoint,
|
|
451
|
-
top_outer=self.apple2().phase.top_outer.user_readback,
|
|
452
|
-
top_inner=self.apple2().phase.top_inner.user_readback,
|
|
453
|
-
btm_inner=self.apple2().phase.btm_inner.user_readback,
|
|
454
|
-
btm_outer=self.apple2().phase.btm_outer.user_readback,
|
|
455
|
-
gap=self.apple2().gap.user_readback,
|
|
453
|
+
top_outer=self.apple2().phase().top_outer.user_readback,
|
|
454
|
+
top_inner=self.apple2().phase().top_inner.user_readback,
|
|
455
|
+
btm_inner=self.apple2().phase().btm_inner.user_readback,
|
|
456
|
+
btm_outer=self.apple2().phase().btm_outer.user_readback,
|
|
457
|
+
gap=self.apple2().gap().user_readback,
|
|
456
458
|
)
|
|
457
459
|
super().__init__(name)
|
|
458
460
|
|
|
@@ -53,9 +53,9 @@ class DoubleCrystalMonochromatorBase(StandardReadable, Generic[Xtal_1, Xtal_2]):
|
|
|
53
53
|
) -> None:
|
|
54
54
|
with self.add_children_as_readables():
|
|
55
55
|
# Virtual motor PV's which set the physical motors so that the DCM produces requested energy
|
|
56
|
-
self.
|
|
57
|
-
self.
|
|
58
|
-
self._convert_keV_to_eV, energy_signal=self.
|
|
56
|
+
self.energy_in_keV = Motor(prefix + "ENERGY")
|
|
57
|
+
self.energy_in_eV = derived_signal_r(
|
|
58
|
+
self._convert_keV_to_eV, energy_signal=self.energy_in_keV.user_readback
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
self._make_crystals(prefix, xtal_1, xtal_2)
|
|
@@ -58,7 +58,7 @@ class UndulatorDCM(StandardReadable, Movable[float]):
|
|
|
58
58
|
async def set(self, value: float):
|
|
59
59
|
await self.undulator_ref().raise_if_not_enabled()
|
|
60
60
|
await asyncio.gather(
|
|
61
|
-
self.dcm_ref().
|
|
61
|
+
self.dcm_ref().energy_in_keV.set(value, timeout=ENERGY_TIMEOUT_S),
|
|
62
62
|
self.undulator_ref().set(value),
|
|
63
63
|
)
|
|
64
64
|
|