dls-dodal 1.57.0__tar.gz → 1.58.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.57.0 → dls_dodal-1.58.0}/PKG-INFO +1 -1
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/PKG-INFO +1 -1
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/SOURCES.txt +4 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/_version.py +3 -3
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i03.py +2 -1
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i04.py +15 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i19_2.py +9 -0
- dls_dodal-1.58.0/src/dodal/common/beamlines/commissioning_mode.py +33 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/baton.py +4 -0
- dls_dodal-1.58.0/src/dodal/devices/i19/backlight.py +17 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/undulator.py +13 -9
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/xbpm_feedback.py +12 -6
- dls_dodal-1.58.0/tests/common/beamlines/test_commissioning_mode.py +35 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/conftest.py +15 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i03/test_undulator_dcm.py +29 -12
- dls_dodal-1.58.0/tests/devices/i19/test_backlight.py +18 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_baton.py +1 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_undulator.py +49 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_xbpm_feedback.py +26 -1
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.gitignore +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/Dockerfile +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/LICENSE +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/README.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/conftest.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/conf.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/umls/apple2_design.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations/umls/i10_id_design.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/explanations.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/genindex.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/create-beamline.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/create-device.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/external-io-devices.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/move-code.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to/zocalo.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/how-to.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/index.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/reference/device-standards.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/reference/standards.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/reference.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/tutorials/get_started.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/pull_request_template.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/pyproject.toml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/setup.cfg +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/requires.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/adsim.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/aithre.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b07.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b07_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b16.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b18.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/b21.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i05.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i05_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i09.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i09_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i09_2.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i11.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i17.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i18.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i19_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i19_optics.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/i24.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/k11.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/p60.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/cli.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/data_util.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/device_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/common/watcher_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/aperturescatterguard.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/apple2_undulator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b07/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b07/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b07_1/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b07_1/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b16/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/b16/detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/bimorph_mirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/collimation_table.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/common_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/controllers.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/eiger.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/types.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/util.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/eurotherm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/focusing_mirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i03/dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i04/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i04/constants.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i04/murko_results.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i05/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i05/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i09/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i09/dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i09/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i09_1/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i09_1/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/diagnostics.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i11/diff_stages.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i11/mythen.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i11/nx100robot.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i11/spinner.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i13_1/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i18/KBMirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i18/diode.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/beamstop.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/diffractometer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/hutch_access.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i19/shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i22/dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/pmac.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/oav_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p60/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p60/enums.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p99/andor2_point.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/positioner.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/robot.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/smargon.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/thawer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/util/epics_util.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zebra/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zebra/zebra.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/bimorph.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/preprocessors/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/testing/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/testing/setup.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/system_tests/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/system_tests/test_adsim.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/system_tests/test_oav_to_redis_system.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/beamlines/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/beamlines/test_b16.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/beamlines/test_i03.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/beamlines/test_i24.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/beamlines/test_mapping.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/common/test_watcher_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/b07_1/test_ccmc.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/detector/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/detector/test_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/abstract/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/conftest.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/specs/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/specs/test_driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/test_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/test_util.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/vgscienta/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i03/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i03/test_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i04/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i04/test_murko_results.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i09/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i09/test_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i10/test_i10Apple2.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i11/test_i11devices.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i11/test_mythen.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i19/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i19/test_beamstop.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i19/test_diffractometer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i19/test_shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i22/test_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i24/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i24/test_pmac.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/i24/test_vgonio.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/mx_phase1/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/conftest.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_oav.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_oav_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/oav/test_snapshots.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test.png +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_aperture.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_aperture_scatterguard.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_apple2_undulator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_attenuator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_backlight.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_bart_robot.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_beam_converter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_bimorph_mirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_common_dcm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_controllers.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_eiger.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_focusing_mirror.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_gridscan.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_hutch_shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_motors.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_odin.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_positioner.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_pressure_jump_cell.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_qbpm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_scintillator.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_slits.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_smargon.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_status.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_synchrotron.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_tetramm.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_thawer.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_turbo_slit.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_webcam.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_xspress3.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_zebra.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_zebra_shutter.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/test_zocalo_results.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/devices/util/test_save_panda.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_zocalo/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_data_session.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_topup_plan.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/conftest.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_bimorph.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_cli.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/__init__.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/test_display.configuration +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.0}/tests/test_log.py +0 -0
- {dls_dodal-1.57.0 → dls_dodal-1.58.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.58.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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.58.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
|
|
@@ -143,6 +143,7 @@ src/dodal/common/watcher_utils.py
|
|
|
143
143
|
src/dodal/common/beamlines/__init__.py
|
|
144
144
|
src/dodal/common/beamlines/beamline_parameters.py
|
|
145
145
|
src/dodal/common/beamlines/beamline_utils.py
|
|
146
|
+
src/dodal/common/beamlines/commissioning_mode.py
|
|
146
147
|
src/dodal/common/beamlines/device_helpers.py
|
|
147
148
|
src/dodal/devices/__init__.py
|
|
148
149
|
src/dodal/devices/aperture.py
|
|
@@ -267,6 +268,7 @@ src/dodal/devices/i13_1/merlin_controller.py
|
|
|
267
268
|
src/dodal/devices/i18/KBMirror.py
|
|
268
269
|
src/dodal/devices/i18/diode.py
|
|
269
270
|
src/dodal/devices/i19/__init__.py
|
|
271
|
+
src/dodal/devices/i19/backlight.py
|
|
270
272
|
src/dodal/devices/i19/beamstop.py
|
|
271
273
|
src/dodal/devices/i19/blueapi_device.py
|
|
272
274
|
src/dodal/devices/i19/diffractometer.py
|
|
@@ -371,6 +373,7 @@ tests/common/test_watcher_utils.py
|
|
|
371
373
|
tests/common/beamlines/__init__.py
|
|
372
374
|
tests/common/beamlines/test_beamline_parameters.py
|
|
373
375
|
tests/common/beamlines/test_beamline_utils.py
|
|
376
|
+
tests/common/beamlines/test_commissioning_mode.py
|
|
374
377
|
tests/common/beamlines/test_device_instantiation.py
|
|
375
378
|
tests/devices/__init__.py
|
|
376
379
|
tests/devices/test.png
|
|
@@ -466,6 +469,7 @@ tests/devices/i11/test_mythen.py
|
|
|
466
469
|
tests/devices/i13_1/test_merlin.py
|
|
467
470
|
tests/devices/i18/test_kb_mirror.py
|
|
468
471
|
tests/devices/i19/__init__.py
|
|
472
|
+
tests/devices/i19/test_backlight.py
|
|
469
473
|
tests/devices/i19/test_beamstop.py
|
|
470
474
|
tests/devices/i19/test_diffractometer.py
|
|
471
475
|
tests/devices/i19/test_shutter.py
|
|
@@ -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.58.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 58, 0)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g52d34a5bc'
|
|
@@ -261,6 +261,7 @@ def undulator(daq_configuration_path: str | None = None) -> Undulator:
|
|
|
261
261
|
f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
|
|
262
262
|
# evaluate here not as parameter default to enable post-import mocking
|
|
263
263
|
id_gap_lookup_table_path=f"{daq_configuration_path or DAQ_CONFIGURATION_PATH}/lookup/BeamLine_Undulator_toGap.txt",
|
|
264
|
+
baton=baton(),
|
|
264
265
|
)
|
|
265
266
|
|
|
266
267
|
|
|
@@ -333,7 +334,7 @@ def xbpm_feedback() -> XBPMFeedback:
|
|
|
333
334
|
"""Get the i03 XBPM feeback device, instantiate it if it hasn't already been.
|
|
334
335
|
If this is called when already instantiated in i03, it will return the existing object.
|
|
335
336
|
"""
|
|
336
|
-
return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:")
|
|
337
|
+
return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:", baton=baton())
|
|
337
338
|
|
|
338
339
|
|
|
339
340
|
@device_factory()
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from ophyd_async.core import Reference
|
|
2
|
+
|
|
1
3
|
from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
|
|
2
4
|
from dodal.common.beamlines.beamline_utils import (
|
|
3
5
|
device_factory,
|
|
@@ -30,6 +32,7 @@ from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
|
|
|
30
32
|
from dodal.devices.oav.pin_image_recognition import PinTipDetection
|
|
31
33
|
from dodal.devices.robot import BartRobot
|
|
32
34
|
from dodal.devices.s4_slit_gaps import S4SlitGaps
|
|
35
|
+
from dodal.devices.scintillator import Scintillator
|
|
33
36
|
from dodal.devices.smargon import Smargon
|
|
34
37
|
from dodal.devices.synchrotron import Synchrotron
|
|
35
38
|
from dodal.devices.thawer import Thawer
|
|
@@ -357,3 +360,15 @@ def pin_tip_detection() -> PinTipDetection:
|
|
|
357
360
|
If this is called when already instantiated in i04, it will return the existing object.
|
|
358
361
|
"""
|
|
359
362
|
return PinTipDetection(f"{PREFIX.beamline_prefix}-DI-OAV-01:")
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
@device_factory()
|
|
366
|
+
def scintillator() -> Scintillator:
|
|
367
|
+
"""Get the i04 scintillator device, instantiate it if it hasn't already been.
|
|
368
|
+
If this is called when already instantiated in i04, it will return the existing object.
|
|
369
|
+
"""
|
|
370
|
+
return Scintillator(
|
|
371
|
+
f"{PREFIX.beamline_prefix}-MO-SCIN-01:",
|
|
372
|
+
Reference(aperture_scatterguard()),
|
|
373
|
+
get_beamline_parameters(),
|
|
374
|
+
)
|
|
@@ -4,6 +4,7 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
4
4
|
from dodal.common.beamlines.beamline_utils import (
|
|
5
5
|
set_beamline as set_utils_beamline,
|
|
6
6
|
)
|
|
7
|
+
from dodal.devices.i19.backlight import BacklightPosition
|
|
7
8
|
from dodal.devices.i19.beamstop import BeamStop
|
|
8
9
|
from dodal.devices.i19.blueapi_device import HutchState
|
|
9
10
|
from dodal.devices.i19.diffractometer import FourCircleDiffractometer
|
|
@@ -75,3 +76,11 @@ def synchrotron() -> Synchrotron:
|
|
|
75
76
|
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
76
77
|
"""
|
|
77
78
|
return Synchrotron()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@device_factory()
|
|
82
|
+
def backlight() -> BacklightPosition:
|
|
83
|
+
"""Get the i19-2 backlight device, instantiate it if it hasn't already been.
|
|
84
|
+
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
85
|
+
"""
|
|
86
|
+
return BacklightPosition(prefix=f"{PREFIX.beamline_prefix}-EA-IOC-12:")
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Functions relating to commissioning mode.
|
|
2
|
+
|
|
3
|
+
Commissioning Mode can be enabled for a production beamline when there is no
|
|
4
|
+
beam. The intent is that when it is enabled, bluesky plans may be run without beam
|
|
5
|
+
and plans and devices will as far as is possible behave normally.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import bluesky.plan_stubs as bps
|
|
9
|
+
from bluesky.utils import MsgGenerator
|
|
10
|
+
from ophyd_async.core import SignalR
|
|
11
|
+
|
|
12
|
+
_commissioning_signal: SignalR | None = None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def read_commissioning_mode() -> MsgGenerator[bool]:
|
|
16
|
+
"""Utility method for reading the commissioning mode state from the context
|
|
17
|
+
of a bluesky plan, where a baton may or may not be present, or
|
|
18
|
+
commissioning mode is provided by some other mechanism."""
|
|
19
|
+
if _commissioning_signal:
|
|
20
|
+
return (yield from bps.rd(_commissioning_signal))
|
|
21
|
+
else:
|
|
22
|
+
return False
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def set_commissioning_signal(signal: SignalR[bool] | None):
|
|
26
|
+
"""Commissioning mode is enabled by a PV which when set enables commissioning mode.
|
|
27
|
+
This allows beamline staff to ensure that commissioning mode is disabled prior
|
|
28
|
+
to production use, via their own 'good morning' startup scripts.
|
|
29
|
+
Args:
|
|
30
|
+
signal: The signal which will be read in order to determine whether
|
|
31
|
+
commissioning mode is enabled."""
|
|
32
|
+
global _commissioning_signal
|
|
33
|
+
_commissioning_signal = signal
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from typing import Annotated as A
|
|
2
2
|
|
|
3
3
|
from ophyd_async.core import (
|
|
4
|
+
SignalR,
|
|
4
5
|
SignalRW,
|
|
5
6
|
StandardReadable,
|
|
6
7
|
)
|
|
@@ -15,3 +16,6 @@ class Baton(StandardReadable, EpicsDevice):
|
|
|
15
16
|
current_user: A[
|
|
16
17
|
SignalRW[str], PvSuffix("CURRENT_USER"), Format.HINTED_UNCACHED_SIGNAL
|
|
17
18
|
]
|
|
19
|
+
commissioning: A[
|
|
20
|
+
SignalR[bool], PvSuffix("COMMISSIONING"), Format.HINTED_UNCACHED_SIGNAL
|
|
21
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from bluesky.protocols import Movable
|
|
2
|
+
from ophyd_async.core import AsyncStatus, StandardReadable
|
|
3
|
+
from ophyd_async.epics.core import epics_signal_rw
|
|
4
|
+
|
|
5
|
+
from dodal.common.enums import InOutUpper
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BacklightPosition(StandardReadable, Movable[InOutUpper]):
|
|
9
|
+
"""Device moves backlight to the IN or OUT position since controls side manages switching the light on/off"""
|
|
10
|
+
|
|
11
|
+
def __init__(self, prefix: str, name: str = "") -> None:
|
|
12
|
+
self.position = epics_signal_rw(InOutUpper, f"{prefix}AD1:choiceButton")
|
|
13
|
+
super().__init__(name)
|
|
14
|
+
|
|
15
|
+
@AsyncStatus.wrap
|
|
16
|
+
async def set(self, value: InOutUpper):
|
|
17
|
+
await self.position.set(value, wait=True)
|
|
@@ -5,6 +5,7 @@ from bluesky.protocols import Movable
|
|
|
5
5
|
from numpy import ndarray
|
|
6
6
|
from ophyd_async.core import (
|
|
7
7
|
AsyncStatus,
|
|
8
|
+
Reference,
|
|
8
9
|
StandardReadable,
|
|
9
10
|
StandardReadableFormat,
|
|
10
11
|
soft_signal_r_and_setter,
|
|
@@ -15,6 +16,7 @@ from ophyd_async.epics.motor import Motor
|
|
|
15
16
|
from dodal.common.enums import EnabledDisabledUpper
|
|
16
17
|
from dodal.log import LOGGER
|
|
17
18
|
|
|
19
|
+
from .baton import Baton
|
|
18
20
|
from .util.lookup_tables import energy_distance_table
|
|
19
21
|
|
|
20
22
|
|
|
@@ -22,11 +24,6 @@ class AccessError(Exception):
|
|
|
22
24
|
pass
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
# Enable to allow testing when the beamline is down, do not change in production!
|
|
26
|
-
TEST_MODE = False
|
|
27
|
-
# will be made more generic in https://github.com/DiamondLightSource/dodal/issues/754
|
|
28
|
-
|
|
29
|
-
|
|
30
27
|
# The acceptable difference, in mm, between the undulator gap and the DCM
|
|
31
28
|
# energy, when the latter is converted to mm using lookup tables
|
|
32
29
|
UNDULATOR_DISCREPANCY_THRESHOLD_MM = 2e-3
|
|
@@ -54,6 +51,7 @@ class Undulator(StandardReadable, Movable[float]):
|
|
|
54
51
|
name: str = "",
|
|
55
52
|
poles: int | None = None,
|
|
56
53
|
length: float | None = None,
|
|
54
|
+
baton: Baton | None = None,
|
|
57
55
|
) -> None:
|
|
58
56
|
"""Constructor
|
|
59
57
|
|
|
@@ -64,6 +62,7 @@ class Undulator(StandardReadable, Movable[float]):
|
|
|
64
62
|
name (str, optional): Name for device. Defaults to "".
|
|
65
63
|
"""
|
|
66
64
|
|
|
65
|
+
self.baton_ref = Reference(baton) if baton else None
|
|
67
66
|
self.id_gap_lookup_table_path = id_gap_lookup_table_path
|
|
68
67
|
with self.add_children_as_readables():
|
|
69
68
|
self.gap_motor = Motor(prefix + "BLGAPMTR")
|
|
@@ -105,7 +104,8 @@ class Undulator(StandardReadable, Movable[float]):
|
|
|
105
104
|
|
|
106
105
|
async def raise_if_not_enabled(self):
|
|
107
106
|
access_level = await self.gap_access.get_value()
|
|
108
|
-
|
|
107
|
+
commissioning_mode = await self._is_commissioning_mode_enabled()
|
|
108
|
+
if access_level is EnabledDisabledUpper.DISABLED and not commissioning_mode:
|
|
109
109
|
raise AccessError("Undulator gap access is disabled. Contact Control Room")
|
|
110
110
|
|
|
111
111
|
async def _set_undulator_gap(self, energy_kev: float) -> None:
|
|
@@ -124,21 +124,25 @@ class Undulator(StandardReadable, Movable[float]):
|
|
|
124
124
|
f"Undulator gap mismatch. {difference:.3f}mm is outside tolerance.\
|
|
125
125
|
Moving gap to nominal value, {target_gap:.3f}mm"
|
|
126
126
|
)
|
|
127
|
-
|
|
127
|
+
commissioning_mode = await self._is_commissioning_mode_enabled()
|
|
128
|
+
if not commissioning_mode:
|
|
128
129
|
# Only move if the gap is sufficiently different to the value from the
|
|
129
|
-
# DCM lookup table AND we're not in
|
|
130
|
+
# DCM lookup table AND we're not in commissioning mode
|
|
130
131
|
await self.gap_motor.set(
|
|
131
132
|
target_gap,
|
|
132
133
|
timeout=STATUS_TIMEOUT_S,
|
|
133
134
|
)
|
|
134
135
|
else:
|
|
135
|
-
LOGGER.
|
|
136
|
+
LOGGER.warning("In test mode, not moving ID gap")
|
|
136
137
|
else:
|
|
137
138
|
LOGGER.debug(
|
|
138
139
|
"Gap is already in the correct place for the new energy value "
|
|
139
140
|
f"{energy_kev}, no need to ask it to move"
|
|
140
141
|
)
|
|
141
142
|
|
|
143
|
+
async def _is_commissioning_mode_enabled(self):
|
|
144
|
+
return self.baton_ref and await self.baton_ref().commissioning.get_value()
|
|
145
|
+
|
|
142
146
|
async def _get_gap_to_match_energy(self, energy_kev: float) -> float:
|
|
143
147
|
"""
|
|
144
148
|
get a 2d np.array from lookup table that
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
from bluesky.protocols import Triggerable
|
|
2
|
-
from ophyd_async.core import AsyncStatus, Device, StrictEnum, observe_value
|
|
2
|
+
from ophyd_async.core import AsyncStatus, Device, Reference, StrictEnum, observe_value
|
|
3
3
|
from ophyd_async.epics.core import epics_signal_r, epics_signal_rw
|
|
4
4
|
|
|
5
5
|
from dodal.common.device_utils import periodic_reminder
|
|
6
|
+
from dodal.devices.baton import Baton
|
|
7
|
+
from dodal.log import LOGGER
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
class Pause(StrictEnum):
|
|
@@ -14,15 +16,19 @@ class XBPMFeedback(Device, Triggerable):
|
|
|
14
16
|
"""The XBPM feedback device is an IOC that moves the DCM, HFM and VFM to automatically
|
|
15
17
|
hold the beam into place, as measured by the XBPM sensor."""
|
|
16
18
|
|
|
17
|
-
def __init__(self, prefix: str, name: str = "") -> None:
|
|
19
|
+
def __init__(self, prefix: str, name: str = "", baton: Baton | None = None) -> None:
|
|
18
20
|
self.pos_ok = epics_signal_r(float, prefix + "XBPM2POSITION_OK")
|
|
19
21
|
self.pos_stable = epics_signal_r(float, prefix + "XBPM2_STABLE")
|
|
20
22
|
self.pause_feedback = epics_signal_rw(Pause, prefix + "FB_PAUSE")
|
|
23
|
+
self.baton_ref = Reference(baton) if baton else None
|
|
21
24
|
super().__init__(name=name)
|
|
22
25
|
|
|
23
26
|
@AsyncStatus.wrap
|
|
24
27
|
async def trigger(self):
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
if self.baton_ref and await self.baton_ref().commissioning.get_value():
|
|
29
|
+
LOGGER.warning("Commissioning mode enabled, ignoring feedback")
|
|
30
|
+
else:
|
|
31
|
+
async with periodic_reminder("Waiting for XBPM"):
|
|
32
|
+
async for value in observe_value(self.pos_stable):
|
|
33
|
+
if value:
|
|
34
|
+
return
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from bluesky import RunEngine
|
|
3
|
+
from bluesky.utils import MsgGenerator
|
|
4
|
+
from ophyd_async.testing import set_mock_value
|
|
5
|
+
|
|
6
|
+
from dodal.common.beamlines.commissioning_mode import read_commissioning_mode
|
|
7
|
+
from dodal.devices.baton import Baton
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.mark.parametrize("mode", [True, False])
|
|
11
|
+
def test_read_commissioning_mode_returns_signal_status_when_signal_registered(
|
|
12
|
+
RE: RunEngine, baton_in_commissioning_mode: Baton, mode: bool
|
|
13
|
+
):
|
|
14
|
+
actual_mode = False
|
|
15
|
+
|
|
16
|
+
def check_commissioning_mode() -> MsgGenerator:
|
|
17
|
+
nonlocal actual_mode
|
|
18
|
+
actual_mode = yield from read_commissioning_mode()
|
|
19
|
+
|
|
20
|
+
set_mock_value(baton_in_commissioning_mode.commissioning, mode)
|
|
21
|
+
RE(check_commissioning_mode())
|
|
22
|
+
assert actual_mode == mode
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_read_commissioning_mode_returns_false_when_no_signal_registered(
|
|
26
|
+
RE: RunEngine,
|
|
27
|
+
):
|
|
28
|
+
actual_mode = False
|
|
29
|
+
|
|
30
|
+
def check_commissioning_mode() -> MsgGenerator:
|
|
31
|
+
nonlocal actual_mode
|
|
32
|
+
actual_mode = yield from read_commissioning_mode()
|
|
33
|
+
|
|
34
|
+
RE(check_commissioning_mode())
|
|
35
|
+
assert not actual_mode
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import importlib
|
|
2
2
|
import os
|
|
3
|
+
from collections.abc import AsyncGenerator
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
from types import ModuleType
|
|
5
6
|
from unittest.mock import patch
|
|
6
7
|
|
|
7
8
|
import pytest
|
|
9
|
+
from ophyd_async.core import init_devices
|
|
10
|
+
from ophyd_async.testing import set_mock_value
|
|
8
11
|
|
|
9
12
|
from conftest import mock_attributes_table
|
|
10
13
|
from dodal.common.beamlines import beamline_parameters, beamline_utils
|
|
14
|
+
from dodal.common.beamlines.commissioning_mode import set_commissioning_signal
|
|
15
|
+
from dodal.devices.baton import Baton
|
|
11
16
|
from dodal.devices.detector import DetectorParams
|
|
12
17
|
from dodal.devices.detector.det_dim_constants import EIGER2_X_16M_SIZE
|
|
13
18
|
from dodal.utils import (
|
|
@@ -61,3 +66,13 @@ def eiger_params(tmp_path: Path) -> DetectorParams:
|
|
|
61
66
|
det_dist_to_beam_converter_path=TEST_LUT_TXT,
|
|
62
67
|
detector_size_constants=EIGER2_X_16M_SIZE.det_type_string, # type: ignore
|
|
63
68
|
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@pytest.fixture
|
|
72
|
+
async def baton_in_commissioning_mode() -> AsyncGenerator[Baton]:
|
|
73
|
+
async with init_devices(mock=True):
|
|
74
|
+
baton = Baton("BATON-01")
|
|
75
|
+
set_commissioning_signal(baton.commissioning)
|
|
76
|
+
set_mock_value(baton.commissioning, True)
|
|
77
|
+
yield baton
|
|
78
|
+
set_commissioning_signal(None)
|
|
@@ -7,6 +7,7 @@ from ophyd_async.core import AsyncStatus, init_devices
|
|
|
7
7
|
from ophyd_async.testing import get_mock_put, set_mock_value
|
|
8
8
|
|
|
9
9
|
from dodal.common.enums import EnabledDisabledUpper
|
|
10
|
+
from dodal.devices.baton import Baton
|
|
10
11
|
from dodal.devices.i03.dcm import DCM
|
|
11
12
|
from dodal.devices.i03.undulator_dcm import UndulatorDCM
|
|
12
13
|
from dodal.devices.undulator import AccessError, Undulator
|
|
@@ -36,12 +37,14 @@ def flush_event_loop_on_finish():
|
|
|
36
37
|
@pytest.fixture
|
|
37
38
|
async def fake_undulator_dcm() -> UndulatorDCM:
|
|
38
39
|
async with init_devices(mock=True):
|
|
40
|
+
baton = Baton("BATON-01:")
|
|
39
41
|
undulator = Undulator(
|
|
40
42
|
"UND-01",
|
|
41
43
|
name="undulator",
|
|
42
44
|
poles=80,
|
|
43
45
|
id_gap_lookup_table_path=TEST_BEAMLINE_UNDULATOR_TO_GAP_LUT,
|
|
44
46
|
length=2.0,
|
|
47
|
+
baton=baton,
|
|
45
48
|
)
|
|
46
49
|
dcm = DCM("DCM-01", name="dcm")
|
|
47
50
|
undulator_dcm = UndulatorDCM(
|
|
@@ -55,6 +58,12 @@ async def fake_undulator_dcm() -> UndulatorDCM:
|
|
|
55
58
|
return undulator_dcm
|
|
56
59
|
|
|
57
60
|
|
|
61
|
+
@pytest.fixture
|
|
62
|
+
def undulator_in_commissioning_mode(fake_undulator_dcm: UndulatorDCM):
|
|
63
|
+
set_mock_value(fake_undulator_dcm.undulator_ref().baton_ref().commissioning, True) # type: ignore
|
|
64
|
+
yield fake_undulator_dcm
|
|
65
|
+
|
|
66
|
+
|
|
58
67
|
def test_lookup_table_paths_passed(fake_undulator_dcm: UndulatorDCM):
|
|
59
68
|
assert (
|
|
60
69
|
fake_undulator_dcm.undulator_ref().id_gap_lookup_table_path
|
|
@@ -100,33 +109,41 @@ async def test_if_gap_is_wrong_then_logger_info_is_called_and_gap_is_set_correct
|
|
|
100
109
|
|
|
101
110
|
@patch("dodal.devices.util.lookup_tables.loadtxt")
|
|
102
111
|
@patch("dodal.devices.undulator.LOGGER")
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
112
|
+
async def test_when_gap_access_is_not_checked_if_commissioning_mode_enabled(
|
|
113
|
+
mock_logger: MagicMock,
|
|
114
|
+
mock_load: MagicMock,
|
|
115
|
+
undulator_in_commissioning_mode: UndulatorDCM,
|
|
106
116
|
):
|
|
107
117
|
set_mock_value(
|
|
108
|
-
|
|
118
|
+
undulator_in_commissioning_mode.undulator_ref().gap_access,
|
|
119
|
+
EnabledDisabledUpper.DISABLED,
|
|
120
|
+
)
|
|
121
|
+
set_mock_value(undulator_in_commissioning_mode.undulator_ref().current_gap, 5.3)
|
|
122
|
+
set_mock_value(
|
|
123
|
+
undulator_in_commissioning_mode.dcm_ref().energy_in_kev.user_readback, 5.7
|
|
109
124
|
)
|
|
110
|
-
set_mock_value(fake_undulator_dcm.undulator_ref().current_gap, 5.3)
|
|
111
|
-
set_mock_value(fake_undulator_dcm.dcm_ref().energy_in_kev.user_readback, 5.7)
|
|
112
125
|
|
|
113
|
-
set_mock_value(
|
|
114
|
-
|
|
126
|
+
set_mock_value(
|
|
127
|
+
undulator_in_commissioning_mode.undulator_ref().gap_motor.user_setpoint, 0.0
|
|
128
|
+
)
|
|
129
|
+
set_mock_value(
|
|
130
|
+
undulator_in_commissioning_mode.undulator_ref().gap_motor.user_readback, 0.0
|
|
131
|
+
)
|
|
115
132
|
|
|
116
133
|
mock_load.return_value = np.array([[5700, 5.4606], [7000, 6.045], [9700, 6.404]])
|
|
117
134
|
|
|
118
|
-
await
|
|
135
|
+
await undulator_in_commissioning_mode.set(6.9)
|
|
119
136
|
|
|
120
137
|
assert (
|
|
121
|
-
await
|
|
138
|
+
await undulator_in_commissioning_mode.dcm_ref().energy_in_kev.user_setpoint.get_value()
|
|
122
139
|
) == 6.9
|
|
123
140
|
# Verify undulator has not been asked to move
|
|
124
141
|
assert (
|
|
125
|
-
await
|
|
142
|
+
await undulator_in_commissioning_mode.undulator_ref().gap_motor.user_setpoint.get_value()
|
|
126
143
|
) == 0.0
|
|
127
144
|
|
|
128
145
|
mock_logger.info.assert_called()
|
|
129
|
-
mock_logger.
|
|
146
|
+
mock_logger.warning.assert_called_once()
|
|
130
147
|
|
|
131
148
|
|
|
132
149
|
@patch("dodal.devices.util.lookup_tables.loadtxt")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from ophyd_async.core import init_devices
|
|
3
|
+
|
|
4
|
+
from dodal.common.enums import InOutUpper
|
|
5
|
+
from dodal.devices.i19.backlight import BacklightPosition
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@pytest.fixture
|
|
9
|
+
async def fake_backlight():
|
|
10
|
+
async with init_devices(mock=True):
|
|
11
|
+
backlight = BacklightPosition("test", "backlight")
|
|
12
|
+
return backlight
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@pytest.mark.parametrize("position", [InOutUpper.IN, InOutUpper.OUT])
|
|
16
|
+
async def test_backlight_set_position(fake_backlight, position):
|
|
17
|
+
await fake_backlight.set(position)
|
|
18
|
+
assert await fake_backlight.position.get_value() == position
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
+
from collections.abc import Generator
|
|
2
|
+
from unittest.mock import AsyncMock, patch
|
|
3
|
+
|
|
1
4
|
import numpy as np
|
|
2
5
|
import pytest
|
|
3
6
|
from ophyd_async.core import init_devices
|
|
4
7
|
from ophyd_async.testing import (
|
|
5
8
|
assert_configuration,
|
|
6
9
|
assert_reading,
|
|
10
|
+
get_mock_put,
|
|
7
11
|
partial_reading,
|
|
8
12
|
set_mock_value,
|
|
9
13
|
)
|
|
10
14
|
|
|
11
15
|
from dodal.common.enums import EnabledDisabledUpper
|
|
16
|
+
from dodal.devices.baton import Baton
|
|
12
17
|
from dodal.devices.undulator import (
|
|
13
18
|
AccessError,
|
|
14
19
|
Undulator,
|
|
15
20
|
_get_gap_for_energy,
|
|
16
21
|
)
|
|
22
|
+
from dodal.testing import patch_all_motors
|
|
17
23
|
from tests.devices.test_data import (
|
|
18
24
|
TEST_BEAMLINE_UNDULATOR_TO_GAP_LUT,
|
|
19
25
|
)
|
|
@@ -22,16 +28,26 @@ from tests.devices.test_data import (
|
|
|
22
28
|
@pytest.fixture
|
|
23
29
|
async def undulator() -> Undulator:
|
|
24
30
|
async with init_devices(mock=True):
|
|
31
|
+
baton = Baton("BATON-01")
|
|
25
32
|
undulator = Undulator(
|
|
26
33
|
"UND-01",
|
|
27
34
|
name="undulator",
|
|
28
35
|
poles=80,
|
|
29
36
|
length=2.0,
|
|
30
37
|
id_gap_lookup_table_path=TEST_BEAMLINE_UNDULATOR_TO_GAP_LUT,
|
|
38
|
+
baton=baton,
|
|
31
39
|
)
|
|
32
40
|
return undulator
|
|
33
41
|
|
|
34
42
|
|
|
43
|
+
@pytest.fixture
|
|
44
|
+
def undulator_in_commissioning_mode(
|
|
45
|
+
undulator: Undulator,
|
|
46
|
+
) -> Generator[Undulator, None, None]:
|
|
47
|
+
set_mock_value(undulator.baton_ref().commissioning, True) # type: ignore
|
|
48
|
+
yield undulator
|
|
49
|
+
|
|
50
|
+
|
|
35
51
|
async def test_reading_includes_read_fields(undulator: Undulator):
|
|
36
52
|
await assert_reading(
|
|
37
53
|
undulator,
|
|
@@ -98,3 +114,36 @@ async def test_when_gap_access_is_disabled_set_then_error_is_raised(
|
|
|
98
114
|
set_mock_value(undulator.gap_access, EnabledDisabledUpper.DISABLED)
|
|
99
115
|
with pytest.raises(AccessError):
|
|
100
116
|
await undulator.set(5)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@patch(
|
|
120
|
+
"dodal.devices.undulator.energy_distance_table",
|
|
121
|
+
AsyncMock(return_value=np.array([[0, 10], [10, 20]])),
|
|
122
|
+
)
|
|
123
|
+
async def test_gap_access_check_disabled_and_move_inhibited_when_commissioning_mode_enabled(
|
|
124
|
+
undulator_in_commissioning_mode: Undulator,
|
|
125
|
+
):
|
|
126
|
+
set_mock_value(
|
|
127
|
+
undulator_in_commissioning_mode.gap_access, EnabledDisabledUpper.DISABLED
|
|
128
|
+
)
|
|
129
|
+
await undulator_in_commissioning_mode.set(5)
|
|
130
|
+
|
|
131
|
+
get_mock_put(
|
|
132
|
+
undulator_in_commissioning_mode.gap_motor.user_setpoint
|
|
133
|
+
).assert_not_called()
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@patch(
|
|
137
|
+
"dodal.devices.undulator.energy_distance_table",
|
|
138
|
+
AsyncMock(return_value=np.array([[0, 10], [10000, 20]])),
|
|
139
|
+
)
|
|
140
|
+
async def test_gap_access_check_move_not_inhibited_when_commissioning_mode_disabled(
|
|
141
|
+
undulator: Undulator,
|
|
142
|
+
):
|
|
143
|
+
with patch_all_motors(undulator):
|
|
144
|
+
set_mock_value(undulator.gap_access, EnabledDisabledUpper.ENABLED)
|
|
145
|
+
await undulator.set(5)
|
|
146
|
+
|
|
147
|
+
get_mock_put(undulator.gap_motor.user_setpoint).assert_called_once_with(
|
|
148
|
+
15.0, wait=True
|
|
149
|
+
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
from collections.abc import Generator
|
|
2
3
|
from unittest.mock import AsyncMock, patch
|
|
3
4
|
|
|
4
5
|
import pytest
|
|
@@ -7,16 +8,26 @@ from bluesky.run_engine import RunEngine
|
|
|
7
8
|
from ophyd_async.core import init_devices
|
|
8
9
|
from ophyd_async.testing import set_mock_value
|
|
9
10
|
|
|
11
|
+
from dodal.devices.baton import Baton
|
|
10
12
|
from dodal.devices.xbpm_feedback import XBPMFeedback
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
@pytest.fixture
|
|
14
16
|
async def fake_xbpm_feedback() -> XBPMFeedback:
|
|
15
17
|
async with init_devices(mock=True):
|
|
16
|
-
|
|
18
|
+
baton = Baton("BATON-01:")
|
|
19
|
+
xbpm_feedback = XBPMFeedback("", baton=baton)
|
|
17
20
|
return xbpm_feedback
|
|
18
21
|
|
|
19
22
|
|
|
23
|
+
@pytest.fixture
|
|
24
|
+
def xbpm_feedback_in_commissioning_mode(
|
|
25
|
+
fake_xbpm_feedback,
|
|
26
|
+
) -> Generator[XBPMFeedback, None, None]:
|
|
27
|
+
set_mock_value(fake_xbpm_feedback.baton_ref().commissioning, True) # type: ignore
|
|
28
|
+
yield fake_xbpm_feedback
|
|
29
|
+
|
|
30
|
+
|
|
20
31
|
def test_given_pos_stable_when_xbpm_feedback_kickoff_then_return_immediately(
|
|
21
32
|
RE: RunEngine,
|
|
22
33
|
fake_xbpm_feedback: XBPMFeedback,
|
|
@@ -84,3 +95,17 @@ def test_logging_while_waiting_for_XBPM(
|
|
|
84
95
|
record.getMessage() == "Waiting for XBPM" for record in caplog.records
|
|
85
96
|
)
|
|
86
97
|
assert log_messages == expected_log_messages
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@patch("dodal.devices.xbpm_feedback.observe_value")
|
|
101
|
+
@patch("dodal.devices.xbpm_feedback.periodic_reminder")
|
|
102
|
+
def test_xbpm_feedback_does_not_wait_if_commissioning_mode_enabled(
|
|
103
|
+
mock_periodic_reminder: AsyncMock,
|
|
104
|
+
mock_observe_value: AsyncMock,
|
|
105
|
+
xbpm_feedback_in_commissioning_mode: XBPMFeedback,
|
|
106
|
+
RE: RunEngine,
|
|
107
|
+
):
|
|
108
|
+
set_mock_value(xbpm_feedback_in_commissioning_mode.pos_stable, False)
|
|
109
|
+
RE(bps.trigger(xbpm_feedback_in_commissioning_mode, wait=True))
|
|
110
|
+
mock_periodic_reminder.assert_not_called()
|
|
111
|
+
mock_observe_value.assert_not_called()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|