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