dls-dodal 1.41.0__tar.gz → 1.43.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.41.0 → dls_dodal-1.43.0}/PKG-INFO +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/create-beamline.rst +44 -32
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/pyproject.toml +5 -4
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/SOURCES.txt +11 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/requires.txt +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/_version.py +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/__init__.py +1 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/adsim.py +1 -1
- dls_dodal-1.43.0/src/dodal/beamlines/aithre.py +9 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i04.py +1 -1
- dls_dodal-1.43.0/src/dodal/beamlines/i19_optics.py +34 -0
- dls_dodal-1.43.0/src/dodal/beamlines/p45.py +78 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/training_rig.py +5 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/beamlines/beamline_utils.py +6 -9
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/visit.py +42 -2
- dls_dodal-1.43.0/src/dodal/devices/aithre_lasershaping/goniometer.py +15 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/detector.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/eiger.py +2 -2
- dls_dodal-1.43.0/src/dodal/devices/i19/hutch_access.py +8 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +4 -3
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/p45.py +8 -8
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plan_stubs/data_session.py +17 -9
- dls_dodal-1.43.0/src/dodal/plans/preprocessors/verify_undulator_gap.py +49 -0
- dls_dodal-1.43.0/src/dodal/plans/verify_undulator_gap.py +19 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_eiger_system.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_undulator_system.py +2 -5
- dls_dodal-1.43.0/tests/common/test_visit.py +242 -0
- dls_dodal-1.43.0/tests/constants.py +3 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/detector/test_det_resolution.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/detector/test_detector.py +6 -6
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_eiger.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_undulator.py +4 -7
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_undulator_dcm.py +3 -6
- dls_dodal-1.43.0/tests/plan_stubs/test_data_session.py +21 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plan_stubs/test_motor_util_plans.py +7 -11
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plans/conftest.py +21 -0
- dls_dodal-1.43.0/tests/plans/test_preprocessors/test_verify_undulator_gap.py +79 -0
- dls_dodal-1.43.0/tests/plans/test_verify_undulator_gap_plan.py +17 -0
- dls_dodal-1.43.0/tests/unit_tests/__init__.py +0 -0
- dls_dodal-1.41.0/src/dodal/beamlines/p45.py +0 -117
- dls_dodal-1.41.0/tests/common/test_visit.py +0 -32
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_check.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.gitignore +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/Dockerfile +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/LICENSE +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/README.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/conf.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/explanations.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/genindex.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/how-to.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/index.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/reference/standards.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/reference.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/pull_request_template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/setup.cfg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i18.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i19_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i19_2.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/i24.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/signal_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/CTAB.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/adsim.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/aperturescatterguard.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/apple2_undulator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/bimorph_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/focusing_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i03/beamstop.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i13_1/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i13_1/merlin_io.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i18/KBMirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i18/diode.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i18/table.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i19/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i19/shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i22/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/pmac.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/oav_detector.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/robot.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/smargon.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/thawer.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/training_rig/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/undulator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/undulator_dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/epics_util.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/motor_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/util/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/xbpm_feedback.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zebra/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zebra/zebra.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.41.0/system_tests → dls_dodal-1.43.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.41.0/tests → dls_dodal-1.43.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_adsim.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_aperturescatterguard_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_gridscan_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_oav_to_redis_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_slit_gaps_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_smargon_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_synchrotron_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_zebra_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/system_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.41.0/tests/beamlines → dls_dodal-1.43.0/tests}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/beamlines/unit_tests → dls_dodal-1.43.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/common → dls_dodal-1.43.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.41.0/tests/common/beamlines → dls_dodal-1.43.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/devices → dls_dodal-1.43.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/conftest.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i03 → dls_dodal-1.43.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i04 → dls_dodal-1.43.0/tests/devices/i03}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i03/test_beamstop.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i19 → dls_dodal-1.43.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i10/test_i10Apple2.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i18/test_table.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests → dls_dodal-1.43.0/tests/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i19/test_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i22/test_dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests/i24 → dls_dodal-1.43.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests/oav → dls_dodal-1.43.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests/util → dls_dodal-1.43.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_smargon.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_thawer.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_webcam.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_zebra.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.41.0/tests/fake_zocalo → dls_dodal-1.43.0/tests/devices/unit_tests/util}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.41.0/tests/unit_tests → dls_dodal-1.43.0/tests/fake_zocalo}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plan_stubs/test_topup_plan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.43.0}/tests/unit_tests/test_log.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.43.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
|
|
@@ -246,7 +246,7 @@ Requires-Dist: pipdeptree; extra == "dev"
|
|
|
246
246
|
Requires-Dist: pre-commit; extra == "dev"
|
|
247
247
|
Requires-Dist: psutil; extra == "dev"
|
|
248
248
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
249
|
-
Requires-Dist: pyright
|
|
249
|
+
Requires-Dist: pyright; extra == "dev"
|
|
250
250
|
Requires-Dist: pytest; extra == "dev"
|
|
251
251
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
252
252
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -7,7 +7,7 @@ They include motors in the experiment hutch, optical components in the optics hu
|
|
|
7
7
|
Beamline Modules
|
|
8
8
|
----------------
|
|
9
9
|
|
|
10
|
-
Each beamline should have its own file in the ``
|
|
10
|
+
Each beamline should have its own file in the ``dodal.beamlines`` folder, in which the particular devices for the
|
|
11
11
|
beamline are instantiated. The file should be named after the colloquial name for the beamline. For example:
|
|
12
12
|
|
|
13
13
|
* ``i03.py``
|
|
@@ -25,55 +25,67 @@ The following example creates a fictitious beamline ``w41``, with a simulated tw
|
|
|
25
25
|
|
|
26
26
|
.. code-block:: python
|
|
27
27
|
|
|
28
|
-
from
|
|
28
|
+
from ophyd_async.epics.adaravis import AravisDetector
|
|
29
|
+
|
|
30
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
31
|
+
device_factory,
|
|
32
|
+
get_path_provider,
|
|
33
|
+
set_path_provider,
|
|
34
|
+
)
|
|
29
35
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
30
|
-
from dodal.
|
|
36
|
+
from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
|
|
37
|
+
from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
|
|
31
38
|
from dodal.devices.synchrotron import Synchrotron
|
|
32
39
|
from dodal.log import set_beamline as set_log_beamline
|
|
33
|
-
from dodal.utils import
|
|
40
|
+
from dodal.utils import BeamlinePrefix
|
|
34
41
|
|
|
35
42
|
BL = get_beamline_name("s41") # Default used when not on a live beamline
|
|
43
|
+
PREFIX = BeamlinePrefix(BL)
|
|
36
44
|
set_log_beamline(BL) # Configure logging and util functions
|
|
37
45
|
set_utils_beamline(BL)
|
|
38
46
|
|
|
47
|
+
# Currently we must hard-code the visit, determining the visit is WIP.
|
|
48
|
+
set_path_provider(
|
|
49
|
+
StaticVisitPathProvider(
|
|
50
|
+
BL,
|
|
51
|
+
# Root directory for all detectors
|
|
52
|
+
Path("/dls/w41/data/YYYY/cm12345-1"),
|
|
53
|
+
# Uses an existing GDA server to ensure filename uniqueness
|
|
54
|
+
client=RemoteDirectoryServiceClient("http://s41-control:8088/api"),
|
|
55
|
+
# Else if no GDA server use a LocalDirectoryServiceClient(),
|
|
56
|
+
)
|
|
57
|
+
)
|
|
39
58
|
|
|
40
59
|
"""
|
|
41
60
|
Define device factory functions below this point.
|
|
42
|
-
A device factory function is any function that has a return type which conforms
|
|
61
|
+
A device factory function is any function that has a return type which conforms
|
|
43
62
|
to one or more Bluesky Protocols.
|
|
44
63
|
"""
|
|
45
64
|
|
|
46
|
-
|
|
47
65
|
"""
|
|
48
|
-
A valid factory function which
|
|
49
|
-
- instantiated
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
66
|
+
A valid factory function which:
|
|
67
|
+
- may be instantiated automatically, selectively on live beamline
|
|
68
|
+
- caches and re-uses the result for subsequent calls
|
|
69
|
+
- automatically names the device
|
|
70
|
+
- may be skipped when make_all_devices is called on this module
|
|
71
|
+
- must be explicitly connected (may be automated by tools)
|
|
72
|
+
- when connected may connect to a simulated backend
|
|
73
|
+
- may be connected concurrently (when automated by tools)
|
|
54
74
|
""""
|
|
55
|
-
@
|
|
56
|
-
def synchrotron(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
fake_with_ophyd_sim,
|
|
68
|
-
bl_prefix=False,
|
|
75
|
+
@device_factory(skip = BL == "s41")
|
|
76
|
+
def synchrotron() -> Synchrotron:
|
|
77
|
+
return Synchrotron()
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@device_factory()
|
|
81
|
+
def d11() -> AravisDetector:
|
|
82
|
+
return AravisDetector(
|
|
83
|
+
f"{PREFIX.beamline_prefix}-DI-DCAM-01:",
|
|
84
|
+
path_provider=get_path_provider(),
|
|
85
|
+
drv_suffix=CAM_SUFFIX,
|
|
86
|
+
fileio_suffix=HDF5_SUFFIX,
|
|
69
87
|
)
|
|
70
88
|
|
|
71
|
-
def d11(name: str = "D11") -> AdAravisDetector:
|
|
72
|
-
"""
|
|
73
|
-
Also a valid Device factory function, but as multiple calls would instantiate
|
|
74
|
-
multiple copies of a device, discouraged.
|
|
75
|
-
"""
|
|
76
|
-
return AdAravisDetector(name=name, prefix=f"{BL}-DI-DCAM-01:")
|
|
77
89
|
|
|
78
90
|
``w41`` should also be added to the list of ``ALL_BEAMLINES`` in ``tests/beamlines/test_device_instantiation``.
|
|
79
91
|
This test checks that the function returns a type that conforms to Bluesky protocols,
|
|
@@ -55,7 +55,7 @@ dev = [
|
|
|
55
55
|
"pre-commit",
|
|
56
56
|
"psutil",
|
|
57
57
|
"pydata-sphinx-theme>=0.12",
|
|
58
|
-
"pyright
|
|
58
|
+
"pyright",
|
|
59
59
|
"pytest",
|
|
60
60
|
"pytest-asyncio",
|
|
61
61
|
"pytest-cov",
|
|
@@ -178,14 +178,15 @@ lint.select = [
|
|
|
178
178
|
"I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
|
|
179
179
|
"UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
|
|
180
180
|
"SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
|
|
181
|
+
"RUF018" # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
|
|
181
182
|
]
|
|
182
183
|
|
|
183
184
|
[tool.ruff.lint.per-file-ignores]
|
|
184
185
|
# By default, private member access is allowed in tests
|
|
185
186
|
# See https://github.com/DiamondLightSource/python-copier-template/issues/154
|
|
186
|
-
# Remove this line to forbid private member access in tests
|
|
187
|
-
"tests/**/*" = ["SLF001"]
|
|
188
|
-
"system_tests/**/*" = ["SLF001"]
|
|
187
|
+
# Remove this line to forbid private member access and walrus operators in asserts in tests
|
|
188
|
+
"tests/**/*" = ["SLF001", "RUF018"]
|
|
189
|
+
"system_tests/**/*" = ["SLF001", "RUF018"]
|
|
189
190
|
|
|
190
191
|
[tool.importlinter]
|
|
191
192
|
root_package = "dodal"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.43.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
|
|
@@ -246,7 +246,7 @@ Requires-Dist: pipdeptree; extra == "dev"
|
|
|
246
246
|
Requires-Dist: pre-commit; extra == "dev"
|
|
247
247
|
Requires-Dist: psutil; extra == "dev"
|
|
248
248
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
249
|
-
Requires-Dist: pyright
|
|
249
|
+
Requires-Dist: pyright; extra == "dev"
|
|
250
250
|
Requires-Dist: pytest; extra == "dev"
|
|
251
251
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
252
252
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -90,6 +90,7 @@ src/dodal/beamline_specific_utils/i03.py
|
|
|
90
90
|
src/dodal/beamlines/README.md
|
|
91
91
|
src/dodal/beamlines/__init__.py
|
|
92
92
|
src/dodal/beamlines/adsim.py
|
|
93
|
+
src/dodal/beamlines/aithre.py
|
|
93
94
|
src/dodal/beamlines/b01_1.py
|
|
94
95
|
src/dodal/beamlines/i02_1.py
|
|
95
96
|
src/dodal/beamlines/i03.py
|
|
@@ -99,6 +100,7 @@ src/dodal/beamlines/i13_1.py
|
|
|
99
100
|
src/dodal/beamlines/i18.py
|
|
100
101
|
src/dodal/beamlines/i19_1.py
|
|
101
102
|
src/dodal/beamlines/i19_2.py
|
|
103
|
+
src/dodal/beamlines/i19_optics.py
|
|
102
104
|
src/dodal/beamlines/i20_1.py
|
|
103
105
|
src/dodal/beamlines/i22.py
|
|
104
106
|
src/dodal/beamlines/i23.py
|
|
@@ -161,6 +163,7 @@ src/dodal/devices/undulator_dcm.py
|
|
|
161
163
|
src/dodal/devices/watsonmarlow323_pump.py
|
|
162
164
|
src/dodal/devices/webcam.py
|
|
163
165
|
src/dodal/devices/xbpm_feedback.py
|
|
166
|
+
src/dodal/devices/aithre_lasershaping/goniometer.py
|
|
164
167
|
src/dodal/devices/areadetector/plugins/CAM.py
|
|
165
168
|
src/dodal/devices/areadetector/plugins/MJPG.py
|
|
166
169
|
src/dodal/devices/attenuator/attenuator.py
|
|
@@ -197,6 +200,7 @@ src/dodal/devices/i18/diode.py
|
|
|
197
200
|
src/dodal/devices/i18/table.py
|
|
198
201
|
src/dodal/devices/i18/thor_labs_stage.py
|
|
199
202
|
src/dodal/devices/i19/__init__.py
|
|
203
|
+
src/dodal/devices/i19/hutch_access.py
|
|
200
204
|
src/dodal/devices/i19/shutter.py
|
|
201
205
|
src/dodal/devices/i20_1/__init__.py
|
|
202
206
|
src/dodal/devices/i22/dcm.py
|
|
@@ -255,7 +259,10 @@ src/dodal/plan_stubs/wrapped.py
|
|
|
255
259
|
src/dodal/plans/__init__.py
|
|
256
260
|
src/dodal/plans/save_panda.py
|
|
257
261
|
src/dodal/plans/scanspec.py
|
|
262
|
+
src/dodal/plans/verify_undulator_gap.py
|
|
258
263
|
src/dodal/plans/wrapped.py
|
|
264
|
+
src/dodal/plans/preprocessors/__init__.py
|
|
265
|
+
src/dodal/plans/preprocessors/verify_undulator_gap.py
|
|
259
266
|
system_tests/__init__.py
|
|
260
267
|
system_tests/test_adsim.py
|
|
261
268
|
system_tests/test_aperturescatterguard_system.py
|
|
@@ -272,6 +279,7 @@ system_tests/test_zebra_system.py
|
|
|
272
279
|
system_tests/test_zocalo_results.py
|
|
273
280
|
tests/__init__.py
|
|
274
281
|
tests/conftest.py
|
|
282
|
+
tests/constants.py
|
|
275
283
|
tests/fake_beamline.py
|
|
276
284
|
tests/fake_beamline_all_devices_raise_exception.py
|
|
277
285
|
tests/fake_beamline_broken_dependency.py
|
|
@@ -397,13 +405,16 @@ tests/fake_zocalo/README.rst
|
|
|
397
405
|
tests/fake_zocalo/__init__.py
|
|
398
406
|
tests/fake_zocalo/__main__.py
|
|
399
407
|
tests/fake_zocalo/dls_start_fake_zocalo.sh
|
|
408
|
+
tests/plan_stubs/test_data_session.py
|
|
400
409
|
tests/plan_stubs/test_motor_util_plans.py
|
|
401
410
|
tests/plan_stubs/test_topup_plan.py
|
|
402
411
|
tests/plan_stubs/test_wrapped_stubs.py
|
|
403
412
|
tests/plans/conftest.py
|
|
404
413
|
tests/plans/test_compliance.py
|
|
405
414
|
tests/plans/test_scanspec.py
|
|
415
|
+
tests/plans/test_verify_undulator_gap_plan.py
|
|
406
416
|
tests/plans/test_wrapped.py
|
|
417
|
+
tests/plans/test_preprocessors/test_verify_undulator_gap.py
|
|
407
418
|
tests/preprocessors/test_filesystem_metadata.py
|
|
408
419
|
tests/test_data/bad_beamlineParameters
|
|
409
420
|
tests/test_data/i04_beamlineParameters
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import device_factory
|
|
2
|
+
from dodal.devices.aithre_lasershaping.goniometer import Goniometer
|
|
3
|
+
|
|
4
|
+
PREFIX = "LA18L"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@device_factory()
|
|
8
|
+
def goniometer() -> Goniometer:
|
|
9
|
+
return Goniometer(f"{PREFIX}-MO-LSR-01:", "goniometer")
|
|
@@ -46,7 +46,7 @@ ZOOM_PARAMS_FILE = (
|
|
|
46
46
|
DISPLAY_CONFIG = "/dls_sw/i04/software/gda_versions/var/display.configuration"
|
|
47
47
|
DAQ_CONFIGURATION_PATH = "/dls_sw/i04/software/daq_configuration"
|
|
48
48
|
|
|
49
|
-
REDIS_HOST =
|
|
49
|
+
REDIS_HOST = "i04-valkey-murko.diamond.ac.uk"
|
|
50
50
|
REDIS_PASSWORD = os.environ.get("VALKEY_PASSWORD", "test_redis_password")
|
|
51
51
|
MURKO_REDIS_DB = 7
|
|
52
52
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
2
|
+
device_factory,
|
|
3
|
+
)
|
|
4
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
5
|
+
set_beamline as set_utils_beamline,
|
|
6
|
+
)
|
|
7
|
+
from dodal.devices.hutch_shutter import HutchShutter
|
|
8
|
+
from dodal.devices.i19.hutch_access import HutchAccessControl
|
|
9
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
10
|
+
from dodal.utils import BeamlinePrefix
|
|
11
|
+
|
|
12
|
+
BL = "i19-optics"
|
|
13
|
+
PREFIX = BeamlinePrefix("i19", "I")
|
|
14
|
+
set_log_beamline(BL)
|
|
15
|
+
set_utils_beamline(BL)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@device_factory()
|
|
19
|
+
def shutter() -> HutchShutter:
|
|
20
|
+
"""Get the i19 hutch shutter device, instantiate it if it hasn't already been.
|
|
21
|
+
If this is called when already instantiated, it will return the existing object.
|
|
22
|
+
"""
|
|
23
|
+
return HutchShutter(
|
|
24
|
+
f"{PREFIX.beamline_prefix}-PS-SHTR-01:",
|
|
25
|
+
"shutter",
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@device_factory()
|
|
30
|
+
def access_control() -> HutchAccessControl:
|
|
31
|
+
"""Get a device that checks the active hutch for i19, instantiate it if it hasn't already been.
|
|
32
|
+
If this is called when already instantiated, it will return the existing object.
|
|
33
|
+
"""
|
|
34
|
+
return HutchAccessControl(f"{PREFIX.beamline_prefix}-OP-STAT-01:", "access_control")
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from ophyd_async.epics.adaravis import AravisDetector
|
|
4
|
+
from ophyd_async.fastcs.panda import HDFPanda
|
|
5
|
+
|
|
6
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
7
|
+
device_factory,
|
|
8
|
+
get_path_provider,
|
|
9
|
+
set_path_provider,
|
|
10
|
+
)
|
|
11
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
12
|
+
from dodal.common.beamlines.device_helpers import DET_SUFFIX, HDF5_SUFFIX
|
|
13
|
+
from dodal.common.visit import StaticVisitPathProvider
|
|
14
|
+
from dodal.devices.p45 import Choppers, TomoStageWithStretchAndSkew
|
|
15
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
16
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
17
|
+
|
|
18
|
+
BL = get_beamline_name("p45")
|
|
19
|
+
PREFIX = BeamlinePrefix(BL)
|
|
20
|
+
set_log_beamline(BL)
|
|
21
|
+
set_utils_beamline(BL)
|
|
22
|
+
|
|
23
|
+
set_path_provider(
|
|
24
|
+
StaticVisitPathProvider(
|
|
25
|
+
BL,
|
|
26
|
+
Path("/data/2024/cm37283-2/"), # latest commissioning visit
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@device_factory()
|
|
32
|
+
def sample() -> TomoStageWithStretchAndSkew:
|
|
33
|
+
return TomoStageWithStretchAndSkew(f"{PREFIX.beamline_prefix}-MO-STAGE-01:")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@device_factory()
|
|
37
|
+
def choppers() -> Choppers:
|
|
38
|
+
return Choppers(f"{PREFIX.beamline_prefix}-MO-CHOP-01:")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Disconnected
|
|
42
|
+
@device_factory(skip=True)
|
|
43
|
+
def det() -> AravisDetector:
|
|
44
|
+
return AravisDetector(
|
|
45
|
+
f"{PREFIX.beamline_prefix}-EA-MAP-01:",
|
|
46
|
+
path_provider=get_path_provider(),
|
|
47
|
+
drv_suffix=DET_SUFFIX,
|
|
48
|
+
fileio_suffix=HDF5_SUFFIX,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# Disconnected
|
|
53
|
+
@device_factory(skip=True)
|
|
54
|
+
def diff() -> AravisDetector:
|
|
55
|
+
return AravisDetector(
|
|
56
|
+
f"{PREFIX.beamline_prefix}-EA-DIFF-01:",
|
|
57
|
+
path_provider=get_path_provider(),
|
|
58
|
+
drv_suffix=DET_SUFFIX,
|
|
59
|
+
fileio_suffix=HDF5_SUFFIX,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# Must document what PandAs are physically connected to
|
|
64
|
+
# See: https://github.com/bluesky/ophyd-async/issues/284
|
|
65
|
+
@device_factory(skip=True)
|
|
66
|
+
def panda1() -> HDFPanda:
|
|
67
|
+
return HDFPanda(
|
|
68
|
+
f"{PREFIX.beamline_prefix}-MO-PANDA-01:",
|
|
69
|
+
path_provider=get_path_provider(),
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@device_factory(skip=True)
|
|
74
|
+
def panda2() -> HDFPanda:
|
|
75
|
+
return HDFPanda(
|
|
76
|
+
f"{PREFIX.beamline_prefix}-MO-PANDA-02:",
|
|
77
|
+
path_provider=get_path_provider(),
|
|
78
|
+
)
|
|
@@ -10,7 +10,10 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
10
10
|
)
|
|
11
11
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
12
12
|
from dodal.common.beamlines.device_helpers import DET_SUFFIX, HDF5_SUFFIX
|
|
13
|
-
from dodal.common.visit import
|
|
13
|
+
from dodal.common.visit import (
|
|
14
|
+
LocalDirectoryServiceClient,
|
|
15
|
+
StaticVisitPathProvider,
|
|
16
|
+
)
|
|
14
17
|
from dodal.devices.training_rig.sample_stage import TrainingRigSampleStage
|
|
15
18
|
from dodal.log import set_beamline as set_log_beamline
|
|
16
19
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
@@ -31,6 +34,7 @@ PREFIX = BeamlinePrefix(BL)
|
|
|
31
34
|
set_log_beamline(BL)
|
|
32
35
|
set_utils_beamline(BL)
|
|
33
36
|
|
|
37
|
+
|
|
34
38
|
set_path_provider(
|
|
35
39
|
StaticVisitPathProvider(
|
|
36
40
|
BL,
|
|
@@ -5,11 +5,13 @@ from typing import Annotated, Final, TypeVar, cast
|
|
|
5
5
|
from bluesky.run_engine import call_in_bluesky_event_loop
|
|
6
6
|
from ophyd import Device as OphydV1Device
|
|
7
7
|
from ophyd.sim import make_fake_device
|
|
8
|
-
from ophyd_async.core import
|
|
8
|
+
from ophyd_async.core import (
|
|
9
|
+
DEFAULT_TIMEOUT,
|
|
10
|
+
PathProvider,
|
|
11
|
+
)
|
|
9
12
|
from ophyd_async.core import Device as OphydV2Device
|
|
10
13
|
from ophyd_async.core import wait_for_connection as v2_device_wait_for_connection
|
|
11
14
|
|
|
12
|
-
from dodal.common.types import UpdatingPathProvider
|
|
13
15
|
from dodal.utils import (
|
|
14
16
|
AnyDevice,
|
|
15
17
|
BeamlinePrefix,
|
|
@@ -22,7 +24,6 @@ DEFAULT_CONNECTION_TIMEOUT: Final[float] = 5.0
|
|
|
22
24
|
|
|
23
25
|
ACTIVE_DEVICES: dict[str, AnyDevice] = {}
|
|
24
26
|
BL = ""
|
|
25
|
-
PATH_PROVIDER: UpdatingPathProvider | None = None
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
def set_beamline(beamline: str):
|
|
@@ -153,15 +154,11 @@ def device_factory(
|
|
|
153
154
|
return decorator
|
|
154
155
|
|
|
155
156
|
|
|
156
|
-
def set_path_provider(provider:
|
|
157
|
+
def set_path_provider(provider: PathProvider):
|
|
157
158
|
global PATH_PROVIDER
|
|
158
159
|
|
|
159
160
|
PATH_PROVIDER = provider
|
|
160
161
|
|
|
161
162
|
|
|
162
|
-
def get_path_provider() ->
|
|
163
|
-
if PATH_PROVIDER is None:
|
|
164
|
-
raise ValueError(
|
|
165
|
-
"PathProvider has not been set! Ophyd-async StandardDetectors will not be able to write!"
|
|
166
|
-
)
|
|
163
|
+
def get_path_provider() -> PathProvider:
|
|
167
164
|
return PATH_PROVIDER
|
|
@@ -3,7 +3,8 @@ from pathlib import Path
|
|
|
3
3
|
from typing import Literal
|
|
4
4
|
|
|
5
5
|
from aiohttp import ClientSession
|
|
6
|
-
from
|
|
6
|
+
from event_model import RunStart
|
|
7
|
+
from ophyd_async.core import FilenameProvider, PathInfo, PathProvider
|
|
7
8
|
from pydantic import BaseModel
|
|
8
9
|
|
|
9
10
|
from dodal.common.types import UpdatingPathProvider
|
|
@@ -78,7 +79,7 @@ class RemoteDirectoryServiceClient(DirectoryServiceClient):
|
|
|
78
79
|
):
|
|
79
80
|
response.raise_for_status()
|
|
80
81
|
json = await response.json()
|
|
81
|
-
return DataCollectionIdentifier.
|
|
82
|
+
return DataCollectionIdentifier.model_validate(json)
|
|
82
83
|
|
|
83
84
|
|
|
84
85
|
class LocalDirectoryServiceClient(DirectoryServiceClient):
|
|
@@ -150,3 +151,42 @@ class StaticVisitPathProvider(UpdatingPathProvider):
|
|
|
150
151
|
return PathInfo(
|
|
151
152
|
directory_path=self._root, filename=self._filename_provider(device_name)
|
|
152
153
|
)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
DEFAULT_TEMPLATE = "{device_name}-{instrument}-{scan_id}"
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class StartDocumentPathProvider(PathProvider):
|
|
160
|
+
"""A PathProvider that sources from metadata in a RunStart document.
|
|
161
|
+
|
|
162
|
+
This uses metadata from a RunStart document to determine file names and data session
|
|
163
|
+
directories. The file naming defaults to "{device_name}-{instrument}-{scan_id}", so
|
|
164
|
+
the file name is incremented by scan number. A template can be included in the
|
|
165
|
+
StartDocument to allow for custom naming conventions.
|
|
166
|
+
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
def __init__(self) -> None:
|
|
170
|
+
self._doc = {}
|
|
171
|
+
|
|
172
|
+
def update_run(self, name: str, start_doc: RunStart) -> None:
|
|
173
|
+
"""Cache a start document.
|
|
174
|
+
|
|
175
|
+
This can be plugged into the run engine's subscribe method.
|
|
176
|
+
"""
|
|
177
|
+
if name == "start":
|
|
178
|
+
self._doc = start_doc
|
|
179
|
+
|
|
180
|
+
def __call__(self, device_name: str | None = None) -> PathInfo:
|
|
181
|
+
"""Returns the directory path and filename for a given data_session.
|
|
182
|
+
|
|
183
|
+
The default template for file naming is: "{device_name}-{instrument}-{scan_id}"
|
|
184
|
+
however, this can be changed by providing a template in the start document. For
|
|
185
|
+
example: "template": "custom-{device_name}--{scan_id}".
|
|
186
|
+
|
|
187
|
+
If you do not provide a data_session_directory it will default to "/tmp".
|
|
188
|
+
"""
|
|
189
|
+
template = self._doc.get("template", DEFAULT_TEMPLATE)
|
|
190
|
+
sub_path = template.format_map(self._doc | {"device_name": device_name})
|
|
191
|
+
data_session_directory = Path(self._doc.get("data_session_directory", "/tmp"))
|
|
192
|
+
return PathInfo(directory_path=data_session_directory, filename=sub_path)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from ophyd_async.core import StandardReadable
|
|
2
|
+
from ophyd_async.epics.motor import Motor
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Goniometer(StandardReadable):
|
|
6
|
+
"""Goniometer and the stages it sits on"""
|
|
7
|
+
|
|
8
|
+
def __init__(self, prefix: str, name: str = "") -> None:
|
|
9
|
+
self.x = Motor(prefix + "X")
|
|
10
|
+
self.y = Motor(prefix + "Y")
|
|
11
|
+
self.z = Motor(prefix + "Z")
|
|
12
|
+
self.sampy = Motor(prefix + "SAMPY")
|
|
13
|
+
self.sampz = Motor(prefix + "SAMPZ")
|
|
14
|
+
self.omega = Motor(prefix + "OMEGA")
|
|
15
|
+
super().__init__(name)
|
|
@@ -32,7 +32,7 @@ class DetectorParams(BaseModel):
|
|
|
32
32
|
# Must use model_dump(by_alias=True) if serialising!
|
|
33
33
|
|
|
34
34
|
expected_energy_ev: float | None = None
|
|
35
|
-
|
|
35
|
+
exposure_time_s: float
|
|
36
36
|
directory: str # : Path https://github.com/DiamondLightSource/dodal/issues/774
|
|
37
37
|
prefix: str
|
|
38
38
|
detector_distance: float
|
|
@@ -221,11 +221,11 @@ class EigerDetector(Device, Stageable):
|
|
|
221
221
|
def set_cam_pvs(self) -> AndStatus:
|
|
222
222
|
assert self.detector_params is not None
|
|
223
223
|
status = self.cam.acquire_time.set(
|
|
224
|
-
self.detector_params.
|
|
224
|
+
self.detector_params.exposure_time_s,
|
|
225
225
|
timeout=self.timeouts.general_status_timeout,
|
|
226
226
|
)
|
|
227
227
|
status &= self.cam.acquire_period.set(
|
|
228
|
-
self.detector_params.
|
|
228
|
+
self.detector_params.exposure_time_s,
|
|
229
229
|
timeout=self.timeouts.general_status_timeout,
|
|
230
230
|
)
|
|
231
231
|
status &= self.cam.num_exposures.set(
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from ophyd_async.core import StandardReadable
|
|
2
|
+
from ophyd_async.epics.core import epics_signal_r
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class HutchAccessControl(StandardReadable):
|
|
6
|
+
def __init__(self, prefix: str, name: str = "") -> None:
|
|
7
|
+
self.active_hutch = epics_signal_r(str, f"{prefix}EHStatus.VALA")
|
|
8
|
+
super().__init__(name)
|
|
@@ -34,9 +34,10 @@ class SnapshotWithGrid(MJPG):
|
|
|
34
34
|
box_width = await self.box_width.get_value()
|
|
35
35
|
num_boxes_x = await self.num_boxes_x.get_value()
|
|
36
36
|
num_boxes_y = await self.num_boxes_y.get_value()
|
|
37
|
-
|
|
38
|
-
assert isinstance(filename_str
|
|
39
|
-
|
|
37
|
+
filename_str = await self.filename.get_value()
|
|
38
|
+
assert isinstance(filename_str, str)
|
|
39
|
+
directory_str = await self.directory.get_value()
|
|
40
|
+
assert isinstance(directory_str, str)
|
|
40
41
|
|
|
41
42
|
add_grid_border_overlay_to_image(
|
|
42
43
|
image, int(top_left_x), int(top_left_y), box_width, num_boxes_x, num_boxes_y
|
|
@@ -7,13 +7,13 @@ class SampleY(StandardReadable):
|
|
|
7
7
|
Motors for controlling the sample's y position and stretch in the y axis.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
def __init__(self, prefix: str, name="")
|
|
10
|
+
def __init__(self, prefix: str, name: str = ""):
|
|
11
11
|
with self.add_children_as_readables():
|
|
12
12
|
self.base = Motor(prefix + "CS:Y")
|
|
13
13
|
self.stretch = Motor(prefix + "CS:Y:STRETCH")
|
|
14
14
|
self.top = Motor(prefix + "Y:TOP")
|
|
15
15
|
self.bottom = Motor(prefix + "Y:BOT")
|
|
16
|
-
|
|
16
|
+
super().__init__(name)
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class SampleTheta(StandardReadable):
|
|
@@ -21,13 +21,13 @@ class SampleTheta(StandardReadable):
|
|
|
21
21
|
Motors for controlling the sample's theta position and skew
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
|
-
def __init__(self, prefix: str, name="")
|
|
24
|
+
def __init__(self, prefix: str, name: str = ""):
|
|
25
25
|
with self.add_children_as_readables():
|
|
26
26
|
self.base = Motor(prefix + "THETA:POS")
|
|
27
27
|
self.skew = Motor(prefix + "THETA:SKEW")
|
|
28
28
|
self.top = Motor(prefix + "THETA:TOP")
|
|
29
29
|
self.bottom = Motor(prefix + "THETA:BOT")
|
|
30
|
-
|
|
30
|
+
super().__init__(name)
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class TomoStageWithStretchAndSkew(StandardReadable):
|
|
@@ -35,12 +35,12 @@ class TomoStageWithStretchAndSkew(StandardReadable):
|
|
|
35
35
|
Grouping of motors for the P45 tomography stage
|
|
36
36
|
"""
|
|
37
37
|
|
|
38
|
-
def __init__(self, prefix: str, name="")
|
|
38
|
+
def __init__(self, prefix: str, name: str = ""):
|
|
39
39
|
with self.add_children_as_readables():
|
|
40
40
|
self.x = Motor(prefix + "X")
|
|
41
41
|
self.y = SampleY(prefix)
|
|
42
42
|
self.theta = SampleTheta(prefix)
|
|
43
|
-
|
|
43
|
+
super().__init__(name)
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class Choppers(StandardReadable):
|
|
@@ -48,8 +48,8 @@ class Choppers(StandardReadable):
|
|
|
48
48
|
Grouping for the P45 chopper motors
|
|
49
49
|
"""
|
|
50
50
|
|
|
51
|
-
def __init__(self, prefix: str, name="")
|
|
51
|
+
def __init__(self, prefix: str, name: str = ""):
|
|
52
52
|
with self.add_children_as_readables():
|
|
53
53
|
self.x = Motor(prefix + "ENDAT")
|
|
54
54
|
self.y = Motor(prefix + "BISS")
|
|
55
|
-
|
|
55
|
+
super().__init__(name)
|