dls-dodal 1.60.0__tar.gz → 1.62.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 (617) hide show
  1. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/PKG-INFO +1 -1
  2. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/pyproject.toml +3 -0
  3. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/PKG-INFO +1 -1
  4. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/SOURCES.txt +34 -0
  5. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/_version.py +3 -3
  6. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i04.py +1 -1
  7. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i19_2.py +10 -0
  8. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/apple2_undulator.py +85 -52
  9. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/controllers.py +8 -6
  10. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +2 -2
  11. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +13 -26
  12. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +5 -4
  13. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +28 -13
  14. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/detector.py +19 -31
  15. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -1
  16. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -1
  17. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/fast_grid_scan.py +111 -32
  18. dls_dodal-1.62.0/src/dodal/devices/fast_shutter.py +57 -0
  19. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i02_1/fast_grid_scan.py +1 -1
  20. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i04/murko_results.py +24 -12
  21. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/i10_apple2.py +15 -15
  22. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/dcm.py +10 -9
  23. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/focussing_mirror.py +4 -20
  24. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/jack.py +2 -10
  25. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/laue.py +1 -5
  26. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/multilayer_mirror.py +1 -5
  27. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/rail.py +1 -5
  28. dls_dodal-1.62.0/src/dodal/devices/i19/mapt_configuration.py +38 -0
  29. dls_dodal-1.62.0/src/dodal/devices/i19/pin_col_stages.py +170 -0
  30. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/commissioning_jungfrau.py +9 -1
  31. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +27 -5
  32. dls_dodal-1.62.0/tests/devices/electron_analyser/abstract/__init__.py +0 -0
  33. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +19 -20
  34. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +31 -10
  35. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/abstract/test_base_region.py +15 -18
  36. dls_dodal-1.62.0/tests/devices/electron_analyser/specs/__init__.py +0 -0
  37. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/specs/test_driver_io.py +14 -13
  38. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_detector.py +11 -11
  39. dls_dodal-1.62.0/tests/devices/electron_analyser/vgscienta/__init__.py +0 -0
  40. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +16 -13
  41. dls_dodal-1.62.0/tests/devices/i02_1/__init__.py +0 -0
  42. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i02_1/test_fast_grid_scan.py +1 -1
  43. dls_dodal-1.62.0/tests/devices/i03/__init__.py +0 -0
  44. dls_dodal-1.62.0/tests/devices/i04/__init__.py +0 -0
  45. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i04/test_murko_results.py +200 -46
  46. dls_dodal-1.62.0/tests/devices/i09/__init__.py +0 -0
  47. dls_dodal-1.62.0/tests/devices/i10/__init__.py +0 -0
  48. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_i10Apple2.py +64 -55
  49. dls_dodal-1.62.0/tests/devices/i11/__init__.py +0 -0
  50. dls_dodal-1.62.0/tests/devices/i13_1/__init__.py +0 -0
  51. dls_dodal-1.62.0/tests/devices/i15/__init__.py +0 -0
  52. dls_dodal-1.62.0/tests/devices/i15/test_dcm.py +17 -0
  53. dls_dodal-1.62.0/tests/devices/i18/__init__.py +0 -0
  54. dls_dodal-1.62.0/tests/devices/i19/__init__.py +0 -0
  55. dls_dodal-1.62.0/tests/devices/i19/test_mapt.py +63 -0
  56. dls_dodal-1.62.0/tests/devices/i19/test_pin_col.py +160 -0
  57. dls_dodal-1.62.0/tests/devices/i22/__init__.py +0 -0
  58. dls_dodal-1.62.0/tests/devices/i24/__init__.py +0 -0
  59. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i24/test_commissioning_jungfrau.py +6 -1
  60. dls_dodal-1.62.0/tests/devices/mx_phase1/__init__.py +0 -0
  61. dls_dodal-1.62.0/tests/devices/oav/__init__.py +0 -0
  62. dls_dodal-1.62.0/tests/devices/oav/image_recognition/__init__.py +0 -0
  63. dls_dodal-1.62.0/tests/devices/p60/__init__.py +0 -0
  64. dls_dodal-1.62.0/tests/devices/p99/__init__.py +0 -0
  65. dls_dodal-1.62.0/tests/devices/temperature_controller/__init__.py +0 -0
  66. dls_dodal-1.62.0/tests/devices/temperature_controller/lakeshore/__init__.py +0 -0
  67. dls_dodal-1.62.0/tests/devices/test_fast_shutters.py +43 -0
  68. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_gridscan.py +185 -7
  69. dls_dodal-1.62.0/tests/devices/util/__init__.py +0 -0
  70. dls_dodal-1.62.0/tests/fake_zocalo/__init__.py +0 -0
  71. dls_dodal-1.62.0/tests/plan_stubs/__init__.py +0 -0
  72. dls_dodal-1.62.0/tests/plans/__init__.py +0 -0
  73. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +4 -0
  74. dls_dodal-1.62.0/tests/plans/test_preprocessors/__init__.py +0 -0
  75. dls_dodal-1.62.0/tests/preprocessors/__init__.py +0 -0
  76. dls_dodal-1.60.0/tests/devices/i15/test_dcm.py +0 -7
  77. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.copier-answers.yml +0 -0
  78. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.devcontainer/devcontainer.json +0 -0
  79. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/CODEOWNERS +0 -0
  80. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/CONTRIBUTING.md +0 -0
  81. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  82. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/actions/install_requirements/action.yml +0 -0
  83. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/dependabot.yml +0 -0
  84. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/pages/index.html +0 -0
  85. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/pages/make_switcher.py +0 -0
  86. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/scripts/check_test_durations.py +0 -0
  87. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_dist.yml +0 -0
  88. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_docs.yml +0 -0
  89. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_pypi.yml +0 -0
  90. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_release.yml +0 -0
  91. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_test.yml +0 -0
  92. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/_tox.yml +0 -0
  93. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/ci.yml +0 -0
  94. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.github/workflows/periodic.yml +0 -0
  95. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.gitignore +0 -0
  96. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.pre-commit-config.yaml +0 -0
  97. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.vscode/extensions.json +0 -0
  98. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.vscode/launch.json +0 -0
  99. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.vscode/settings.json +0 -0
  100. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/.vscode/tasks.json +0 -0
  101. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/Dockerfile +0 -0
  102. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/LICENSE +0 -0
  103. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/README.md +0 -0
  104. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/catalog-info.yaml +0 -0
  105. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/conftest.py +0 -0
  106. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/_templates/autosummary/class.rst +0 -0
  107. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/_templates/autosummary/module.rst +0 -0
  108. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/_templates/custom-module-template.rst +0 -0
  109. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
  110. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/assets/zocalo.png +0 -0
  111. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/conf.py +0 -0
  112. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  113. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  114. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  115. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  116. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  117. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
  118. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions/COPYME +0 -0
  119. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/decisions.md +0 -0
  120. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/reviews.md +0 -0
  121. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/umls/apple2_design.png +0 -0
  122. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations/umls/i10_id_design.png +0 -0
  123. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/explanations.md +0 -0
  124. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/genindex.md +0 -0
  125. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/build-docs.md +0 -0
  126. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/contribute.md +0 -0
  127. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/coverage.md +0 -0
  128. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/create-beamline.md +0 -0
  129. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/create-device.md +0 -0
  130. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/dev-install.md +0 -0
  131. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/excalidraw.md +0 -0
  132. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/external-io-devices.md +0 -0
  133. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/lint.md +0 -0
  134. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/lock-requirements.md +0 -0
  135. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/make-release.md +0 -0
  136. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/move-code.md +0 -0
  137. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/pypi.md +0 -0
  138. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/run-tests.md +0 -0
  139. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/static-analysis.md +0 -0
  140. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/update-template.md +0 -0
  141. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/write-tests.md +0 -0
  142. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to/zocalo.md +0 -0
  143. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/how-to.md +0 -0
  144. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/images/dls-logo.svg +0 -0
  145. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/images/excalidraw-example.svg +0 -0
  146. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/index.md +0 -0
  147. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/reference/api.md +0 -0
  148. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/reference/device-standards.md +0 -0
  149. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/reference/standards.md +0 -0
  150. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/reference.md +0 -0
  151. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/tutorials/get_started.md +0 -0
  152. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/tutorials/installation.md +0 -0
  153. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/docs/tutorials.md +0 -0
  154. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/pull_request_template.md +0 -0
  155. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/setup.cfg +0 -0
  156. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/__init__.py +0 -0
  157. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  158. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  159. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/requires.txt +0 -0
  160. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  161. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/__init__.py +0 -0
  162. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/__main__.py +0 -0
  163. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  164. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  165. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
  166. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/README.md +0 -0
  167. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/__init__.py +0 -0
  168. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/adsim.py +0 -0
  169. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/aithre.py +0 -0
  170. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b01_1.py +0 -0
  171. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b07.py +0 -0
  172. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b07_1.py +0 -0
  173. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b16.py +0 -0
  174. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b18.py +0 -0
  175. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/b21.py +0 -0
  176. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i02_1.py +0 -0
  177. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i03.py +0 -0
  178. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i05.py +0 -0
  179. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i05_1.py +0 -0
  180. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i09.py +0 -0
  181. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i09_1.py +0 -0
  182. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i09_2.py +0 -0
  183. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i10-1.py +0 -0
  184. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i10.py +0 -0
  185. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i11.py +0 -0
  186. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i13_1.py +0 -0
  187. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i15.py +0 -0
  188. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i15_1.py +0 -0
  189. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i17.py +0 -0
  190. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i18.py +0 -0
  191. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i19_1.py +0 -0
  192. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i19_optics.py +0 -0
  193. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i20_1.py +0 -0
  194. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i21.py +0 -0
  195. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i22.py +0 -0
  196. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i23.py +0 -0
  197. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/i24.py +0 -0
  198. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/k07.py +0 -0
  199. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/k11.py +0 -0
  200. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/p38.py +0 -0
  201. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/p45.py +0 -0
  202. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/p60.py +0 -0
  203. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/p99.py +0 -0
  204. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/beamlines/training_rig.py +0 -0
  205. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/cli.py +0 -0
  206. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/__init__.py +0 -0
  207. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/beamlines/__init__.py +0 -0
  208. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  209. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  210. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
  211. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  212. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/coordination.py +0 -0
  213. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/crystal_metadata.py +0 -0
  214. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/data_util.py +0 -0
  215. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/device_utils.py +0 -0
  216. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/enums.py +0 -0
  217. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/maths.py +0 -0
  218. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/types.py +0 -0
  219. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/udc_directory_provider.py +0 -0
  220. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/visit.py +0 -0
  221. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/common/watcher_utils.py +0 -0
  222. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/__init__.py +0 -0
  223. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
  224. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  225. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  226. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/aperture.py +0 -0
  227. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  228. {dls_dodal-1.60.0/src/dodal/devices/b16 → dls_dodal-1.62.0/src/dodal/devices/areadetector}/__init__.py +0 -0
  229. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  230. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  231. {dls_dodal-1.60.0/src/dodal/devices/i02_1 → dls_dodal-1.62.0/src/dodal/devices/areadetector/plugins}/__init__.py +0 -0
  232. {dls_dodal-1.60.0/src/dodal/devices/i10 → dls_dodal-1.62.0/src/dodal/devices/attenuator}/__init__.py +0 -0
  233. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  234. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/attenuator/filter.py +0 -0
  235. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  236. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b07/__init__.py +0 -0
  237. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b07/enums.py +0 -0
  238. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b07_1/__init__.py +0 -0
  239. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
  240. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b07_1/enums.py +0 -0
  241. {dls_dodal-1.60.0/src/dodal/devices/i13_1 → dls_dodal-1.62.0/src/dodal/devices/b16}/__init__.py +0 -0
  242. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/b16/detector.py +0 -0
  243. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/backlight.py +0 -0
  244. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/baton.py +0 -0
  245. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  246. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/collimation_table.py +0 -0
  247. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/common_dcm.py +0 -0
  248. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/cryostream.py +0 -0
  249. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  250. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  251. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  252. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  253. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  254. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  255. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/__init__.py +0 -0
  256. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  257. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  258. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  259. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/detector.py +0 -0
  260. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  261. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/diamond_filter.py +0 -0
  262. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/eiger.py +0 -0
  263. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/eiger_odin.py +0 -0
  264. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  265. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
  266. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/energy_sources.py +0 -0
  267. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  268. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  269. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
  270. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  271. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
  272. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/types.py +0 -0
  273. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  274. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  275. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
  276. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  277. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
  278. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/eurotherm.py +0 -0
  279. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  280. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/flux.py +0 -0
  281. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/focusing_mirror.py +0 -0
  282. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/hutch_shutter.py +0 -0
  283. {dls_dodal-1.60.0/src/dodal/devices/i19 → dls_dodal-1.62.0/src/dodal/devices/i02_1}/__init__.py +0 -0
  284. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i02_1/sample_motors.py +0 -0
  285. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i03/__init__.py +0 -0
  286. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i03/dcm.py +0 -0
  287. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
  288. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i04/__init__.py +0 -0
  289. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i04/constants.py +0 -0
  290. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i04/transfocator.py +0 -0
  291. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i05/__init__.py +0 -0
  292. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i05/enums.py +0 -0
  293. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i09/__init__.py +0 -0
  294. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i09/dcm.py +0 -0
  295. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i09/enums.py +0 -0
  296. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i09_1/__init__.py +0 -0
  297. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i09_1/enums.py +0 -0
  298. {dls_dodal-1.60.0/src/dodal/devices/i20_1 → dls_dodal-1.62.0/src/dodal/devices/i10}/__init__.py +0 -0
  299. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  300. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  301. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/mirrors.py +0 -0
  302. {dls_dodal-1.60.0/src/dodal/devices/i24 → dls_dodal-1.62.0/src/dodal/devices/i10/rasor}/__init__.py +0 -0
  303. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  304. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  305. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  306. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i10/slits.py +0 -0
  307. {dls_dodal-1.60.0/src/dodal/devices/oav → dls_dodal-1.62.0/src/dodal/devices/i11}/__init__.py +0 -0
  308. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
  309. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i11/diff_stages.py +0 -0
  310. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i11/mythen.py +0 -0
  311. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i11/nx100robot.py +0 -0
  312. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i11/spinner.py +0 -0
  313. {dls_dodal-1.60.0/src/dodal/devices/p99 → dls_dodal-1.62.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  314. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  315. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  316. {dls_dodal-1.60.0/src/dodal/devices/temperture_controller/lakeshore → dls_dodal-1.62.0/src/dodal/devices/i15}/__init__.py +0 -0
  317. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i15/motors.py +0 -0
  318. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  319. {dls_dodal-1.60.0/src/dodal/devices/util → dls_dodal-1.62.0/src/dodal/devices/i18}/__init__.py +0 -0
  320. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i18/diode.py +0 -0
  321. {dls_dodal-1.60.0/src/dodal/devices/zebra → dls_dodal-1.62.0/src/dodal/devices/i19}/__init__.py +0 -0
  322. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/backlight.py +0 -0
  323. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/beamstop.py +0 -0
  324. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  325. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/diffractometer.py +0 -0
  326. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  327. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i19/shutter.py +0 -0
  328. {dls_dodal-1.60.0/src/dodal/plan_stubs → dls_dodal-1.62.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  329. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i21/__init__.py +0 -0
  330. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i21/enums.py +0 -0
  331. {dls_dodal-1.60.0/src/dodal/plans/preprocessors → dls_dodal-1.62.0/src/dodal/devices/i22}/__init__.py +0 -0
  332. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i22/dcm.py +0 -0
  333. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i22/fswitch.py +0 -0
  334. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i22/nxsas.py +0 -0
  335. {dls_dodal-1.60.0/system_tests → dls_dodal-1.62.0/src/dodal/devices/i24}/__init__.py +0 -0
  336. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/aperture.py +0 -0
  337. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/beam_center.py +0 -0
  338. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/beamstop.py +0 -0
  339. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/dcm.py +0 -0
  340. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  341. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  342. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/pmac.py +0 -0
  343. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/i24/vgonio.py +0 -0
  344. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/ipin.py +0 -0
  345. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/linkam3.py +0 -0
  346. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/motors.py +0 -0
  347. {dls_dodal-1.60.0/tests → dls_dodal-1.62.0/src/dodal/devices/mx_phase1}/__init__.py +0 -0
  348. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  349. {dls_dodal-1.60.0/tests/beamlines → dls_dodal-1.62.0/src/dodal/devices/oav}/__init__.py +0 -0
  350. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  351. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  352. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  353. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  354. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  355. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  356. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  357. {dls_dodal-1.60.0/tests/common → dls_dodal-1.62.0/src/dodal/devices/oav/snapshots}/__init__.py +0 -0
  358. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  359. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  360. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  361. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  362. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/oav/utils.py +0 -0
  363. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p45.py +0 -0
  364. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p60/__init__.py +0 -0
  365. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p60/enums.py +0 -0
  366. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  367. {dls_dodal-1.60.0/tests/common/beamlines → dls_dodal-1.62.0/src/dodal/devices/p99}/__init__.py +0 -0
  368. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  369. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  370. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/pgm.py +0 -0
  371. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/positioner.py +0 -0
  372. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  373. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/qbpm.py +0 -0
  374. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/robot.py +0 -0
  375. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  376. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/scintillator.py +0 -0
  377. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/slits.py +0 -0
  378. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/smargon.py +0 -0
  379. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/status.py +0 -0
  380. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/synchrotron.py +0 -0
  381. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/temperture_controller/__init__.py +0 -0
  382. {dls_dodal-1.60.0/tests/devices → dls_dodal-1.62.0/src/dodal/devices/temperture_controller/lakeshore}/__init__.py +0 -0
  383. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +0 -0
  384. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +0 -0
  385. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/tetramm.py +0 -0
  386. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/thawer.py +0 -0
  387. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/turbo_slit.py +0 -0
  388. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/undulator.py +0 -0
  389. {dls_dodal-1.60.0/tests/devices/electron_analyser → dls_dodal-1.62.0/src/dodal/devices/util}/__init__.py +0 -0
  390. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  391. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/util/epics_util.py +0 -0
  392. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  393. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/v2f.py +0 -0
  394. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  395. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/webcam.py +0 -0
  396. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  397. {dls_dodal-1.60.0/tests/devices/electron_analyser/abstract → dls_dodal-1.62.0/src/dodal/devices/xspress3}/__init__.py +0 -0
  398. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  399. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  400. {dls_dodal-1.60.0/tests/devices/electron_analyser/specs → dls_dodal-1.62.0/src/dodal/devices/zebra}/__init__.py +0 -0
  401. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zebra/zebra.py +0 -0
  402. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  403. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  404. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  405. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  406. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  407. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  408. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/log.py +0 -0
  409. {dls_dodal-1.60.0/tests/devices/electron_analyser/vgscienta → dls_dodal-1.62.0/src/dodal/parameters}/__init__.py +0 -0
  410. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  411. {dls_dodal-1.60.0/tests/devices/i02_1 → dls_dodal-1.62.0/src/dodal/plan_stubs}/__init__.py +0 -0
  412. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  413. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plan_stubs/data_session.py +0 -0
  414. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  415. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  416. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/__init__.py +0 -0
  417. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/bimorph.py +0 -0
  418. {dls_dodal-1.60.0/tests/devices/i03 → dls_dodal-1.62.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  419. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  420. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/save_panda.py +0 -0
  421. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/scanspec.py +0 -0
  422. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  423. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/plans/wrapped.py +0 -0
  424. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/testing/__init__.py +0 -0
  425. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
  426. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
  427. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/testing/setup.py +0 -0
  428. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/src/dodal/utils.py +0 -0
  429. {dls_dodal-1.60.0/tests/devices/i04 → dls_dodal-1.62.0/system_tests}/__init__.py +0 -0
  430. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/system_tests/test_adsim.py +0 -0
  431. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/system_tests/test_cli.py +0 -0
  432. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/system_tests/test_oav_system.py +0 -0
  433. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/system_tests/test_oav_to_redis_system.py +0 -0
  434. {dls_dodal-1.60.0/tests/devices/i09 → dls_dodal-1.62.0/tests}/__init__.py +0 -0
  435. {dls_dodal-1.60.0/tests/devices/i19 → dls_dodal-1.62.0/tests/beamlines}/__init__.py +0 -0
  436. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/beamlines/test_b16.py +0 -0
  437. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/beamlines/test_i03.py +0 -0
  438. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/beamlines/test_i24.py +0 -0
  439. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/beamlines/test_mapping.py +0 -0
  440. {dls_dodal-1.60.0/tests/devices/i24 → dls_dodal-1.62.0/tests/common}/__init__.py +0 -0
  441. {dls_dodal-1.60.0/tests/devices/mx_phase1 → dls_dodal-1.62.0/tests/common/beamlines}/__init__.py +0 -0
  442. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  443. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  444. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/beamlines/test_commissioning_mode.py +0 -0
  445. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  446. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_coordination.py +0 -0
  447. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_crystal_metadata.py +0 -0
  448. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_maths.py +0 -0
  449. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_udc_directory_provider.py +0 -0
  450. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_visit.py +0 -0
  451. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/common/test_watcher_utils.py +0 -0
  452. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/conftest.py +0 -0
  453. {dls_dodal-1.60.0/tests/devices/oav → dls_dodal-1.62.0/tests/devices}/__init__.py +0 -0
  454. {dls_dodal-1.60.0/tests/devices/temperature_controller → dls_dodal-1.62.0/tests/devices/aithre_lasershaping}/__init__.py +0 -0
  455. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  456. {dls_dodal-1.60.0/tests/devices/temperature_controller/lakeshore → dls_dodal-1.62.0/tests/devices/b07_1}/__init__.py +0 -0
  457. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/b07_1/test_ccmc.py +0 -0
  458. {dls_dodal-1.60.0/tests/devices/util → dls_dodal-1.62.0/tests/devices/current_amplifier}/__init__.py +0 -0
  459. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/current_amplifier/test_femto.py +0 -0
  460. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
  461. {dls_dodal-1.60.0/tests/fake_zocalo → dls_dodal-1.62.0/tests/devices/detector}/__init__.py +0 -0
  462. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/detector/test_data/__init__.py +0 -0
  463. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
  464. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
  465. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/detector/test_det_resolution.py +3 -3
  466. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/detector/test_detector.py +1 -1
  467. {dls_dodal-1.60.0/tests/plan_stubs → dls_dodal-1.62.0/tests/devices/electron_analyser}/__init__.py +0 -0
  468. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/conftest.py +0 -0
  469. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
  470. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
  471. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
  472. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -0
  473. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
  474. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
  475. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
  476. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
  477. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_energy_sources.py +0 -0
  478. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/test_util.py +0 -0
  479. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -0
  480. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
  481. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i03/test_dcm.py +0 -0
  482. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i03/test_undulator_dcm.py +0 -0
  483. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i04/test_transfocator.py +0 -0
  484. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i09/test_dcm.py +0 -0
  485. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
  486. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
  487. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/__init__.py +0 -0
  488. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  489. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  490. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  491. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  492. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i11/test_i11devices.py +0 -0
  493. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i11/test_mythen.py +0 -0
  494. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i13_1/test_merlin.py +0 -0
  495. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  496. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i19/test_backlight.py +0 -0
  497. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i19/test_beamstop.py +0 -0
  498. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i19/test_diffractometer.py +0 -0
  499. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i19/test_shutter.py +0 -0
  500. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i22/test_dcm.py +0 -0
  501. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i22/test_fswitch.py +0 -0
  502. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i22/test_metadataholder.py +0 -0
  503. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i24/test_dual_backlight.py +0 -0
  504. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
  505. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i24/test_pmac.py +0 -0
  506. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/i24/test_vgonio.py +0 -0
  507. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
  508. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/conftest.py +0 -0
  509. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
  510. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  511. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_data/__init__.py +0 -0
  512. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
  513. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
  514. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
  515. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_grid_overlay.py +0 -0
  516. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_oav.py +0 -0
  517. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_oav_parameters.py +0 -0
  518. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
  519. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_oav_utils.py +0 -0
  520. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
  521. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/oav/test_snapshots.py +0 -0
  522. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
  523. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/p99/test_p99_stage.py +0 -0
  524. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +0 -0
  525. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +0 -0
  526. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test.png +0 -0
  527. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_aperture.py +0 -0
  528. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_aperture_scatterguard.py +0 -0
  529. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_apple2_undulator.py +0 -0
  530. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_attenuator.py +0 -0
  531. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_backlight.py +0 -0
  532. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_bart_robot.py +0 -0
  533. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_baton.py +0 -0
  534. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_beam_converter.py +0 -0
  535. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_bimorph_mirror.py +0 -0
  536. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_common_dcm.py +0 -0
  537. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_controllers.py +0 -0
  538. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
  539. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
  540. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
  541. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  542. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  543. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
  544. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_data/__init__.py +0 -0
  545. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  546. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
  547. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_diamond_filter.py +0 -0
  548. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_eiger.py +0 -0
  549. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_focusing_mirror.py +0 -0
  550. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_hutch_shutter.py +0 -0
  551. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_motors.py +0 -0
  552. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_odin.py +0 -0
  553. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_positioner.py +0 -0
  554. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_pressure_jump_cell.py +0 -0
  555. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_qbpm.py +0 -0
  556. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_scintillator.py +0 -0
  557. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_slits.py +0 -0
  558. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_smargon.py +0 -0
  559. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_status.py +0 -0
  560. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_synchrotron.py +0 -0
  561. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_tetramm.py +0 -0
  562. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_thawer.py +0 -0
  563. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_turbo_slit.py +0 -0
  564. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_undulator.py +0 -0
  565. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_utils.py +0 -0
  566. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
  567. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_webcam.py +0 -0
  568. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_xbpm_feedback.py +0 -0
  569. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_xspress3.py +0 -0
  570. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_zebra.py +0 -0
  571. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
  572. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_zebra_shutter.py +0 -0
  573. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_zocalo_interaction.py +0 -0
  574. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/test_zocalo_results.py +0 -0
  575. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_adjuster_plans.py +0 -0
  576. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
  577. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_data/__init__.py +0 -0
  578. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  579. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  580. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  581. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_lookup_tables.py +0 -0
  582. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/devices/util/test_save_panda.py +0 -0
  583. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline.py +0 -0
  584. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  585. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_broken_dependency.py +0 -0
  586. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_dependencies.py +0 -0
  587. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  588. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  589. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_beamline_some_devices_working.py +0 -0
  590. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_device_factory_beamline.py +0 -0
  591. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_zocalo/README.rst +0 -0
  592. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_zocalo/__main__.py +0 -0
  593. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  594. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_data/__init__.py +0 -0
  595. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
  596. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
  597. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_data_session.py +0 -0
  598. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  599. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  600. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  601. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/conftest.py +3 -3
  602. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_bimorph.py +0 -0
  603. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_compliance.py +0 -0
  604. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +1 -1
  605. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_scanspec.py +0 -0
  606. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_verify_undulator_gap_plan.py +1 -1
  607. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/plans/test_wrapped.py +0 -0
  608. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  609. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_cli.py +0 -0
  610. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/__init__.py +0 -0
  611. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/bad_beamlineParameters +0 -0
  612. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/i04_beamlineParameters +0 -0
  613. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  614. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/test_display.configuration +0 -0
  615. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
  616. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_log.py +0 -0
  617. {dls_dodal-1.60.0 → dls_dodal-1.62.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.60.0
3
+ Version: 1.62.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
6
6
  License: Apache License
@@ -188,6 +188,7 @@ lint.select = [
188
188
  "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
189
189
  "RUF018", # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
190
190
  "TID251", # banned api - https://docs.astral.sh/ruff/rules/banned-api/
191
+ "INP001", # missing __init__.py - https://docs.astral.sh/ruff/rules/implicit-namespace-package/
191
192
  ]
192
193
 
193
194
  [tool.ruff.lint.per-file-ignores]
@@ -196,6 +197,8 @@ lint.select = [
196
197
  # Remove this line to forbid private member access, walrus operators, banned api in asserts in tests
197
198
  "tests/**/*" = ["SLF001", "RUF018", "TID251"]
198
199
  "system_tests/**/*" = ["SLF001", "RUF018", "TID251"]
200
+ ".github/**/*" = ["INP001"]
201
+ "docs/**/*" = ["INP001"]
199
202
 
200
203
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
201
204
  "time.sleep".msg = "Use bps.sleep or asyncio.sleep instead. # noqa will disable this rule for that line. See https://github.com/DiamondLightSource/mx-bluesky/issues/925"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.60.0
3
+ Version: 1.62.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
6
6
  License: Apache License
@@ -166,6 +166,7 @@ src/dodal/devices/eiger.py
166
166
  src/dodal/devices/eiger_odin.py
167
167
  src/dodal/devices/eurotherm.py
168
168
  src/dodal/devices/fast_grid_scan.py
169
+ src/dodal/devices/fast_shutter.py
169
170
  src/dodal/devices/fluorescence_detector_motion.py
170
171
  src/dodal/devices/flux.py
171
172
  src/dodal/devices/focusing_mirror.py
@@ -196,8 +197,11 @@ src/dodal/devices/xbpm_feedback.py
196
197
  src/dodal/devices/aithre_lasershaping/__init__.py
197
198
  src/dodal/devices/aithre_lasershaping/goniometer.py
198
199
  src/dodal/devices/aithre_lasershaping/laser_robot.py
200
+ src/dodal/devices/areadetector/__init__.py
199
201
  src/dodal/devices/areadetector/plugins/CAM.py
200
202
  src/dodal/devices/areadetector/plugins/MJPG.py
203
+ src/dodal/devices/areadetector/plugins/__init__.py
204
+ src/dodal/devices/attenuator/__init__.py
201
205
  src/dodal/devices/attenuator/attenuator.py
202
206
  src/dodal/devices/attenuator/filter.py
203
207
  src/dodal/devices/attenuator/filter_selections.py
@@ -264,9 +268,11 @@ src/dodal/devices/i10/i10_apple2.py
264
268
  src/dodal/devices/i10/i10_setting_data.py
265
269
  src/dodal/devices/i10/mirrors.py
266
270
  src/dodal/devices/i10/slits.py
271
+ src/dodal/devices/i10/rasor/__init__.py
267
272
  src/dodal/devices/i10/rasor/rasor_current_amp.py
268
273
  src/dodal/devices/i10/rasor/rasor_motors.py
269
274
  src/dodal/devices/i10/rasor/rasor_scaler_cards.py
275
+ src/dodal/devices/i11/__init__.py
270
276
  src/dodal/devices/i11/cyberstar_blower.py
271
277
  src/dodal/devices/i11/diff_stages.py
272
278
  src/dodal/devices/i11/mythen.py
@@ -275,6 +281,7 @@ src/dodal/devices/i11/spinner.py
275
281
  src/dodal/devices/i13_1/__init__.py
276
282
  src/dodal/devices/i13_1/merlin.py
277
283
  src/dodal/devices/i13_1/merlin_controller.py
284
+ src/dodal/devices/i15/__init__.py
278
285
  src/dodal/devices/i15/dcm.py
279
286
  src/dodal/devices/i15/focussing_mirror.py
280
287
  src/dodal/devices/i15/jack.py
@@ -283,6 +290,7 @@ src/dodal/devices/i15/motors.py
283
290
  src/dodal/devices/i15/multilayer_mirror.py
284
291
  src/dodal/devices/i15/rail.py
285
292
  src/dodal/devices/i18/KBMirror.py
293
+ src/dodal/devices/i18/__init__.py
286
294
  src/dodal/devices/i18/diode.py
287
295
  src/dodal/devices/i19/__init__.py
288
296
  src/dodal/devices/i19/backlight.py
@@ -290,10 +298,13 @@ src/dodal/devices/i19/beamstop.py
290
298
  src/dodal/devices/i19/blueapi_device.py
291
299
  src/dodal/devices/i19/diffractometer.py
292
300
  src/dodal/devices/i19/hutch_access.py
301
+ src/dodal/devices/i19/mapt_configuration.py
302
+ src/dodal/devices/i19/pin_col_stages.py
293
303
  src/dodal/devices/i19/shutter.py
294
304
  src/dodal/devices/i20_1/__init__.py
295
305
  src/dodal/devices/i21/__init__.py
296
306
  src/dodal/devices/i21/enums.py
307
+ src/dodal/devices/i22/__init__.py
297
308
  src/dodal/devices/i22/dcm.py
298
309
  src/dodal/devices/i22/fswitch.py
299
310
  src/dodal/devices/i22/nxsas.py
@@ -307,6 +318,7 @@ src/dodal/devices/i24/dual_backlight.py
307
318
  src/dodal/devices/i24/focus_mirrors.py
308
319
  src/dodal/devices/i24/pmac.py
309
320
  src/dodal/devices/i24/vgonio.py
321
+ src/dodal/devices/mx_phase1/__init__.py
310
322
  src/dodal/devices/mx_phase1/beamstop.py
311
323
  src/dodal/devices/oav/__init__.py
312
324
  src/dodal/devices/oav/oav_calculations.py
@@ -317,6 +329,7 @@ src/dodal/devices/oav/utils.py
317
329
  src/dodal/devices/oav/pin_image_recognition/__init__.py
318
330
  src/dodal/devices/oav/pin_image_recognition/manual_test.py
319
331
  src/dodal/devices/oav/pin_image_recognition/utils.py
332
+ src/dodal/devices/oav/snapshots/__init__.py
320
333
  src/dodal/devices/oav/snapshots/grid_overlay.py
321
334
  src/dodal/devices/oav/snapshots/snapshot.py
322
335
  src/dodal/devices/oav/snapshots/snapshot_image_processing.py
@@ -335,6 +348,7 @@ src/dodal/devices/util/__init__.py
335
348
  src/dodal/devices/util/adjuster_plans.py
336
349
  src/dodal/devices/util/epics_util.py
337
350
  src/dodal/devices/util/lookup_tables.py
351
+ src/dodal/devices/xspress3/__init__.py
338
352
  src/dodal/devices/xspress3/xspress3.py
339
353
  src/dodal/devices/xspress3/xspress3_channel.py
340
354
  src/dodal/devices/zebra/__init__.py
@@ -345,6 +359,7 @@ src/dodal/devices/zocalo/__init__.py
345
359
  src/dodal/devices/zocalo/zocalo_constants.py
346
360
  src/dodal/devices/zocalo/zocalo_interaction.py
347
361
  src/dodal/devices/zocalo/zocalo_results.py
362
+ src/dodal/parameters/__init__.py
348
363
  src/dodal/parameters/experiment_parameter_base.py
349
364
  src/dodal/plan_stubs/__init__.py
350
365
  src/dodal/plan_stubs/check_topup.py
@@ -414,6 +429,7 @@ tests/devices/test_common_dcm.py
414
429
  tests/devices/test_controllers.py
415
430
  tests/devices/test_diamond_filter.py
416
431
  tests/devices/test_eiger.py
432
+ tests/devices/test_fast_shutters.py
417
433
  tests/devices/test_focusing_mirror.py
418
434
  tests/devices/test_gridscan.py
419
435
  tests/devices/test_hutch_shutter.py
@@ -441,10 +457,14 @@ tests/devices/test_zebra_constants_mapping.py
441
457
  tests/devices/test_zebra_shutter.py
442
458
  tests/devices/test_zocalo_interaction.py
443
459
  tests/devices/test_zocalo_results.py
460
+ tests/devices/aithre_lasershaping/__init__.py
444
461
  tests/devices/aithre_lasershaping/test_goniometer.py
462
+ tests/devices/b07_1/__init__.py
445
463
  tests/devices/b07_1/test_ccmc.py
464
+ tests/devices/current_amplifier/__init__.py
446
465
  tests/devices/current_amplifier/test_femto.py
447
466
  tests/devices/current_amplifier/test_sr570.py
467
+ tests/devices/detector/__init__.py
448
468
  tests/devices/detector/test_det_dim_constants.py
449
469
  tests/devices/detector/test_det_resolution.py
450
470
  tests/devices/detector/test_detector.py
@@ -483,6 +503,7 @@ tests/devices/i04/test_murko_results.py
483
503
  tests/devices/i04/test_transfocator.py
484
504
  tests/devices/i09/__init__.py
485
505
  tests/devices/i09/test_dcm.py
506
+ tests/devices/i10/__init__.py
486
507
  tests/devices/i10/test_i10Apple2.py
487
508
  tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv
488
509
  tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv
@@ -491,16 +512,23 @@ tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl
491
512
  tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl
492
513
  tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl
493
514
  tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl
515
+ tests/devices/i11/__init__.py
494
516
  tests/devices/i11/test_i11devices.py
495
517
  tests/devices/i11/test_mythen.py
518
+ tests/devices/i13_1/__init__.py
496
519
  tests/devices/i13_1/test_merlin.py
520
+ tests/devices/i15/__init__.py
497
521
  tests/devices/i15/test_dcm.py
522
+ tests/devices/i18/__init__.py
498
523
  tests/devices/i18/test_kb_mirror.py
499
524
  tests/devices/i19/__init__.py
500
525
  tests/devices/i19/test_backlight.py
501
526
  tests/devices/i19/test_beamstop.py
502
527
  tests/devices/i19/test_diffractometer.py
528
+ tests/devices/i19/test_mapt.py
529
+ tests/devices/i19/test_pin_col.py
503
530
  tests/devices/i19/test_shutter.py
531
+ tests/devices/i22/__init__.py
504
532
  tests/devices/i22/test_dcm.py
505
533
  tests/devices/i22/test_fswitch.py
506
534
  tests/devices/i22/test_metadataholder.py
@@ -521,13 +549,16 @@ tests/devices/oav/test_oav_to_redis_forwarder.py
521
549
  tests/devices/oav/test_oav_utils.py
522
550
  tests/devices/oav/test_snapshot_image_processing.py
523
551
  tests/devices/oav/test_snapshots.py
552
+ tests/devices/oav/image_recognition/__init__.py
524
553
  tests/devices/oav/image_recognition/test_pin_tip_detect.py
525
554
  tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py
526
555
  tests/devices/oav/test_data/__init__.py
527
556
  tests/devices/oav/test_data/oav_snapshot_expected.png
528
557
  tests/devices/oav/test_data/oav_snapshot_test.png
529
558
  tests/devices/oav/test_data/test_OAVCentring.json
559
+ tests/devices/p60/__init__.py
530
560
  tests/devices/p60/test_lab_xray_source.py
561
+ tests/devices/p99/__init__.py
531
562
  tests/devices/p99/test_p99_stage.py
532
563
  tests/devices/temperature_controller/__init__.py
533
564
  tests/devices/temperature_controller/lakeshore/__init__.py
@@ -563,6 +594,7 @@ tests/plan_stubs/test_wrapped_stubs.py
563
594
  tests/plan_stubs/test_data/__init__.py
564
595
  tests/plan_stubs/test_data/topup_long_delay.txt
565
596
  tests/plan_stubs/test_data/topup_short_params.txt
597
+ tests/plans/__init__.py
566
598
  tests/plans/conftest.py
567
599
  tests/plans/test_bimorph.py
568
600
  tests/plans/test_compliance.py
@@ -570,7 +602,9 @@ tests/plans/test_configure_arm_trigger_and_disarm_detector.py
570
602
  tests/plans/test_scanspec.py
571
603
  tests/plans/test_verify_undulator_gap_plan.py
572
604
  tests/plans/test_wrapped.py
605
+ tests/plans/test_preprocessors/__init__.py
573
606
  tests/plans/test_preprocessors/test_verify_undulator_gap.py
607
+ tests/preprocessors/__init__.py
574
608
  tests/preprocessors/test_filesystem_metadata.py
575
609
  tests/test_data/__init__.py
576
610
  tests/test_data/bad_beamlineParameters
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.60.0'
32
- __version_tuple__ = version_tuple = (1, 60, 0)
31
+ __version__ = version = '1.62.0'
32
+ __version_tuple__ = version_tuple = (1, 62, 0)
33
33
 
34
- __commit_id__ = commit_id = 'gb3036ebaf'
34
+ __commit_id__ = commit_id = 'g146f56508'
@@ -234,7 +234,7 @@ def undulator() -> Undulator:
234
234
  """
235
235
  return Undulator(
236
236
  prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
237
- id_gap_lookup_table_path="/dls_sw/i04/software/gda/config/lookupTables/BeamLine_Undulator_toGap.txt",
237
+ id_gap_lookup_table_path="/dls_sw/i04/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
238
238
  )
239
239
 
240
240
 
@@ -11,6 +11,7 @@ from dodal.devices.i19.backlight import BacklightPosition
11
11
  from dodal.devices.i19.beamstop import BeamStop
12
12
  from dodal.devices.i19.blueapi_device import HutchState
13
13
  from dodal.devices.i19.diffractometer import FourCircleDiffractometer
14
+ from dodal.devices.i19.pin_col_stages import PinholeCollimatorControl
14
15
  from dodal.devices.i19.shutter import AccessControlledShutter
15
16
  from dodal.devices.synchrotron import Synchrotron
16
17
  from dodal.devices.zebra.zebra import Zebra
@@ -81,6 +82,15 @@ def synchrotron() -> Synchrotron:
81
82
  return Synchrotron()
82
83
 
83
84
 
85
+ @device_factory()
86
+ def pinhole_and_collimator() -> PinholeCollimatorControl:
87
+ """Get the i19-2 pinhole and collimator control device, instantiate it if it
88
+ hasn't already been. If this is called when already instantiated in i19-2,
89
+ it will return the existing object.
90
+ """
91
+ return PinholeCollimatorControl(prefix=PREFIX.beamline_prefix)
92
+
93
+
84
94
  @device_factory()
85
95
  def backlight() -> BacklightPosition:
86
96
  """Get the i19-2 backlight device, instantiate it if it hasn't already been.
@@ -301,9 +301,68 @@ class UndulatorJawPhase(SafeUndulatorMover[float]):
301
301
  )
302
302
 
303
303
 
304
+ class Apple2Motors(StandardReadable, Movable):
305
+ """
306
+ Device representing the combined motor controls for an Apple2 undulator.
307
+
308
+ Attributes
309
+ ----------
310
+ gap : UndulatorGap
311
+ The undulator gap motor device.
312
+ phase : UndulatorPhaseAxes
313
+ The undulator phase axes device, consisting of four phase motors.
314
+ """
315
+
316
+ def __init__(self, id_gap: UndulatorGap, id_phase: UndulatorPhaseAxes, name=""):
317
+ """
318
+ Parameters
319
+ ----------
320
+
321
+ id_gap: UndulatorGap
322
+ An UndulatorGap device.
323
+ id_phase: UndulatorPhaseAxes
324
+ An UndulatorPhaseAxes device.
325
+ name: str
326
+ Name of the device.
327
+ """
328
+ with self.add_children_as_readables():
329
+ self.gap = id_gap
330
+ self.phase = id_phase
331
+ super().__init__(name=name)
332
+
333
+ @AsyncStatus.wrap
334
+ async def set(self, id_motor_values: Apple2Val) -> None:
335
+ """
336
+ Check ID is in a movable state and set all the demand value before moving them
337
+ all at the same time. This should be modified by the beamline specific ID
338
+ class, if the ID motors has to move in a specific order.
339
+ """
340
+
341
+ # Only need to check gap as the phase motors share both fault and gate with gap.
342
+ await self.gap.raise_if_cannot_move()
343
+ await asyncio.gather(
344
+ self.phase.top_outer.user_setpoint.set(value=id_motor_values.top_outer),
345
+ self.phase.top_inner.user_setpoint.set(value=id_motor_values.top_inner),
346
+ self.phase.btm_inner.user_setpoint.set(value=id_motor_values.btm_inner),
347
+ self.phase.btm_outer.user_setpoint.set(value=id_motor_values.btm_outer),
348
+ self.gap.user_setpoint.set(value=id_motor_values.gap),
349
+ )
350
+ timeout = np.max(
351
+ await asyncio.gather(self.gap.get_timeout(), self.phase.get_timeout())
352
+ )
353
+ LOGGER.info(
354
+ f"Moving f{self.name} apple2 motors to {id_motor_values}, timeout = {timeout}"
355
+ )
356
+ await asyncio.gather(
357
+ self.gap.set_move.set(value=1, wait=False, timeout=timeout),
358
+ self.phase.set_move.set(value=1, wait=False, timeout=timeout),
359
+ )
360
+ await wait_for_value(self.gap.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
361
+
362
+
304
363
  class EnergyMotorConvertor(Protocol):
305
364
  def __call__(self, energy: float, pol: Pol) -> tuple[float, float]:
306
- """Protocol to provide energy to motor position convertion"""
365
+ """Protocol to provide energy to motor position conversion"""
307
366
  ...
308
367
 
309
368
 
@@ -318,15 +377,13 @@ class Apple2(abc.ABC, StandardReadable, Movable):
318
377
  The class is designed to manage the undulator's gap, phase motors, and polarisation settings, while
319
378
  abstracting hardware interactions and providing a high-level interface for beamline operations.
320
379
 
321
- The class is abstract and requires beamline-specific implementations for set motor
380
+ The class is abstract and requires beamline-specific implementations for _set motor
322
381
  positions based on energy and polarisation.
323
382
 
324
383
  Attributes
325
384
  ----------
326
- gap : UndulatorGap
327
- The gap control device for the undulator.
328
- phase : UndulatorPhaseAxes
329
- The phase control device, consisting of four phase motors.
385
+ apple2_motors : Apple2Motors
386
+ A collection of gap and phase motor devices.
330
387
  energy : SignalR
331
388
  A soft signal for the current energy readback.
332
389
  polarisation_setpoint : SignalR
@@ -340,7 +397,7 @@ class Apple2(abc.ABC, StandardReadable, Movable):
340
397
 
341
398
  Abstract Methods
342
399
  ----------------
343
- set(value: float) -> None
400
+ _set(value: float) -> None
344
401
  Abstract method to set motor positions for a given energy and polarisation.
345
402
 
346
403
  Methods
@@ -363,8 +420,7 @@ class Apple2(abc.ABC, StandardReadable, Movable):
363
420
 
364
421
  def __init__(
365
422
  self,
366
- id_gap: UndulatorGap,
367
- id_phase: UndulatorPhaseAxes,
423
+ apple2_motors: Apple2Motors,
368
424
  energy_motor_convertor: EnergyMotorConvertor,
369
425
  name: str = "",
370
426
  ) -> None:
@@ -378,8 +434,7 @@ class Apple2(abc.ABC, StandardReadable, Movable):
378
434
  name: Name of the device.
379
435
  """
380
436
 
381
- self.gap = id_gap
382
- self.phase = id_phase
437
+ self.motors = apple2_motors
383
438
  self.energy_to_motor = energy_motor_convertor
384
439
  with self.add_children_as_readables(StandardReadableFormat.HINTED_SIGNAL):
385
440
  # Store the set energy for readback.
@@ -398,11 +453,11 @@ class Apple2(abc.ABC, StandardReadable, Movable):
398
453
  raw_to_derived=self._read_pol,
399
454
  set_derived=self._set_pol,
400
455
  pol=self.polarisation_setpoint,
401
- top_outer=self.phase.top_outer.user_readback,
402
- top_inner=self.phase.top_inner.user_readback,
403
- btm_inner=self.phase.btm_inner.user_readback,
404
- btm_outer=self.phase.btm_outer.user_readback,
405
- gap=id_gap.user_readback,
456
+ top_outer=self.motors.phase.top_outer.user_readback,
457
+ top_inner=self.motors.phase.top_inner.user_readback,
458
+ btm_inner=self.motors.phase.btm_inner.user_readback,
459
+ btm_outer=self.motors.phase.btm_outer.user_readback,
460
+ gap=self.motors.gap.user_readback,
406
461
  )
407
462
  super().__init__(name)
408
463
 
@@ -420,24 +475,32 @@ class Apple2(abc.ABC, StandardReadable, Movable):
420
475
  self._set_pol_setpoint(value)
421
476
  await self.set(await self.energy.get_value())
422
477
 
423
- @abc.abstractmethod
424
478
  @AsyncStatus.wrap
425
479
  async def set(self, value: float) -> None:
426
480
  """
427
481
  Set should be in energy units, this will set the energy of the ID by setting the
428
482
  gap and phase motors to the correct position for the given energy
429
483
  and polarisation.
430
- This method should be implemented by the beamline specific ID class as the
431
- motor positions will be different for each beamline depending on the
432
- undulator design and the lookup table used.
433
- _set can be used to set the motor positions for the given energy and
434
- polarisation provided that all motors can be moved at the same time.
484
+
435
485
 
436
486
  Examples
437
487
  --------
438
488
  RE( id.set(888.0)) # This will set the ID to 888 eV
439
489
  RE(scan([detector], id,600,700,100)) # This will scan the ID from 600 to 700 eV in 100 steps.
440
490
  """
491
+ await self._set(value)
492
+ self._set_energy_rbv(value) # Update energy after move for readback.
493
+ LOGGER.info(f"Energy set to {value} eV successfully.")
494
+
495
+ @abc.abstractmethod
496
+ async def _set(self, value: float) -> None:
497
+ """
498
+ This method should be implemented by the beamline specific ID class as the
499
+ motor positions will be different for each beamline depending on the
500
+ undulator design and the lookup table used. The set method can be
501
+ used to set the motor positions for the given energy and polarisation
502
+ provided that all motors can be moved at the same time.
503
+ """
441
504
 
442
505
  def _read_pol(
443
506
  self,
@@ -468,36 +531,6 @@ class Apple2(abc.ABC, StandardReadable, Movable):
468
531
 
469
532
  return read_pol
470
533
 
471
- async def _set(self, value: Apple2Val, energy: float) -> None:
472
- """
473
- Check ID is in a movable state and set all the demand value before moving them
474
- all at the same time. This should be modified by the beamline specific ID class
475
- , if the ID motors has to move in a specific order.
476
- """
477
-
478
- # Only need to check gap as the phase motors share both fault and gate with gap.
479
- await self.gap.raise_if_cannot_move()
480
- await asyncio.gather(
481
- self.phase.top_outer.user_setpoint.set(value=value.top_outer),
482
- self.phase.top_inner.user_setpoint.set(value=value.top_inner),
483
- self.phase.btm_inner.user_setpoint.set(value=value.btm_inner),
484
- self.phase.btm_outer.user_setpoint.set(value=value.btm_outer),
485
- self.gap.user_setpoint.set(value=value.gap),
486
- )
487
- timeout = np.max(
488
- await asyncio.gather(self.gap.get_timeout(), self.phase.get_timeout())
489
- )
490
- LOGGER.info(
491
- f"Moving f{self.name} energy and polorisation to {energy}, {await self.polarisation.get_value()}"
492
- + f"with motor position {value}, timeout = {timeout}"
493
- )
494
- await asyncio.gather(
495
- self.gap.set_move.set(value=1, wait=False, timeout=timeout),
496
- self.phase.set_move.set(value=1, wait=False, timeout=timeout),
497
- )
498
- await wait_for_value(self.gap.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
499
- self._set_energy_rbv(energy) # Update energy after move for readback.
500
-
501
534
  def determine_phase_from_hardware(
502
535
  self,
503
536
  top_outer: float,
@@ -1,9 +1,6 @@
1
1
  from typing import TypeVar
2
2
 
3
- from ophyd_async.epics.adcore import (
4
- ADBaseController,
5
- ADBaseIO,
6
- )
3
+ from ophyd_async.epics.adcore import ADBaseController, ADBaseIO, ADImageMode
7
4
 
8
5
  ADBaseIOT = TypeVar("ADBaseIOT", bound=ADBaseIO)
9
6
 
@@ -13,8 +10,13 @@ class ConstantDeadTimeController(ADBaseController[ADBaseIOT]):
13
10
  ADBaseController with a configured constant deadtime for a driver of type ADBaseIO.
14
11
  """
15
12
 
16
- def __init__(self, driver: ADBaseIOT, deadtime: float):
17
- super().__init__(driver)
13
+ def __init__(
14
+ self,
15
+ driver: ADBaseIOT,
16
+ deadtime: float,
17
+ image_mode: ADImageMode = ADImageMode.MULTIPLE,
18
+ ):
19
+ super().__init__(driver, image_mode=image_mode)
18
20
  self.deadtime = deadtime
19
21
 
20
22
  def get_deadtime(self, exposure: float | None) -> float:
@@ -1,5 +1,5 @@
1
1
  from .base_detector import (
2
- AbstractElectronAnalyserDetector,
2
+ BaseElectronAnalyserDetector,
3
3
  )
4
4
  from .base_driver_io import AbstractAnalyserDriverIO, TAbstractAnalyserDriverIO
5
5
  from .base_region import (
@@ -19,7 +19,7 @@ __all__ = [
19
19
  "TAcquisitionMode",
20
20
  "TLensMode",
21
21
  "AbstractAnalyserDriverIO",
22
- "AbstractElectronAnalyserDetector",
22
+ "BaseElectronAnalyserDetector",
23
23
  "AbstractAnalyserDriverIO",
24
24
  "TAbstractAnalyserDriverIO",
25
25
  ]
@@ -1,4 +1,3 @@
1
- from abc import abstractmethod
2
1
  from typing import Generic
3
2
 
4
3
  from bluesky.protocols import Reading, Triggerable
@@ -9,14 +8,14 @@ from ophyd_async.core import (
9
8
  AsyncStatus,
10
9
  Device,
11
10
  )
11
+ from ophyd_async.epics.adcore import ADBaseController
12
12
 
13
- from dodal.devices.controllers import ConstantDeadTimeController
14
13
  from dodal.devices.electron_analyser.abstract.base_driver_io import (
15
14
  TAbstractAnalyserDriverIO,
16
15
  )
17
16
 
18
17
 
19
- class AbstractElectronAnalyserDetector(
18
+ class BaseElectronAnalyserDetector(
20
19
  Device,
21
20
  Triggerable,
22
21
  AsyncReadable,
@@ -34,43 +33,31 @@ class AbstractElectronAnalyserDetector(
34
33
 
35
34
  def __init__(
36
35
  self,
37
- driver: TAbstractAnalyserDriverIO,
36
+ controller: ADBaseController[TAbstractAnalyserDriverIO],
38
37
  name: str = "",
39
38
  ):
40
- self.controller = ConstantDeadTimeController(driver, 0)
39
+ self._controller = controller
41
40
  super().__init__(name)
42
41
 
43
42
  @AsyncStatus.wrap
44
43
  async def trigger(self) -> None:
45
- await self.controller.arm()
46
- await self.controller.wait_for_idle()
44
+ await self._controller.arm()
45
+ await self._controller.wait_for_idle()
47
46
 
48
47
  async def read(self) -> dict[str, Reading]:
49
- return await self.driver.read()
48
+ return await self._controller.driver.read()
50
49
 
51
50
  async def describe(self) -> dict[str, DataKey]:
52
- data = await self.driver.describe()
51
+ data = await self._controller.driver.describe()
53
52
  # Correct the shape for image
54
- prefix = self.driver.name + "-"
55
- energy_size = len(await self.driver.energy_axis.get_value())
56
- angle_size = len(await self.driver.angle_axis.get_value())
53
+ prefix = self._controller.driver.name + "-"
54
+ energy_size = len(await self._controller.driver.energy_axis.get_value())
55
+ angle_size = len(await self._controller.driver.angle_axis.get_value())
57
56
  data[prefix + "image"]["shape"] = [angle_size, energy_size]
58
57
  return data
59
58
 
60
59
  async def read_configuration(self) -> dict[str, Reading]:
61
- return await self.driver.read_configuration()
60
+ return await self._controller.driver.read_configuration()
62
61
 
63
62
  async def describe_configuration(self) -> dict[str, DataKey]:
64
- return await self.driver.describe_configuration()
65
-
66
- @property
67
- @abstractmethod
68
- def driver(self) -> TAbstractAnalyserDriverIO:
69
- """
70
- Define common property for all implementations to access the driver. Some
71
- implementations will store this as a reference so it doesn't have conflicting
72
- parents.
73
-
74
- Returns:
75
- instance of the driver.
76
- """
63
+ return await self._controller.driver.describe_configuration()
@@ -153,11 +153,12 @@ class AbstractAnalyserDriverIO(
153
153
  self.energy_source.selected_source.set(region.excitation_energy_source)
154
154
  excitation_energy = await self.energy_source.energy.get_value()
155
155
 
156
- # Copy region so doesn't alter the actual region and switch to kinetic energy
157
- ke_region = region.model_copy()
158
- ke_region.switch_energy_mode(EnergyMode.KINETIC, excitation_energy)
159
-
156
+ # Switch to kinetic energy as epics doesn't support BINDING.
157
+ ke_region = region.switch_energy_mode(EnergyMode.KINETIC, excitation_energy)
160
158
  await self._set_region(ke_region)
159
+ # Set the true energy mode from original region so binding_energy_axis can be
160
+ # calculated correctly.
161
+ await self.energy_mode.set(region.energy_mode)
161
162
 
162
163
  @abstractmethod
163
164
  async def _set_region(self, ke_region: TAbstractBaseRegion):