dls-dodal 1.34.1__tar.gz → 1.35.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.
Files changed (362) hide show
  1. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/PKG-INFO +2 -2
  2. {dls_dodal-1.34.1/tests → dls_dodal-1.35.0}/conftest.py +14 -13
  3. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/pyproject.toml +6 -6
  4. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
  5. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/SOURCES.txt +8 -2
  6. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/requires.txt +1 -1
  7. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/_version.py +2 -2
  8. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i22.py +24 -11
  9. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i24.py +4 -4
  10. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/p38.py +23 -11
  11. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/beamlines/beamline_utils.py +1 -2
  12. dls_dodal-1.35.0/src/dodal/common/crystal_metadata.py +61 -0
  13. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/signal_utils.py +10 -14
  14. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/CTAB.py +1 -1
  15. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/aperture.py +1 -1
  16. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/aperturescatterguard.py +20 -8
  17. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/apple2_undulator.py +30 -29
  18. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/plugins/CAM.py +3 -5
  19. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/plugins/MJPG.py +1 -1
  20. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/attenuator.py +1 -1
  21. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/backlight.py +4 -5
  22. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/cryostream.py +3 -5
  23. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/dcm.py +26 -2
  24. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/detector_motion.py +3 -5
  25. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/diamond_filter.py +3 -4
  26. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/fast_grid_scan.py +1 -1
  27. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/fluorescence_detector_motion.py +5 -7
  28. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/focusing_mirror.py +12 -11
  29. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/hutch_shutter.py +4 -5
  30. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i10/i10_apple2.py +20 -19
  31. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i10/i10_setting_data.py +2 -2
  32. dls_dodal-1.35.0/src/dodal/devices/i22/dcm.py +124 -0
  33. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i22/fswitch.py +5 -5
  34. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/aperture.py +3 -5
  35. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/beamstop.py +3 -5
  36. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/dcm.py +1 -1
  37. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/dual_backlight.py +4 -6
  38. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/pmac.py +35 -46
  39. dls_dodal-1.35.0/src/dodal/devices/i24/vgonio.py +16 -0
  40. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/ipin.py +5 -3
  41. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/linkam3.py +7 -7
  42. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/oav_detector.py +3 -3
  43. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +8 -7
  44. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +9 -7
  45. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +16 -16
  46. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +5 -5
  47. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +6 -6
  48. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/utils.py +2 -2
  49. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/p99/sample_stage.py +3 -5
  50. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/pgm.py +5 -6
  51. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/qbpm.py +1 -1
  52. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/robot.py +3 -3
  53. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/smargon.py +1 -1
  54. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/synchrotron.py +9 -4
  55. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/tetramm.py +7 -7
  56. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/thawer.py +13 -7
  57. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/undulator.py +5 -5
  58. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/epics_util.py +1 -1
  59. dls_dodal-1.35.0/src/dodal/devices/watsonmarlow323_pump.py +45 -0
  60. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/webcam.py +9 -2
  61. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/xbpm_feedback.py +3 -5
  62. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/xspress3/xspress3.py +8 -9
  63. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/xspress3/xspress3_channel.py +3 -5
  64. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/zebra.py +7 -6
  65. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/zebra_controlled_shutter.py +5 -6
  66. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/zocalo/__init__.py +2 -2
  67. dls_dodal-1.35.0/src/dodal/devices/zocalo/zocalo_constants.py +3 -0
  68. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/zocalo/zocalo_interaction.py +2 -1
  69. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/zocalo/zocalo_results.py +92 -79
  70. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/utils.py +4 -0
  71. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_oav_to_redis_system.py +1 -1
  72. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_zocalo_results.py +36 -15
  73. dls_dodal-1.35.0/tests/beamlines/unit_tests/test_i24.py +27 -0
  74. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/beamlines/test_beamline_utils.py +1 -2
  75. dls_dodal-1.35.0/tests/common/test_crystal_metadata.py +37 -0
  76. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/test_i10Apple2.py +39 -29
  77. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i22/test_dcm.py +15 -38
  78. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/i24/test_pmac.py +3 -3
  79. dls_dodal-1.35.0/tests/devices/unit_tests/i24/test_vgonio.py +25 -0
  80. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +3 -3
  81. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +7 -7
  82. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_oav_utils.py +4 -1
  83. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_snapshots.py +11 -7
  84. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +4 -6
  85. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_apple2_undulator.py +5 -7
  86. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_dcm.py +10 -0
  87. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_eiger.py +1 -2
  88. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_focusing_mirror.py +2 -2
  89. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_gridscan.py +2 -2
  90. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -2
  91. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_linkam3.py +1 -1
  92. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_tetramm.py +1 -1
  93. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_thawer.py +5 -7
  94. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_undulator_dcm.py +1 -2
  95. dls_dodal-1.35.0/tests/devices/unit_tests/test_watsonmarlow323_pump.py +47 -0
  96. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_xspress3.py +1 -1
  97. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_zebra.py +3 -3
  98. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_zocalo_interaction.py +1 -1
  99. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_zocalo_results.py +44 -47
  100. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_zocalo/__main__.py +33 -12
  101. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +12 -2
  102. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/plans/test_motor_util_plans.py +6 -6
  103. dls_dodal-1.34.1/src/dodal/devices/i22/dcm.py +0 -156
  104. dls_dodal-1.34.1/src/dodal/devices/i24/i24_vgonio.py +0 -17
  105. dls_dodal-1.34.1/tests/beamlines/unit_tests/test_i24.py +0 -12
  106. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.copier-answers.yml +0 -0
  107. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.devcontainer/devcontainer.json +0 -0
  108. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/CONTRIBUTING.md +0 -0
  109. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  110. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/actions/install_requirements/action.yml +0 -0
  111. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/dependabot.yml +0 -0
  112. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/pages/index.html +0 -0
  113. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/pages/make_switcher.py +0 -0
  114. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_check.yml +0 -0
  115. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_dist.yml +0 -0
  116. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_docs.yml +0 -0
  117. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_pypi.yml +0 -0
  118. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_release.yml +0 -0
  119. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_test.yml +0 -0
  120. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/_tox.yml +0 -0
  121. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/ci.yml +0 -0
  122. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.github/workflows/periodic.yml +0 -0
  123. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.gitignore +0 -0
  124. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.pre-commit-config.yaml +0 -0
  125. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.vscode/extensions.json +0 -0
  126. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.vscode/launch.json +0 -0
  127. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.vscode/settings.json +0 -0
  128. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/.vscode/tasks.json +0 -0
  129. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/Dockerfile +0 -0
  130. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/LICENSE +0 -0
  131. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/README.md +0 -0
  132. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/catalog-info.yaml +0 -0
  133. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/_api.rst +0 -0
  134. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/_templates/autosummary/class.rst +0 -0
  135. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/_templates/autosummary/module.rst +0 -0
  136. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/_templates/custom-module-template.rst +0 -0
  137. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/assets/zocalo.png +0 -0
  138. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/conf.py +0 -0
  139. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  140. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  141. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/explanations/decisions/COPYME +0 -0
  142. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/explanations/decisions.md +0 -0
  143. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/explanations.md +0 -0
  144. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/genindex.md +0 -0
  145. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/build-docs.md +0 -0
  146. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/contribute.md +0 -0
  147. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/coverage.md +0 -0
  148. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/create-beamline.rst +0 -0
  149. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/dev-install.md +0 -0
  150. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/excalidraw.md +0 -0
  151. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/lint.md +0 -0
  152. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/lock-requirements.md +0 -0
  153. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  154. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/make-release.md +0 -0
  155. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/move-code.rst +0 -0
  156. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/pypi.md +0 -0
  157. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/run-tests.md +0 -0
  158. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/static-analysis.md +0 -0
  159. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/update-template.md +0 -0
  160. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/write-tests.md +0 -0
  161. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to/zocalo.rst +0 -0
  162. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/how-to.md +0 -0
  163. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/images/dls-logo.svg +0 -0
  164. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/images/excalidraw-example.svg +0 -0
  165. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/index.md +0 -0
  166. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/reference/device-standards.rst +0 -0
  167. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/reference/standards.rst +0 -0
  168. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/reference.md +0 -0
  169. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/tutorials/get_started.rst +0 -0
  170. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/tutorials/installation.md +0 -0
  171. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/docs/tutorials.md +0 -0
  172. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/pull_request_template.md +0 -0
  173. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/setup.cfg +0 -0
  174. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/__init__.py +0 -0
  175. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  176. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  177. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  178. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/__init__.py +0 -0
  179. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/__main__.py +0 -0
  180. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/adsim.py +0 -0
  181. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  182. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  183. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/README.md +0 -0
  184. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/__init__.py +0 -0
  185. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/b01_1.py +0 -0
  186. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i03.py +0 -0
  187. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i04.py +0 -0
  188. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i10.py +0 -0
  189. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i13_1.py +0 -0
  190. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i20_1.py +0 -0
  191. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/i23.py +0 -0
  192. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/p45.py +0 -0
  193. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/p99.py +0 -0
  194. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/beamlines/training_rig.py +0 -0
  195. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/cli.py +0 -0
  196. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/__init__.py +0 -0
  197. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/beamlines/__init__.py +0 -0
  198. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  199. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  200. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/coordination.py +0 -0
  201. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/maths.py +0 -0
  202. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/types.py +0 -0
  203. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/udc_directory_provider.py +0 -0
  204. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/common/visit.py +0 -0
  205. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/__init__.py +0 -0
  206. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/adsim.py +0 -0
  207. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/__init__.py +0 -0
  208. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/adaravis.py +0 -0
  209. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/adsim.py +0 -0
  210. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/areadetector/adutils.py +0 -0
  211. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/__init__.py +0 -0
  212. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  213. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  214. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  215. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/detector/detector.py +0 -0
  216. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/eiger.py +0 -0
  217. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/eiger_odin.py +0 -0
  218. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/flux.py +0 -0
  219. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i03/__init__.py +0 -0
  220. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i04/transfocator.py +0 -0
  221. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  222. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i22/nxsas.py +0 -0
  223. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/__init__.py +0 -0
  224. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  225. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  226. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/motors.py +0 -0
  227. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/__init__.py +0 -0
  228. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  229. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  230. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  231. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  232. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  233. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/p45.py +0 -0
  234. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/p99/__init__.py +0 -0
  235. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  236. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/scatterguard.py +0 -0
  237. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/scintillator.py +0 -0
  238. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/slits.py +0 -0
  239. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/status.py +0 -0
  240. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/training_rig/__init__.py +0 -0
  241. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  242. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/turbo_slit.py +0 -0
  243. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/undulator_dcm.py +0 -0
  244. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/__init__.py +0 -0
  245. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  246. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  247. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/motor_utils.py +0 -0
  248. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/save_panda.py +0 -0
  249. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/devices/util/test_utils.py +0 -0
  250. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/log.py +0 -0
  251. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  252. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/plans/check_topup.py +0 -0
  253. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/plans/data_session_metadata.py +0 -0
  254. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/src/dodal/plans/motor_util_plans.py +0 -0
  255. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/__init__.py +0 -0
  256. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  257. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_eiger_system.py +0 -0
  258. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_gridscan_system.py +0 -0
  259. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_oav_system.py +0 -0
  260. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_slit_gaps_system.py +0 -0
  261. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_smargon_system.py +0 -0
  262. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_synchrotron_system.py +0 -0
  263. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_undulator_system.py +0 -0
  264. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/system_tests/test_zebra_system.py +0 -0
  265. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/__init__.py +0 -0
  266. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/beamlines/__init__.py +0 -0
  267. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/beamlines/unit_tests/__init__.py +0 -0
  268. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  269. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  270. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/__init__.py +0 -0
  271. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/beamlines/__init__.py +0 -0
  272. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  273. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  274. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  275. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/test_coordination.py +0 -0
  276. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/test_maths.py +0 -0
  277. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/test_udc_directory_provider.py +0 -0
  278. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/common/test_visit.py +0 -0
  279. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/__init__.py +0 -0
  280. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i04/__init__.py +0 -0
  281. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i04/test_transfocator.py +0 -0
  282. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  283. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  284. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  285. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  286. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  287. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  288. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i22/test_fswitch.py +0 -0
  289. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/i22/test_metadataholder.py +0 -0
  290. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/test_diamond_filter.py +0 -0
  291. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  292. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/__init__.py +0 -0
  293. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/conftest.py +0 -0
  294. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  295. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  296. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  297. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/i24/__init__.py +0 -0
  298. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  299. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/__init__.py +0 -0
  300. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  301. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  302. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  303. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  304. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  305. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  306. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  307. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  308. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  309. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  310. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  311. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  312. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  313. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  314. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  315. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  316. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  317. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  318. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  319. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  320. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_odin.py +0 -0
  321. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  322. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_shutter.py +0 -0
  323. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_slits.py +0 -0
  324. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  325. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_status.py +0 -0
  326. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  327. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_undulator.py +0 -0
  328. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_utils.py +0 -0
  329. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  330. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  331. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/util/__init__.py +0 -0
  332. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  333. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  334. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  335. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  336. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline.py +0 -0
  337. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  338. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_broken_dependency.py +0 -0
  339. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_dependencies.py +0 -0
  340. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  341. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  342. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_beamline_some_devices_working.py +0 -0
  343. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_zocalo/README.rst +0 -0
  344. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/fake_zocalo/__init__.py +0 -0
  345. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/plans/test_topup_plan.py +0 -0
  346. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  347. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_cli.py +0 -0
  348. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/bad_beamlineParameters +0 -0
  349. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/i04_beamlineParameters +0 -0
  350. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  351. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  352. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  353. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  354. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  355. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  356. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  357. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/topup_long_delay.txt +0 -0
  358. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_data/topup_short_params.txt +0 -0
  359. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/test_utils.py +0 -0
  360. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/unit_tests/__init__.py +0 -0
  361. {dls_dodal-1.34.1 → dls_dodal-1.35.0}/tests/unit_tests/test_cli.py +0 -0
  362. {dls_dodal-1.34.1 → dls_dodal-1.35.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.34.1
3
+ Version: 1.35.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async<0.8,>=0.7.0a1
219
+ Requires-Dist: ophyd-async==0.8.0a4
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -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>=0.7.0a1,<0.8",
18
+ "ophyd-async==0.8.0a4",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -24,10 +24,10 @@ dependencies = [
24
24
  "requests",
25
25
  "graypy",
26
26
  "pydantic>=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
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",
@@ -92,7 +92,7 @@ version_file = "src/dodal/_version.py"
92
92
 
93
93
  [tool.pyright]
94
94
  typeCheckingMode = "standard"
95
- reportMissingImports = false # Ignore missing stubs in imported modules
95
+ reportMissingImports = false # Ignore missing stubs in imported modules
96
96
 
97
97
  [tool.pytest.ini_options]
98
98
  # 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.34.1
3
+ Version: 1.35.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async<0.8,>=0.7.0a1
219
+ Requires-Dist: ophyd-async==0.8.0a4
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -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,6 +208,7 @@ 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
@@ -224,7 +228,6 @@ system_tests/test_undulator_system.py
224
228
  system_tests/test_zebra_system.py
225
229
  system_tests/test_zocalo_results.py
226
230
  tests/__init__.py
227
- tests/conftest.py
228
231
  tests/fake_beamline.py
229
232
  tests/fake_beamline_all_devices_raise_exception.py
230
233
  tests/fake_beamline_broken_dependency.py
@@ -241,6 +244,7 @@ tests/beamlines/unit_tests/test_i24.py
241
244
  tests/beamlines/unit_tests/test_mapping.py
242
245
  tests/common/__init__.py
243
246
  tests/common/test_coordination.py
247
+ tests/common/test_crystal_metadata.py
244
248
  tests/common/test_maths.py
245
249
  tests/common/test_udc_directory_provider.py
246
250
  tests/common/test_visit.py
@@ -297,6 +301,7 @@ tests/devices/unit_tests/test_thawer.py
297
301
  tests/devices/unit_tests/test_undulator.py
298
302
  tests/devices/unit_tests/test_undulator_dcm.py
299
303
  tests/devices/unit_tests/test_utils.py
304
+ tests/devices/unit_tests/test_watsonmarlow323_pump.py
300
305
  tests/devices/unit_tests/test_webcam.py
301
306
  tests/devices/unit_tests/test_xbpm_feedback.py
302
307
  tests/devices/unit_tests/test_xspress3.py
@@ -309,6 +314,7 @@ tests/devices/unit_tests/detector/test_detector.py
309
314
  tests/devices/unit_tests/i24/__init__.py
310
315
  tests/devices/unit_tests/i24/test_dual_backlight.py
311
316
  tests/devices/unit_tests/i24/test_pmac.py
317
+ tests/devices/unit_tests/i24/test_vgonio.py
312
318
  tests/devices/unit_tests/oav/__init__.py
313
319
  tests/devices/unit_tests/oav/conftest.py
314
320
  tests/devices/unit_tests/oav/test_grid_overlay.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async<0.8,>=0.7.0a1
3
+ ophyd-async==0.8.0a4
4
4
  bluesky
5
5
  pyepics
6
6
  dataclasses-json
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.34.1'
16
- __version_tuple__ = version_tuple = (1, 34, 1)
15
+ __version__ = version = '1.35.0'
16
+ __version_tuple__ = version_tuple = (1, 35, 0)
@@ -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 CrystalMetadata, DoubleCrystalMonochromator
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=CrystalMetadata(
174
- usage="Bragg",
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=CrystalMetadata(
180
- usage="Bragg",
181
- type="silicon",
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
- ) -> VGonio:
158
- """Get the i24 vgonio device, instantiate it if it hasn't already been.
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
- VGonio,
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 CrystalMetadata, DoubleCrystalMonochromator
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=CrystalMetadata(
231
- usage="Bragg",
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=CrystalMetadata(
237
- usage="Bragg",
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, if
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, TypeVar
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, T]],
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) -> T:
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[T],
36
- get_from_hardware_func: Callable[[], Coroutine[Any, Any, T]],
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=HarwareBackedSoftSignalBackend(
51
- get_from_hardware_func, datatype, metadata=metadata
46
+ backend=HardwareBackedSoftSignalBackend(
47
+ get_from_hardware_func, datatype, units=units, precision=precision
52
48
  )
53
49
  )
@@ -1,6 +1,6 @@
1
1
  from ophyd_async.core import StandardReadable
2
+ from ophyd_async.epics.core import epics_signal_r
2
3
  from ophyd_async.epics.motor import Motor
3
- from ophyd_async.epics.signal import epics_signal_r
4
4
 
5
5
 
6
6
  class CTAB(StandardReadable):
@@ -1,6 +1,6 @@
1
1
  from ophyd_async.core import StandardReadable
2
+ from ophyd_async.epics.core import epics_signal_r
2
3
  from ophyd_async.epics.motor import Motor
3
- from ophyd_async.epics.signal import epics_signal_r
4
4
 
5
5
 
6
6
  class Aperture(StandardReadable):
@@ -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 | None = Field(json_schema_extra={"units": "µm"}, default=None)
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 | None,
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(str, Enum):
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, None, params
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(HintedSignal):
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 | None:
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