dls-dodal 1.36.1a0__tar.gz → 1.36.3__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.36.3/.github/CODEOWNERS +1 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/PKG-INFO +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/conftest.py +1 -28
- dls_dodal-1.36.3/docs/explanations/decisions/0003-codeowners.md +19 -0
- dls_dodal-1.36.3/docs/explanations/reviews.md +56 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/pyproject.toml +3 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/PKG-INFO +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/SOURCES.txt +8 -5
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/requires.txt +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/_version.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/__init__.py +1 -0
- dls_dodal-1.36.3/src/dodal/beamlines/adsim.py +75 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i10.py +74 -7
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i24.py +17 -1
- dls_dodal-1.36.3/src/dodal/devices/adsim.py +13 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/aperture.py +0 -7
- dls_dodal-1.36.3/src/dodal/devices/aperturescatterguard.py +243 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/apple2_undulator.py +9 -9
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/attenuator.py +15 -5
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/focusing_mirror.py +12 -3
- dls_dodal-1.36.3/src/dodal/devices/i10/i10_setting_data.py +7 -0
- dls_dodal-1.36.3/src/dodal/devices/i10/mirrors.py +24 -0
- dls_dodal-1.36.3/src/dodal/devices/i10/slits.py +37 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/dual_backlight.py +1 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/focus_mirrors.py +12 -12
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/linkam3.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/pin_image_recognition/__init__.py +2 -4
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/p99/sample_stage.py +15 -15
- dls_dodal-1.36.3/src/dodal/devices/slits.py +39 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/tetramm.py +16 -16
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/undulator_dcm.py +4 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/test_utils.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/xspress3/xspress3.py +3 -3
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zebra.py +13 -13
- dls_dodal-1.36.3/system_tests/test_adsim.py +183 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_oav_to_redis_system.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/beamlines/test_beamline_utils.py +2 -1
- dls_dodal-1.36.3/tests/conftest.py +34 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/test_i10Apple2.py +6 -6
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i22/test_dcm.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i22/test_fswitch.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/test_diamond_filter.py +2 -4
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/test_dual_backlight.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/test_focus_mirrors.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/test_pmac.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/conftest.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_oav.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_oav_utils.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_snapshots.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/p99/test_p99_stage.py +4 -3
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_aperture_scatterguard.py +54 -129
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_apple2_undulator.py +17 -17
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_attenuator.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_backlight.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_bart_robot.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_focusing_mirror.py +12 -5
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_gridscan.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_hutch_shutter.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_linkam3.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_pressure_jump_cell.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_qbpm.py +2 -4
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_shutter.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_slits.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_smargon.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_synchrotron.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_tetramm.py +22 -27
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_thawer.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_undulator.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_undulator_dcm.py +36 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_utils.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_xbpm_feedback.py +2 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_xspress3.py +2 -2
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_zebra.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plan_stubs/test_motor_util_plans.py +3 -5
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plan_stubs/test_topup_plan.py +1 -1
- dls_dodal-1.36.1a0/src/dodal/adsim.py +0 -17
- dls_dodal-1.36.1a0/src/dodal/devices/adsim.py +0 -13
- dls_dodal-1.36.1a0/src/dodal/devices/aperturescatterguard.py +0 -359
- dls_dodal-1.36.1a0/src/dodal/devices/areadetector/__init__.py +0 -10
- dls_dodal-1.36.1a0/src/dodal/devices/areadetector/adaravis.py +0 -101
- dls_dodal-1.36.1a0/src/dodal/devices/areadetector/adsim.py +0 -47
- dls_dodal-1.36.1a0/src/dodal/devices/areadetector/adutils.py +0 -81
- dls_dodal-1.36.1a0/src/dodal/devices/i10/i10_setting_data.py +0 -7
- dls_dodal-1.36.1a0/src/dodal/devices/slits.py +0 -17
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.copier-answers.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/dependabot.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/pages/index.html +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_check.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/ci.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.gitignore +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.pre-commit-config.yaml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.vscode/extensions.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.vscode/launch.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.vscode/settings.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/.vscode/tasks.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/Dockerfile +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/LICENSE +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/README.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/catalog-info.yaml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/_api.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/conf.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/explanations.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/genindex.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/coverage.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/create-beamline.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/run-tests.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/write-tests.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/how-to.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/index.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/reference/standards.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/reference.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/docs/tutorials.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/pull_request_template.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/setup.cfg +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/b01_1.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i03.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i04.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i22.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/p38.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/cli.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/beamlines/beamline_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/signal_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/CTAB.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/cryostream.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/dcm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/detector/detector_motion.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/eiger.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/eiger_odin.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i10/i10_apple2.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i22/dcm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i22/fswitch.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/pmac.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/logging_ophyd_device.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/oav_detector.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/pressure_jump_cell.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/robot.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/scintillator.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/smargon.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/thawer.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/training_rig/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/training_rig/sample_stage.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/undulator.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/epics_util.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/motor_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/util/save_panda.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/xbpm_feedback.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/log.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/src/dodal/utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_aperturescatterguard_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_eiger_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_gridscan_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_oav_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_slit_gaps_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_smargon_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_synchrotron_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_undulator_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_zebra_system.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/system_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/beamlines/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/beamlines/unit_tests/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/beamlines/unit_tests/test_i24.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/beamlines/test_device_instantiation.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i04/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/training_rig/test_sample_stage.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/conftest.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/detector/test_detector.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_dcm.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_eiger.py +1 -1
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_webcam.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/util/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_zocalo/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plans/conftest.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_cli.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/test_utils.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/unit_tests/__init__.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.36.1a0 → dls_dodal-1.36.3}/tests/unit_tests/test_log.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @DiamondLightSource/bluesky-reviewers
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.36.
|
|
3
|
+
Version: 1.36.3
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async>=0.
|
|
219
|
+
Requires-Dist: ophyd-async>=0.9.0a1
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import importlib
|
|
3
2
|
import logging
|
|
4
3
|
import os
|
|
5
4
|
import sys
|
|
@@ -18,14 +17,13 @@ from ophyd_async.core import (
|
|
|
18
17
|
PathProvider,
|
|
19
18
|
)
|
|
20
19
|
|
|
21
|
-
from dodal.common.beamlines import
|
|
20
|
+
from dodal.common.beamlines import beamline_utils
|
|
22
21
|
from dodal.common.visit import (
|
|
23
22
|
DirectoryServiceClient,
|
|
24
23
|
LocalDirectoryServiceClient,
|
|
25
24
|
StaticVisitPathProvider,
|
|
26
25
|
)
|
|
27
26
|
from dodal.log import LOGGER, GELFTCPHandler, set_up_all_logging_handlers
|
|
28
|
-
from dodal.utils import make_all_devices
|
|
29
27
|
|
|
30
28
|
MOCK_DAQ_CONFIG_PATH = "tests/devices/unit_tests/test_daq_configuration"
|
|
31
29
|
mock_paths = [
|
|
@@ -82,31 +80,6 @@ if os.getenv("PYTEST_RAISE", "0") == "1":
|
|
|
82
80
|
raise excinfo.value
|
|
83
81
|
|
|
84
82
|
|
|
85
|
-
def mock_beamline_module_filepaths(bl_name, bl_module):
|
|
86
|
-
if mock_attributes := mock_attributes_table.get(bl_name):
|
|
87
|
-
[bl_module.__setattr__(attr[0], attr[1]) for attr in mock_attributes]
|
|
88
|
-
beamline_parameters.BEAMLINE_PARAMETER_PATHS[bl_name] = (
|
|
89
|
-
"tests/test_data/i04_beamlineParameters"
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
@pytest.fixture(scope="function")
|
|
94
|
-
def module_and_devices_for_beamline(request):
|
|
95
|
-
beamline = request.param
|
|
96
|
-
with patch.dict(os.environ, {"BEAMLINE": beamline}, clear=True):
|
|
97
|
-
bl_mod = importlib.import_module("dodal.beamlines." + beamline)
|
|
98
|
-
importlib.reload(bl_mod)
|
|
99
|
-
mock_beamline_module_filepaths(beamline, bl_mod)
|
|
100
|
-
devices, exceptions = make_all_devices(
|
|
101
|
-
bl_mod,
|
|
102
|
-
include_skipped=True,
|
|
103
|
-
fake_with_ophyd_sim=True,
|
|
104
|
-
)
|
|
105
|
-
yield (bl_mod, devices, exceptions)
|
|
106
|
-
beamline_utils.clear_devices()
|
|
107
|
-
del bl_mod
|
|
108
|
-
|
|
109
|
-
|
|
110
83
|
def pytest_runtest_setup(item):
|
|
111
84
|
beamline_utils.clear_devices()
|
|
112
85
|
if LOGGER.handlers == []:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# 3. Use CODEOWNERS Github feature to restrict approved reviewers
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Accepted
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
As dodal expands and covers an increasing number of beamlines it is important to maintain quality. So far we have seen good results from following bluesky's own standards: Encouraging high test coverage, readable code (including type annotations, where appropriate) and collective ownership, including via thorough reviews which appropriately balance velocity with technical debt management. We would like to make sure this developer culture is preserved as we expand.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Have a team of approved reviewers in the DiamondLightSource Github organisation. Every PR into dodal **must** be reviewed by a member of this team before merging (enforced by repo settings and [CODEOWNERS feature](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)). Have a set of [documented criteria](../reviews.md) for becoming part of the team, with the expectation that any team that regularly works on dodal will become members over time. The hope is that a consistent set of standards can be maintained by the approver community.
|
|
14
|
+
|
|
15
|
+
## Consequences
|
|
16
|
+
|
|
17
|
+
PRs will not be mergable until an approved owner has reviewed them, approved individuals/teams will have to review/support onboarding of new individuals/teams for some time before they are approved for review.
|
|
18
|
+
|
|
19
|
+
Once a critical mass of Diamond staff are used to this way of working, this ADR may be obsolete and should be replaced with a more open review system.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Approved Reviewers
|
|
2
|
+
|
|
3
|
+
Code reviews are an important tool for ensuring both quality and collective responsibility for the codebase. Dodal PRs *must* be reviewed by a member of [the approved review team](https://github.com/orgs/DiamondLightSource/teams/bluesky-reviewers) before they are merged.
|
|
4
|
+
|
|
5
|
+
## Review Standards and Practices
|
|
6
|
+
|
|
7
|
+
When reviewing you should ensure the code meets the [repository standards](../reference/standards.rst) and [device standards](../reference/device-standards.rst). Approved reviewers will adhere to the following, if they do not, junior reviewers and reviewees should feel empowered to hold them to account.
|
|
8
|
+
|
|
9
|
+
### Questions and Comments
|
|
10
|
+
|
|
11
|
+
Questions and requests for clarification are encouraged. If you have comments for the reviewer you could add them with the following prefixes to be helpful:
|
|
12
|
+
|
|
13
|
+
- **Must**: This will negatively effect functionality if not implemented. The PR will not be merged until the comment is addressed to both the reviewer and developer's satisfaction.
|
|
14
|
+
- **Should**: This will improve quality/performance/etc. is but unlikely to affect functionality. If the developer doesn't want to do this they should write an explanation.
|
|
15
|
+
- **Could**: Similar to **Should** but without the requirement for explicit justification. The developer can dismiss on the grounds that velocity is the priority at the moment.
|
|
16
|
+
- **Nit**: Preference only, the developer can dismiss without any justification.
|
|
17
|
+
|
|
18
|
+
### The Happy Path
|
|
19
|
+
|
|
20
|
+
If the review passes then the reviewer should approve the change and either the reviewer or PR author should merge it.
|
|
21
|
+
|
|
22
|
+
### Requesting Changes
|
|
23
|
+
|
|
24
|
+
If the review fails the reviewer should request any changes (this issue is said to require rework)
|
|
25
|
+
A developer should ideally pick up any rework PRs before starting new work
|
|
26
|
+
When a developer is happy that a rework is complete they should press the re-request review button on the PR
|
|
27
|
+
|
|
28
|
+
### Making Changes
|
|
29
|
+
|
|
30
|
+
Reviewers should feel free to make small changes to a PR as part of a review e.g. typos, poorly named variables, fixing a test. However, if code has been changed in this way they need then need to run it past another developer (ideally the original developer). This means that no code is merged into main without being looked at by at least 2 people, ensuring collective responsibility for the codebase.
|
|
31
|
+
|
|
32
|
+
### Dismissing Stale Reviews
|
|
33
|
+
|
|
34
|
+
There may be times where one person requests changes on a PR, these changes are addressed and another person then approves it. In this case the PR still cannot be merged until the original review is dismissed. We're happy for people to dismiss stale reviews with the understanding that:
|
|
35
|
+
|
|
36
|
+
- The new reviewer should check that the must and should comments have been addressed
|
|
37
|
+
- If it's a big change it may still be worth the original reviewer looking again, if so they should make this clear to the original reviewer and the person that wrote the code
|
|
38
|
+
|
|
39
|
+
## Joining the Review Team
|
|
40
|
+
|
|
41
|
+
At least two members of the review team from two different DLS teams *must* approve adding a new member, neither of them can be on the new member's DLS team. At least one of the approvers should ideally be a senior engineer but this will not always be possible.
|
|
42
|
+
|
|
43
|
+
In the event of a rejection the review team should provide concise and actionable feedback and set a date for re-consideration.
|
|
44
|
+
|
|
45
|
+
### Criteria for New Members
|
|
46
|
+
|
|
47
|
+
New members should be regular contributors to dodal and should have been "shadow-reviewing" approved reviewers for a period of weeks or months before becoming approved. In both their contributions and reviews they should be consistently demonstrating the following *without prompting*:
|
|
48
|
+
|
|
49
|
+
- A good understanding of Python, including advanced langauge features such as [generators](https://wiki.python.org/moin/Generators), [coroutines](https://docs.python.org/3/library/asyncio-task.html), [comprehensions](https://www.geeksforgeeks.org/comprehensions-in-python/) and [pattern matching](https://peps.python.org/pep-0636/).
|
|
50
|
+
- A pythonic coding style, demonstrated by using appropriate class/variable names, aherence to [PEP 8](https://peps.python.org/pep-0008).
|
|
51
|
+
- Adherence to the review standards above as well as the [repository standards](../reference/standards.rst) and [device standards](../reference/device-standards.rst).
|
|
52
|
+
- Independent (i.e. not just to satisfy a reviewer) motivation to make sure all code in dodal is well-tested. Use of unit and system tests as appropriate. Clear effort made to keep test coverage high (>90%).
|
|
53
|
+
- Advanced understanding of bluesky and ophyd-async including concepts and best practices, such as how to appropriately split logic between devices/plans/callbacks.
|
|
54
|
+
- Humility in the use of reviewing as a tool in a way that balances the need to preserve quality with the need for progress. Appropriate use of the Must/Should/Could/Nit system documented above is helpful in showing this, as it gives the reviewer the opportunity to weight their comments in terms of project impact. They should also demonstrate similar humiliary as a reviewee.
|
|
55
|
+
|
|
56
|
+
Additionally, they should be regularly raising issues in the repository and demonstrating the ability to write well formed issues, with well defined acceptance criteria, that are understandable without large amounts of context.
|
|
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
|
|
|
15
15
|
dependencies = [
|
|
16
16
|
"click",
|
|
17
17
|
"ophyd",
|
|
18
|
-
"ophyd-async >= 0.
|
|
18
|
+
"ophyd-async >= 0.9.0a1",
|
|
19
19
|
"bluesky",
|
|
20
20
|
"pyepics",
|
|
21
21
|
"dataclasses-json",
|
|
@@ -101,6 +101,7 @@ reportMissingImports = false # Ignore missing stubs in imported modules
|
|
|
101
101
|
asyncio_mode = "auto"
|
|
102
102
|
markers = [
|
|
103
103
|
"s03: marks tests as requiring the s03 simulator running (deselect with '-m \"not s03\"')",
|
|
104
|
+
"adsim: marks tests as requiring the containerised AreaDetector simulator running (deselect with '-m \"not adsim\"')",
|
|
104
105
|
"skip_in_pycharm: marks test as not working in pycharm testrunner",
|
|
105
106
|
]
|
|
106
107
|
addopts = """
|
|
@@ -150,7 +151,7 @@ allowlist_externals =
|
|
|
150
151
|
sphinx-build
|
|
151
152
|
sphinx-autobuild
|
|
152
153
|
commands =
|
|
153
|
-
tests: pytest -m 'not s03' --cov=dodal --cov-report term --cov-report xml:cov.xml {posargs}
|
|
154
|
+
tests: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:cov.xml {posargs}
|
|
154
155
|
type-checking: pyright src tests {posargs}
|
|
155
156
|
pre-commit: pre-commit run --all-files --show-diff-on-failure {posargs}
|
|
156
157
|
docs: sphinx-{posargs:build -E} -T docs build/html
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.36.
|
|
3
|
+
Version: 1.36.3
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
|
|
|
216
216
|
License-File: LICENSE
|
|
217
217
|
Requires-Dist: click
|
|
218
218
|
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: ophyd-async>=0.
|
|
219
|
+
Requires-Dist: ophyd-async>=0.9.0a1
|
|
220
220
|
Requires-Dist: bluesky
|
|
221
221
|
Requires-Dist: pyepics
|
|
222
222
|
Requires-Dist: dataclasses-json
|
|
@@ -9,6 +9,7 @@ conftest.py
|
|
|
9
9
|
pull_request_template.md
|
|
10
10
|
pyproject.toml
|
|
11
11
|
.devcontainer/devcontainer.json
|
|
12
|
+
.github/CODEOWNERS
|
|
12
13
|
.github/CONTRIBUTING.md
|
|
13
14
|
.github/dependabot.yml
|
|
14
15
|
.github/ISSUE_TEMPLATE/issue_template.md
|
|
@@ -41,8 +42,10 @@ docs/_templates/autosummary/class.rst
|
|
|
41
42
|
docs/_templates/autosummary/module.rst
|
|
42
43
|
docs/assets/zocalo.png
|
|
43
44
|
docs/explanations/decisions.md
|
|
45
|
+
docs/explanations/reviews.md
|
|
44
46
|
docs/explanations/decisions/0001-record-architecture-decisions.md
|
|
45
47
|
docs/explanations/decisions/0002-switched-to-python-copier-template.md
|
|
48
|
+
docs/explanations/decisions/0003-codeowners.md
|
|
46
49
|
docs/explanations/decisions/0003-make-devices-factory.md
|
|
47
50
|
docs/explanations/decisions/COPYME
|
|
48
51
|
docs/how-to/build-docs.md
|
|
@@ -78,7 +81,6 @@ src/dls_dodal.egg-info/top_level.txt
|
|
|
78
81
|
src/dodal/__init__.py
|
|
79
82
|
src/dodal/__main__.py
|
|
80
83
|
src/dodal/_version.py
|
|
81
|
-
src/dodal/adsim.py
|
|
82
84
|
src/dodal/cli.py
|
|
83
85
|
src/dodal/log.py
|
|
84
86
|
src/dodal/utils.py
|
|
@@ -86,6 +88,7 @@ src/dodal/beamline_specific_utils/__init__.py
|
|
|
86
88
|
src/dodal/beamline_specific_utils/i03.py
|
|
87
89
|
src/dodal/beamlines/README.md
|
|
88
90
|
src/dodal/beamlines/__init__.py
|
|
91
|
+
src/dodal/beamlines/adsim.py
|
|
89
92
|
src/dodal/beamlines/b01_1.py
|
|
90
93
|
src/dodal/beamlines/i03.py
|
|
91
94
|
src/dodal/beamlines/i04.py
|
|
@@ -155,10 +158,6 @@ src/dodal/devices/webcam.py
|
|
|
155
158
|
src/dodal/devices/xbpm_feedback.py
|
|
156
159
|
src/dodal/devices/zebra.py
|
|
157
160
|
src/dodal/devices/zebra_controlled_shutter.py
|
|
158
|
-
src/dodal/devices/areadetector/__init__.py
|
|
159
|
-
src/dodal/devices/areadetector/adaravis.py
|
|
160
|
-
src/dodal/devices/areadetector/adsim.py
|
|
161
|
-
src/dodal/devices/areadetector/adutils.py
|
|
162
161
|
src/dodal/devices/areadetector/plugins/CAM.py
|
|
163
162
|
src/dodal/devices/areadetector/plugins/MJPG.py
|
|
164
163
|
src/dodal/devices/detector/__init__.py
|
|
@@ -171,6 +170,8 @@ src/dodal/devices/i03/__init__.py
|
|
|
171
170
|
src/dodal/devices/i04/transfocator.py
|
|
172
171
|
src/dodal/devices/i10/i10_apple2.py
|
|
173
172
|
src/dodal/devices/i10/i10_setting_data.py
|
|
173
|
+
src/dodal/devices/i10/mirrors.py
|
|
174
|
+
src/dodal/devices/i10/slits.py
|
|
174
175
|
src/dodal/devices/i20_1/__init__.py
|
|
175
176
|
src/dodal/devices/i22/dcm.py
|
|
176
177
|
src/dodal/devices/i22/fswitch.py
|
|
@@ -226,6 +227,7 @@ src/dodal/plans/__init__.py
|
|
|
226
227
|
src/dodal/plans/scanspec.py
|
|
227
228
|
src/dodal/plans/wrapped.py
|
|
228
229
|
system_tests/__init__.py
|
|
230
|
+
system_tests/test_adsim.py
|
|
229
231
|
system_tests/test_aperturescatterguard_system.py
|
|
230
232
|
system_tests/test_eiger_system.py
|
|
231
233
|
system_tests/test_gridscan_system.py
|
|
@@ -238,6 +240,7 @@ system_tests/test_undulator_system.py
|
|
|
238
240
|
system_tests/test_zebra_system.py
|
|
239
241
|
system_tests/test_zocalo_results.py
|
|
240
242
|
tests/__init__.py
|
|
243
|
+
tests/conftest.py
|
|
241
244
|
tests/fake_beamline.py
|
|
242
245
|
tests/fake_beamline_all_devices_raise_exception.py
|
|
243
246
|
tests/fake_beamline_broken_dependency.py
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from ophyd_async.epics.adsimdetector import SimDetector
|
|
4
|
+
|
|
5
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
6
|
+
device_factory,
|
|
7
|
+
get_path_provider,
|
|
8
|
+
set_path_provider,
|
|
9
|
+
)
|
|
10
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
11
|
+
from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
|
|
12
|
+
from dodal.devices.adsim import SimStage
|
|
13
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
14
|
+
from dodal.utils import BeamlinePrefix
|
|
15
|
+
|
|
16
|
+
BL = "adsim"
|
|
17
|
+
PREFIX = BeamlinePrefix("t01")
|
|
18
|
+
set_log_beamline(BL)
|
|
19
|
+
set_utils_beamline(BL)
|
|
20
|
+
|
|
21
|
+
set_path_provider(
|
|
22
|
+
StaticVisitPathProvider(
|
|
23
|
+
BL,
|
|
24
|
+
Path("/tmp"),
|
|
25
|
+
client=LocalDirectoryServiceClient(),
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
"""
|
|
30
|
+
Beamline module for use with the simulated AreaDetector and motors.
|
|
31
|
+
These devices are simulated at the EPICS level, enabling testing of
|
|
32
|
+
dodal and ophyd-async against what appear to be "real" signals.
|
|
33
|
+
|
|
34
|
+
Usage Example
|
|
35
|
+
-------------
|
|
36
|
+
|
|
37
|
+
Start the simulated beamline by following the epics-containers tutorial at
|
|
38
|
+
https://epics-containers.github.io/main/tutorials/launch_example.html
|
|
39
|
+
And ensure that the signals are visible:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
export EPICS_CA_ADDR_LIST=127.0.0.1
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
How to use the devices in a plan:
|
|
46
|
+
In an ipython terminal run:
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from bluesky.run_engine import RunEngine
|
|
50
|
+
|
|
51
|
+
from dodal.beamlines.adsim import det, stage
|
|
52
|
+
from dodal.plans import count
|
|
53
|
+
|
|
54
|
+
RE = RunEngine()
|
|
55
|
+
d = det(connect_immediately=True)
|
|
56
|
+
s = stage(connect_immediately=True)
|
|
57
|
+
RE(count([d], num=10))
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@device_factory()
|
|
64
|
+
def stage() -> SimStage:
|
|
65
|
+
return SimStage(f"{PREFIX.beamline_prefix}-MO-SIMC-01:")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@device_factory()
|
|
69
|
+
def det() -> SimDetector:
|
|
70
|
+
return SimDetector(
|
|
71
|
+
f"{PREFIX.beamline_prefix}-DI-CAM-01:",
|
|
72
|
+
path_provider=get_path_provider(),
|
|
73
|
+
drv_suffix="DET:",
|
|
74
|
+
hdf_suffix="HDF:",
|
|
75
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from dodal.common.beamlines.beamline_utils import device_instantiation
|
|
3
|
+
from dodal.common.beamlines.beamline_utils import device_factory, device_instantiation
|
|
4
4
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
5
|
from dodal.devices.apple2_undulator import (
|
|
6
6
|
UndulatorGap,
|
|
@@ -14,13 +14,18 @@ from dodal.devices.i10.i10_apple2 import (
|
|
|
14
14
|
LinearArbitraryAngle,
|
|
15
15
|
)
|
|
16
16
|
from dodal.devices.i10.i10_setting_data import I10Grating
|
|
17
|
+
from dodal.devices.i10.mirrors import PiezoMirror
|
|
18
|
+
from dodal.devices.i10.slits import I10PrimarySlits, I10Slits
|
|
17
19
|
from dodal.devices.pgm import PGM
|
|
20
|
+
from dodal.devices.slits import MinimalSlits
|
|
18
21
|
from dodal.log import set_beamline as set_log_beamline
|
|
19
22
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
20
23
|
|
|
21
24
|
BL = get_beamline_name("i10")
|
|
22
25
|
set_log_beamline(BL)
|
|
23
26
|
set_utils_beamline(BL)
|
|
27
|
+
PREFIX = BeamlinePrefix(BL)
|
|
28
|
+
|
|
24
29
|
|
|
25
30
|
LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
|
|
26
31
|
"""
|
|
@@ -39,7 +44,7 @@ def idd_gap(
|
|
|
39
44
|
return device_instantiation(
|
|
40
45
|
device_factory=UndulatorGap,
|
|
41
46
|
name="idd_gap",
|
|
42
|
-
prefix=f"{
|
|
47
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
43
48
|
wait=wait_for_connection,
|
|
44
49
|
fake=fake_with_ophyd_sim,
|
|
45
50
|
bl_prefix=False,
|
|
@@ -52,7 +57,7 @@ def idd_phase_axes(
|
|
|
52
57
|
return device_instantiation(
|
|
53
58
|
device_factory=UndulatorPhaseAxes,
|
|
54
59
|
name="idd_phase_axes",
|
|
55
|
-
prefix=f"{
|
|
60
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
56
61
|
top_outer="RPQ1",
|
|
57
62
|
top_inner="RPQ2",
|
|
58
63
|
btm_inner="RPQ3",
|
|
@@ -69,7 +74,7 @@ def idd_jaw(
|
|
|
69
74
|
return device_instantiation(
|
|
70
75
|
device_factory=UndulatorJawPhase,
|
|
71
76
|
name="idd_jaw",
|
|
72
|
-
prefix=f"{
|
|
77
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
73
78
|
move_pv="RPQ1",
|
|
74
79
|
wait=wait_for_connection,
|
|
75
80
|
fake=fake_with_ophyd_sim,
|
|
@@ -83,7 +88,7 @@ def idu_gap(
|
|
|
83
88
|
return device_instantiation(
|
|
84
89
|
device_factory=UndulatorGap,
|
|
85
90
|
name="idu_gap",
|
|
86
|
-
prefix=f"{
|
|
91
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
87
92
|
wait=wait_for_connection,
|
|
88
93
|
fake=fake_with_ophyd_sim,
|
|
89
94
|
bl_prefix=False,
|
|
@@ -96,7 +101,7 @@ def idu_phase_axes(
|
|
|
96
101
|
return device_instantiation(
|
|
97
102
|
device_factory=UndulatorPhaseAxes,
|
|
98
103
|
name="idu_phase_axes",
|
|
99
|
-
prefix=f"{
|
|
104
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
100
105
|
top_outer="RPQ1",
|
|
101
106
|
top_inner="RPQ2",
|
|
102
107
|
btm_inner="RPQ3",
|
|
@@ -113,7 +118,7 @@ def idu_jaw(
|
|
|
113
118
|
return device_instantiation(
|
|
114
119
|
device_factory=UndulatorJawPhase,
|
|
115
120
|
name="idu_jaw",
|
|
116
|
-
prefix=f"{
|
|
121
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
|
|
117
122
|
move_pv="RPQ1",
|
|
118
123
|
wait=wait_for_connection,
|
|
119
124
|
fake=fake_with_ophyd_sim,
|
|
@@ -255,3 +260,65 @@ def idd_la_angle(
|
|
|
255
260
|
wait=wait_for_connection,
|
|
256
261
|
fake=fake_with_ophyd_sim,
|
|
257
262
|
)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
@device_factory()
|
|
266
|
+
def first_mirror() -> PiezoMirror:
|
|
267
|
+
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:")
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
@device_factory()
|
|
271
|
+
def switching_mirror() -> PiezoMirror:
|
|
272
|
+
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:")
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
@device_factory()
|
|
276
|
+
def slit_1() -> I10PrimarySlits:
|
|
277
|
+
return I10PrimarySlits(
|
|
278
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
@device_factory()
|
|
283
|
+
def slit_2() -> I10Slits:
|
|
284
|
+
return I10Slits(
|
|
285
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
@device_factory()
|
|
290
|
+
def slit_3() -> I10Slits:
|
|
291
|
+
return I10Slits(
|
|
292
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:",
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
"""Rasor devices"""
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
@device_factory()
|
|
300
|
+
def focusing_mirror() -> PiezoMirror:
|
|
301
|
+
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:")
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
@device_factory()
|
|
305
|
+
def slit_4() -> MinimalSlits:
|
|
306
|
+
return MinimalSlits(
|
|
307
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
|
|
308
|
+
x_gap="XSIZE",
|
|
309
|
+
y_gap="YSIZE",
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
@device_factory()
|
|
314
|
+
def slit_5() -> I10Slits:
|
|
315
|
+
return I10Slits(
|
|
316
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
@device_factory()
|
|
321
|
+
def slit_6() -> I10Slits:
|
|
322
|
+
return I10Slits(
|
|
323
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:",
|
|
324
|
+
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from dodal.common.beamlines.beamline_utils import BL, device_instantiation
|
|
2
2
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
3
|
+
from dodal.devices.attenuator import ReadOnlyAttenuator
|
|
3
4
|
from dodal.devices.detector import DetectorParams
|
|
4
5
|
from dodal.devices.eiger import EigerDetector
|
|
5
6
|
from dodal.devices.hutch_shutter import HutchShutter
|
|
@@ -20,7 +21,7 @@ from dodal.log import set_beamline as set_log_beamline
|
|
|
20
21
|
from dodal.utils import get_beamline_name, skip_device
|
|
21
22
|
|
|
22
23
|
ZOOM_PARAMS_FILE = (
|
|
23
|
-
"/dls_sw/i24/software/gda_versions/
|
|
24
|
+
"/dls_sw/i24/software/gda_versions/gda/config/xml/jCameraManZoomLevels.xml"
|
|
24
25
|
)
|
|
25
26
|
DISPLAY_CONFIG = "/dls_sw/i24/software/gda_versions/var/display.configuration"
|
|
26
27
|
|
|
@@ -29,6 +30,21 @@ set_log_beamline(BL)
|
|
|
29
30
|
set_utils_beamline(BL)
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
def attenuator(
|
|
34
|
+
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
35
|
+
) -> ReadOnlyAttenuator:
|
|
36
|
+
"""Get a read-only attenuator device for i24, instantiate it if it hasn't already
|
|
37
|
+
been. If this is called when already instantiated in i24, it will return the
|
|
38
|
+
existing object."""
|
|
39
|
+
return device_instantiation(
|
|
40
|
+
ReadOnlyAttenuator,
|
|
41
|
+
"attenuator",
|
|
42
|
+
"-OP-ATTN-01:",
|
|
43
|
+
wait_for_connection,
|
|
44
|
+
fake_with_ophyd_sim,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
32
48
|
def aperture(
|
|
33
49
|
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
34
50
|
) -> Aperture:
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from ophyd_async.core import StandardReadable
|
|
2
|
+
from ophyd_async.epics.motor import Motor
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class SimStage(StandardReadable):
|
|
6
|
+
"""Simulated Sample Stage for use with the containerised simulated beamline
|
|
7
|
+
https://github.com/epics-containers/example-services"""
|
|
8
|
+
|
|
9
|
+
def __init__(self, prefix: str, name: str = "sim"):
|
|
10
|
+
with self.add_children_as_readables():
|
|
11
|
+
self.x = Motor(prefix + "M1")
|
|
12
|
+
self.y = Motor(prefix + "M2")
|
|
13
|
+
super().__init__(name=name)
|
|
@@ -12,10 +12,3 @@ class Aperture(StandardReadable):
|
|
|
12
12
|
self.medium = epics_signal_r(float, prefix + "Y:MEDIUM_CALC")
|
|
13
13
|
self.large = epics_signal_r(float, prefix + "Y:LARGE_CALC")
|
|
14
14
|
super().__init__(name)
|
|
15
|
-
|
|
16
|
-
async def in_position(self):
|
|
17
|
-
return (
|
|
18
|
-
await self.small.get_value()
|
|
19
|
-
or await self.medium.get_value()
|
|
20
|
-
or await self.large.get_value()
|
|
21
|
-
)
|