dls-dodal 1.34.1__tar.gz → 1.36.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.34.1 → dls_dodal-1.36.0}/PKG-INFO +4 -2
- {dls_dodal-1.34.1/tests → dls_dodal-1.36.0}/conftest.py +14 -13
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/pyproject.toml +8 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/PKG-INFO +4 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/SOURCES.txt +23 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/requires.txt +3 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/_version.py +2 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i22.py +24 -11
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i24.py +4 -4
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/p38.py +23 -11
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/beamlines/beamline_utils.py +1 -2
- dls_dodal-1.36.0/src/dodal/common/crystal_metadata.py +61 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/signal_utils.py +10 -14
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/CTAB.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/aperture.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/aperturescatterguard.py +20 -8
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/apple2_undulator.py +30 -29
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/plugins/CAM.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/plugins/MJPG.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/attenuator.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/backlight.py +4 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/cryostream.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/dcm.py +26 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/detector_motion.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/diamond_filter.py +3 -4
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/eiger.py +88 -49
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/fast_grid_scan.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/fluorescence_detector_motion.py +5 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/focusing_mirror.py +12 -11
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/hutch_shutter.py +4 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i10/i10_apple2.py +20 -19
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i10/i10_setting_data.py +2 -2
- dls_dodal-1.36.0/src/dodal/devices/i22/dcm.py +124 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i22/fswitch.py +5 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/aperture.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/beamstop.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/dcm.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/dual_backlight.py +4 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/pmac.py +35 -46
- dls_dodal-1.36.0/src/dodal/devices/i24/vgonio.py +16 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/ipin.py +5 -3
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/linkam3.py +7 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/oav_detector.py +3 -3
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +8 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +9 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +16 -16
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +5 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +6 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/utils.py +2 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/p99/sample_stage.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/pgm.py +5 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/qbpm.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/robot.py +3 -3
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/smargon.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/synchrotron.py +9 -4
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/tetramm.py +7 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/thawer.py +13 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/undulator.py +5 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/epics_util.py +1 -1
- dls_dodal-1.36.0/src/dodal/devices/watsonmarlow323_pump.py +45 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/webcam.py +9 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/xbpm_feedback.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/xspress3/xspress3.py +8 -9
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/xspress3/xspress3_channel.py +3 -5
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/zebra.py +7 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/zebra_controlled_shutter.py +5 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/zocalo/__init__.py +2 -2
- dls_dodal-1.36.0/src/dodal/devices/zocalo/zocalo_constants.py +3 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/zocalo/zocalo_interaction.py +2 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/zocalo/zocalo_results.py +92 -79
- dls_dodal-1.34.1/src/dodal/plans/data_session_metadata.py → dls_dodal-1.36.0/src/dodal/plan_stubs/data_session.py +2 -2
- dls_dodal-1.34.1/src/dodal/plans/motor_util_plans.py → dls_dodal-1.36.0/src/dodal/plan_stubs/motor_utils.py +2 -2
- dls_dodal-1.36.0/src/dodal/plan_stubs/wrapped.py +150 -0
- dls_dodal-1.36.0/src/dodal/plans/__init__.py +4 -0
- dls_dodal-1.36.0/src/dodal/plans/scanspec.py +66 -0
- dls_dodal-1.36.0/src/dodal/plans/wrapped.py +57 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/utils.py +4 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_oav_to_redis_system.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_zocalo_results.py +36 -15
- dls_dodal-1.36.0/tests/beamlines/unit_tests/test_i24.py +27 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/beamlines/test_beamline_utils.py +1 -2
- dls_dodal-1.36.0/tests/common/test_crystal_metadata.py +37 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/test_i10Apple2.py +39 -29
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i22/test_dcm.py +15 -38
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/i24/test_pmac.py +3 -3
- dls_dodal-1.36.0/tests/devices/unit_tests/i24/test_vgonio.py +25 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +3 -3
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +7 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_oav_utils.py +4 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_snapshots.py +11 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +4 -6
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_apple2_undulator.py +5 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_dcm.py +10 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_eiger.py +12 -4
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_focusing_mirror.py +2 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_gridscan.py +2 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -2
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_linkam3.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_tetramm.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_thawer.py +5 -7
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_undulator_dcm.py +1 -2
- dls_dodal-1.36.0/tests/devices/unit_tests/test_watsonmarlow323_pump.py +47 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_xspress3.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_zebra.py +3 -3
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_zocalo_interaction.py +1 -1
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_zocalo_results.py +44 -47
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_zocalo/__main__.py +33 -12
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +12 -2
- {dls_dodal-1.34.1/tests/plans → dls_dodal-1.36.0/tests/plan_stubs}/test_motor_util_plans.py +13 -13
- {dls_dodal-1.34.1/tests/plans → dls_dodal-1.36.0/tests/plan_stubs}/test_topup_plan.py +9 -9
- dls_dodal-1.36.0/tests/plan_stubs/test_wrapped_stubs.py +144 -0
- dls_dodal-1.36.0/tests/plans/conftest.py +40 -0
- dls_dodal-1.36.0/tests/plans/test_compliance.py +78 -0
- dls_dodal-1.36.0/tests/plans/test_scanspec.py +183 -0
- dls_dodal-1.36.0/tests/plans/test_wrapped.py +159 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/preprocessors/test_filesystem_metadata.py +1 -1
- dls_dodal-1.36.0/tests/unit_tests/__init__.py +0 -0
- dls_dodal-1.34.1/src/dodal/devices/i22/dcm.py +0 -156
- dls_dodal-1.34.1/src/dodal/devices/i24/i24_vgonio.py +0 -17
- dls_dodal-1.34.1/tests/beamlines/unit_tests/test_i24.py +0 -12
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_check.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.gitignore +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/Dockerfile +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/LICENSE +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/README.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/_api.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/conf.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/explanations.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/genindex.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/create-beamline.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/how-to.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/index.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/reference/standards.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/reference.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/pull_request_template.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/setup.cfg +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/adsim.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i03.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i04.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/cli.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/adsim.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/adaravis.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/adsim.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/areadetector/adutils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/training_rig/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/undulator_dcm.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/motor_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/save_panda.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/devices/util/test_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.34.1/system_tests → dls_dodal-1.36.0/src/dodal/plan_stubs}/__init__.py +0 -0
- {dls_dodal-1.34.1/src/dodal/plans → dls_dodal-1.36.0/src/dodal/plan_stubs}/check_topup.py +0 -0
- {dls_dodal-1.34.1/tests → dls_dodal-1.36.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_aperturescatterguard_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_eiger_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_gridscan_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_slit_gaps_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_smargon_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_synchrotron_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_undulator_system.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/system_tests/test_zebra_system.py +0 -0
- {dls_dodal-1.34.1/tests/beamlines → dls_dodal-1.36.0/tests}/__init__.py +0 -0
- {dls_dodal-1.34.1/tests/beamlines/unit_tests → dls_dodal-1.36.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.34.1/tests/common → dls_dodal-1.36.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.34.1/tests/common/beamlines → dls_dodal-1.36.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.34.1/tests/devices → dls_dodal-1.36.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.34.1/tests/devices/i04 → dls_dodal-1.36.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.34.1/tests/devices/unit_tests → dls_dodal-1.36.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i22/test_fswitch.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
- {dls_dodal-1.34.1/tests/devices/unit_tests/i24 → dls_dodal-1.36.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/conftest.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
- {dls_dodal-1.34.1/tests/devices/unit_tests/oav → dls_dodal-1.36.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.34.1/tests/devices/unit_tests/util → dls_dodal-1.36.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_backlight.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_shutter.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_slits.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_smargon.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_undulator.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_webcam.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.34.1/tests/fake_zocalo → dls_dodal-1.36.0/tests/devices/unit_tests/util}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.34.1/tests/unit_tests → dls_dodal-1.36.0/tests/fake_zocalo}/__init__.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_cli.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/test_utils.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.34.1 → dls_dodal-1.36.0}/tests/unit_tests/test_log.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.36.0
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async
|
|
219
|
+
Requires-Dist: ophyd-async==0.8.0a4
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -233,11 +233,13 @@ Requires-Dist: aiofiles
|
|
|
233
233
|
Requires-Dist: aiohttp
|
|
234
234
|
Requires-Dist: redis
|
|
235
235
|
Requires-Dist: deepdiff
|
|
236
|
+
Requires-Dist: scanspec>=0.7.3
|
|
236
237
|
Provides-Extra: dev
|
|
237
238
|
Requires-Dist: black; extra == "dev"
|
|
238
239
|
Requires-Dist: diff-cover; extra == "dev"
|
|
239
240
|
Requires-Dist: mypy; extra == "dev"
|
|
240
241
|
Requires-Dist: myst-parser; extra == "dev"
|
|
242
|
+
Requires-Dist: ophyd_async[sim]; extra == "dev"
|
|
241
243
|
Requires-Dist: pipdeptree; extra == "dev"
|
|
242
244
|
Requires-Dist: pre-commit; extra == "dev"
|
|
243
245
|
Requires-Dist: psutil; extra == "dev"
|
|
@@ -44,6 +44,7 @@ mock_attributes_table = {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
BANNED_PATHS = [Path("/dls"), Path("/dls_sw")]
|
|
47
|
+
environ["DODAL_TEST_MODE"] = "true"
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
@pytest.fixture(autouse=True)
|
|
@@ -155,19 +156,6 @@ async def static_path_provider(
|
|
|
155
156
|
return svpp
|
|
156
157
|
|
|
157
158
|
|
|
158
|
-
@pytest.fixture
|
|
159
|
-
async def RE():
|
|
160
|
-
RE = RunEngine()
|
|
161
|
-
# make sure the event loop is thoroughly up and running before we try to create
|
|
162
|
-
# any ophyd_async devices which might need it
|
|
163
|
-
timeout = time.monotonic() + 1
|
|
164
|
-
while not RE.loop.is_running():
|
|
165
|
-
await asyncio.sleep(0)
|
|
166
|
-
if time.monotonic() > timeout:
|
|
167
|
-
raise TimeoutError("This really shouldn't happen but just in case...")
|
|
168
|
-
yield RE
|
|
169
|
-
|
|
170
|
-
|
|
171
159
|
@pytest.fixture
|
|
172
160
|
def run_engine_documents(RE: RunEngine) -> Mapping[str, list[dict]]:
|
|
173
161
|
docs: dict[str, list[dict]] = {}
|
|
@@ -185,3 +173,16 @@ def failed_status(failure: Exception) -> Status:
|
|
|
185
173
|
status = Status()
|
|
186
174
|
status.set_exception(failure)
|
|
187
175
|
return status
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
@pytest.fixture
|
|
179
|
+
async def RE():
|
|
180
|
+
RE = RunEngine()
|
|
181
|
+
# make sure the event loop is thoroughly up and running before we try to create
|
|
182
|
+
# any ophyd_async devices which might need it
|
|
183
|
+
timeout = time.monotonic() + 1
|
|
184
|
+
while not RE.loop.is_running():
|
|
185
|
+
await asyncio.sleep(0)
|
|
186
|
+
if time.monotonic() > timeout:
|
|
187
|
+
raise TimeoutError("This really shouldn't happen but just in case...")
|
|
188
|
+
yield RE
|
|
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
|
|
|
15
15
|
dependencies = [
|
|
16
16
|
"click",
|
|
17
17
|
"ophyd",
|
|
18
|
-
"ophyd-async
|
|
18
|
+
"ophyd-async==0.8.0a4",
|
|
19
19
|
"bluesky",
|
|
20
20
|
"pyepics",
|
|
21
21
|
"dataclasses-json",
|
|
@@ -24,14 +24,15 @@ dependencies = [
|
|
|
24
24
|
"requests",
|
|
25
25
|
"graypy",
|
|
26
26
|
"pydantic>=2.0",
|
|
27
|
-
"opencv-python-headless",
|
|
28
|
-
"aioca",
|
|
29
|
-
"p4p",
|
|
30
|
-
"numpy<2.0",
|
|
27
|
+
"opencv-python-headless", # For pin-tip detection.
|
|
28
|
+
"aioca", # Required for CA support with ophyd-async.
|
|
29
|
+
"p4p", # Required for PVA support with ophyd-async.
|
|
30
|
+
"numpy<2.0", # Unpin when https://github.com/bluesky/ophyd-async/issues/387 resolved
|
|
31
31
|
"aiofiles",
|
|
32
32
|
"aiohttp",
|
|
33
33
|
"redis",
|
|
34
34
|
"deepdiff",
|
|
35
|
+
"scanspec>=0.7.3",
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
dynamic = ["version"]
|
|
@@ -47,6 +48,7 @@ dev = [
|
|
|
47
48
|
# Commented out due to dependency version conflict with pydantic 1.x
|
|
48
49
|
# "copier",
|
|
49
50
|
"myst-parser",
|
|
51
|
+
"ophyd_async[sim]",
|
|
50
52
|
"pipdeptree",
|
|
51
53
|
"pre-commit",
|
|
52
54
|
"psutil",
|
|
@@ -92,7 +94,7 @@ version_file = "src/dodal/_version.py"
|
|
|
92
94
|
|
|
93
95
|
[tool.pyright]
|
|
94
96
|
typeCheckingMode = "standard"
|
|
95
|
-
reportMissingImports = false
|
|
97
|
+
reportMissingImports = false # Ignore missing stubs in imported modules
|
|
96
98
|
|
|
97
99
|
[tool.pytest.ini_options]
|
|
98
100
|
# Run pytest with all our checkers, and don't spam us with massive tracebacks on error
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.36.0
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async
|
|
219
|
+
Requires-Dist: ophyd-async==0.8.0a4
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -233,11 +233,13 @@ Requires-Dist: aiofiles
|
|
|
233
233
|
Requires-Dist: aiohttp
|
|
234
234
|
Requires-Dist: redis
|
|
235
235
|
Requires-Dist: deepdiff
|
|
236
|
+
Requires-Dist: scanspec>=0.7.3
|
|
236
237
|
Provides-Extra: dev
|
|
237
238
|
Requires-Dist: black; extra == "dev"
|
|
238
239
|
Requires-Dist: diff-cover; extra == "dev"
|
|
239
240
|
Requires-Dist: mypy; extra == "dev"
|
|
240
241
|
Requires-Dist: myst-parser; extra == "dev"
|
|
242
|
+
Requires-Dist: ophyd_async[sim]; extra == "dev"
|
|
241
243
|
Requires-Dist: pipdeptree; extra == "dev"
|
|
242
244
|
Requires-Dist: pre-commit; extra == "dev"
|
|
243
245
|
Requires-Dist: psutil; extra == "dev"
|
|
@@ -5,6 +5,7 @@ Dockerfile
|
|
|
5
5
|
LICENSE
|
|
6
6
|
README.md
|
|
7
7
|
catalog-info.yaml
|
|
8
|
+
conftest.py
|
|
8
9
|
pull_request_template.md
|
|
9
10
|
pyproject.toml
|
|
10
11
|
.devcontainer/devcontainer.json
|
|
@@ -99,6 +100,7 @@ src/dodal/beamlines/p99.py
|
|
|
99
100
|
src/dodal/beamlines/training_rig.py
|
|
100
101
|
src/dodal/common/__init__.py
|
|
101
102
|
src/dodal/common/coordination.py
|
|
103
|
+
src/dodal/common/crystal_metadata.py
|
|
102
104
|
src/dodal/common/maths.py
|
|
103
105
|
src/dodal/common/signal_utils.py
|
|
104
106
|
src/dodal/common/types.py
|
|
@@ -146,6 +148,7 @@ src/dodal/devices/thawer.py
|
|
|
146
148
|
src/dodal/devices/turbo_slit.py
|
|
147
149
|
src/dodal/devices/undulator.py
|
|
148
150
|
src/dodal/devices/undulator_dcm.py
|
|
151
|
+
src/dodal/devices/watsonmarlow323_pump.py
|
|
149
152
|
src/dodal/devices/webcam.py
|
|
150
153
|
src/dodal/devices/xbpm_feedback.py
|
|
151
154
|
src/dodal/devices/zebra.py
|
|
@@ -176,8 +179,8 @@ src/dodal/devices/i24/beamstop.py
|
|
|
176
179
|
src/dodal/devices/i24/dcm.py
|
|
177
180
|
src/dodal/devices/i24/dual_backlight.py
|
|
178
181
|
src/dodal/devices/i24/i24_detector_motion.py
|
|
179
|
-
src/dodal/devices/i24/i24_vgonio.py
|
|
180
182
|
src/dodal/devices/i24/pmac.py
|
|
183
|
+
src/dodal/devices/i24/vgonio.py
|
|
181
184
|
src/dodal/devices/oav/__init__.py
|
|
182
185
|
src/dodal/devices/oav/microns_for_zoom_levels.json
|
|
183
186
|
src/dodal/devices/oav/oav_calculations.py
|
|
@@ -205,12 +208,18 @@ src/dodal/devices/util/test_utils.py
|
|
|
205
208
|
src/dodal/devices/xspress3/xspress3.py
|
|
206
209
|
src/dodal/devices/xspress3/xspress3_channel.py
|
|
207
210
|
src/dodal/devices/zocalo/__init__.py
|
|
211
|
+
src/dodal/devices/zocalo/zocalo_constants.py
|
|
208
212
|
src/dodal/devices/zocalo/zocalo_interaction.py
|
|
209
213
|
src/dodal/devices/zocalo/zocalo_results.py
|
|
210
214
|
src/dodal/parameters/experiment_parameter_base.py
|
|
211
|
-
src/dodal/
|
|
212
|
-
src/dodal/
|
|
213
|
-
src/dodal/
|
|
215
|
+
src/dodal/plan_stubs/__init__.py
|
|
216
|
+
src/dodal/plan_stubs/check_topup.py
|
|
217
|
+
src/dodal/plan_stubs/data_session.py
|
|
218
|
+
src/dodal/plan_stubs/motor_utils.py
|
|
219
|
+
src/dodal/plan_stubs/wrapped.py
|
|
220
|
+
src/dodal/plans/__init__.py
|
|
221
|
+
src/dodal/plans/scanspec.py
|
|
222
|
+
src/dodal/plans/wrapped.py
|
|
214
223
|
system_tests/__init__.py
|
|
215
224
|
system_tests/test_aperturescatterguard_system.py
|
|
216
225
|
system_tests/test_eiger_system.py
|
|
@@ -224,7 +233,6 @@ system_tests/test_undulator_system.py
|
|
|
224
233
|
system_tests/test_zebra_system.py
|
|
225
234
|
system_tests/test_zocalo_results.py
|
|
226
235
|
tests/__init__.py
|
|
227
|
-
tests/conftest.py
|
|
228
236
|
tests/fake_beamline.py
|
|
229
237
|
tests/fake_beamline_all_devices_raise_exception.py
|
|
230
238
|
tests/fake_beamline_broken_dependency.py
|
|
@@ -241,6 +249,7 @@ tests/beamlines/unit_tests/test_i24.py
|
|
|
241
249
|
tests/beamlines/unit_tests/test_mapping.py
|
|
242
250
|
tests/common/__init__.py
|
|
243
251
|
tests/common/test_coordination.py
|
|
252
|
+
tests/common/test_crystal_metadata.py
|
|
244
253
|
tests/common/test_maths.py
|
|
245
254
|
tests/common/test_udc_directory_provider.py
|
|
246
255
|
tests/common/test_visit.py
|
|
@@ -297,6 +306,7 @@ tests/devices/unit_tests/test_thawer.py
|
|
|
297
306
|
tests/devices/unit_tests/test_undulator.py
|
|
298
307
|
tests/devices/unit_tests/test_undulator_dcm.py
|
|
299
308
|
tests/devices/unit_tests/test_utils.py
|
|
309
|
+
tests/devices/unit_tests/test_watsonmarlow323_pump.py
|
|
300
310
|
tests/devices/unit_tests/test_webcam.py
|
|
301
311
|
tests/devices/unit_tests/test_xbpm_feedback.py
|
|
302
312
|
tests/devices/unit_tests/test_xspress3.py
|
|
@@ -309,6 +319,7 @@ tests/devices/unit_tests/detector/test_detector.py
|
|
|
309
319
|
tests/devices/unit_tests/i24/__init__.py
|
|
310
320
|
tests/devices/unit_tests/i24/test_dual_backlight.py
|
|
311
321
|
tests/devices/unit_tests/i24/test_pmac.py
|
|
322
|
+
tests/devices/unit_tests/i24/test_vgonio.py
|
|
312
323
|
tests/devices/unit_tests/oav/__init__.py
|
|
313
324
|
tests/devices/unit_tests/oav/conftest.py
|
|
314
325
|
tests/devices/unit_tests/oav/test_grid_overlay.py
|
|
@@ -332,8 +343,13 @@ tests/fake_zocalo/README.rst
|
|
|
332
343
|
tests/fake_zocalo/__init__.py
|
|
333
344
|
tests/fake_zocalo/__main__.py
|
|
334
345
|
tests/fake_zocalo/dls_start_fake_zocalo.sh
|
|
335
|
-
tests/
|
|
336
|
-
tests/
|
|
346
|
+
tests/plan_stubs/test_motor_util_plans.py
|
|
347
|
+
tests/plan_stubs/test_topup_plan.py
|
|
348
|
+
tests/plan_stubs/test_wrapped_stubs.py
|
|
349
|
+
tests/plans/conftest.py
|
|
350
|
+
tests/plans/test_compliance.py
|
|
351
|
+
tests/plans/test_scanspec.py
|
|
352
|
+
tests/plans/test_wrapped.py
|
|
337
353
|
tests/preprocessors/test_filesystem_metadata.py
|
|
338
354
|
tests/test_data/bad_beamlineParameters
|
|
339
355
|
tests/test_data/i04_beamlineParameters
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
click
|
|
2
2
|
ophyd
|
|
3
|
-
ophyd-async
|
|
3
|
+
ophyd-async==0.8.0a4
|
|
4
4
|
bluesky
|
|
5
5
|
pyepics
|
|
6
6
|
dataclasses-json
|
|
@@ -17,12 +17,14 @@ aiofiles
|
|
|
17
17
|
aiohttp
|
|
18
18
|
redis
|
|
19
19
|
deepdiff
|
|
20
|
+
scanspec>=0.7.3
|
|
20
21
|
|
|
21
22
|
[dev]
|
|
22
23
|
black
|
|
23
24
|
diff-cover
|
|
24
25
|
mypy
|
|
25
26
|
myst-parser
|
|
27
|
+
ophyd_async[sim]
|
|
26
28
|
pipdeptree
|
|
27
29
|
pre-commit
|
|
28
30
|
psutil
|
|
@@ -11,9 +11,13 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
11
11
|
)
|
|
12
12
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
13
13
|
from dodal.common.beamlines.device_helpers import numbered_slits
|
|
14
|
+
from dodal.common.crystal_metadata import (
|
|
15
|
+
MaterialsEnum,
|
|
16
|
+
make_crystal_metadata_from_material,
|
|
17
|
+
)
|
|
14
18
|
from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
|
|
15
19
|
from dodal.devices.focusing_mirror import FocusingMirror
|
|
16
|
-
from dodal.devices.i22.dcm import
|
|
20
|
+
from dodal.devices.i22.dcm import DoubleCrystalMonochromator
|
|
17
21
|
from dodal.devices.i22.fswitch import FSwitch
|
|
18
22
|
from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV, NXSasPilatus
|
|
19
23
|
from dodal.devices.linkam3 import Linkam3
|
|
@@ -21,6 +25,7 @@ from dodal.devices.slits import Slits
|
|
|
21
25
|
from dodal.devices.synchrotron import Synchrotron
|
|
22
26
|
from dodal.devices.tetramm import TetrammDetector
|
|
23
27
|
from dodal.devices.undulator import Undulator
|
|
28
|
+
from dodal.devices.watsonmarlow323_pump import WatsonMarlow323Pump
|
|
24
29
|
from dodal.log import set_beamline as set_log_beamline
|
|
25
30
|
from dodal.utils import BeamlinePrefix, get_beamline_name, skip_device
|
|
26
31
|
|
|
@@ -170,17 +175,12 @@ def dcm(
|
|
|
170
175
|
fake_with_ophyd_sim,
|
|
171
176
|
bl_prefix=False,
|
|
172
177
|
temperature_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-DI-DCM-01:",
|
|
173
|
-
crystal_1_metadata=
|
|
174
|
-
|
|
175
|
-
type="silicon",
|
|
176
|
-
reflection=(1, 1, 1),
|
|
177
|
-
d_spacing=(3.13475, "nm"),
|
|
178
|
+
crystal_1_metadata=make_crystal_metadata_from_material(
|
|
179
|
+
MaterialsEnum.Si, (1, 1, 1)
|
|
178
180
|
),
|
|
179
|
-
crystal_2_metadata=
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
reflection=(1, 1, 1),
|
|
183
|
-
d_spacing=(3.13475, "nm"),
|
|
181
|
+
crystal_2_metadata=make_crystal_metadata_from_material(
|
|
182
|
+
MaterialsEnum.Si,
|
|
183
|
+
(1, 1, 1),
|
|
184
184
|
),
|
|
185
185
|
)
|
|
186
186
|
|
|
@@ -377,3 +377,16 @@ def linkam(
|
|
|
377
377
|
wait_for_connection,
|
|
378
378
|
fake_with_ophyd_sim,
|
|
379
379
|
)
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def ppump(
|
|
383
|
+
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
384
|
+
) -> WatsonMarlow323Pump:
|
|
385
|
+
"""Sample Environment Peristaltic Pump"""
|
|
386
|
+
return device_instantiation(
|
|
387
|
+
WatsonMarlow323Pump,
|
|
388
|
+
"ppump",
|
|
389
|
+
"-EA-PUMP-01:",
|
|
390
|
+
wait_for_connection,
|
|
391
|
+
fake_with_ophyd_sim,
|
|
392
|
+
)
|
|
@@ -11,8 +11,8 @@ from dodal.devices.i24.beamstop import Beamstop
|
|
|
11
11
|
from dodal.devices.i24.dcm import DCM
|
|
12
12
|
from dodal.devices.i24.dual_backlight import DualBacklight
|
|
13
13
|
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
14
|
-
from dodal.devices.i24.i24_vgonio import VGonio
|
|
15
14
|
from dodal.devices.i24.pmac import PMAC
|
|
15
|
+
from dodal.devices.i24.vgonio import VerticalGoniometer
|
|
16
16
|
from dodal.devices.oav.oav_detector import OAV
|
|
17
17
|
from dodal.devices.oav.oav_parameters import OAVConfig
|
|
18
18
|
from dodal.devices.zebra import Zebra
|
|
@@ -154,12 +154,12 @@ def oav(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) ->
|
|
|
154
154
|
@skip_device(lambda: BL == "s24")
|
|
155
155
|
def vgonio(
|
|
156
156
|
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
157
|
-
) ->
|
|
158
|
-
"""Get the i24
|
|
157
|
+
) -> VerticalGoniometer:
|
|
158
|
+
"""Get the i24 vertical goniometer device, instantiate it if it hasn't already been.
|
|
159
159
|
If this is called when already instantiated, it will return the existing object.
|
|
160
160
|
"""
|
|
161
161
|
return device_instantiation(
|
|
162
|
-
|
|
162
|
+
VerticalGoniometer,
|
|
163
163
|
"vgonio",
|
|
164
164
|
"-MO-VGON-01:",
|
|
165
165
|
wait_for_connection,
|
|
@@ -10,14 +10,19 @@ 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 numbered_slits
|
|
13
|
+
from dodal.common.crystal_metadata import (
|
|
14
|
+
MaterialsEnum,
|
|
15
|
+
make_crystal_metadata_from_material,
|
|
16
|
+
)
|
|
13
17
|
from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
|
|
14
18
|
from dodal.devices.focusing_mirror import FocusingMirror
|
|
15
|
-
from dodal.devices.i22.dcm import
|
|
19
|
+
from dodal.devices.i22.dcm import DoubleCrystalMonochromator
|
|
16
20
|
from dodal.devices.i22.fswitch import FSwitch
|
|
17
21
|
from dodal.devices.linkam3 import Linkam3
|
|
18
22
|
from dodal.devices.slits import Slits
|
|
19
23
|
from dodal.devices.tetramm import TetrammDetector
|
|
20
24
|
from dodal.devices.undulator import Undulator
|
|
25
|
+
from dodal.devices.watsonmarlow323_pump import WatsonMarlow323Pump
|
|
21
26
|
from dodal.log import set_beamline as set_log_beamline
|
|
22
27
|
from dodal.utils import BeamlinePrefix, get_beamline_name, skip_device
|
|
23
28
|
|
|
@@ -227,17 +232,11 @@ def dcm(
|
|
|
227
232
|
fake_with_ophyd_sim,
|
|
228
233
|
bl_prefix=False,
|
|
229
234
|
temperature_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-DI-DCM-01:",
|
|
230
|
-
crystal_1_metadata=
|
|
231
|
-
|
|
232
|
-
type="silicon",
|
|
233
|
-
reflection=(1, 1, 1),
|
|
234
|
-
d_spacing=(3.13475, "nm"),
|
|
235
|
+
crystal_1_metadata=make_crystal_metadata_from_material(
|
|
236
|
+
MaterialsEnum.Si, (1, 1, 1)
|
|
235
237
|
),
|
|
236
|
-
crystal_2_metadata=
|
|
237
|
-
|
|
238
|
-
type="silicon",
|
|
239
|
-
reflection=(1, 1, 1),
|
|
240
|
-
d_spacing=(3.13475, "nm"),
|
|
238
|
+
crystal_2_metadata=make_crystal_metadata_from_material(
|
|
239
|
+
MaterialsEnum.Si, (1, 1, 1)
|
|
241
240
|
),
|
|
242
241
|
)
|
|
243
242
|
|
|
@@ -317,3 +316,16 @@ def linkam(
|
|
|
317
316
|
wait_for_connection,
|
|
318
317
|
fake_with_ophyd_sim,
|
|
319
318
|
)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def ppump(
|
|
322
|
+
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = True
|
|
323
|
+
) -> WatsonMarlow323Pump:
|
|
324
|
+
"""Peristaltic Pump"""
|
|
325
|
+
return device_instantiation(
|
|
326
|
+
WatsonMarlow323Pump,
|
|
327
|
+
"ppump",
|
|
328
|
+
"-EA-PUMP-01:",
|
|
329
|
+
wait_for_connection,
|
|
330
|
+
fake_with_ophyd_sim,
|
|
331
|
+
)
|
|
@@ -90,8 +90,7 @@ def device_instantiation(
|
|
|
90
90
|
fake: bool whether to fake with ophyd.sim
|
|
91
91
|
post_create: Callable (optional) a function to be run on the device after
|
|
92
92
|
creation
|
|
93
|
-
bl_prefix: bool if true, add the beamline prefix when instantiating
|
|
94
|
-
false the complete PV prefix must be supplied.
|
|
93
|
+
bl_prefix: bool if true, add the beamline prefix when instantiating
|
|
95
94
|
Returns:
|
|
96
95
|
The instance of the device.
|
|
97
96
|
"""
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import math
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from enum import Enum
|
|
4
|
+
from typing import Literal
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass(frozen=True)
|
|
8
|
+
class Material:
|
|
9
|
+
"""
|
|
10
|
+
Class representing a crystalline material with a specific lattice parameter.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
name: str
|
|
14
|
+
lattice_parameter: float # Lattice parameter in meters
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MaterialsEnum(Enum):
|
|
18
|
+
Si = Material(name="silicon", lattice_parameter=5.4310205e-10)
|
|
19
|
+
Ge = Material(name="germanium", lattice_parameter=5.6575e-10)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass(frozen=True)
|
|
23
|
+
class CrystalMetadata:
|
|
24
|
+
"""
|
|
25
|
+
Metadata used in the NeXus format,
|
|
26
|
+
see https://manual.nexusformat.org/classes/base_classes/NXcrystal.html
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
usage: Literal["Bragg", "Laue"]
|
|
30
|
+
type: str
|
|
31
|
+
reflection: tuple[int, int, int]
|
|
32
|
+
d_spacing: tuple[float, str]
|
|
33
|
+
|
|
34
|
+
@staticmethod
|
|
35
|
+
def calculate_default_d_spacing(
|
|
36
|
+
lattice_parameter: float, reflection: tuple[int, int, int]
|
|
37
|
+
) -> tuple[float, str]:
|
|
38
|
+
"""
|
|
39
|
+
Calculates the d-spacing value in nanometers based on the given lattice parameter and reflection indices.
|
|
40
|
+
"""
|
|
41
|
+
h_index, k_index, l_index = reflection
|
|
42
|
+
d_spacing_m = lattice_parameter / math.sqrt(
|
|
43
|
+
h_index**2 + k_index**2 + l_index**2
|
|
44
|
+
)
|
|
45
|
+
d_spacing_nm = d_spacing_m * 1e9 # Convert meters to nanometers
|
|
46
|
+
return round(d_spacing_nm, 5), "nm"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def make_crystal_metadata_from_material(
|
|
50
|
+
material: MaterialsEnum,
|
|
51
|
+
reflection_plane: tuple[int, int, int],
|
|
52
|
+
usage: Literal["Bragg", "Laue"] = "Bragg",
|
|
53
|
+
d_spacing_param: tuple[float, str] | None = None,
|
|
54
|
+
):
|
|
55
|
+
d_spacing = d_spacing_param or CrystalMetadata.calculate_default_d_spacing(
|
|
56
|
+
material.value.lattice_parameter, reflection_plane
|
|
57
|
+
)
|
|
58
|
+
assert all(
|
|
59
|
+
isinstance(i, int) and i > 0 for i in reflection_plane
|
|
60
|
+
), "Reflection plane indices must be positive integers"
|
|
61
|
+
return CrystalMetadata(usage, material.value.name, reflection_plane, d_spacing)
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
from collections.abc import Callable, Coroutine
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
from bluesky.protocols import Reading
|
|
5
|
-
from ophyd_async.core import SignalR, SoftSignalBackend
|
|
6
|
-
from ophyd_async.core._soft_signal_backend import SignalMetadata
|
|
5
|
+
from ophyd_async.core import SignalDatatypeT, SignalR, SoftSignalBackend
|
|
7
6
|
|
|
8
|
-
T = TypeVar("T")
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
class HarwareBackedSoftSignalBackend(SoftSignalBackend[T]):
|
|
8
|
+
class HardwareBackedSoftSignalBackend(SoftSignalBackend[SignalDatatypeT]):
|
|
12
9
|
def __init__(
|
|
13
10
|
self,
|
|
14
|
-
get_from_hardware_func: Callable[[], Coroutine[Any, Any,
|
|
11
|
+
get_from_hardware_func: Callable[[], Coroutine[Any, Any, SignalDatatypeT]],
|
|
15
12
|
*args,
|
|
16
13
|
**kwargs,
|
|
17
14
|
) -> None:
|
|
@@ -20,20 +17,20 @@ class HarwareBackedSoftSignalBackend(SoftSignalBackend[T]):
|
|
|
20
17
|
|
|
21
18
|
async def _update_value(self):
|
|
22
19
|
new_value = await self.get_from_hardware_func()
|
|
23
|
-
await self.put(new_value)
|
|
20
|
+
await self.put(new_value, True)
|
|
24
21
|
|
|
25
22
|
async def get_reading(self) -> Reading:
|
|
26
23
|
await self._update_value()
|
|
27
24
|
return await super().get_reading()
|
|
28
25
|
|
|
29
|
-
async def get_value(self) ->
|
|
26
|
+
async def get_value(self) -> SignalDatatypeT:
|
|
30
27
|
await self._update_value()
|
|
31
28
|
return await super().get_value()
|
|
32
29
|
|
|
33
30
|
|
|
34
31
|
def create_hardware_backed_soft_signal(
|
|
35
|
-
datatype: type[
|
|
36
|
-
get_from_hardware_func: Callable[[], Coroutine[Any, Any,
|
|
32
|
+
datatype: type[SignalDatatypeT],
|
|
33
|
+
get_from_hardware_func: Callable[[], Coroutine[Any, Any, SignalDatatypeT]],
|
|
37
34
|
units: str | None = None,
|
|
38
35
|
precision: int | None = None,
|
|
39
36
|
):
|
|
@@ -45,9 +42,8 @@ def create_hardware_backed_soft_signal(
|
|
|
45
42
|
the signal is currently read only. See https://github.com/bluesky/ophyd-async/issues/525
|
|
46
43
|
for a more full solution.
|
|
47
44
|
"""
|
|
48
|
-
metadata = SignalMetadata(units=units, precision=precision)
|
|
49
45
|
return SignalR(
|
|
50
|
-
backend=
|
|
51
|
-
get_from_hardware_func, datatype,
|
|
46
|
+
backend=HardwareBackedSoftSignalBackend(
|
|
47
|
+
get_from_hardware_func, datatype, units=units, precision=precision
|
|
52
48
|
)
|
|
53
49
|
)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
from enum import Enum
|
|
5
4
|
|
|
6
5
|
from bluesky.protocols import Movable
|
|
7
6
|
from ophyd_async.core import (
|
|
8
7
|
AsyncStatus,
|
|
9
|
-
HintedSignal,
|
|
10
8
|
StandardReadable,
|
|
9
|
+
StandardReadableFormat,
|
|
10
|
+
StrictEnum,
|
|
11
11
|
)
|
|
12
12
|
from pydantic import BaseModel, Field
|
|
13
13
|
|
|
@@ -22,12 +22,24 @@ class InvalidApertureMove(Exception):
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class AperturePosition(BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
Represents one of the available positions for the Aperture-Scatterguard.
|
|
27
|
+
Attributes:
|
|
28
|
+
aperture_x: The x position of the aperture component in mm
|
|
29
|
+
aperture_y: The y position of the aperture component in mm
|
|
30
|
+
aperture_z: The z position of the aperture component in mm
|
|
31
|
+
scatterguard_x: The x position of the scatterguard component in mm
|
|
32
|
+
scatterguard_y: The y position of the scatterguard component in mm
|
|
33
|
+
radius: Radius of the selected aperture. When in the Robot Load position, the
|
|
34
|
+
radius is defined to be 0
|
|
35
|
+
"""
|
|
36
|
+
|
|
25
37
|
aperture_x: float
|
|
26
38
|
aperture_y: float
|
|
27
39
|
aperture_z: float
|
|
28
40
|
scatterguard_x: float
|
|
29
41
|
scatterguard_y: float
|
|
30
|
-
radius: float
|
|
42
|
+
radius: float = Field(json_schema_extra={"units": "µm"}, default=0.0)
|
|
31
43
|
|
|
32
44
|
@property
|
|
33
45
|
def values(self) -> tuple[float, float, float, float, float]:
|
|
@@ -54,7 +66,7 @@ class AperturePosition(BaseModel):
|
|
|
54
66
|
@staticmethod
|
|
55
67
|
def from_gda_params(
|
|
56
68
|
name: ApertureValue,
|
|
57
|
-
radius: float
|
|
69
|
+
radius: float,
|
|
58
70
|
params: GDABeamlineParameters,
|
|
59
71
|
) -> AperturePosition:
|
|
60
72
|
return AperturePosition(
|
|
@@ -67,7 +79,7 @@ class AperturePosition(BaseModel):
|
|
|
67
79
|
)
|
|
68
80
|
|
|
69
81
|
|
|
70
|
-
class ApertureValue(
|
|
82
|
+
class ApertureValue(StrictEnum):
|
|
71
83
|
"""Maps from a short usable name to the value name in the GDA Beamline parameters"""
|
|
72
84
|
|
|
73
85
|
ROBOT_LOAD = "ROBOT_LOAD"
|
|
@@ -81,7 +93,7 @@ def load_positions_from_beamline_parameters(
|
|
|
81
93
|
) -> dict[ApertureValue, AperturePosition]:
|
|
82
94
|
return {
|
|
83
95
|
ApertureValue.ROBOT_LOAD: AperturePosition.from_gda_params(
|
|
84
|
-
ApertureValue.ROBOT_LOAD,
|
|
96
|
+
ApertureValue.ROBOT_LOAD, 0, params
|
|
85
97
|
),
|
|
86
98
|
ApertureValue.SMALL: AperturePosition.from_gda_params(
|
|
87
99
|
ApertureValue.SMALL, 20, params
|
|
@@ -120,7 +132,7 @@ class ApertureScatterguard(StandardReadable, Movable):
|
|
|
120
132
|
self.radius,
|
|
121
133
|
],
|
|
122
134
|
)
|
|
123
|
-
with self.add_children_as_readables(
|
|
135
|
+
with self.add_children_as_readables(StandardReadableFormat.HINTED_SIGNAL):
|
|
124
136
|
self.selected_aperture = create_hardware_backed_soft_signal(
|
|
125
137
|
ApertureValue, self._get_current_aperture_position
|
|
126
138
|
)
|
|
@@ -172,7 +184,7 @@ class ApertureScatterguard(StandardReadable, Movable):
|
|
|
172
184
|
|
|
173
185
|
raise InvalidApertureMove("Current aperture/scatterguard state unrecognised")
|
|
174
186
|
|
|
175
|
-
async def _get_current_radius(self) -> float
|
|
187
|
+
async def _get_current_radius(self) -> float:
|
|
176
188
|
current_value = await self._get_current_aperture_position()
|
|
177
189
|
return self._loaded_positions[current_value].radius
|
|
178
190
|
|