dls-dodal 1.59.1__tar.gz → 1.60.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 (582) hide show
  1. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/PKG-INFO +2 -3
  2. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/reference/device-standards.md +2 -2
  3. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/pyproject.toml +1 -2
  4. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/PKG-INFO +2 -3
  5. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/SOURCES.txt +10 -0
  6. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/requires.txt +1 -2
  7. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/_version.py +3 -3
  8. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/__init__.py +1 -0
  9. dls_dodal-1.60.0/src/dodal/beamlines/i15.py +242 -0
  10. dls_dodal-1.60.0/src/dodal/beamlines/i15_1.py +156 -0
  11. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_1.py +3 -1
  12. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_2.py +1 -1
  13. dls_dodal-1.60.0/src/dodal/devices/i15/dcm.py +77 -0
  14. dls_dodal-1.60.0/src/dodal/devices/i15/focussing_mirror.py +71 -0
  15. dls_dodal-1.60.0/src/dodal/devices/i15/jack.py +39 -0
  16. dls_dodal-1.60.0/src/dodal/devices/i15/laue.py +18 -0
  17. dls_dodal-1.60.0/src/dodal/devices/i15/motors.py +27 -0
  18. dls_dodal-1.60.0/src/dodal/devices/i15/multilayer_mirror.py +25 -0
  19. dls_dodal-1.60.0/src/dodal/devices/i15/rail.py +17 -0
  20. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/motors.py +52 -1
  21. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/slits.py +18 -0
  22. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/v2f.py +7 -7
  23. dls_dodal-1.60.0/tests/devices/i15/test_dcm.py +7 -0
  24. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +1 -1
  25. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_wrapped_stubs.py +6 -4
  26. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_scanspec.py +9 -9
  27. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_wrapped.py +9 -9
  28. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.copier-answers.yml +0 -0
  29. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.devcontainer/devcontainer.json +0 -0
  30. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/CODEOWNERS +0 -0
  31. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/CONTRIBUTING.md +0 -0
  32. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  33. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/actions/install_requirements/action.yml +0 -0
  34. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/dependabot.yml +0 -0
  35. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/pages/index.html +0 -0
  36. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/pages/make_switcher.py +0 -0
  37. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/scripts/check_test_durations.py +0 -0
  38. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_dist.yml +0 -0
  39. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_docs.yml +0 -0
  40. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_pypi.yml +0 -0
  41. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_release.yml +0 -0
  42. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_test.yml +0 -0
  43. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/_tox.yml +0 -0
  44. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/ci.yml +0 -0
  45. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.github/workflows/periodic.yml +0 -0
  46. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.gitignore +0 -0
  47. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.pre-commit-config.yaml +0 -0
  48. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.vscode/extensions.json +0 -0
  49. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.vscode/launch.json +0 -0
  50. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.vscode/settings.json +0 -0
  51. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/.vscode/tasks.json +0 -0
  52. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/Dockerfile +0 -0
  53. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/LICENSE +0 -0
  54. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/README.md +0 -0
  55. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/catalog-info.yaml +0 -0
  56. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/conftest.py +0 -0
  57. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/_templates/autosummary/class.rst +0 -0
  58. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/_templates/autosummary/module.rst +0 -0
  59. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/_templates/custom-module-template.rst +0 -0
  60. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
  61. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/assets/zocalo.png +0 -0
  62. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/conf.py +0 -0
  63. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  64. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  65. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  66. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  67. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  68. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
  69. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions/COPYME +0 -0
  70. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/decisions.md +0 -0
  71. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/reviews.md +0 -0
  72. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/umls/apple2_design.png +0 -0
  73. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations/umls/i10_id_design.png +0 -0
  74. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/explanations.md +0 -0
  75. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/genindex.md +0 -0
  76. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/build-docs.md +0 -0
  77. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/contribute.md +0 -0
  78. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/coverage.md +0 -0
  79. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/create-beamline.md +0 -0
  80. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/create-device.md +0 -0
  81. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/dev-install.md +0 -0
  82. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/excalidraw.md +0 -0
  83. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/external-io-devices.md +0 -0
  84. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/lint.md +0 -0
  85. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/lock-requirements.md +0 -0
  86. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/make-release.md +0 -0
  87. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/move-code.md +0 -0
  88. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/pypi.md +0 -0
  89. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/run-tests.md +0 -0
  90. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/static-analysis.md +0 -0
  91. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/update-template.md +0 -0
  92. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/write-tests.md +0 -0
  93. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to/zocalo.md +0 -0
  94. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/how-to.md +0 -0
  95. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/images/dls-logo.svg +0 -0
  96. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/images/excalidraw-example.svg +0 -0
  97. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/index.md +0 -0
  98. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/reference/api.md +0 -0
  99. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/reference/standards.md +0 -0
  100. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/reference.md +0 -0
  101. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/tutorials/get_started.md +0 -0
  102. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/tutorials/installation.md +0 -0
  103. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/docs/tutorials.md +0 -0
  104. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/pull_request_template.md +0 -0
  105. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/setup.cfg +0 -0
  106. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/__init__.py +0 -0
  107. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  108. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  109. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  110. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/__init__.py +0 -0
  111. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/__main__.py +0 -0
  112. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  113. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  114. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
  115. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/README.md +0 -0
  116. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/adsim.py +0 -0
  117. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/aithre.py +0 -0
  118. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b01_1.py +0 -0
  119. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b07.py +0 -0
  120. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b07_1.py +0 -0
  121. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b16.py +0 -0
  122. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b18.py +0 -0
  123. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/b21.py +0 -0
  124. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i02_1.py +0 -0
  125. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i03.py +0 -0
  126. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i04.py +0 -0
  127. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i05.py +0 -0
  128. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i05_1.py +0 -0
  129. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i09.py +0 -0
  130. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i09_1.py +0 -0
  131. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i09_2.py +0 -0
  132. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i10-1.py +0 -0
  133. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i10.py +0 -0
  134. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i11.py +0 -0
  135. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i13_1.py +0 -0
  136. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i17.py +0 -0
  137. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i18.py +0 -0
  138. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_optics.py +0 -0
  139. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i20_1.py +0 -0
  140. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i21.py +0 -0
  141. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i22.py +0 -0
  142. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i23.py +0 -0
  143. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/i24.py +0 -0
  144. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/k07.py +0 -0
  145. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/k11.py +0 -0
  146. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/p38.py +0 -0
  147. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/p45.py +0 -0
  148. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/p60.py +0 -0
  149. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/p99.py +0 -0
  150. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/beamlines/training_rig.py +0 -0
  151. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/cli.py +0 -0
  152. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/__init__.py +0 -0
  153. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/beamlines/__init__.py +0 -0
  154. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  155. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  156. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
  157. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  158. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/coordination.py +0 -0
  159. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/crystal_metadata.py +0 -0
  160. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/data_util.py +0 -0
  161. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/device_utils.py +0 -0
  162. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/enums.py +0 -0
  163. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/maths.py +0 -0
  164. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/types.py +0 -0
  165. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/udc_directory_provider.py +0 -0
  166. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/visit.py +0 -0
  167. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/common/watcher_utils.py +0 -0
  168. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/__init__.py +0 -0
  169. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
  170. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  171. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  172. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/aperture.py +0 -0
  173. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  174. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/apple2_undulator.py +0 -0
  175. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  176. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  177. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  178. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/filter.py +0 -0
  179. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  180. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b07/__init__.py +0 -0
  181. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b07/enums.py +0 -0
  182. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/__init__.py +0 -0
  183. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
  184. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/enums.py +0 -0
  185. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b16/__init__.py +0 -0
  186. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/b16/detector.py +0 -0
  187. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/backlight.py +0 -0
  188. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/baton.py +0 -0
  189. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  190. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/collimation_table.py +0 -0
  191. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/common_dcm.py +0 -0
  192. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/controllers.py +0 -0
  193. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/cryostream.py +0 -0
  194. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  195. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  196. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  197. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  198. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  199. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  200. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/__init__.py +0 -0
  201. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  202. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  203. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  204. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/detector.py +0 -0
  205. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  206. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/diamond_filter.py +0 -0
  207. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/eiger.py +0 -0
  208. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/eiger_odin.py +0 -0
  209. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  210. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
  211. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
  212. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -0
  213. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
  214. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
  215. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
  216. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/energy_sources.py +0 -0
  217. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  218. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  219. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
  220. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -0
  221. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  222. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
  223. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/types.py +0 -0
  224. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  225. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  226. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
  227. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -0
  228. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  229. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
  230. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/eurotherm.py +0 -0
  231. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/fast_grid_scan.py +0 -0
  232. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  233. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/flux.py +0 -0
  234. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/focusing_mirror.py +0 -0
  235. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/hutch_shutter.py +0 -0
  236. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i02_1/__init__.py +0 -0
  237. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i02_1/fast_grid_scan.py +0 -0
  238. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i02_1/sample_motors.py +0 -0
  239. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i03/__init__.py +0 -0
  240. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i03/dcm.py +0 -0
  241. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
  242. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i04/__init__.py +0 -0
  243. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i04/constants.py +0 -0
  244. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i04/murko_results.py +0 -0
  245. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i04/transfocator.py +0 -0
  246. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i05/__init__.py +0 -0
  247. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i05/enums.py +0 -0
  248. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i09/__init__.py +0 -0
  249. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i09/dcm.py +0 -0
  250. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i09/enums.py +0 -0
  251. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i09_1/__init__.py +0 -0
  252. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i09_1/enums.py +0 -0
  253. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/__init__.py +0 -0
  254. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  255. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  256. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  257. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/mirrors.py +0 -0
  258. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  259. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  260. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  261. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i10/slits.py +0 -0
  262. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
  263. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i11/diff_stages.py +0 -0
  264. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i11/mythen.py +0 -0
  265. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i11/nx100robot.py +0 -0
  266. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i11/spinner.py +0 -0
  267. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i13_1/__init__.py +0 -0
  268. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  269. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  270. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  271. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i18/diode.py +0 -0
  272. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/__init__.py +0 -0
  273. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/backlight.py +0 -0
  274. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/beamstop.py +0 -0
  275. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  276. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/diffractometer.py +0 -0
  277. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  278. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i19/shutter.py +0 -0
  279. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  280. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i21/__init__.py +0 -0
  281. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i21/enums.py +0 -0
  282. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i22/dcm.py +0 -0
  283. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i22/fswitch.py +0 -0
  284. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i22/nxsas.py +0 -0
  285. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/__init__.py +0 -0
  286. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/aperture.py +0 -0
  287. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/beam_center.py +0 -0
  288. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/beamstop.py +0 -0
  289. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/commissioning_jungfrau.py +0 -0
  290. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/dcm.py +0 -0
  291. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  292. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  293. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/pmac.py +0 -0
  294. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/i24/vgonio.py +0 -0
  295. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/ipin.py +0 -0
  296. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/linkam3.py +0 -0
  297. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  298. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/__init__.py +0 -0
  299. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  300. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  301. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  302. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  303. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  304. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  305. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  306. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  307. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  308. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  309. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  310. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/oav/utils.py +0 -0
  311. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p45.py +0 -0
  312. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p60/__init__.py +0 -0
  313. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p60/enums.py +0 -0
  314. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  315. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p99/__init__.py +0 -0
  316. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  317. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  318. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/pgm.py +0 -0
  319. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/positioner.py +0 -0
  320. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  321. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/qbpm.py +0 -0
  322. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/robot.py +0 -0
  323. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  324. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/scintillator.py +0 -0
  325. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/smargon.py +0 -0
  326. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/status.py +0 -0
  327. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/synchrotron.py +0 -0
  328. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/temperture_controller/__init__.py +0 -0
  329. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/temperture_controller/lakeshore/__init__.py +0 -0
  330. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +0 -0
  331. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +0 -0
  332. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/tetramm.py +0 -0
  333. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/thawer.py +0 -0
  334. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/turbo_slit.py +0 -0
  335. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/undulator.py +0 -0
  336. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/util/__init__.py +0 -0
  337. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  338. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/util/epics_util.py +0 -0
  339. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  340. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  341. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/webcam.py +0 -0
  342. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  343. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  344. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  345. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zebra/__init__.py +0 -0
  346. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra.py +0 -0
  347. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  348. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  349. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  350. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  351. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  352. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  353. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/log.py +0 -0
  354. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  355. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plan_stubs/__init__.py +0 -0
  356. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  357. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plan_stubs/data_session.py +0 -0
  358. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  359. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  360. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/__init__.py +0 -0
  361. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/bimorph.py +0 -0
  362. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
  363. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/preprocessors/__init__.py +0 -0
  364. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  365. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/save_panda.py +0 -0
  366. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/scanspec.py +0 -0
  367. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  368. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/plans/wrapped.py +0 -0
  369. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/testing/__init__.py +0 -0
  370. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
  371. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
  372. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/testing/setup.py +0 -0
  373. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/src/dodal/utils.py +0 -0
  374. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/system_tests/__init__.py +0 -0
  375. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/system_tests/test_adsim.py +0 -0
  376. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/system_tests/test_cli.py +0 -0
  377. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/system_tests/test_oav_system.py +0 -0
  378. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/system_tests/test_oav_to_redis_system.py +0 -0
  379. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/__init__.py +0 -0
  380. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/beamlines/__init__.py +0 -0
  381. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/beamlines/test_b16.py +0 -0
  382. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/beamlines/test_i03.py +0 -0
  383. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/beamlines/test_i24.py +0 -0
  384. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/beamlines/test_mapping.py +0 -0
  385. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/__init__.py +0 -0
  386. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/beamlines/__init__.py +0 -0
  387. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  388. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  389. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/beamlines/test_commissioning_mode.py +0 -0
  390. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  391. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_coordination.py +0 -0
  392. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_crystal_metadata.py +0 -0
  393. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_maths.py +0 -0
  394. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_udc_directory_provider.py +0 -0
  395. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_visit.py +0 -0
  396. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/common/test_watcher_utils.py +0 -0
  397. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/conftest.py +0 -0
  398. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/__init__.py +0 -0
  399. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  400. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/b07_1/test_ccmc.py +0 -0
  401. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/current_amplifier/test_femto.py +0 -0
  402. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
  403. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/detector/test_data/__init__.py +0 -0
  404. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
  405. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
  406. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/detector/test_det_resolution.py +0 -0
  407. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/detector/test_detector.py +0 -0
  408. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/__init__.py +0 -0
  409. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/__init__.py +0 -0
  410. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +0 -0
  411. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +0 -0
  412. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
  413. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/conftest.py +0 -0
  414. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
  415. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
  416. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
  417. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/__init__.py +0 -0
  418. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -0
  419. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_driver_io.py +0 -0
  420. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
  421. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
  422. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
  423. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
  424. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_detector.py +0 -0
  425. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_energy_sources.py +0 -0
  426. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_util.py +0 -0
  427. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/__init__.py +0 -0
  428. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -0
  429. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +0 -0
  430. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
  431. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i02_1/__init__.py +0 -0
  432. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i02_1/test_fast_grid_scan.py +0 -0
  433. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i03/__init__.py +0 -0
  434. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i03/test_dcm.py +0 -0
  435. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i03/test_undulator_dcm.py +0 -0
  436. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i04/__init__.py +0 -0
  437. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i04/test_murko_results.py +0 -0
  438. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i04/test_transfocator.py +0 -0
  439. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i09/__init__.py +0 -0
  440. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i09/test_dcm.py +0 -0
  441. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
  442. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
  443. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/__init__.py +0 -0
  444. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  445. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  446. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  447. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  448. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  449. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i11/test_i11devices.py +0 -0
  450. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i11/test_mythen.py +0 -0
  451. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i13_1/test_merlin.py +0 -0
  452. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  453. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i19/__init__.py +0 -0
  454. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i19/test_backlight.py +0 -0
  455. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i19/test_beamstop.py +0 -0
  456. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i19/test_diffractometer.py +0 -0
  457. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i19/test_shutter.py +0 -0
  458. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i22/test_dcm.py +0 -0
  459. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i22/test_fswitch.py +0 -0
  460. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i22/test_metadataholder.py +0 -0
  461. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/__init__.py +0 -0
  462. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/test_commissioning_jungfrau.py +0 -0
  463. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/test_dual_backlight.py +0 -0
  464. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
  465. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/test_pmac.py +0 -0
  466. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/i24/test_vgonio.py +0 -0
  467. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/mx_phase1/__init__.py +0 -0
  468. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
  469. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/__init__.py +0 -0
  470. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/conftest.py +0 -0
  471. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
  472. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  473. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_data/__init__.py +0 -0
  474. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
  475. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
  476. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
  477. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_grid_overlay.py +0 -0
  478. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_oav.py +0 -0
  479. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_parameters.py +0 -0
  480. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
  481. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_utils.py +0 -0
  482. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
  483. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/oav/test_snapshots.py +0 -0
  484. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
  485. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/p99/test_p99_stage.py +0 -0
  486. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/temperature_controller/__init__.py +0 -0
  487. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/temperature_controller/lakeshore/__init__.py +0 -0
  488. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +0 -0
  489. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test.png +0 -0
  490. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_aperture.py +0 -0
  491. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_aperture_scatterguard.py +0 -0
  492. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_apple2_undulator.py +0 -0
  493. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_attenuator.py +0 -0
  494. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_backlight.py +0 -0
  495. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_bart_robot.py +0 -0
  496. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_baton.py +0 -0
  497. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_beam_converter.py +0 -0
  498. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_bimorph_mirror.py +0 -0
  499. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_common_dcm.py +0 -0
  500. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_controllers.py +0 -0
  501. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
  502. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
  503. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
  504. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  505. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  506. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
  507. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_data/__init__.py +0 -0
  508. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  509. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
  510. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_diamond_filter.py +0 -0
  511. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_eiger.py +0 -0
  512. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_focusing_mirror.py +0 -0
  513. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_gridscan.py +0 -0
  514. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_hutch_shutter.py +0 -0
  515. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_motors.py +0 -0
  516. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_odin.py +0 -0
  517. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_positioner.py +0 -0
  518. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_pressure_jump_cell.py +0 -0
  519. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_qbpm.py +0 -0
  520. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_scintillator.py +0 -0
  521. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_slits.py +0 -0
  522. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_smargon.py +0 -0
  523. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_status.py +0 -0
  524. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_synchrotron.py +0 -0
  525. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_tetramm.py +0 -0
  526. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_thawer.py +0 -0
  527. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_turbo_slit.py +0 -0
  528. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_undulator.py +0 -0
  529. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_utils.py +0 -0
  530. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
  531. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_webcam.py +0 -0
  532. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_xbpm_feedback.py +0 -0
  533. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_xspress3.py +0 -0
  534. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_zebra.py +0 -0
  535. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
  536. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_zebra_shutter.py +0 -0
  537. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_zocalo_interaction.py +0 -0
  538. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/test_zocalo_results.py +0 -0
  539. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/__init__.py +0 -0
  540. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_adjuster_plans.py +0 -0
  541. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
  542. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_data/__init__.py +0 -0
  543. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  544. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  545. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  546. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_lookup_tables.py +0 -0
  547. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/devices/util/test_save_panda.py +0 -0
  548. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline.py +0 -0
  549. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  550. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_broken_dependency.py +0 -0
  551. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_dependencies.py +0 -0
  552. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  553. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  554. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_beamline_some_devices_working.py +0 -0
  555. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_device_factory_beamline.py +0 -0
  556. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_zocalo/README.rst +0 -0
  557. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_zocalo/__init__.py +0 -0
  558. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_zocalo/__main__.py +0 -0
  559. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  560. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/__init__.py +0 -0
  561. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/__init__.py +0 -0
  562. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
  563. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
  564. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_data_session.py +0 -0
  565. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  566. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  567. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/conftest.py +0 -0
  568. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_bimorph.py +0 -0
  569. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_compliance.py +0 -0
  570. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
  571. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  572. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  573. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  574. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_cli.py +0 -0
  575. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/__init__.py +0 -0
  576. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/bad_beamlineParameters +0 -0
  577. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/i04_beamlineParameters +0 -0
  578. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  579. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/test_display.configuration +0 -0
  580. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
  581. {dls_dodal-1.59.1 → dls_dodal-1.60.0}/tests/test_log.py +0 -0
  582. {dls_dodal-1.59.1 → dls_dodal-1.60.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.59.1
3
+ Version: 1.60.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
@@ -216,7 +216,7 @@ License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
218
  Requires-Dist: ophyd-async[ca,pva]>=0.13.2
219
- Requires-Dist: bluesky==1.14.2
219
+ Requires-Dist: bluesky>=1.14.5
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
222
222
  Requires-Dist: pillow
@@ -230,7 +230,6 @@ Requires-Dist: aiofiles
230
230
  Requires-Dist: aiohttp
231
231
  Requires-Dist: redis
232
232
  Requires-Dist: scanspec>=0.7.3
233
- Requires-Dist: event-model>=1.23
234
233
  Requires-Dist: pyzmq==26.3.0
235
234
  Requires-Dist: deepdiff
236
235
  Requires-Dist: daq-config-server>=v1.0.0-rc.2
@@ -26,8 +26,8 @@ Determining where in dodal a device should live can be summarised below:
26
26
 
27
27
  ## Device Best Practices
28
28
 
29
- Ophyd-async directory contains a [flowchart](https://blueskyproject.io/ophyd-async/main/how-to/choose-interfaces-for-devices.html) for a simplified decision tree about what interfaces
30
- should a given device implement. In addition to this the following guidelines are strongly recommended:
29
+ In general, you should follow the ophyd-async [guide](https://blueskyproject.io/ophyd-async/main/how-to/choose-right-baseclass.html) for what interfaces a device should implement.
30
+ In addition to this the following guidelines are strongly recommended:
31
31
 
32
32
  * Device should have their name as an optional str parameter with a default of ""- this allows ophyd-async to automatically name the device
33
33
  * Devices should contain only the PV suffixes that are generic for any instance of the device. See [PV Suffixes](#pv-suffixes)
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "click",
16
16
  "ophyd",
17
17
  "ophyd-async[ca,pva]>=0.13.2",
18
- "bluesky==1.14.2", # https://github.com/bluesky/bluesky/issues/1938
18
+ "bluesky>=1.14.5",
19
19
  "pyepics",
20
20
  "dataclasses-json",
21
21
  "pillow",
@@ -29,7 +29,6 @@ dependencies = [
29
29
  "aiohttp",
30
30
  "redis",
31
31
  "scanspec>=0.7.3",
32
- "event-model>=1.23", # Until bluesky pins it https://github.com/DiamondLightSource/dodal/issues/1278
33
32
  "pyzmq==26.3.0", # Until we can move to RHEL 8 https://github.com/DiamondLightSource/mx-bluesky/issues/1139
34
33
  "deepdiff",
35
34
  "daq-config-server>=v1.0.0-rc.2",# For getting Configuration settings.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.59.1
3
+ Version: 1.60.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
@@ -216,7 +216,7 @@ License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
218
  Requires-Dist: ophyd-async[ca,pva]>=0.13.2
219
- Requires-Dist: bluesky==1.14.2
219
+ Requires-Dist: bluesky>=1.14.5
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
222
222
  Requires-Dist: pillow
@@ -230,7 +230,6 @@ Requires-Dist: aiofiles
230
230
  Requires-Dist: aiohttp
231
231
  Requires-Dist: redis
232
232
  Requires-Dist: scanspec>=0.7.3
233
- Requires-Dist: event-model>=1.23
234
233
  Requires-Dist: pyzmq==26.3.0
235
234
  Requires-Dist: deepdiff
236
235
  Requires-Dist: daq-config-server>=v1.0.0-rc.2
@@ -115,6 +115,8 @@ src/dodal/beamlines/i10-1.py
115
115
  src/dodal/beamlines/i10.py
116
116
  src/dodal/beamlines/i11.py
117
117
  src/dodal/beamlines/i13_1.py
118
+ src/dodal/beamlines/i15.py
119
+ src/dodal/beamlines/i15_1.py
118
120
  src/dodal/beamlines/i17.py
119
121
  src/dodal/beamlines/i18.py
120
122
  src/dodal/beamlines/i19_1.py
@@ -273,6 +275,13 @@ src/dodal/devices/i11/spinner.py
273
275
  src/dodal/devices/i13_1/__init__.py
274
276
  src/dodal/devices/i13_1/merlin.py
275
277
  src/dodal/devices/i13_1/merlin_controller.py
278
+ src/dodal/devices/i15/dcm.py
279
+ src/dodal/devices/i15/focussing_mirror.py
280
+ src/dodal/devices/i15/jack.py
281
+ src/dodal/devices/i15/laue.py
282
+ src/dodal/devices/i15/motors.py
283
+ src/dodal/devices/i15/multilayer_mirror.py
284
+ src/dodal/devices/i15/rail.py
276
285
  src/dodal/devices/i18/KBMirror.py
277
286
  src/dodal/devices/i18/diode.py
278
287
  src/dodal/devices/i19/__init__.py
@@ -485,6 +494,7 @@ tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl
485
494
  tests/devices/i11/test_i11devices.py
486
495
  tests/devices/i11/test_mythen.py
487
496
  tests/devices/i13_1/test_merlin.py
497
+ tests/devices/i15/test_dcm.py
488
498
  tests/devices/i18/test_kb_mirror.py
489
499
  tests/devices/i19/__init__.py
490
500
  tests/devices/i19/test_backlight.py
@@ -1,7 +1,7 @@
1
1
  click
2
2
  ophyd
3
3
  ophyd-async[ca,pva]>=0.13.2
4
- bluesky==1.14.2
4
+ bluesky>=1.14.5
5
5
  pyepics
6
6
  dataclasses-json
7
7
  pillow
@@ -15,7 +15,6 @@ aiofiles
15
15
  aiohttp
16
16
  redis
17
17
  scanspec>=0.7.3
18
- event-model>=1.23
19
18
  pyzmq==26.3.0
20
19
  deepdiff
21
20
  daq-config-server>=v1.0.0-rc.2
@@ -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.59.1'
32
- __version_tuple__ = version_tuple = (1, 59, 1)
31
+ __version__ = version = '1.60.0'
32
+ __version_tuple__ = version_tuple = (1, 60, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g67bd9e286'
34
+ __commit_id__ = commit_id = 'gb3036ebaf'
@@ -13,6 +13,7 @@ _BEAMLINE_NAME_OVERRIDES = {
13
13
  "b07-1": "b07_1",
14
14
  "i09-1": "i09_1",
15
15
  "i13-1": "i13_1",
16
+ "i15-1": "i15_1",
16
17
  "i20-1": "i20_1",
17
18
  "i19-1": "i19_1",
18
19
  "i19-2": "i19_2",
@@ -0,0 +1,242 @@
1
+ from ophyd_async.epics.motor import Motor
2
+
3
+ from dodal.common.beamlines.beamline_utils import device_factory
4
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
+ from dodal.devices.i15.dcm import DCM
6
+ from dodal.devices.i15.focussing_mirror import (
7
+ FocusingMirror,
8
+ FocusingMirrorHorizontal,
9
+ FocusingMirrorVertical,
10
+ FocusingMirrorWithRoll,
11
+ )
12
+ from dodal.devices.i15.jack import JackX, JackY
13
+ from dodal.devices.i15.motors import UpstreamDownstreamPair
14
+ from dodal.devices.motors import (
15
+ SixAxisGonioKappaPhi,
16
+ XYStage,
17
+ XYZPitchYawStage,
18
+ XYZStage,
19
+ )
20
+ from dodal.devices.slits import Slits, SlitsY
21
+ from dodal.devices.synchrotron import Synchrotron
22
+ from dodal.log import set_beamline as set_log_beamline
23
+ from dodal.utils import BeamlinePrefix, get_beamline_name
24
+
25
+ BL = get_beamline_name("i15") # Default used when not on a live beamline
26
+ PREFIX = BeamlinePrefix(BL)
27
+ set_log_beamline(BL) # Configure logging and util functions
28
+ set_utils_beamline(BL)
29
+
30
+ """
31
+ Define device factory functions below this point.
32
+ A device factory function is any function that has a return type which conforms
33
+ to one or more Bluesky Protocols.
34
+ """
35
+
36
+
37
+ @device_factory()
38
+ def arm() -> UpstreamDownstreamPair:
39
+ return UpstreamDownstreamPair(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:ARM:")
40
+
41
+
42
+ @device_factory()
43
+ def beamstop() -> XYStage:
44
+ return XYStage(f"{PREFIX.beamline_prefix}-RS-ABSB-04:")
45
+
46
+
47
+ @device_factory()
48
+ def bs2() -> XYStage:
49
+ return XYStage(f"{PREFIX.beamline_prefix}-RS-ABSB-08:")
50
+
51
+
52
+ @device_factory()
53
+ def bs3() -> XYZStage:
54
+ return XYZStage(f"{PREFIX.beamline_prefix}-RS-ABSB-09:")
55
+
56
+
57
+ @device_factory()
58
+ def dcm() -> DCM:
59
+ return DCM(f"{PREFIX.beamline_prefix}-OP-DCM-01:")
60
+
61
+
62
+ @device_factory()
63
+ def det1z() -> Motor:
64
+ return Motor(f"{PREFIX.beamline_prefix}-MO-DIFF-01:ARM:DETECTOR:Z")
65
+
66
+
67
+ @device_factory()
68
+ def det2z() -> Motor:
69
+ """Deliberately the same as eht2dtx"""
70
+ return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-03:DETECTOR2:Z")
71
+
72
+
73
+ @device_factory()
74
+ def diffractometer() -> SixAxisGonioKappaPhi:
75
+ return SixAxisGonioKappaPhi(
76
+ prefix=f"{PREFIX.beamline_prefix}-MO-DIFF-01:SAMPLE:",
77
+ phi_infix="KPHI",
78
+ )
79
+
80
+
81
+ @device_factory()
82
+ def djack1() -> JackX:
83
+ return JackX(f"{PREFIX.beamline_prefix}-MO-DIFF-01:BASE:")
84
+
85
+
86
+ @device_factory()
87
+ def eht2dtx() -> Motor:
88
+ """Deliberately the same as det2z"""
89
+ return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-03:DETECTOR2:Z")
90
+
91
+
92
+ @device_factory()
93
+ def f2x() -> Motor:
94
+ return Motor(f"{PREFIX.beamline_prefix}-RS-ABSB-10:X")
95
+
96
+
97
+ @device_factory()
98
+ def fs() -> XYStage:
99
+ return XYStage(f"{PREFIX.beamline_prefix}-EA-SHTR-01:")
100
+
101
+
102
+ @device_factory()
103
+ def fs2() -> XYStage:
104
+ return XYStage(f"{PREFIX.beamline_prefix}-EA-SHTR-02:")
105
+
106
+
107
+ @device_factory()
108
+ def hfm() -> FocusingMirrorWithRoll:
109
+ return FocusingMirrorWithRoll(f"{PREFIX.beamline_prefix}-OP-HFM-01:")
110
+
111
+
112
+ @device_factory()
113
+ def laserboard() -> XYZStage:
114
+ return XYZStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:")
115
+
116
+
117
+ @device_factory()
118
+ def obj() -> UpstreamDownstreamPair:
119
+ return UpstreamDownstreamPair(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OBJ:")
120
+
121
+
122
+ @device_factory()
123
+ def opticds() -> XYStage:
124
+ return XYStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OPTIC:DS:")
125
+
126
+
127
+ @device_factory()
128
+ def opticus() -> XYStage:
129
+ return XYStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OPTIC:US:")
130
+
131
+
132
+ @device_factory()
133
+ def pin3() -> XYStage:
134
+ return XYStage(f"{PREFIX.beamline_prefix}-AL-APTR-03:")
135
+
136
+
137
+ @device_factory()
138
+ def pin() -> XYZPitchYawStage:
139
+ return XYZPitchYawStage(f"{PREFIX.beamline_prefix}-AL-APTR-02:")
140
+
141
+
142
+ @device_factory()
143
+ def qbpm1() -> XYStage:
144
+ return XYStage(f"{PREFIX.beamline_prefix}-DI-QBPM-01:")
145
+
146
+
147
+ @device_factory()
148
+ def qbpm2() -> XYStage:
149
+ return XYStage(f"{PREFIX.beamline_prefix}-DI-QBPM-02:")
150
+
151
+
152
+ @device_factory()
153
+ def s1() -> Slits:
154
+ return Slits(
155
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
156
+ x_centre="X:CENTER",
157
+ y_centre="Y:CENTER",
158
+ )
159
+
160
+
161
+ @device_factory()
162
+ def s2() -> Slits:
163
+ return Slits(
164
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
165
+ x_centre="X:CENTER",
166
+ y_centre="Y:CENTER",
167
+ )
168
+
169
+
170
+ @device_factory()
171
+ def s4() -> Slits:
172
+ return Slits(
173
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
174
+ x_centre="X:CENTER",
175
+ y_centre="Y:CENTER",
176
+ )
177
+
178
+
179
+ @device_factory()
180
+ def s5() -> Slits:
181
+ return Slits(
182
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
183
+ x_centre="X:CENTER",
184
+ y_centre="Y:CENTER",
185
+ )
186
+
187
+
188
+ @device_factory()
189
+ def s6() -> SlitsY:
190
+ return SlitsY(
191
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:",
192
+ y_centre="Y:CENTER",
193
+ )
194
+
195
+
196
+ @device_factory()
197
+ def s7() -> Slits:
198
+ return Slits(
199
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-07:",
200
+ x_centre="X:CENTER",
201
+ y_centre="Y:CENTER",
202
+ )
203
+
204
+
205
+ @device_factory()
206
+ def shd() -> XYZStage:
207
+ return XYZStage(f"{PREFIX.beamline_prefix}-MO-SHEAD-01:")
208
+
209
+
210
+ @device_factory()
211
+ def shd2() -> XYZStage:
212
+ return XYZStage(f"{PREFIX.beamline_prefix}-MO-SHEAD-02:")
213
+
214
+
215
+ @device_factory()
216
+ def shfm() -> FocusingMirrorHorizontal:
217
+ return FocusingMirrorHorizontal(f"{PREFIX.beamline_prefix}-OP-MIRR-03:HFM:")
218
+
219
+
220
+ @device_factory()
221
+ def skb() -> JackY:
222
+ return JackY(f"{PREFIX.beamline_prefix}-OP-MIRR-03:BASE:")
223
+
224
+
225
+ @device_factory()
226
+ def svfm() -> FocusingMirrorVertical:
227
+ return FocusingMirrorVertical(f"{PREFIX.beamline_prefix}-OP-MIRR-03:VFM:")
228
+
229
+
230
+ @device_factory()
231
+ def tab2jack() -> JackX:
232
+ return JackX(f"{PREFIX.beamline_prefix}-MO-TABLE-03:BASE:")
233
+
234
+
235
+ @device_factory()
236
+ def vfm() -> FocusingMirror:
237
+ return FocusingMirror(f"{PREFIX.beamline_prefix}-OP-VFM-01:")
238
+
239
+
240
+ @device_factory()
241
+ def synchrotron() -> Synchrotron:
242
+ return Synchrotron()
@@ -0,0 +1,156 @@
1
+ from ophyd_async.epics.motor import Motor
2
+
3
+ from dodal.common.beamlines.beamline_utils import device_factory
4
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
+ from dodal.devices.i15.laue import LaueMonochrometer
6
+ from dodal.devices.i15.motors import NumberedTripleAxisStage
7
+ from dodal.devices.i15.multilayer_mirror import MultiLayerMirror
8
+ from dodal.devices.i15.rail import Rail
9
+ from dodal.devices.motors import XYPhiStage, XYStage, YZStage
10
+ from dodal.devices.slits import Slits
11
+ from dodal.devices.synchrotron import Synchrotron
12
+ from dodal.log import set_beamline as set_log_beamline
13
+ from dodal.utils import BeamlinePrefix, get_beamline_name
14
+
15
+ BL = get_beamline_name("i15-1") # Default used when not on a live beamline
16
+ PREFIX = BeamlinePrefix(BL, suffix="J")
17
+ set_log_beamline(BL) # Configure logging and util functions
18
+ set_utils_beamline(BL)
19
+
20
+ """
21
+ Define device factory functions below this point.
22
+ A device factory function is any function that has a return type which conforms
23
+ to one or more Bluesky Protocols.
24
+ """
25
+
26
+
27
+ @device_factory()
28
+ def attY() -> NumberedTripleAxisStage:
29
+ return NumberedTripleAxisStage(
30
+ f"{PREFIX.beamline_prefix}-OP-ATTN-01:",
31
+ axis1_infix="STICK1",
32
+ axis2_infix="STICK2",
33
+ axis3_infix="STICK3",
34
+ )
35
+
36
+
37
+ @device_factory()
38
+ def baseY() -> Motor:
39
+ return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:Y")
40
+
41
+
42
+ @device_factory()
43
+ def blowerY() -> Motor:
44
+ """Same motor as blowerZ"""
45
+ return Motor(f"{PREFIX.beamline_prefix}-EA-BLOWR-01:TLATE")
46
+
47
+
48
+ @device_factory()
49
+ def blowerZ() -> Motor:
50
+ """Same motor as blowerY"""
51
+ return Motor(f"{PREFIX.beamline_prefix}-EA-BLOWR-01:TLATE")
52
+
53
+
54
+ @device_factory()
55
+ def bs2() -> XYStage:
56
+ return XYStage(f"{PREFIX.beamline_prefix}-MO-SMAR-02:")
57
+
58
+
59
+ @device_factory()
60
+ def clean() -> XYStage:
61
+ return XYStage(f"{PREFIX.beamline_prefix}-MO-ABSB-01:CLEAN:")
62
+
63
+
64
+ @device_factory()
65
+ def det2() -> YZStage:
66
+ return YZStage(f"{PREFIX.beamline_prefix}-EA-DET-02:")
67
+
68
+
69
+ @device_factory()
70
+ def envX() -> Motor:
71
+ return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:ENV:X")
72
+
73
+
74
+ @device_factory()
75
+ def f2y() -> Motor:
76
+ return Motor(f"{PREFIX.beamline_prefix}-OP-ATTN-02:Y")
77
+
78
+
79
+ @device_factory()
80
+ def m1() -> MultiLayerMirror:
81
+ return MultiLayerMirror(f"{PREFIX.beamline_prefix}-OP-MIRR-01:")
82
+
83
+
84
+ @device_factory()
85
+ def rail() -> Rail:
86
+ return Rail(f"{PREFIX.beamline_prefix}-MO-RAIL-01:")
87
+
88
+
89
+ @device_factory(skip=True)
90
+ def sam() -> XYPhiStage:
91
+ return XYPhiStage(f"{PREFIX.beamline_prefix}-MO-TABLE-01:SAMPLE:", phi_infix="PHI2")
92
+
93
+
94
+ @device_factory()
95
+ def slits_1() -> Slits:
96
+ return Slits(
97
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
98
+ x_centre="X:CENTER",
99
+ y_centre="Y:CENTER",
100
+ )
101
+
102
+
103
+ @device_factory()
104
+ def slits_2() -> Slits:
105
+ return Slits(
106
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
107
+ x_centre="X:CENTER",
108
+ y_centre="Y:CENTER",
109
+ )
110
+
111
+
112
+ @device_factory()
113
+ def slits_3() -> Slits:
114
+ return Slits(
115
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:",
116
+ x_centre="X:CENTER",
117
+ y_centre="Y:CENTER",
118
+ )
119
+
120
+
121
+ @device_factory()
122
+ def slits_4() -> Slits:
123
+ return Slits(
124
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
125
+ x_centre="X:CENTER",
126
+ y_centre="Y:CENTER",
127
+ )
128
+
129
+
130
+ @device_factory()
131
+ def slits_5() -> Slits:
132
+ return Slits(
133
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
134
+ x_centre="X:CENTER",
135
+ y_centre="Y:CENTER",
136
+ )
137
+
138
+
139
+ @device_factory()
140
+ def synchrotron() -> Synchrotron:
141
+ return Synchrotron()
142
+
143
+
144
+ @device_factory()
145
+ def tth() -> Motor:
146
+ return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:TTH")
147
+
148
+
149
+ @device_factory()
150
+ def trans() -> XYPhiStage:
151
+ return XYPhiStage(prefix=f"{PREFIX.beamline_prefix}-MO-TABLE-01:TRANS:")
152
+
153
+
154
+ @device_factory()
155
+ def xtal() -> LaueMonochrometer:
156
+ return LaueMonochrometer(prefix=f"{PREFIX.beamline_prefix}-OP-LAUE-01:")
@@ -58,6 +58,8 @@ def oav() -> OAVBeamCentreFile:
58
58
  )
59
59
 
60
60
 
61
+ # NOTE EH1 uses the Zebra 2 box. While a Zebra 1 box exists and is connected
62
+ # on the beamline, it is currently not in use
61
63
  @device_factory()
62
64
  def zebra() -> Zebra:
63
65
  """Get the i19-1 zebra device, instantiate it if it hasn't already been.
@@ -65,7 +67,7 @@ def zebra() -> Zebra:
65
67
  """
66
68
  return Zebra(
67
69
  mapping=I19_1_ZEBRA_MAPPING,
68
- prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-03:",
70
+ prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-02:",
69
71
  )
70
72
 
71
73
 
@@ -57,7 +57,7 @@ def zebra() -> Zebra:
57
57
  """
58
58
  return Zebra(
59
59
  mapping=I19_2_ZEBRA_MAPPING,
60
- prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-01:",
60
+ prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-03:",
61
61
  )
62
62
 
63
63
 
@@ -0,0 +1,77 @@
1
+ from typing import Generic, TypeVar
2
+
3
+ from ophyd_async.core import StandardReadable
4
+ from ophyd_async.epics.motor import Motor
5
+
6
+ from dodal.devices.common_dcm import (
7
+ StationaryCrystal,
8
+ )
9
+
10
+
11
+ class ThetaYCrystal(StationaryCrystal):
12
+ def __init__(self, prefix):
13
+ with self.add_children_as_readables():
14
+ self.theta = Motor(prefix + "THETA")
15
+ self.y = Motor(prefix + "Y")
16
+ super().__init__(prefix)
17
+
18
+
19
+ class ThetaRollYZCrystal(ThetaYCrystal):
20
+ def __init__(self, prefix):
21
+ with self.add_children_as_readables():
22
+ self.roll = Motor(prefix + "ROLL")
23
+ self.z = Motor(prefix + "Z")
24
+ super().__init__(prefix)
25
+
26
+
27
+ Xtal_1 = TypeVar("Xtal_1", bound=StationaryCrystal)
28
+ Xtal_2 = TypeVar("Xtal_2", bound=StationaryCrystal)
29
+
30
+
31
+ class DualCrystalMonoSimple(StandardReadable, Generic[Xtal_1, Xtal_2]):
32
+ """
33
+ Device for simple double crystal monochromators (DCM), which only allow energy of the beam to be selected.
34
+
35
+ Features common across all DCM's should include virtual motors to set energy/wavelength and contain two crystals,
36
+ each of which can be movable. Some DCM's contain crystals with roll motors, and some contain crystals with roll and pitch motors.
37
+ This base device accounts for all combinations of this.
38
+
39
+ This device is more able to act as a parent for beamline-specific DCM's, in which any other missing signals can be added,
40
+ as it doesn't assume WAVELENGTH, BRAGG and OFFSET are available for all DCM deivces, as BaseDCM does.
41
+
42
+ Bluesky plans using DCM's should be typed to specify which types of crystals are required. For example, a plan
43
+ which only requires one crystal which can roll should be typed 'def my_plan(dcm: BaseDCM[RollCrystal, StationaryCrystal])`
44
+ """
45
+
46
+ def __init__(
47
+ self, prefix: str, xtal_1: type[Xtal_1], xtal_2: type[Xtal_2], name: str = ""
48
+ ) -> None:
49
+ with self.add_children_as_readables():
50
+ # Virtual motor PV's which set the physical motors so that the DCM produces requested
51
+ # wavelength/energy
52
+ self.energy_in_kev = Motor(prefix + "ENERGY")
53
+ self._make_crystals(prefix, xtal_1, xtal_2)
54
+
55
+ super().__init__(name)
56
+
57
+ # Prefix convention is different depending on whether there are one or two controllable crystals
58
+ def _make_crystals(self, prefix: str, xtal_1: type[Xtal_1], xtal_2: type[Xtal_2]):
59
+ if StationaryCrystal not in [xtal_1, xtal_2]:
60
+ self.xtal_1 = xtal_1(f"{prefix}XTAL1:")
61
+ self.xtal_2 = xtal_2(f"{prefix}XTAL2:")
62
+ else:
63
+ self.xtal_1 = xtal_1(prefix)
64
+ self.xtal_2 = xtal_2(prefix)
65
+
66
+
67
+ class DCM(DualCrystalMonoSimple[ThetaRollYZCrystal, ThetaYCrystal]):
68
+ """
69
+ A double crystal monocromator device, used to select the beam energy.
70
+ """
71
+
72
+ def __init__(self, prefix: str, name: str = "") -> None:
73
+ with self.add_children_as_readables():
74
+ self.calibrated_energy_in_kev = Motor(prefix + "CAL")
75
+ self.x1 = Motor(prefix + "X1")
76
+
77
+ super().__init__(prefix, ThetaRollYZCrystal, ThetaYCrystal, name)