dls-dodal 1.51.0__tar.gz → 1.53.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 (520) hide show
  1. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.pre-commit-config.yaml +5 -0
  2. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/PKG-INFO +3 -2
  3. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/pyproject.toml +2 -1
  4. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/PKG-INFO +3 -2
  5. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/SOURCES.txt +7 -4
  6. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/requires.txt +2 -1
  7. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/_version.py +2 -2
  8. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/adsim.py +12 -11
  9. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b07.py +7 -6
  10. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b07_1.py +7 -6
  11. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i03.py +4 -1
  12. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i04.py +2 -2
  13. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i09.py +7 -5
  14. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i09_1.py +6 -3
  15. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i09_2.py +2 -2
  16. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i22.py +11 -0
  17. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i24.py +2 -2
  18. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/p60.py +6 -4
  19. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/p99.py +14 -0
  20. dls_dodal-1.53.0/src/dodal/common/device_utils.py +45 -0
  21. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/attenuator/attenuator.py +5 -3
  22. dls_dodal-1.53.0/src/dodal/devices/b07/__init__.py +3 -0
  23. dls_dodal-1.53.0/src/dodal/devices/b07/enums.py +24 -0
  24. dls_dodal-1.53.0/src/dodal/devices/b07_1/__init__.py +3 -0
  25. dls_dodal-1.53.0/src/dodal/devices/b07_1/enums.py +18 -0
  26. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +4 -0
  27. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +21 -4
  28. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +20 -7
  29. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/detector.py +1 -1
  30. dls_dodal-1.53.0/src/dodal/devices/electron_analyser/specs/detector.py +33 -0
  31. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +17 -5
  32. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/specs/region.py +9 -5
  33. dls_dodal-1.53.0/src/dodal/devices/electron_analyser/types.py +48 -0
  34. dls_dodal-1.53.0/src/dodal/devices/electron_analyser/vgscienta/detector.py +37 -0
  35. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +13 -4
  36. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +11 -5
  37. dls_dodal-1.53.0/src/dodal/devices/i09/__init__.py +4 -0
  38. dls_dodal-1.53.0/src/dodal/devices/i09/enums.py +15 -0
  39. dls_dodal-1.53.0/src/dodal/devices/i09_1/__init__.py +3 -0
  40. dls_dodal-1.53.0/src/dodal/devices/i09_1/enums.py +19 -0
  41. dls_dodal-1.53.0/src/dodal/devices/linkam3.py +58 -0
  42. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +11 -14
  43. dls_dodal-1.53.0/src/dodal/devices/p60/__init__.py +4 -0
  44. dls_dodal-1.53.0/src/dodal/devices/p60/enums.py +10 -0
  45. dls_dodal-1.53.0/src/dodal/devices/tetramm.py +245 -0
  46. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/xbpm_feedback.py +6 -3
  47. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/system_tests/test_adsim.py +14 -2
  48. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py +41 -6
  49. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py +33 -1
  50. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/conftest.py +20 -14
  51. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/specs/test_detector.py +3 -2
  52. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py +5 -4
  53. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/specs/test_region.py +13 -12
  54. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py +3 -2
  55. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py +3 -2
  56. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_region.py +18 -13
  57. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +3 -5
  58. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_attenuator.py +1 -1
  59. dls_dodal-1.53.0/tests/devices/unit_tests/test_tetramm.py +278 -0
  60. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_xbpm_feedback.py +43 -0
  61. dls_dodal-1.51.0/src/dodal/devices/b07/__init__.py +0 -3
  62. dls_dodal-1.51.0/src/dodal/devices/b07/grating.py +0 -9
  63. dls_dodal-1.51.0/src/dodal/devices/b07_1/__init__.py +0 -3
  64. dls_dodal-1.51.0/src/dodal/devices/b07_1/grating.py +0 -10
  65. dls_dodal-1.51.0/src/dodal/devices/electron_analyser/specs/detector.py +0 -19
  66. dls_dodal-1.51.0/src/dodal/devices/electron_analyser/types.py +0 -32
  67. dls_dodal-1.51.0/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -28
  68. dls_dodal-1.51.0/src/dodal/devices/i09/__init__.py +0 -4
  69. dls_dodal-1.51.0/src/dodal/devices/i09/grating.py +0 -7
  70. dls_dodal-1.51.0/src/dodal/devices/linkam3.py +0 -114
  71. dls_dodal-1.51.0/src/dodal/devices/p60/__init__.py +0 -3
  72. dls_dodal-1.51.0/src/dodal/devices/tetramm.py +0 -261
  73. dls_dodal-1.51.0/tests/devices/unit_tests/test_linkam3.py +0 -65
  74. dls_dodal-1.51.0/tests/devices/unit_tests/test_tetramm.py +0 -389
  75. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.copier-answers.yml +0 -0
  76. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.devcontainer/devcontainer.json +0 -0
  77. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/CODEOWNERS +0 -0
  78. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/CONTRIBUTING.md +0 -0
  79. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  80. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/actions/install_requirements/action.yml +0 -0
  81. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/dependabot.yml +0 -0
  82. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/pages/index.html +0 -0
  83. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/pages/make_switcher.py +0 -0
  84. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/scripts/check_test_durations.py +0 -0
  85. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_dist.yml +0 -0
  86. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_docs.yml +0 -0
  87. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_pypi.yml +0 -0
  88. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_release.yml +0 -0
  89. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_test.yml +0 -0
  90. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/_tox.yml +0 -0
  91. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/ci.yml +0 -0
  92. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.github/workflows/periodic.yml +0 -0
  93. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.gitignore +0 -0
  94. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.vscode/extensions.json +0 -0
  95. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.vscode/launch.json +0 -0
  96. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.vscode/settings.json +0 -0
  97. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/.vscode/tasks.json +0 -0
  98. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/Dockerfile +0 -0
  99. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/LICENSE +0 -0
  100. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/README.md +0 -0
  101. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/catalog-info.yaml +0 -0
  102. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/conftest.py +0 -0
  103. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/_templates/autosummary/class.rst +0 -0
  104. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/_templates/autosummary/module.rst +0 -0
  105. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/_templates/custom-module-template.rst +0 -0
  106. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/assets/zocalo.png +0 -0
  107. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/conf.py +0 -0
  108. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  109. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  110. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  111. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  112. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  113. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions/COPYME +0 -0
  114. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/decisions.md +0 -0
  115. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/reviews.md +0 -0
  116. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/umls/apple2_design.png +0 -0
  117. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations/umls/i10_id_design.png +0 -0
  118. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/explanations.md +0 -0
  119. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/genindex.md +0 -0
  120. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/build-docs.md +0 -0
  121. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/contribute.md +0 -0
  122. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/coverage.md +0 -0
  123. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/create-beamline.rst +0 -0
  124. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/create-device.md +0 -0
  125. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/dev-install.md +0 -0
  126. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/excalidraw.md +0 -0
  127. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/external-io-devices.md +0 -0
  128. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/lint.md +0 -0
  129. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/lock-requirements.md +0 -0
  130. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/make-release.md +0 -0
  131. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/move-code.rst +0 -0
  132. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/pypi.md +0 -0
  133. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/run-tests.md +0 -0
  134. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/static-analysis.md +0 -0
  135. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/update-template.md +0 -0
  136. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/write-tests.md +0 -0
  137. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to/zocalo.rst +0 -0
  138. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/how-to.md +0 -0
  139. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/images/dls-logo.svg +0 -0
  140. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/images/excalidraw-example.svg +0 -0
  141. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/index.md +0 -0
  142. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/reference/api.md +0 -0
  143. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/reference/device-standards.rst +0 -0
  144. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/reference/standards.rst +0 -0
  145. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/reference.md +0 -0
  146. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/tutorials/get_started.rst +0 -0
  147. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/tutorials/installation.md +0 -0
  148. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/docs/tutorials.md +0 -0
  149. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/pull_request_template.md +0 -0
  150. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/setup.cfg +0 -0
  151. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/__init__.py +0 -0
  152. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  153. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  154. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  155. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/__init__.py +0 -0
  156. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/__main__.py +0 -0
  157. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  158. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  159. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/README.md +0 -0
  160. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/__init__.py +0 -0
  161. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/aithre.py +0 -0
  162. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b01_1.py +0 -0
  163. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b16.py +0 -0
  164. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b18.py +0 -0
  165. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/b21.py +0 -0
  166. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i02_1.py +0 -0
  167. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i10.py +0 -0
  168. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i13_1.py +0 -0
  169. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i18.py +0 -0
  170. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i19_1.py +0 -0
  171. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i19_2.py +0 -0
  172. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i19_optics.py +0 -0
  173. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i20_1.py +0 -0
  174. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/i23.py +0 -0
  175. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/k11.py +0 -0
  176. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/p38.py +0 -0
  177. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/p45.py +0 -0
  178. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/beamlines/training_rig.py +0 -0
  179. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/cli.py +0 -0
  180. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/__init__.py +0 -0
  181. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/beamlines/__init__.py +0 -0
  182. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  183. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  184. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  185. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/coordination.py +0 -0
  186. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/crystal_metadata.py +0 -0
  187. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/data_util.py +0 -0
  188. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/maths.py +0 -0
  189. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/types.py +0 -0
  190. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/udc_directory_provider.py +0 -0
  191. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/common/visit.py +0 -0
  192. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/CTAB.py +0 -0
  193. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/__init__.py +0 -0
  194. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  195. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  196. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/aperture.py +0 -0
  197. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  198. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/apple2_undulator.py +0 -0
  199. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  200. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  201. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/attenuator/filter.py +0 -0
  202. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  203. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/b16/__init__.py +0 -0
  204. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/b16/detector.py +0 -0
  205. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/backlight.py +0 -0
  206. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/baton.py +0 -0
  207. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  208. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/common_dcm.py +0 -0
  209. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/cryostream.py +0 -0
  210. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  211. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  212. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  213. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  214. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  215. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  216. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/__init__.py +0 -0
  217. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  218. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  219. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  220. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/detector.py +0 -0
  221. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  222. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/diamond_filter.py +0 -0
  223. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/eiger.py +0 -0
  224. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/eiger_odin.py +0 -0
  225. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  226. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
  227. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  228. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  229. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  230. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  231. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  232. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  233. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/fast_grid_scan.py +0 -0
  234. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  235. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/flux.py +0 -0
  236. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/focusing_mirror.py +0 -0
  237. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/hutch_shutter.py +0 -0
  238. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i03/__init__.py +0 -0
  239. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i03/dcm.py +0 -0
  240. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
  241. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i04/__init__.py +0 -0
  242. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i04/constants.py +0 -0
  243. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i04/murko_results.py +0 -0
  244. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i04/transfocator.py +0 -0
  245. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i09/dcm.py +0 -0
  246. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/__init__.py +0 -0
  247. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  248. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  249. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  250. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/mirrors.py +0 -0
  251. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  252. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  253. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  254. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i10/slits.py +0 -0
  255. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i13_1/__init__.py +0 -0
  256. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  257. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  258. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  259. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i18/diode.py +0 -0
  260. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i19/__init__.py +0 -0
  261. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i19/beamstop.py +0 -0
  262. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  263. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  264. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i19/shutter.py +0 -0
  265. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  266. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i22/dcm.py +0 -0
  267. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i22/fswitch.py +0 -0
  268. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i22/nxsas.py +0 -0
  269. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/__init__.py +0 -0
  270. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/aperture.py +0 -0
  271. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/beam_center.py +0 -0
  272. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/beamstop.py +0 -0
  273. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/dcm.py +0 -0
  274. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  275. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  276. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  277. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/pmac.py +0 -0
  278. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/i24/vgonio.py +0 -0
  279. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/ipin.py +0 -0
  280. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/motors.py +0 -0
  281. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  282. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/__init__.py +0 -0
  283. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  284. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  285. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  286. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  287. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  288. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  289. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  290. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  291. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  292. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  293. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/oav/utils.py +0 -0
  294. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/p45.py +0 -0
  295. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  296. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/p99/__init__.py +0 -0
  297. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  298. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  299. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/pgm.py +0 -0
  300. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/positioner.py +0 -0
  301. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  302. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/qbpm.py +0 -0
  303. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/robot.py +0 -0
  304. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  305. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/scintillator.py +0 -0
  306. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/slits.py +0 -0
  307. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/smargon.py +0 -0
  308. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/status.py +0 -0
  309. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/synchrotron.py +0 -0
  310. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/thawer.py +0 -0
  311. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/turbo_slit.py +0 -0
  312. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/undulator.py +0 -0
  313. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/util/__init__.py +0 -0
  314. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  315. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/util/epics_util.py +0 -0
  316. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  317. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/util/test_utils.py +0 -0
  318. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  319. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/webcam.py +0 -0
  320. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  321. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  322. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zebra/__init__.py +0 -0
  323. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zebra/zebra.py +0 -0
  324. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  325. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  326. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  327. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  328. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  329. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  330. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/log.py +0 -0
  331. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  332. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plan_stubs/__init__.py +0 -0
  333. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  334. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plan_stubs/data_session.py +0 -0
  335. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  336. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  337. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/__init__.py +0 -0
  338. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/bimorph.py +0 -0
  339. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
  340. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/preprocessors/__init__.py +0 -0
  341. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  342. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/save_panda.py +0 -0
  343. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/scanspec.py +0 -0
  344. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  345. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/plans/wrapped.py +0 -0
  346. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/src/dodal/utils.py +0 -0
  347. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/system_tests/__init__.py +0 -0
  348. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/system_tests/test_cli.py +0 -0
  349. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/system_tests/test_oav_system.py +0 -0
  350. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/system_tests/test_oav_to_redis_system.py +0 -0
  351. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/__init__.py +0 -0
  352. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/__init__.py +0 -0
  353. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/unit_tests/__init__.py +0 -0
  354. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/unit_tests/test_b16.py +0 -0
  355. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  356. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  357. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  358. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/__init__.py +0 -0
  359. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/beamlines/__init__.py +0 -0
  360. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  361. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  362. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  363. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  364. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/test_coordination.py +0 -0
  365. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/test_crystal_metadata.py +0 -0
  366. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/test_maths.py +0 -0
  367. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/test_udc_directory_provider.py +0 -0
  368. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/common/test_visit.py +0 -0
  369. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/conftest.py +0 -0
  370. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/constants.py +0 -0
  371. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/__init__.py +0 -0
  372. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  373. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i03/__init__.py +0 -0
  374. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i04/__init__.py +0 -0
  375. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i04/test_murko_results.py +0 -0
  376. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i04/test_transfocator.py +0 -0
  377. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  378. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  379. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  380. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  381. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  382. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  383. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  384. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i13_1/test_merlin.py +0 -0
  385. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  386. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i19/__init__.py +0 -0
  387. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i19/test_beamstop.py +0 -0
  388. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i19/test_shutter.py +0 -0
  389. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i22/test_dcm.py +0 -0
  390. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i22/test_fswitch.py +0 -0
  391. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/i22/test_metadataholder.py +0 -0
  392. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/mx_phase1/__init__.py +0 -0
  393. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
  394. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/test_common_dcm.py +0 -0
  395. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/test_diamond_filter.py +0 -0
  396. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/test_motors.py +0 -0
  397. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/__init__.py +0 -0
  398. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  399. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  400. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  401. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  402. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  403. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/__init__.py +0 -0
  404. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/abstract/__init__.py +0 -0
  405. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/specs/__init__.py +0 -0
  406. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/test_util.py +0 -0
  407. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/util.py +0 -0
  408. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/electron_analyser/vgscienta/__init__.py +0 -0
  409. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i03/__init__.py +0 -0
  410. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i03/test_dcm.py +0 -0
  411. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i03/test_undulator_dcm.py +0 -0
  412. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i09/__init__.py +0 -0
  413. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i09/test_dcm.py +0 -0
  414. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/__init__.py +0 -0
  415. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  416. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  417. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  418. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  419. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  420. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/__init__.py +0 -0
  421. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  422. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  423. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  424. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  425. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  426. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  427. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  428. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +0 -0
  429. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  430. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/p60/test_lab_xray_source.py +0 -0
  431. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  432. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  433. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  434. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
  435. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  436. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  437. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  438. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_baton.py +0 -0
  439. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  440. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  441. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  442. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  443. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  444. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  445. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  446. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_eiger.py +0 -0
  447. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  448. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
  449. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  450. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  451. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  452. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  453. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_motors.py +0 -0
  454. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_odin.py +0 -0
  455. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_positioner.py +0 -0
  456. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  457. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  458. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_slits.py +0 -0
  459. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  460. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_status.py +0 -0
  461. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  462. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  463. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_turbo_slit.py +0 -0
  464. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_undulator.py +0 -0
  465. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_utils.py +0 -0
  466. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  467. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  468. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  469. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  470. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  471. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
  472. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  473. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  474. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/util/__init__.py +0 -0
  475. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  476. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  477. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  478. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  479. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline.py +0 -0
  480. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  481. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_broken_dependency.py +0 -0
  482. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_dependencies.py +0 -0
  483. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  484. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  485. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_beamline_some_devices_working.py +0 -0
  486. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_device_factory_beamline.py +0 -0
  487. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_zocalo/README.rst +0 -0
  488. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_zocalo/__init__.py +0 -0
  489. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_zocalo/__main__.py +0 -0
  490. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  491. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plan_stubs/test_data_session.py +0 -0
  492. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  493. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  494. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  495. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/conftest.py +0 -0
  496. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_bimorph.py +0 -0
  497. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_compliance.py +0 -0
  498. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
  499. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  500. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_scanspec.py +0 -0
  501. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  502. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/plans/test_wrapped.py +0 -0
  503. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  504. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/bad_beamlineParameters +0 -0
  505. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/electron_analyser/specs_sequence.seq +0 -0
  506. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/electron_analyser/vgscienta_sequence.seq +0 -0
  507. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/i04_beamlineParameters +0 -0
  508. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  509. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  510. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  511. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  512. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  513. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  514. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  515. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/topup_long_delay.txt +0 -0
  516. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_data/topup_short_params.txt +0 -0
  517. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/test_utils.py +0 -0
  518. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/unit_tests/__init__.py +0 -0
  519. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/unit_tests/test_cli.py +0 -0
  520. {dls_dodal-1.51.0 → dls_dodal-1.53.0}/tests/unit_tests/test_log.py +0 -0
@@ -30,3 +30,8 @@ repos:
30
30
  entry: lint-imports
31
31
  types: [python]
32
32
  require_serial: false
33
+
34
+ - repo: https://github.com/thoughtworks/talisman
35
+ rev: v1.37.0
36
+ hooks:
37
+ - id: talisman-commit
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.51.0
3
+ Version: 1.53.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
@@ -215,7 +215,8 @@ Description-Content-Type: text/markdown
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async>=0.10.0a4
218
+ Requires-Dist: ophyd-async>=0.11
219
+ Requires-Dist: epicscorelibs<=7.0.7.99.1.2a1
219
220
  Requires-Dist: bluesky
220
221
  Requires-Dist: pyepics
221
222
  Requires-Dist: dataclasses-json
@@ -14,7 +14,8 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
14
14
  dependencies = [
15
15
  "click",
16
16
  "ophyd",
17
- "ophyd-async>=0.10.0a4",
17
+ "ophyd-async>=0.11",
18
+ "epicscorelibs<=7.0.7.99.1.2a1", # Pending https://github.com/epics-base/epicscorelibs/issues/41
18
19
  "bluesky",
19
20
  "pyepics",
20
21
  "dataclasses-json",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.51.0
3
+ Version: 1.53.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
@@ -215,7 +215,8 @@ Description-Content-Type: text/markdown
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async>=0.10.0a4
218
+ Requires-Dist: ophyd-async>=0.11
219
+ Requires-Dist: epicscorelibs<=7.0.7.99.1.2a1
219
220
  Requires-Dist: bluesky
220
221
  Requires-Dist: pyepics
221
222
  Requires-Dist: dataclasses-json
@@ -126,6 +126,7 @@ src/dodal/common/__init__.py
126
126
  src/dodal/common/coordination.py
127
127
  src/dodal/common/crystal_metadata.py
128
128
  src/dodal/common/data_util.py
129
+ src/dodal/common/device_utils.py
129
130
  src/dodal/common/maths.py
130
131
  src/dodal/common/types.py
131
132
  src/dodal/common/udc_directory_provider.py
@@ -182,9 +183,9 @@ src/dodal/devices/attenuator/attenuator.py
182
183
  src/dodal/devices/attenuator/filter.py
183
184
  src/dodal/devices/attenuator/filter_selections.py
184
185
  src/dodal/devices/b07/__init__.py
185
- src/dodal/devices/b07/grating.py
186
+ src/dodal/devices/b07/enums.py
186
187
  src/dodal/devices/b07_1/__init__.py
187
- src/dodal/devices/b07_1/grating.py
188
+ src/dodal/devices/b07_1/enums.py
188
189
  src/dodal/devices/b16/__init__.py
189
190
  src/dodal/devices/b16/detector.py
190
191
  src/dodal/devices/current_amplifiers/__init__.py
@@ -227,7 +228,9 @@ src/dodal/devices/i04/murko_results.py
227
228
  src/dodal/devices/i04/transfocator.py
228
229
  src/dodal/devices/i09/__init__.py
229
230
  src/dodal/devices/i09/dcm.py
230
- src/dodal/devices/i09/grating.py
231
+ src/dodal/devices/i09/enums.py
232
+ src/dodal/devices/i09_1/__init__.py
233
+ src/dodal/devices/i09_1/enums.py
231
234
  src/dodal/devices/i10/__init__.py
232
235
  src/dodal/devices/i10/diagnostics.py
233
236
  src/dodal/devices/i10/i10_apple2.py
@@ -276,6 +279,7 @@ src/dodal/devices/oav/snapshots/snapshot.py
276
279
  src/dodal/devices/oav/snapshots/snapshot_image_processing.py
277
280
  src/dodal/devices/oav/snapshots/snapshot_with_grid.py
278
281
  src/dodal/devices/p60/__init__.py
282
+ src/dodal/devices/p60/enums.py
279
283
  src/dodal/devices/p60/lab_xray_source.py
280
284
  src/dodal/devices/p99/__init__.py
281
285
  src/dodal/devices/p99/andor2_point.py
@@ -388,7 +392,6 @@ tests/devices/unit_tests/test_focusing_mirror.py
388
392
  tests/devices/unit_tests/test_gridscan.py
389
393
  tests/devices/unit_tests/test_hutch_shutter.py
390
394
  tests/devices/unit_tests/test_jCameraManZoomLevels.xml
391
- tests/devices/unit_tests/test_linkam3.py
392
395
  tests/devices/unit_tests/test_lookup_table.txt
393
396
  tests/devices/unit_tests/test_lookup_table_2.txt
394
397
  tests/devices/unit_tests/test_motors.py
@@ -1,6 +1,7 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async>=0.10.0a4
3
+ ophyd-async>=0.11
4
+ epicscorelibs<=7.0.7.99.1.2a1
4
5
  bluesky
5
6
  pyepics
6
7
  dataclasses-json
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.51.0'
21
- __version_tuple__ = version_tuple = (1, 51, 0)
20
+ __version__ = version = '1.53.0'
21
+ __version_tuple__ = version_tuple = (1, 53, 0)
@@ -1,15 +1,11 @@
1
- from pathlib import Path
2
-
3
1
  from ophyd_async.epics.adsimdetector import SimDetector
4
2
 
5
3
  from dodal.common.beamlines.beamline_utils import (
6
4
  device_factory,
7
5
  get_path_provider,
8
- set_path_provider,
9
6
  )
10
7
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
11
8
  from dodal.common.beamlines.device_helpers import DET_SUFFIX, HDF5_SUFFIX
12
- from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
13
9
  from dodal.devices.motors import XThetaStage
14
10
  from dodal.log import set_beamline as set_log_beamline
15
11
  from dodal.utils import BeamlinePrefix
@@ -19,13 +15,6 @@ PREFIX = BeamlinePrefix("t01")
19
15
  set_log_beamline(BL)
20
16
  set_utils_beamline(BL)
21
17
 
22
- set_path_provider(
23
- StaticVisitPathProvider(
24
- BL,
25
- Path("/tmp"),
26
- client=LocalDirectoryServiceClient(),
27
- )
28
- )
29
18
 
30
19
  """
31
20
  Beamline module for use with the simulated AreaDetector and motors.
@@ -47,11 +36,23 @@ How to use the devices in a plan:
47
36
  In an ipython terminal run:
48
37
 
49
38
  ```python
39
+ from pathlib import Path
40
+
50
41
  from bluesky.run_engine import RunEngine
42
+ from ophyd_async.core import StaticPathProvider, UUIDFilenameProvider
51
43
 
52
44
  from dodal.beamlines.adsim import det, stage
45
+ from dodal.common.beamlines.beamline_utils import set_path_provider
53
46
  from dodal.plans import count
54
47
 
48
+
49
+ set_path_provider(
50
+ StaticPathProvider(
51
+ UUIDFilenameProvider(),
52
+ "/tmp", # The directory for `det` to write to- may be mounted as a volume
53
+ )
54
+ )
55
+
55
56
  RE = RunEngine()
56
57
  d = det(connect_immediately=True)
57
58
  s = stage(connect_immediately=True)
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.b07 import B07BGrating
5
+ from dodal.devices.b07 import Grating, LensMode
6
6
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
@@ -22,12 +22,13 @@ def synchrotron() -> Synchrotron:
22
22
 
23
23
  @device_factory()
24
24
  def pgm() -> PGM:
25
- return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=B07BGrating)
25
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=Grating)
26
26
 
27
27
 
28
28
  @device_factory()
29
- def analyser_driver() -> SpecsAnalyserDriverIO:
30
- return SpecsAnalyserDriverIO(
31
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
- {"source1": pgm().energy.user_readback},
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": pgm().energy.user_readback},
33
34
  )
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.b07_1 import B07CGrating
5
+ from dodal.devices.b07_1 import Grating, LensMode
6
6
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
@@ -22,12 +22,13 @@ def synchrotron() -> Synchrotron:
22
22
 
23
23
  @device_factory()
24
24
  def pgm() -> PGM:
25
- return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=B07CGrating)
25
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=Grating)
26
26
 
27
27
 
28
28
  @device_factory()
29
- def analyser_driver() -> SpecsAnalyserDriverIO:
30
- return SpecsAnalyserDriverIO(
31
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
- {"source1": pgm().energy.user_readback},
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": pgm().energy.user_readback},
33
34
  )
@@ -92,7 +92,10 @@ def attenuator() -> BinaryFilterAttenuator:
92
92
  """Get the i03 attenuator device, instantiate it if it hasn't already been.
93
93
  If this is called when already instantiated in i03, it will return the existing object.
94
94
  """
95
- return BinaryFilterAttenuator(f"{PREFIX.beamline_prefix}-EA-ATTN-01:")
95
+ return BinaryFilterAttenuator(
96
+ prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
97
+ num_filters=16,
98
+ )
96
99
 
97
100
 
98
101
  @device_factory()
@@ -137,8 +137,8 @@ def attenuator() -> BinaryFilterAttenuator:
137
137
  If this is called when already instantiated in i04, it will return the existing object.
138
138
  """
139
139
  return BinaryFilterAttenuator(
140
- f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
141
- "attenuator",
140
+ prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
141
+ num_filters=16,
142
142
  )
143
143
 
144
144
 
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.vgscienta import VGScientaAnalyserDriverIO
6
- from dodal.devices.i09 import DCM, I09Grating
6
+ from dodal.devices.i09 import DCM, Grating, LensMode
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
9
9
  from dodal.log import set_beamline as set_log_beamline
@@ -24,7 +24,7 @@ def synchrotron() -> Synchrotron:
24
24
  def pgm() -> PGM:
25
25
  return PGM(
26
26
  prefix=f"{BeamlinePrefix(BL, suffix='J').beamline_prefix}-MO-PGM-01:",
27
- grating=I09Grating,
27
+ grating=Grating,
28
28
  )
29
29
 
30
30
 
@@ -34,11 +34,13 @@ def dcm() -> DCM:
34
34
 
35
35
 
36
36
  @device_factory()
37
- def analyser_driver() -> VGScientaAnalyserDriverIO:
37
+ def analyser_driver() -> VGScientaAnalyserDriverIO[LensMode]:
38
38
  energy_sources = {
39
39
  "source1": pgm().energy.user_readback,
40
40
  "source2": dcm().energy_in_ev,
41
41
  }
42
- return VGScientaAnalyserDriverIO(
43
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:", energy_sources
42
+ return VGScientaAnalyserDriverIO[LensMode](
43
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
44
+ lens_mode_type=LensMode,
45
+ energy_sources=energy_sources,
44
46
  )
@@ -4,6 +4,7 @@ from dodal.common.beamlines.beamline_utils import (
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
6
6
  from dodal.devices.i09.dcm import DCM
7
+ from dodal.devices.i09_1 import LensMode
7
8
  from dodal.devices.synchrotron import Synchrotron
8
9
  from dodal.log import set_beamline as set_log_beamline
9
10
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -25,7 +26,9 @@ def dcm() -> DCM:
25
26
 
26
27
 
27
28
  @device_factory()
28
- def analyser_driver() -> SpecsAnalyserDriverIO:
29
- return SpecsAnalyserDriverIO(
30
- f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:", {"source1": dcm().energy_in_ev}
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": dcm().energy_in_ev},
31
34
  )
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.i09.grating import I09Grating
5
+ from dodal.devices.i09.enums import Grating
6
6
  from dodal.devices.pgm import PGM
7
7
  from dodal.devices.synchrotron import Synchrotron
8
8
  from dodal.log import set_beamline as set_log_beamline
@@ -21,4 +21,4 @@ def synchrotron() -> Synchrotron:
21
21
 
22
22
  @device_factory()
23
23
  def pgm() -> PGM:
24
- return PGM(prefix=f"{PREFIX.beamline_prefix}-MO-PGM-01:", grating=I09Grating)
24
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-MO-PGM-01:", grating=Grating)
@@ -1,6 +1,7 @@
1
1
  from pathlib import Path
2
2
 
3
3
  from ophyd_async.epics.adaravis import AravisDetector
4
+ from ophyd_async.epics.adcore import NDPluginStatsIO
4
5
  from ophyd_async.epics.adpilatus import PilatusDetector
5
6
  from ophyd_async.fastcs.panda import HDFPanda
6
7
 
@@ -101,6 +102,11 @@ def i0() -> TetrammDetector:
101
102
  prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:",
102
103
  path_provider=get_path_provider(),
103
104
  type="Cividec Diamond XBPM",
105
+ plugins={
106
+ "stats": NDPluginStatsIO(
107
+ prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:SumAll:"
108
+ )
109
+ },
104
110
  )
105
111
 
106
112
 
@@ -110,6 +116,11 @@ def it() -> TetrammDetector:
110
116
  prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:",
111
117
  path_provider=get_path_provider(),
112
118
  type="PIN Diode",
119
+ plugins={
120
+ "stats": NDPluginStatsIO(
121
+ prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:SumAll:"
122
+ )
123
+ },
113
124
  )
114
125
 
115
126
 
@@ -32,7 +32,7 @@ ZOOM_PARAMS_FILE = (
32
32
  DISPLAY_CONFIG = "/dls_sw/i24/software/gda_versions/var/display.configuration"
33
33
 
34
34
 
35
- BL = get_beamline_name("s24")
35
+ BL = get_beamline_name("i24")
36
36
  set_log_beamline(BL)
37
37
  set_utils_beamline(BL)
38
38
 
@@ -149,7 +149,7 @@ def pmac() -> PMAC:
149
149
  )
150
150
 
151
151
 
152
- @device_factory(skip=BL == "s24")
152
+ @device_factory()
153
153
  def oav() -> OAVBeamCentreFile:
154
154
  return OAVBeamCentreFile(
155
155
  prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.vgscienta import VGScientaAnalyserDriverIO
6
- from dodal.devices.p60 import LabXraySource, LabXraySourceReadable
6
+ from dodal.devices.p60 import LabXraySource, LabXraySourceReadable, LensMode
7
7
  from dodal.log import set_beamline as set_log_beamline
8
8
  from dodal.utils import BeamlinePrefix, get_beamline_name
9
9
 
@@ -24,11 +24,13 @@ def mg_kalpha_source() -> LabXraySourceReadable:
24
24
 
25
25
 
26
26
  @device_factory()
27
- def analyser_driver() -> VGScientaAnalyserDriverIO:
27
+ def analyser_driver() -> VGScientaAnalyserDriverIO[LensMode]:
28
28
  energy_sources = {
29
29
  "source1": al_kalpha_source().energy_ev,
30
30
  "source2": mg_kalpha_source().energy_ev,
31
31
  }
32
- return VGScientaAnalyserDriverIO(
33
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:", energy_sources
32
+ return VGScientaAnalyserDriverIO[LensMode](
33
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
34
+ lens_mode_type=LensMode,
35
+ energy_sources=energy_sources,
34
36
  )
@@ -1,6 +1,7 @@
1
1
  from pathlib import Path
2
2
 
3
3
  from ophyd_async.epics.adandor import Andor2Detector
4
+ from ophyd_async.fastcs.panda import HDFPanda
4
5
 
5
6
  from dodal.common.beamlines.beamline_utils import (
6
7
  device_factory,
@@ -76,3 +77,16 @@ def andor2_point() -> Andor2Point:
76
77
  drv_suffix=CAM_SUFFIX,
77
78
  read_uncached={"mean": "STAT:MeanValue_RBV", "total": "STAT:Total_RBV"},
78
79
  )
80
+
81
+
82
+ @device_factory()
83
+ def panda() -> HDFPanda:
84
+ """
85
+ The Panda device is connected to two PMAC motors for position comparison under
86
+ the pcomp[1] and pcomp[2] blocks, which handle positive and negative directions.
87
+ This setup is used for triggering detectors during a flyscan.
88
+ """
89
+ return HDFPanda(
90
+ f"{PREFIX.beamline_prefix}-MO-PANDA-01:",
91
+ path_provider=get_path_provider(),
92
+ )
@@ -0,0 +1,45 @@
1
+ from asyncio import CancelledError, create_task, sleep
2
+ from contextlib import asynccontextmanager
3
+
4
+ from dodal.log import LOGGER
5
+
6
+
7
+ @asynccontextmanager
8
+ async def periodic_reminder(
9
+ message: str = "Waiting",
10
+ schedule: tuple[tuple[int | float, int | None], ...] = ( # seconds, frequency
11
+ (1, 3),
12
+ (5, 3),
13
+ (60, 5),
14
+ (300, 5),
15
+ (1800, 5),
16
+ (3600, None),
17
+ ),
18
+ ):
19
+ """Periodically logs a message according to a schedule with increasing delays.
20
+
21
+ Args:
22
+ message: The message the user wants to output through logging.
23
+ schedule: A tuple list of tuples consisting of (int|float, int|None).
24
+ A sequence of (delay_seconds, count) pairs defining the logging intervals.
25
+ - delay_seconds is the number of seconds to wait between logs.
26
+ - count is how many times to log at this interval. If count is None, it logs indefinitely at that delay.
27
+ """
28
+
29
+ async def _log_loop():
30
+ for delay, count in schedule:
31
+ n = 0
32
+ while count is None or n < count:
33
+ LOGGER.info(message)
34
+ await sleep(delay)
35
+ n += 1
36
+
37
+ task = create_task(_log_loop())
38
+ try:
39
+ yield
40
+ finally:
41
+ task.cancel()
42
+ try:
43
+ await task
44
+ except CancelledError:
45
+ pass
@@ -39,10 +39,12 @@ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
39
39
  Where desired_transmission is fraction e.g. 0-1. When the actual_transmission is
40
40
  read from the device it is also fractional"""
41
41
 
42
- def __init__(self, prefix: str, name: str = ""):
42
+ def __init__(self, prefix: str, num_filters: int, name: str = ""):
43
43
  self._calculated_filter_states: DeviceVector[SignalR[int]] = DeviceVector(
44
44
  {
45
- int(digit, 16): epics_signal_r(int, f"{prefix}DEC_TO_BIN.B{digit}")
45
+ int(digit, num_filters): epics_signal_r(
46
+ int, f"{prefix}DEC_TO_BIN.B{digit}"
47
+ )
46
48
  for digit in string.hexdigits
47
49
  if not digit.islower()
48
50
  }
@@ -50,7 +52,7 @@ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
50
52
  self._filters_in_position: DeviceVector[SignalR[bool]] = DeviceVector(
51
53
  {
52
54
  i - 1: epics_signal_r(bool, f"{prefix}FILTER{i}:INLIM")
53
- for i in range(1, 17)
55
+ for i in range(1, num_filters + 1)
54
56
  }
55
57
  )
56
58
 
@@ -0,0 +1,3 @@
1
+ from dodal.devices.b07.enums import Grating, LensMode
2
+
3
+ __all__ = ["Grating", "LensMode"]
@@ -0,0 +1,24 @@
1
+ from ophyd_async.core import StrictEnum, SupersetEnum
2
+
3
+
4
+ class Grating(StrictEnum):
5
+ NI_400 = "400 l/mm Ni"
6
+ NI_1000 = "1000 l/mm Ni"
7
+ PT_600 = "BAD 600 l/mm Pt"
8
+ AU_600 = "600 l/mm Au"
9
+ NO_GRATING = "No Grating"
10
+
11
+
12
+ class LensMode(SupersetEnum):
13
+ LARGE_AREA = "LargeArea"
14
+ HIGH_MAGNIFICATION = "HighMagnification"
15
+ MEDIUM_MAGNIFICATION = "MediumMagnification"
16
+ LOW_MAGNIFICATION = "LowMagnification"
17
+ MEDIUM_ANGULAR_DISPERSION = "MediumAngularDispersion"
18
+ LOW_ANGULAR_DISPERSION = "LowAngularDispersion"
19
+ HIGH_ANGULAR_DISPERSION = "HighAngularDispersion"
20
+ WIDE_ANGLE_MODE = "WideAngleMode"
21
+ MEDIUM_AREA = "MediumArea"
22
+ SMALL_AREA = "SmallArea"
23
+ HIGH_MAGNIFICATION2 = "HighMagnification2"
24
+ NOT_CONNECTED = "Not connected"
@@ -0,0 +1,3 @@
1
+ from dodal.devices.b07_1.enums import Grating, LensMode
2
+
3
+ __all__ = ["Grating", "LensMode"]
@@ -0,0 +1,18 @@
1
+ from ophyd_async.core import StrictEnum, SupersetEnum
2
+
3
+
4
+ class Grating(StrictEnum):
5
+ AU_400 = "400 l/mm Au"
6
+ AU_600 = "600 l/mm Au"
7
+ PT_600 = "600 l/mm Pt"
8
+ AU_1200 = "1200 l/mm Au"
9
+ ML_1200 = "1200 l/mm ML"
10
+ NO_GRATING = "No Grating"
11
+
12
+
13
+ class LensMode(SupersetEnum):
14
+ SMALL_AREA = "SmallArea"
15
+ ANGLE_RESOLVED_MODE_22 = "AngleResolvedMode22"
16
+ ANGLE_RESOLVED_MODE_30 = "AngleResolvedMode30"
17
+ LARGE_AREA = "LargeArea"
18
+ NOT_CONNECTED = "Not connected"
@@ -8,6 +8,8 @@ from .base_region import (
8
8
  AbstractBaseSequence,
9
9
  TAbstractBaseRegion,
10
10
  TAbstractBaseSequence,
11
+ TAcquisitionMode,
12
+ TLensMode,
11
13
  )
12
14
 
13
15
  __all__ = [
@@ -15,6 +17,8 @@ __all__ = [
15
17
  "AbstractBaseSequence",
16
18
  "TAbstractBaseRegion",
17
19
  "TAbstractBaseSequence",
20
+ "TAcquisitionMode",
21
+ "TLensMode",
18
22
  "AbstractAnalyserDriverIO",
19
23
  "AbstractElectronAnalyserDetector",
20
24
  "AbstractAnalyserDriverIO",
@@ -11,7 +11,6 @@ from ophyd_async.core import (
11
11
  SignalR,
12
12
  StandardReadable,
13
13
  StandardReadableFormat,
14
- StrictEnum,
15
14
  derived_signal_r,
16
15
  soft_signal_rw,
17
16
  )
@@ -20,6 +19,8 @@ from ophyd_async.epics.core import epics_signal_r, epics_signal_rw
20
19
 
21
20
  from dodal.devices.electron_analyser.abstract.base_region import (
22
21
  TAbstractBaseRegion,
22
+ TAcquisitionMode,
23
+ TLensMode,
23
24
  )
24
25
  from dodal.devices.electron_analyser.enums import EnergyMode
25
26
  from dodal.devices.electron_analyser.util import to_binding_energy, to_kinetic_energy
@@ -30,7 +31,7 @@ class AbstractAnalyserDriverIO(
30
31
  StandardReadable,
31
32
  ADBaseIO,
32
33
  Movable[TAbstractBaseRegion],
33
- Generic[TAbstractBaseRegion],
34
+ Generic[TAbstractBaseRegion, TAcquisitionMode, TLensMode],
34
35
  ):
35
36
  """
36
37
  Generic device to configure electron analyser with new region settings.
@@ -40,11 +41,27 @@ class AbstractAnalyserDriverIO(
40
41
  def __init__(
41
42
  self,
42
43
  prefix: str,
43
- acquisition_mode_type: type[StrictEnum],
44
+ acquisition_mode_type: type[TAcquisitionMode],
45
+ lens_mode_type: type[TLensMode],
44
46
  energy_sources: Mapping[str, SignalR[float]],
45
47
  name: str = "",
46
48
  ) -> None:
49
+ """
50
+ Constructor method for setting up electron analyser.
51
+
52
+ Args:
53
+ prefix: Base PV to connect to EPICS for this device.
54
+ acquisition_mode_type: Enum that determines the available acquisition modes
55
+ for this device.
56
+ lens_mode_type: Enum that determines the available lens mode for this
57
+ device.
58
+ energy_sources: Map that pairs a source name to an energy value signal
59
+ (in eV).
60
+ name: Name of the device.
61
+ """
47
62
  self.energy_sources = energy_sources
63
+ self.acquisition_mode_type = acquisition_mode_type
64
+ self.lens_mode_type = lens_mode_type
48
65
 
49
66
  with self.add_children_as_readables():
50
67
  self.image = epics_signal_r(Array1D[np.float64], prefix + "IMAGE")
@@ -63,7 +80,7 @@ class AbstractAnalyserDriverIO(
63
80
  self.low_energy = epics_signal_rw(float, prefix + "LOW_ENERGY")
64
81
  self.high_energy = epics_signal_rw(float, prefix + "HIGH_ENERGY")
65
82
  self.slices = epics_signal_rw(int, prefix + "SLICES")
66
- self.lens_mode = epics_signal_rw(str, prefix + "LENS_MODE")
83
+ self.lens_mode = epics_signal_rw(lens_mode_type, prefix + "LENS_MODE")
67
84
  self.pass_energy = epics_signal_rw(
68
85
  self.pass_energy_type, prefix + "PASS_ENERGY"
69
86
  )