dls-dodal 1.41.0__tar.gz → 1.42.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.42.0}/PKG-INFO +3 -3
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/create-beamline.rst +44 -32
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/pyproject.toml +6 -5
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/PKG-INFO +3 -3
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/SOURCES.txt +10 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/requires.txt +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/_version.py +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/__init__.py +1 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/adsim.py +1 -1
- dls_dodal-1.42.0/src/dodal/beamlines/aithre.py +9 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i04.py +1 -1
- dls_dodal-1.42.0/src/dodal/beamlines/i19_optics.py +34 -0
- dls_dodal-1.42.0/src/dodal/beamlines/p45.py +78 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/visit.py +1 -1
- dls_dodal-1.42.0/src/dodal/devices/aithre_lasershaping/goniometer.py +15 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/aperturescatterguard.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/apple2_undulator.py +8 -10
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/attenuator.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/backlight.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/bimorph_mirror.py +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger.py +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/hutch_shutter.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_apple2.py +3 -3
- dls_dodal-1.42.0/src/dodal/devices/i19/hutch_access.py +8 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/shutter.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pmac.py +2 -2
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_detector.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +4 -3
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p45.py +8 -8
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/pressure_jump_cell.py +3 -7
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/robot.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/thawer.py +4 -4
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator_dcm.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/epics_util.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra.py +3 -4
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/wrapped.py +12 -10
- dls_dodal-1.42.0/src/dodal/plans/preprocessors/verify_undulator_gap.py +49 -0
- dls_dodal-1.42.0/src/dodal/plans/verify_undulator_gap.py +19 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_eiger_system.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_undulator_system.py +2 -5
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_visit.py +1 -1
- dls_dodal-1.42.0/tests/constants.py +3 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_det_resolution.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_detector.py +6 -6
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_apple2_undulator.py +4 -3
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_eiger.py +1 -1
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator.py +4 -7
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator_dcm.py +3 -6
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_motor_util_plans.py +7 -11
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_wrapped_stubs.py +4 -8
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/conftest.py +21 -0
- dls_dodal-1.42.0/tests/plans/test_preprocessors/test_verify_undulator_gap.py +79 -0
- dls_dodal-1.42.0/tests/plans/test_verify_undulator_gap_plan.py +17 -0
- dls_dodal-1.42.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 → dls_dodal-1.42.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_check.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.gitignore +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/Dockerfile +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/LICENSE +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/README.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/conf.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/genindex.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/index.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/standards.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/pull_request_template.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/setup.cfg +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i18.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_2.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i24.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/signal_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/CTAB.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/adsim.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/focusing_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/beamstop.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_io.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/KBMirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/diode.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/table.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/smargon.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/motor_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xbpm_feedback.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.41.0/system_tests → dls_dodal-1.42.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.41.0/tests → dls_dodal-1.42.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_adsim.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_aperturescatterguard_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_gridscan_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_oav_to_redis_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_slit_gaps_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_smargon_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_synchrotron_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_zebra_system.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.41.0/tests/beamlines → dls_dodal-1.42.0/tests}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/beamlines/unit_tests → dls_dodal-1.42.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/common → dls_dodal-1.42.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.41.0/tests/common/beamlines → dls_dodal-1.42.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/devices → dls_dodal-1.42.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/conftest.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i03 → dls_dodal-1.42.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i04 → dls_dodal-1.42.0/tests/devices/i03}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i03/test_beamstop.py +0 -0
- {dls_dodal-1.41.0/tests/devices/i19 → dls_dodal-1.42.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/test_i10Apple2.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_table.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests → dls_dodal-1.42.0/tests/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i19/test_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests/i24 → dls_dodal-1.42.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.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.42.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
- {dls_dodal-1.41.0/tests/devices/unit_tests/util → dls_dodal-1.42.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_backlight.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_dcm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_shutter.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_slits.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_smargon.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_thawer.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_webcam.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.41.0/tests/fake_zocalo → dls_dodal-1.42.0/tests/devices/unit_tests/util}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.41.0/tests/unit_tests → dls_dodal-1.42.0/tests/fake_zocalo}/__init__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_topup_plan.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_utils.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.41.0 → dls_dodal-1.42.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.42.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
|
|
@@ -217,7 +217,7 @@ License-File: LICENSE
|
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
219
|
Requires-Dist: ophyd-async>=0.9.0a2
|
|
220
|
-
Requires-Dist: bluesky
|
|
220
|
+
Requires-Dist: bluesky==1.13.0
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
223
223
|
Requires-Dist: pillow
|
|
@@ -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,
|
|
@@ -16,7 +16,7 @@ dependencies = [
|
|
|
16
16
|
"click",
|
|
17
17
|
"ophyd",
|
|
18
18
|
"ophyd-async >= 0.9.0a2",
|
|
19
|
-
"bluesky",
|
|
19
|
+
"bluesky == 1.13.0",
|
|
20
20
|
"pyepics",
|
|
21
21
|
"dataclasses-json",
|
|
22
22
|
"pillow",
|
|
@@ -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.42.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
|
|
@@ -217,7 +217,7 @@ License-File: LICENSE
|
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
219
|
Requires-Dist: ophyd-async>=0.9.0a2
|
|
220
|
-
Requires-Dist: bluesky
|
|
220
|
+
Requires-Dist: bluesky==1.13.0
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
223
223
|
Requires-Dist: pillow
|
|
@@ -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
|
|
@@ -403,7 +411,9 @@ tests/plan_stubs/test_wrapped_stubs.py
|
|
|
403
411
|
tests/plans/conftest.py
|
|
404
412
|
tests/plans/test_compliance.py
|
|
405
413
|
tests/plans/test_scanspec.py
|
|
414
|
+
tests/plans/test_verify_undulator_gap_plan.py
|
|
406
415
|
tests/plans/test_wrapped.py
|
|
416
|
+
tests/plans/test_preprocessors/test_verify_undulator_gap.py
|
|
407
417
|
tests/preprocessors/test_filesystem_metadata.py
|
|
408
418
|
tests/test_data/bad_beamlineParameters
|
|
409
419
|
tests/test_data/i04_beamlineParameters
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
click
|
|
2
2
|
ophyd
|
|
3
3
|
ophyd-async>=0.9.0a2
|
|
4
|
-
bluesky
|
|
4
|
+
bluesky==1.13.0
|
|
5
5
|
pyepics
|
|
6
6
|
dataclasses-json
|
|
7
7
|
pillow
|
|
@@ -31,7 +31,7 @@ pipdeptree
|
|
|
31
31
|
pre-commit
|
|
32
32
|
psutil
|
|
33
33
|
pydata-sphinx-theme>=0.12
|
|
34
|
-
pyright
|
|
34
|
+
pyright
|
|
35
35
|
pytest
|
|
36
36
|
pytest-asyncio
|
|
37
37
|
pytest-cov
|
|
@@ -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
|
+
)
|
|
@@ -78,7 +78,7 @@ class RemoteDirectoryServiceClient(DirectoryServiceClient):
|
|
|
78
78
|
):
|
|
79
79
|
response.raise_for_status()
|
|
80
80
|
json = await response.json()
|
|
81
|
-
return DataCollectionIdentifier.
|
|
81
|
+
return DataCollectionIdentifier.model_validate(json)
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
class LocalDirectoryServiceClient(DirectoryServiceClient):
|
|
@@ -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)
|
|
@@ -123,7 +123,7 @@ def load_positions_from_beamline_parameters(
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
|
|
126
|
-
class ApertureScatterguard(StandardReadable, Movable
|
|
126
|
+
class ApertureScatterguard(StandardReadable, Movable, Preparable):
|
|
127
127
|
"""Move the aperture and scatterguard assembly in a safe way. There are two ways to
|
|
128
128
|
interact with the device depending on if you want simplicity or move flexibility.
|
|
129
129
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
import asyncio
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
import numpy as np
|
|
7
7
|
from bluesky.protocols import Movable
|
|
@@ -21,8 +21,6 @@ from pydantic import BaseModel, ConfigDict, RootModel
|
|
|
21
21
|
|
|
22
22
|
from dodal.log import LOGGER
|
|
23
23
|
|
|
24
|
-
T = TypeVar("T")
|
|
25
|
-
|
|
26
24
|
|
|
27
25
|
class UndulatorGateStatus(StrictEnum):
|
|
28
26
|
OPEN = "Open"
|
|
@@ -101,7 +99,7 @@ async def estimate_motor_timeout(
|
|
|
101
99
|
return abs((target_pos - cur_pos) * 2.0 / vel) + 1
|
|
102
100
|
|
|
103
101
|
|
|
104
|
-
class SafeUndulatorMover(StandardReadable, Movable
|
|
102
|
+
class SafeUndulatorMover(StandardReadable, Movable):
|
|
105
103
|
"""A device that will check it's safe to move the undulator before moving it and
|
|
106
104
|
wait for the undulator to be safe again before calling the move complete.
|
|
107
105
|
"""
|
|
@@ -117,7 +115,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
|
|
|
117
115
|
super().__init__(name)
|
|
118
116
|
|
|
119
117
|
@AsyncStatus.wrap
|
|
120
|
-
async def set(self, value
|
|
118
|
+
async def set(self, value) -> None:
|
|
121
119
|
LOGGER.info(f"Setting {self.name} to {value}")
|
|
122
120
|
await self.raise_if_cannot_move()
|
|
123
121
|
await self._set_demand_positions(value)
|
|
@@ -127,7 +125,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
|
|
|
127
125
|
await wait_for_value(self.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
|
|
128
126
|
|
|
129
127
|
@abc.abstractmethod
|
|
130
|
-
async def _set_demand_positions(self, value
|
|
128
|
+
async def _set_demand_positions(self, value) -> None:
|
|
131
129
|
"""Set the demand positions on the device without actually hitting move."""
|
|
132
130
|
|
|
133
131
|
@abc.abstractmethod
|
|
@@ -141,7 +139,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
|
|
|
141
139
|
raise RuntimeError(f"{self.name} is already in motion.")
|
|
142
140
|
|
|
143
141
|
|
|
144
|
-
class UndulatorGap(SafeUndulatorMover
|
|
142
|
+
class UndulatorGap(SafeUndulatorMover):
|
|
145
143
|
"""A device with a collection of epics signals to set Apple 2 undulator gap motion.
|
|
146
144
|
Only PV used by beamline are added the full list is here:
|
|
147
145
|
/dls_sw/work/R3.14.12.7/support/insertionDevice/db/IDGapVelocityControl.template
|
|
@@ -187,7 +185,7 @@ class UndulatorGap(SafeUndulatorMover[float]):
|
|
|
187
185
|
self.user_readback = epics_signal_r(float, prefix + "CURRGAPD")
|
|
188
186
|
super().__init__(self.set_move, prefix, name)
|
|
189
187
|
|
|
190
|
-
async def _set_demand_positions(self, value
|
|
188
|
+
async def _set_demand_positions(self, value) -> None:
|
|
191
189
|
await self.user_setpoint.set(str(value))
|
|
192
190
|
|
|
193
191
|
async def get_timeout(self) -> float:
|
|
@@ -236,7 +234,7 @@ class UndulatorPhaseMotor(StandardReadable):
|
|
|
236
234
|
super().__init__(name=name)
|
|
237
235
|
|
|
238
236
|
|
|
239
|
-
class UndulatorPhaseAxes(SafeUndulatorMover
|
|
237
|
+
class UndulatorPhaseAxes(SafeUndulatorMover):
|
|
240
238
|
"""
|
|
241
239
|
A collection of 4 phase Motor to make up the full id phase motion. We are using the diamond pv convention.
|
|
242
240
|
e.g. top_outer == Q1
|
|
@@ -292,7 +290,7 @@ class UndulatorPhaseAxes(SafeUndulatorMover[Apple2PhasesVal]):
|
|
|
292
290
|
return np.max(timeouts)
|
|
293
291
|
|
|
294
292
|
|
|
295
|
-
class UndulatorJawPhase(SafeUndulatorMover
|
|
293
|
+
class UndulatorJawPhase(SafeUndulatorMover):
|
|
296
294
|
"""
|
|
297
295
|
A JawPhase movable, this is use for moving the jaw phase which is use to control the
|
|
298
296
|
linear arbitrary polarisation but only one some of the beamline.
|
|
@@ -29,7 +29,7 @@ class ReadOnlyAttenuator(StandardReadable):
|
|
|
29
29
|
super().__init__(name)
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable
|
|
32
|
+
class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable):
|
|
33
33
|
"""The attenuator will insert filters into the beam to reduce its transmission.
|
|
34
34
|
In this attenuator, each filter can be in one of two states: IN or OUT
|
|
35
35
|
|
|
@@ -15,7 +15,7 @@ class BacklightPosition(StrictEnum):
|
|
|
15
15
|
OUT = "Out"
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class Backlight(StandardReadable, Movable
|
|
18
|
+
class Backlight(StandardReadable, Movable):
|
|
19
19
|
"""Simple device to trigger the pneumatic in/out."""
|
|
20
20
|
|
|
21
21
|
TIME_TO_MOVE_S = 1.0 # Tested using a stopwatch on the beamline 09/2024
|
|
@@ -41,7 +41,7 @@ class BimorphMirrorStatus(StrictEnum):
|
|
|
41
41
|
ERROR = "Error"
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
class BimorphMirrorChannel(StandardReadable, Movable
|
|
44
|
+
class BimorphMirrorChannel(StandardReadable, Movable, EpicsDevice):
|
|
45
45
|
"""Collection of PVs comprising a single bimorph channel.
|
|
46
46
|
|
|
47
47
|
Attributes:
|
|
@@ -66,7 +66,7 @@ class BimorphMirrorChannel(StandardReadable, Movable[float], EpicsDevice):
|
|
|
66
66
|
await self.output_voltage.set(value)
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class BimorphMirror(StandardReadable, Movable
|
|
69
|
+
class BimorphMirror(StandardReadable, Movable):
|
|
70
70
|
"""Class to represent CAENels Bimorph Mirrors.
|
|
71
71
|
|
|
72
72
|
Attributes:
|
|
@@ -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(
|
|
@@ -55,7 +55,7 @@ class HutchInterlock(StandardReadable):
|
|
|
55
55
|
return interlock_state == HUTCH_SAFE_FOR_OPERATIONS
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
class HutchShutter(StandardReadable, Movable
|
|
58
|
+
class HutchShutter(StandardReadable, Movable):
|
|
59
59
|
"""Device to operate the hutch shutter.
|
|
60
60
|
|
|
61
61
|
When a demand is sent, the device should first check the hutch status \
|
|
@@ -175,7 +175,7 @@ class I10Apple2(Apple2):
|
|
|
175
175
|
self._available_pol = list(self.lookup_tables["Gap"].keys())
|
|
176
176
|
|
|
177
177
|
|
|
178
|
-
class I10Apple2PGM(StandardReadable, Movable
|
|
178
|
+
class I10Apple2PGM(StandardReadable, Movable):
|
|
179
179
|
"""
|
|
180
180
|
Compound device to set both ID and PGM energy at the sample time,poly_deg
|
|
181
181
|
|
|
@@ -211,7 +211,7 @@ class I10Apple2PGM(StandardReadable, Movable[float]):
|
|
|
211
211
|
)
|
|
212
212
|
|
|
213
213
|
|
|
214
|
-
class I10Apple2Pol(StandardReadable, Movable
|
|
214
|
+
class I10Apple2Pol(StandardReadable, Movable):
|
|
215
215
|
"""
|
|
216
216
|
Compound device to set polorisation of ID.
|
|
217
217
|
"""
|
|
@@ -240,7 +240,7 @@ class I10Apple2Pol(StandardReadable, Movable[str]):
|
|
|
240
240
|
) # Move id to new polarisation
|
|
241
241
|
|
|
242
242
|
|
|
243
|
-
class LinearArbitraryAngle(StandardReadable, Movable
|
|
243
|
+
class LinearArbitraryAngle(StandardReadable, Movable):
|
|
244
244
|
"""
|
|
245
245
|
Device to set polorisation angle of the ID. Linear Arbitrary Angle (laa)
|
|
246
246
|
is the direction of the magnetic field which can be change by varying the jaw_phase
|