dls-dodal 1.58.0__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 (583) hide show
  1. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/PKG-INFO +3 -3
  2. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/write-tests.md +30 -0
  3. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/reference/device-standards.md +2 -2
  4. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/pyproject.toml +2 -2
  5. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/PKG-INFO +3 -3
  6. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/SOURCES.txt +33 -0
  7. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/requires.txt +2 -2
  8. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/_version.py +3 -3
  9. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/__init__.py +1 -0
  10. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b07.py +10 -5
  11. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b07_1.py +10 -5
  12. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b21.py +22 -0
  13. dls_dodal-1.60.0/src/dodal/beamlines/i02_1.py +117 -0
  14. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i03.py +5 -3
  15. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i04.py +5 -3
  16. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i09.py +10 -9
  17. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i09_1.py +10 -5
  18. dls_dodal-1.60.0/src/dodal/beamlines/i10-1.py +25 -0
  19. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i10.py +17 -1
  20. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i11.py +0 -17
  21. dls_dodal-1.60.0/src/dodal/beamlines/i15.py +242 -0
  22. dls_dodal-1.60.0/src/dodal/beamlines/i15_1.py +156 -0
  23. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_1.py +3 -1
  24. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_2.py +12 -1
  25. dls_dodal-1.60.0/src/dodal/beamlines/i21.py +27 -0
  26. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i22.py +12 -2
  27. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i24.py +32 -3
  28. dls_dodal-1.60.0/src/dodal/beamlines/k07.py +31 -0
  29. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/p60.py +10 -9
  30. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/apple2_undulator.py +18 -142
  31. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/attenuator.py +48 -2
  32. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/filter.py +3 -0
  33. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/attenuator/filter_selections.py +26 -0
  34. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/eiger.py +2 -1
  35. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/__init__.py +4 -0
  36. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +30 -18
  37. dls_dodal-1.60.0/src/dodal/devices/electron_analyser/energy_sources.py +101 -0
  38. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/detector.py +6 -6
  39. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +7 -15
  40. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +6 -6
  41. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +7 -14
  42. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/fast_grid_scan.py +130 -64
  43. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/focusing_mirror.py +30 -0
  44. dls_dodal-1.60.0/src/dodal/devices/i02_1/fast_grid_scan.py +61 -0
  45. dls_dodal-1.60.0/src/dodal/devices/i02_1/sample_motors.py +19 -0
  46. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i04/murko_results.py +69 -23
  47. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/i10_apple2.py +282 -140
  48. dls_dodal-1.60.0/src/dodal/devices/i15/dcm.py +77 -0
  49. dls_dodal-1.60.0/src/dodal/devices/i15/focussing_mirror.py +71 -0
  50. dls_dodal-1.60.0/src/dodal/devices/i15/jack.py +39 -0
  51. dls_dodal-1.60.0/src/dodal/devices/i15/laue.py +18 -0
  52. dls_dodal-1.60.0/src/dodal/devices/i15/motors.py +27 -0
  53. dls_dodal-1.60.0/src/dodal/devices/i15/multilayer_mirror.py +25 -0
  54. dls_dodal-1.60.0/src/dodal/devices/i15/rail.py +17 -0
  55. dls_dodal-1.60.0/src/dodal/devices/i21/__init__.py +3 -0
  56. dls_dodal-1.60.0/src/dodal/devices/i21/enums.py +8 -0
  57. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i22/nxsas.py +2 -0
  58. dls_dodal-1.60.0/src/dodal/devices/i24/commissioning_jungfrau.py +114 -0
  59. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/motors.py +52 -1
  60. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/slits.py +18 -0
  61. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/smargon.py +0 -56
  62. dls_dodal-1.60.0/src/dodal/devices/temperture_controller/__init__.py +3 -0
  63. dls_dodal-1.60.0/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +204 -0
  64. dls_dodal-1.60.0/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +112 -0
  65. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/tetramm.py +38 -16
  66. dls_dodal-1.60.0/src/dodal/devices/v2f.py +39 -0
  67. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra.py +1 -0
  68. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +1 -1
  69. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/parameters/experiment_parameter_base.py +1 -5
  70. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_watcher_utils.py +14 -0
  71. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/conftest.py +55 -0
  72. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +4 -3
  73. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +24 -8
  74. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/conftest.py +28 -17
  75. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_detector.py +6 -3
  76. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_driver_io.py +14 -21
  77. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_detector.py +4 -3
  78. dls_dodal-1.60.0/tests/devices/electron_analyser/test_energy_sources.py +93 -0
  79. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +6 -3
  80. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +21 -22
  81. dls_dodal-1.60.0/tests/devices/i02_1/test_fast_grid_scan.py +23 -0
  82. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i04/test_murko_results.py +125 -11
  83. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_i10Apple2.py +106 -73
  84. dls_dodal-1.60.0/tests/devices/i15/test_dcm.py +7 -0
  85. dls_dodal-1.60.0/tests/devices/i24/test_commissioning_jungfrau.py +66 -0
  86. dls_dodal-1.60.0/tests/devices/temperature_controller/__init__.py +0 -0
  87. dls_dodal-1.60.0/tests/devices/temperature_controller/lakeshore/__init__.py +0 -0
  88. dls_dodal-1.60.0/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +136 -0
  89. dls_dodal-1.60.0/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +81 -0
  90. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_attenuator.py +44 -1
  91. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_gridscan.py +65 -75
  92. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_tetramm.py +41 -7
  93. dls_dodal-1.60.0/tests/devices/util/__init__.py +0 -0
  94. dls_dodal-1.60.0/tests/fake_zocalo/__init__.py +0 -0
  95. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_zocalo/__main__.py +1 -1
  96. dls_dodal-1.60.0/tests/plan_stubs/__init__.py +0 -0
  97. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_wrapped_stubs.py +6 -4
  98. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_scanspec.py +9 -9
  99. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_wrapped.py +9 -9
  100. dls_dodal-1.58.0/src/dodal/beamlines/i02_1.py +0 -37
  101. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.copier-answers.yml +0 -0
  102. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.devcontainer/devcontainer.json +0 -0
  103. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/CODEOWNERS +0 -0
  104. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/CONTRIBUTING.md +0 -0
  105. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  106. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/actions/install_requirements/action.yml +0 -0
  107. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/dependabot.yml +0 -0
  108. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/pages/index.html +0 -0
  109. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/pages/make_switcher.py +0 -0
  110. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/scripts/check_test_durations.py +0 -0
  111. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_dist.yml +0 -0
  112. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_docs.yml +0 -0
  113. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_pypi.yml +0 -0
  114. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_release.yml +0 -0
  115. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_test.yml +0 -0
  116. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/_tox.yml +0 -0
  117. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/ci.yml +0 -0
  118. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.github/workflows/periodic.yml +0 -0
  119. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.gitignore +0 -0
  120. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.pre-commit-config.yaml +0 -0
  121. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.vscode/extensions.json +0 -0
  122. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.vscode/launch.json +0 -0
  123. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.vscode/settings.json +0 -0
  124. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/.vscode/tasks.json +0 -0
  125. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/Dockerfile +0 -0
  126. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/LICENSE +0 -0
  127. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/README.md +0 -0
  128. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/catalog-info.yaml +0 -0
  129. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/conftest.py +0 -0
  130. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/_templates/autosummary/class.rst +0 -0
  131. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/_templates/autosummary/module.rst +0 -0
  132. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/_templates/custom-module-template.rst +0 -0
  133. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
  134. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/assets/zocalo.png +0 -0
  135. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/conf.py +0 -0
  136. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  137. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  138. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  139. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  140. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  141. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
  142. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions/COPYME +0 -0
  143. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/decisions.md +0 -0
  144. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/reviews.md +0 -0
  145. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/umls/apple2_design.png +0 -0
  146. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations/umls/i10_id_design.png +0 -0
  147. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/explanations.md +0 -0
  148. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/genindex.md +0 -0
  149. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/build-docs.md +0 -0
  150. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/contribute.md +0 -0
  151. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/coverage.md +0 -0
  152. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/create-beamline.md +0 -0
  153. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/create-device.md +0 -0
  154. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/dev-install.md +0 -0
  155. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/excalidraw.md +0 -0
  156. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/external-io-devices.md +0 -0
  157. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/lint.md +0 -0
  158. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/lock-requirements.md +0 -0
  159. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/make-release.md +0 -0
  160. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/move-code.md +0 -0
  161. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/pypi.md +0 -0
  162. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/run-tests.md +0 -0
  163. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/static-analysis.md +0 -0
  164. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/update-template.md +0 -0
  165. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to/zocalo.md +0 -0
  166. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/how-to.md +0 -0
  167. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/images/dls-logo.svg +0 -0
  168. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/images/excalidraw-example.svg +0 -0
  169. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/index.md +0 -0
  170. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/reference/api.md +0 -0
  171. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/reference/standards.md +0 -0
  172. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/reference.md +0 -0
  173. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/tutorials/get_started.md +0 -0
  174. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/tutorials/installation.md +0 -0
  175. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/docs/tutorials.md +0 -0
  176. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/pull_request_template.md +0 -0
  177. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/setup.cfg +0 -0
  178. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/__init__.py +0 -0
  179. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  180. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  181. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  182. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/__init__.py +0 -0
  183. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/__main__.py +0 -0
  184. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  185. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  186. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
  187. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/README.md +0 -0
  188. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/adsim.py +0 -0
  189. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/aithre.py +0 -0
  190. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b01_1.py +0 -0
  191. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b16.py +0 -0
  192. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/b18.py +0 -0
  193. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i05.py +0 -0
  194. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i05_1.py +0 -0
  195. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i09_2.py +0 -0
  196. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i13_1.py +0 -0
  197. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i17.py +0 -0
  198. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i18.py +0 -0
  199. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i19_optics.py +0 -0
  200. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i20_1.py +0 -0
  201. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/i23.py +0 -0
  202. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/k11.py +0 -0
  203. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/p38.py +0 -0
  204. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/p45.py +0 -0
  205. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/p99.py +0 -0
  206. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/beamlines/training_rig.py +0 -0
  207. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/cli.py +0 -0
  208. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/__init__.py +0 -0
  209. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/beamlines/__init__.py +0 -0
  210. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  211. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  212. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
  213. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  214. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/coordination.py +0 -0
  215. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/crystal_metadata.py +0 -0
  216. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/data_util.py +0 -0
  217. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/device_utils.py +0 -0
  218. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/enums.py +0 -0
  219. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/maths.py +0 -0
  220. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/types.py +0 -0
  221. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/udc_directory_provider.py +0 -0
  222. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/visit.py +0 -0
  223. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/common/watcher_utils.py +1 -1
  224. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/__init__.py +0 -0
  225. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
  226. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  227. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  228. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/aperture.py +0 -0
  229. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  230. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  231. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  232. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b07/__init__.py +0 -0
  233. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b07/enums.py +0 -0
  234. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/__init__.py +0 -0
  235. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
  236. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b07_1/enums.py +0 -0
  237. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b16/__init__.py +0 -0
  238. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/b16/detector.py +0 -0
  239. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/backlight.py +0 -0
  240. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/baton.py +0 -0
  241. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  242. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/collimation_table.py +0 -0
  243. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/common_dcm.py +0 -0
  244. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/controllers.py +0 -0
  245. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/cryostream.py +0 -0
  246. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  247. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  248. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  249. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  250. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  251. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  252. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/__init__.py +0 -0
  253. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  254. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  255. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  256. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/detector.py +0 -0
  257. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  258. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/diamond_filter.py +0 -0
  259. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/eiger_odin.py +0 -0
  260. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
  261. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
  262. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
  263. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
  264. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
  265. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  266. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  267. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  268. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
  269. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/types.py +0 -0
  270. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  271. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  272. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  273. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
  274. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/eurotherm.py +0 -0
  275. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  276. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/flux.py +0 -0
  277. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/hutch_shutter.py +0 -0
  278. {dls_dodal-1.58.0/src/dodal/devices/i10 → dls_dodal-1.60.0/src/dodal/devices/i02_1}/__init__.py +0 -0
  279. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i03/__init__.py +0 -0
  280. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i03/dcm.py +0 -0
  281. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
  282. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i04/__init__.py +0 -0
  283. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i04/constants.py +0 -0
  284. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i04/transfocator.py +0 -0
  285. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i05/__init__.py +0 -0
  286. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i05/enums.py +0 -0
  287. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i09/__init__.py +0 -0
  288. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i09/dcm.py +0 -0
  289. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i09/enums.py +0 -0
  290. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i09_1/__init__.py +0 -0
  291. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i09_1/enums.py +0 -0
  292. {dls_dodal-1.58.0/src/dodal/devices/i13_1 → dls_dodal-1.60.0/src/dodal/devices/i10}/__init__.py +0 -0
  293. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  294. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  295. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/mirrors.py +0 -0
  296. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  297. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  298. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  299. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i10/slits.py +0 -0
  300. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
  301. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i11/diff_stages.py +0 -0
  302. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i11/mythen.py +0 -0
  303. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i11/nx100robot.py +0 -0
  304. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i11/spinner.py +0 -0
  305. {dls_dodal-1.58.0/src/dodal/devices/i19 → dls_dodal-1.60.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  306. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  307. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  308. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  309. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i18/diode.py +0 -0
  310. {dls_dodal-1.58.0/src/dodal/devices/i20_1 → dls_dodal-1.60.0/src/dodal/devices/i19}/__init__.py +0 -0
  311. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/backlight.py +0 -0
  312. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/beamstop.py +0 -0
  313. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  314. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/diffractometer.py +0 -0
  315. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  316. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i19/shutter.py +0 -0
  317. {dls_dodal-1.58.0/src/dodal/devices/i24 → dls_dodal-1.60.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  318. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i22/dcm.py +0 -0
  319. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i22/fswitch.py +0 -0
  320. {dls_dodal-1.58.0/src/dodal/devices/oav → dls_dodal-1.60.0/src/dodal/devices/i24}/__init__.py +0 -0
  321. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/aperture.py +0 -0
  322. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/beam_center.py +0 -0
  323. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/beamstop.py +0 -0
  324. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/dcm.py +0 -0
  325. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  326. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  327. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/pmac.py +0 -0
  328. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/i24/vgonio.py +0 -0
  329. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/ipin.py +0 -0
  330. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/linkam3.py +0 -0
  331. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  332. {dls_dodal-1.58.0/src/dodal/devices/p99 → dls_dodal-1.60.0/src/dodal/devices/oav}/__init__.py +0 -0
  333. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  334. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  335. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  336. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  337. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  338. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  339. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  340. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  341. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  342. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  343. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  344. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/oav/utils.py +0 -0
  345. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p45.py +0 -0
  346. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p60/__init__.py +0 -0
  347. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p60/enums.py +0 -0
  348. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  349. {dls_dodal-1.58.0/src/dodal/devices/util → dls_dodal-1.60.0/src/dodal/devices/p99}/__init__.py +0 -0
  350. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  351. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  352. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/pgm.py +0 -0
  353. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/positioner.py +0 -0
  354. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  355. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/qbpm.py +0 -0
  356. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/robot.py +0 -0
  357. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  358. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/scintillator.py +0 -0
  359. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/status.py +0 -0
  360. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/synchrotron.py +0 -0
  361. {dls_dodal-1.58.0/src/dodal/devices/zebra → dls_dodal-1.60.0/src/dodal/devices/temperture_controller/lakeshore}/__init__.py +0 -0
  362. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/thawer.py +0 -0
  363. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/turbo_slit.py +0 -0
  364. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/undulator.py +0 -0
  365. {dls_dodal-1.58.0/src/dodal/plan_stubs → dls_dodal-1.60.0/src/dodal/devices/util}/__init__.py +0 -0
  366. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  367. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/util/epics_util.py +0 -0
  368. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  369. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  370. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/webcam.py +0 -0
  371. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  372. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  373. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  374. {dls_dodal-1.58.0/src/dodal/plans/preprocessors → dls_dodal-1.60.0/src/dodal/devices/zebra}/__init__.py +0 -0
  375. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  376. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  377. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  378. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  379. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  380. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/log.py +0 -0
  381. {dls_dodal-1.58.0/system_tests → dls_dodal-1.60.0/src/dodal/plan_stubs}/__init__.py +0 -0
  382. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  383. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plan_stubs/data_session.py +0 -0
  384. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  385. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  386. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/__init__.py +0 -0
  387. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/bimorph.py +0 -0
  388. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
  389. {dls_dodal-1.58.0/tests → dls_dodal-1.60.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  390. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  391. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/save_panda.py +0 -0
  392. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/scanspec.py +0 -0
  393. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  394. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/plans/wrapped.py +0 -0
  395. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/testing/__init__.py +0 -0
  396. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
  397. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
  398. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/testing/setup.py +0 -0
  399. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/src/dodal/utils.py +0 -0
  400. {dls_dodal-1.58.0/tests/beamlines → dls_dodal-1.60.0/system_tests}/__init__.py +0 -0
  401. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/system_tests/test_adsim.py +0 -0
  402. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/system_tests/test_cli.py +0 -0
  403. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/system_tests/test_oav_system.py +0 -0
  404. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/system_tests/test_oav_to_redis_system.py +0 -0
  405. {dls_dodal-1.58.0/tests/common → dls_dodal-1.60.0/tests}/__init__.py +0 -0
  406. {dls_dodal-1.58.0/tests/common → dls_dodal-1.60.0/tests}/beamlines/__init__.py +0 -0
  407. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/beamlines/test_b16.py +0 -0
  408. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/beamlines/test_i03.py +0 -0
  409. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/beamlines/test_i24.py +0 -0
  410. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/beamlines/test_mapping.py +0 -0
  411. {dls_dodal-1.58.0/tests/devices → dls_dodal-1.60.0/tests/common}/__init__.py +0 -0
  412. {dls_dodal-1.58.0/tests/devices/electron_analyser → dls_dodal-1.60.0/tests/common/beamlines}/__init__.py +0 -0
  413. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  414. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  415. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/beamlines/test_commissioning_mode.py +0 -0
  416. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  417. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_coordination.py +0 -0
  418. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_crystal_metadata.py +0 -0
  419. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_maths.py +0 -0
  420. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_udc_directory_provider.py +0 -0
  421. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/common/test_visit.py +0 -0
  422. {dls_dodal-1.58.0/tests/devices/electron_analyser/abstract → dls_dodal-1.60.0/tests/devices}/__init__.py +0 -0
  423. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  424. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/b07_1/test_ccmc.py +0 -0
  425. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/current_amplifier/test_femto.py +0 -0
  426. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
  427. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/detector/test_data/__init__.py +0 -0
  428. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
  429. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
  430. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/detector/test_det_resolution.py +0 -0
  431. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/detector/test_detector.py +0 -0
  432. {dls_dodal-1.58.0/tests/devices/electron_analyser/specs → dls_dodal-1.60.0/tests/devices/electron_analyser}/__init__.py +0 -0
  433. {dls_dodal-1.58.0/tests/devices/electron_analyser/vgscienta → dls_dodal-1.60.0/tests/devices/electron_analyser/abstract}/__init__.py +0 -0
  434. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
  435. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
  436. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
  437. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
  438. {dls_dodal-1.58.0/tests/devices/i03 → dls_dodal-1.60.0/tests/devices/electron_analyser/specs}/__init__.py +0 -0
  439. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
  440. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
  441. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
  442. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
  443. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/test_util.py +0 -0
  444. {dls_dodal-1.58.0/tests/devices/i04 → dls_dodal-1.60.0/tests/devices/electron_analyser/vgscienta}/__init__.py +0 -0
  445. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
  446. {dls_dodal-1.58.0/tests/devices/i09 → dls_dodal-1.60.0/tests/devices/i02_1}/__init__.py +0 -0
  447. {dls_dodal-1.58.0/tests/devices/i19 → dls_dodal-1.60.0/tests/devices/i03}/__init__.py +0 -0
  448. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i03/test_dcm.py +0 -0
  449. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i03/test_undulator_dcm.py +0 -0
  450. {dls_dodal-1.58.0/tests/devices/i24 → dls_dodal-1.60.0/tests/devices/i04}/__init__.py +0 -0
  451. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i04/test_transfocator.py +0 -0
  452. {dls_dodal-1.58.0/tests/devices/mx_phase1 → dls_dodal-1.60.0/tests/devices/i09}/__init__.py +0 -0
  453. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i09/test_dcm.py +0 -0
  454. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
  455. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
  456. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/__init__.py +0 -0
  457. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  458. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  459. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  460. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  461. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i11/test_i11devices.py +0 -0
  462. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i11/test_mythen.py +0 -0
  463. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i13_1/test_merlin.py +0 -0
  464. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  465. {dls_dodal-1.58.0/tests/devices/oav → dls_dodal-1.60.0/tests/devices/i19}/__init__.py +0 -0
  466. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i19/test_backlight.py +0 -0
  467. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i19/test_beamstop.py +0 -0
  468. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i19/test_diffractometer.py +0 -0
  469. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i19/test_shutter.py +0 -0
  470. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i22/test_dcm.py +0 -0
  471. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i22/test_fswitch.py +0 -0
  472. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i22/test_metadataholder.py +0 -0
  473. {dls_dodal-1.58.0/tests/devices/util → dls_dodal-1.60.0/tests/devices/i24}/__init__.py +0 -0
  474. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i24/test_dual_backlight.py +0 -0
  475. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
  476. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i24/test_pmac.py +0 -0
  477. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/i24/test_vgonio.py +0 -0
  478. {dls_dodal-1.58.0/tests/fake_zocalo → dls_dodal-1.60.0/tests/devices/mx_phase1}/__init__.py +0 -0
  479. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
  480. {dls_dodal-1.58.0/tests/plan_stubs → dls_dodal-1.60.0/tests/devices/oav}/__init__.py +0 -0
  481. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/conftest.py +0 -0
  482. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
  483. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  484. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_data/__init__.py +0 -0
  485. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
  486. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
  487. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
  488. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_grid_overlay.py +0 -0
  489. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_oav.py +0 -0
  490. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_parameters.py +0 -0
  491. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
  492. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_oav_utils.py +0 -0
  493. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
  494. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/oav/test_snapshots.py +0 -0
  495. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
  496. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/p99/test_p99_stage.py +0 -0
  497. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test.png +0 -0
  498. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_aperture.py +0 -0
  499. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_aperture_scatterguard.py +0 -0
  500. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_apple2_undulator.py +0 -0
  501. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_backlight.py +0 -0
  502. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_bart_robot.py +0 -0
  503. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_baton.py +0 -0
  504. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_beam_converter.py +0 -0
  505. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_bimorph_mirror.py +0 -0
  506. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_common_dcm.py +0 -0
  507. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_controllers.py +0 -0
  508. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
  509. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
  510. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
  511. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  512. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  513. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
  514. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_data/__init__.py +0 -0
  515. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  516. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
  517. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_diamond_filter.py +0 -0
  518. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_eiger.py +0 -0
  519. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_focusing_mirror.py +0 -0
  520. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_hutch_shutter.py +0 -0
  521. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_motors.py +0 -0
  522. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_odin.py +0 -0
  523. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_positioner.py +0 -0
  524. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_pressure_jump_cell.py +0 -0
  525. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_qbpm.py +0 -0
  526. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_scintillator.py +0 -0
  527. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_slits.py +0 -0
  528. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_smargon.py +0 -0
  529. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_status.py +0 -0
  530. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_synchrotron.py +0 -0
  531. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_thawer.py +0 -0
  532. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_turbo_slit.py +0 -0
  533. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_undulator.py +0 -0
  534. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_utils.py +0 -0
  535. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
  536. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_webcam.py +0 -0
  537. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_xbpm_feedback.py +0 -0
  538. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_xspress3.py +0 -0
  539. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_zebra.py +0 -0
  540. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
  541. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_zebra_shutter.py +0 -0
  542. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_zocalo_interaction.py +0 -0
  543. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/test_zocalo_results.py +0 -0
  544. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_adjuster_plans.py +0 -0
  545. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
  546. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_data/__init__.py +0 -0
  547. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  548. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  549. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  550. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_lookup_tables.py +0 -0
  551. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/devices/util/test_save_panda.py +0 -0
  552. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline.py +0 -0
  553. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  554. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_broken_dependency.py +0 -0
  555. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_dependencies.py +0 -0
  556. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  557. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  558. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_beamline_some_devices_working.py +0 -0
  559. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_device_factory_beamline.py +0 -0
  560. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_zocalo/README.rst +0 -0
  561. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  562. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/__init__.py +0 -0
  563. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
  564. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
  565. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_data_session.py +0 -0
  566. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  567. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  568. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/conftest.py +0 -0
  569. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_bimorph.py +0 -0
  570. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_compliance.py +0 -0
  571. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
  572. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  573. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  574. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  575. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_cli.py +0 -0
  576. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/__init__.py +0 -0
  577. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/bad_beamlineParameters +0 -0
  578. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/i04_beamlineParameters +0 -0
  579. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  580. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/test_display.configuration +0 -0
  581. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
  582. {dls_dodal-1.58.0 → dls_dodal-1.60.0}/tests/test_log.py +0 -0
  583. {dls_dodal-1.58.0 → 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.58.0
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,9 +230,9 @@ 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
235
+ Requires-Dist: daq-config-server>=v1.0.0-rc.2
236
236
  Provides-Extra: dev
237
237
  Requires-Dist: black; extra == "dev"
238
238
  Requires-Dist: diff-cover; extra == "dev"
@@ -120,3 +120,33 @@ async def test_my_device_read(sim_my_device: MyDevice, RE: RunEngine) -> None:
120
120
  }
121
121
  )
122
122
  ```
123
+
124
+ ## Test performance and reliability
125
+
126
+ Dodal has well over 1000 unit tests and developers will run the full unit test suite frequently on their local
127
+ machines, therefore it is imperative that the unit tests are both reliable and run quickly. Ideally the test suite
128
+ should run in about a minute, so if your test takes more than a fraction of a second to complete then consider
129
+ making it faster. The GitHub CI will fail if any test takes longer than 1 second.
130
+
131
+ Tests that involve concurrency can sometimes be unreliable due to subtle race conditions and variations in timing
132
+ caused by caching, garbage collection and other factors.
133
+ Often these manifest only on certain machines or in CI and are difficult to reproduce. Whilst the odd test failure
134
+ can be worked around by re-running the tests, this is annoying and a build up of such flaky tests is undesirable so
135
+ it is preferable to fix the test.
136
+
137
+ ### Event loop fuzzer
138
+
139
+ To assist in the reproduction of concurrency-related test failures, there is an event loop fuzzer available as a
140
+ pytest fixture. The fuzzer introduces random delays into the ``asyncio`` event loop. You can use it as by
141
+ requesting ``event_loop_fuzzing`` as a fixture. It is also recommended when debugging to parametrize the test to
142
+ introduce a good number of iterations in order to ensure the problem has a good chance to show up, but remember to
143
+ remove the parametrization afterwards.
144
+
145
+ ```Python
146
+ import pytest
147
+ # repeat the test a number of times
148
+ @pytest.mark.parametrize("i", range(0, 100))
149
+ async def my_unreliable_test(i, event_loop_fuzzing):
150
+ # Do some stuff in here
151
+
152
+ ```
@@ -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,9 +29,9 @@ 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",
34
+ "daq-config-server>=v1.0.0-rc.2",# For getting Configuration settings.
35
35
  ]
36
36
 
37
37
  dynamic = ["version"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.58.0
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,9 +230,9 @@ 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
235
+ Requires-Dist: daq-config-server>=v1.0.0-rc.2
236
236
  Provides-Extra: dev
237
237
  Requires-Dist: black; extra == "dev"
238
238
  Requires-Dist: diff-cover; extra == "dev"
@@ -111,18 +111,23 @@ src/dodal/beamlines/i05_1.py
111
111
  src/dodal/beamlines/i09.py
112
112
  src/dodal/beamlines/i09_1.py
113
113
  src/dodal/beamlines/i09_2.py
114
+ src/dodal/beamlines/i10-1.py
114
115
  src/dodal/beamlines/i10.py
115
116
  src/dodal/beamlines/i11.py
116
117
  src/dodal/beamlines/i13_1.py
118
+ src/dodal/beamlines/i15.py
119
+ src/dodal/beamlines/i15_1.py
117
120
  src/dodal/beamlines/i17.py
118
121
  src/dodal/beamlines/i18.py
119
122
  src/dodal/beamlines/i19_1.py
120
123
  src/dodal/beamlines/i19_2.py
121
124
  src/dodal/beamlines/i19_optics.py
122
125
  src/dodal/beamlines/i20_1.py
126
+ src/dodal/beamlines/i21.py
123
127
  src/dodal/beamlines/i22.py
124
128
  src/dodal/beamlines/i23.py
125
129
  src/dodal/beamlines/i24.py
130
+ src/dodal/beamlines/k07.py
126
131
  src/dodal/beamlines/k11.py
127
132
  src/dodal/beamlines/p38.py
128
133
  src/dodal/beamlines/p45.py
@@ -184,6 +189,7 @@ src/dodal/devices/tetramm.py
184
189
  src/dodal/devices/thawer.py
185
190
  src/dodal/devices/turbo_slit.py
186
191
  src/dodal/devices/undulator.py
192
+ src/dodal/devices/v2f.py
187
193
  src/dodal/devices/watsonmarlow323_pump.py
188
194
  src/dodal/devices/webcam.py
189
195
  src/dodal/devices/xbpm_feedback.py
@@ -216,6 +222,7 @@ src/dodal/devices/detector/detector.py
216
222
  src/dodal/devices/detector/detector_motion.py
217
223
  src/dodal/devices/electron_analyser/__init__.py
218
224
  src/dodal/devices/electron_analyser/detector.py
225
+ src/dodal/devices/electron_analyser/energy_sources.py
219
226
  src/dodal/devices/electron_analyser/enums.py
220
227
  src/dodal/devices/electron_analyser/types.py
221
228
  src/dodal/devices/electron_analyser/util.py
@@ -234,6 +241,9 @@ src/dodal/devices/electron_analyser/vgscienta/detector.py
234
241
  src/dodal/devices/electron_analyser/vgscienta/driver_io.py
235
242
  src/dodal/devices/electron_analyser/vgscienta/enums.py
236
243
  src/dodal/devices/electron_analyser/vgscienta/region.py
244
+ src/dodal/devices/i02_1/__init__.py
245
+ src/dodal/devices/i02_1/fast_grid_scan.py
246
+ src/dodal/devices/i02_1/sample_motors.py
237
247
  src/dodal/devices/i03/__init__.py
238
248
  src/dodal/devices/i03/dcm.py
239
249
  src/dodal/devices/i03/undulator_dcm.py
@@ -265,6 +275,13 @@ src/dodal/devices/i11/spinner.py
265
275
  src/dodal/devices/i13_1/__init__.py
266
276
  src/dodal/devices/i13_1/merlin.py
267
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
268
285
  src/dodal/devices/i18/KBMirror.py
269
286
  src/dodal/devices/i18/diode.py
270
287
  src/dodal/devices/i19/__init__.py
@@ -275,6 +292,8 @@ src/dodal/devices/i19/diffractometer.py
275
292
  src/dodal/devices/i19/hutch_access.py
276
293
  src/dodal/devices/i19/shutter.py
277
294
  src/dodal/devices/i20_1/__init__.py
295
+ src/dodal/devices/i21/__init__.py
296
+ src/dodal/devices/i21/enums.py
278
297
  src/dodal/devices/i22/dcm.py
279
298
  src/dodal/devices/i22/fswitch.py
280
299
  src/dodal/devices/i22/nxsas.py
@@ -282,6 +301,7 @@ src/dodal/devices/i24/__init__.py
282
301
  src/dodal/devices/i24/aperture.py
283
302
  src/dodal/devices/i24/beam_center.py
284
303
  src/dodal/devices/i24/beamstop.py
304
+ src/dodal/devices/i24/commissioning_jungfrau.py
285
305
  src/dodal/devices/i24/dcm.py
286
306
  src/dodal/devices/i24/dual_backlight.py
287
307
  src/dodal/devices/i24/focus_mirrors.py
@@ -307,6 +327,10 @@ src/dodal/devices/p60/lab_xray_source.py
307
327
  src/dodal/devices/p99/__init__.py
308
328
  src/dodal/devices/p99/andor2_point.py
309
329
  src/dodal/devices/p99/sample_stage.py
330
+ src/dodal/devices/temperture_controller/__init__.py
331
+ src/dodal/devices/temperture_controller/lakeshore/__init__.py
332
+ src/dodal/devices/temperture_controller/lakeshore/lakeshore.py
333
+ src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py
310
334
  src/dodal/devices/util/__init__.py
311
335
  src/dodal/devices/util/adjuster_plans.py
312
336
  src/dodal/devices/util/epics_util.py
@@ -429,6 +453,7 @@ tests/devices/detector/test_data/test_det_dist_converter.txt
429
453
  tests/devices/electron_analyser/__init__.py
430
454
  tests/devices/electron_analyser/conftest.py
431
455
  tests/devices/electron_analyser/test_detector.py
456
+ tests/devices/electron_analyser/test_energy_sources.py
432
457
  tests/devices/electron_analyser/test_util.py
433
458
  tests/devices/electron_analyser/abstract/__init__.py
434
459
  tests/devices/electron_analyser/abstract/test_base_detector.py
@@ -448,6 +473,8 @@ tests/devices/electron_analyser/vgscienta/__init__.py
448
473
  tests/devices/electron_analyser/vgscienta/test_detector.py
449
474
  tests/devices/electron_analyser/vgscienta/test_driver_io.py
450
475
  tests/devices/electron_analyser/vgscienta/test_region.py
476
+ tests/devices/i02_1/__init__.py
477
+ tests/devices/i02_1/test_fast_grid_scan.py
451
478
  tests/devices/i03/__init__.py
452
479
  tests/devices/i03/test_dcm.py
453
480
  tests/devices/i03/test_undulator_dcm.py
@@ -467,6 +494,7 @@ tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl
467
494
  tests/devices/i11/test_i11devices.py
468
495
  tests/devices/i11/test_mythen.py
469
496
  tests/devices/i13_1/test_merlin.py
497
+ tests/devices/i15/test_dcm.py
470
498
  tests/devices/i18/test_kb_mirror.py
471
499
  tests/devices/i19/__init__.py
472
500
  tests/devices/i19/test_backlight.py
@@ -477,6 +505,7 @@ tests/devices/i22/test_dcm.py
477
505
  tests/devices/i22/test_fswitch.py
478
506
  tests/devices/i22/test_metadataholder.py
479
507
  tests/devices/i24/__init__.py
508
+ tests/devices/i24/test_commissioning_jungfrau.py
480
509
  tests/devices/i24/test_dual_backlight.py
481
510
  tests/devices/i24/test_focus_mirrors.py
482
511
  tests/devices/i24/test_pmac.py
@@ -500,6 +529,10 @@ tests/devices/oav/test_data/oav_snapshot_test.png
500
529
  tests/devices/oav/test_data/test_OAVCentring.json
501
530
  tests/devices/p60/test_lab_xray_source.py
502
531
  tests/devices/p99/test_p99_stage.py
532
+ tests/devices/temperature_controller/__init__.py
533
+ tests/devices/temperature_controller/lakeshore/__init__.py
534
+ tests/devices/temperature_controller/lakeshore/test_lakeshore.py
535
+ tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py
503
536
  tests/devices/test_daq_configuration/__init__.py
504
537
  tests/devices/test_daq_configuration/domain/__init__.py
505
538
  tests/devices/test_daq_configuration/domain/beamlineParameters
@@ -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,9 +15,9 @@ 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
20
+ daq-config-server>=v1.0.0-rc.2
21
21
 
22
22
  [dev]
23
23
  black
@@ -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.58.0'
32
- __version_tuple__ = version_tuple = (1, 58, 0)
31
+ __version__ = version = '1.60.0'
32
+ __version_tuple__ = version_tuple = (1, 60, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g52d34a5bc'
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",
@@ -3,8 +3,8 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.b07 import Grating, LensMode, PsuMode
6
- from dodal.devices.electron_analyser import SelectedSource
7
- from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
6
+ from dodal.devices.electron_analyser import EnergySource
7
+ from dodal.devices.electron_analyser.specs import SpecsDetector
8
8
  from dodal.devices.pgm import PGM
9
9
  from dodal.devices.synchrotron import Synchrotron
10
10
  from dodal.log import set_beamline as set_log_beamline
@@ -26,13 +26,18 @@ def pgm() -> PGM:
26
26
  return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=Grating)
27
27
 
28
28
 
29
+ @device_factory()
30
+ def energy_source() -> EnergySource:
31
+ return EnergySource(pgm().energy.user_readback)
32
+
33
+
29
34
  # Connect will work again after this work completed
30
35
  # https://jira.diamond.ac.uk/browse/B07-1104
31
36
  @device_factory()
32
- def analyser_driver() -> SpecsAnalyserDriverIO[LensMode, PsuMode]:
33
- return SpecsAnalyserDriverIO[LensMode, PsuMode](
37
+ def analyser() -> SpecsDetector[LensMode, PsuMode]:
38
+ return SpecsDetector[LensMode, PsuMode](
34
39
  prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
35
40
  lens_mode_type=LensMode,
36
41
  psu_mode_type=PsuMode,
37
- energy_sources={SelectedSource.SOURCE1: pgm().energy.user_readback},
42
+ energy_source=energy_source(),
38
43
  )
@@ -6,8 +6,8 @@ from dodal.devices.b07_1 import (
6
6
  Grating,
7
7
  LensMode,
8
8
  )
9
- from dodal.devices.electron_analyser import SelectedSource
10
- from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
9
+ from dodal.devices.electron_analyser import EnergySource
10
+ from dodal.devices.electron_analyser.specs import SpecsDetector
11
11
  from dodal.devices.pgm import PGM
12
12
  from dodal.devices.synchrotron import Synchrotron
13
13
  from dodal.log import set_beamline as set_log_beamline
@@ -37,10 +37,15 @@ def ccmc() -> ChannelCutMonochromator:
37
37
 
38
38
 
39
39
  @device_factory()
40
- def analyser_driver() -> SpecsAnalyserDriverIO[LensMode, PsuMode]:
41
- return SpecsAnalyserDriverIO[LensMode, PsuMode](
40
+ def energy_source() -> EnergySource:
41
+ return EnergySource(pgm().energy.user_readback)
42
+
43
+
44
+ @device_factory()
45
+ def analyser() -> SpecsDetector[LensMode, PsuMode]:
46
+ return SpecsDetector[LensMode, PsuMode](
42
47
  prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
43
48
  lens_mode_type=LensMode,
44
49
  psu_mode_type=PsuMode,
45
- energy_sources={SelectedSource.SOURCE1: pgm().energy.user_readback},
50
+ energy_source=energy_source(),
46
51
  )
@@ -8,10 +8,13 @@ from dodal.common.beamlines.beamline_utils import (
8
8
  )
9
9
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
10
10
  from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
11
+ from dodal.devices.focusing_mirror import SimpleMirror
11
12
  from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV
12
13
  from dodal.devices.linkam3 import Linkam3
14
+ from dodal.devices.motors import XYStage
13
15
  from dodal.devices.slits import Slits
14
16
  from dodal.devices.synchrotron import Synchrotron
17
+ from dodal.devices.v2f import QDV2F
15
18
  from dodal.log import set_beamline as set_log_beamline
16
19
  from dodal.utils import BeamlinePrefix, get_beamline_name
17
20
 
@@ -43,6 +46,18 @@ def waxs() -> EigerDetector:
43
46
  )
44
47
 
45
48
 
49
+ @device_factory()
50
+ def mirror() -> SimpleMirror:
51
+ return SimpleMirror(
52
+ prefix=f"{PREFIX.beamline_prefix}-OP-MR-01:",
53
+ )
54
+
55
+
56
+ @device_factory()
57
+ def it() -> QDV2F:
58
+ return QDV2F(prefix=f"{PREFIX.beamline_prefix}-DI-PHDGN-07:PHD1:", I_suffix="I")
59
+
60
+
46
61
  @device_factory()
47
62
  def panda1() -> HDFPanda:
48
63
  return HDFPanda(
@@ -51,6 +66,13 @@ def panda1() -> HDFPanda:
51
66
  )
52
67
 
53
68
 
69
+ @device_factory()
70
+ def table() -> XYStage:
71
+ return XYStage(
72
+ prefix=f"{PREFIX.beamline_prefix}-MO-TABLE-04:",
73
+ )
74
+
75
+
54
76
  @device_factory()
55
77
  def synchrotron() -> Synchrotron:
56
78
  return Synchrotron()
@@ -0,0 +1,117 @@
1
+ """Beamline i02-1 is also known as VMXm, or I02J"""
2
+
3
+ from dodal.common.beamlines.beamline_utils import (
4
+ device_factory,
5
+ device_instantiation,
6
+ )
7
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
8
+ from dodal.devices.attenuator.attenuator import EnumFilterAttenuator
9
+ from dodal.devices.attenuator.filter_selections import (
10
+ I02_1FilterFourSelections,
11
+ I02_1FilterOneSelections,
12
+ I02_1FilterThreeSelections,
13
+ I02_1FilterTwoSelections,
14
+ )
15
+ from dodal.devices.eiger import EigerDetector
16
+ from dodal.devices.i02_1.fast_grid_scan import ZebraFastGridScanTwoD
17
+ from dodal.devices.i02_1.sample_motors import SampleMotors
18
+ from dodal.devices.synchrotron import Synchrotron
19
+ from dodal.devices.zebra.zebra import Zebra
20
+ from dodal.devices.zebra.zebra_constants_mapping import (
21
+ ZebraMapping,
22
+ ZebraSources,
23
+ ZebraTTLOutputs,
24
+ )
25
+ from dodal.devices.zocalo import ZocaloResults
26
+ from dodal.log import set_beamline as set_log_beamline
27
+ from dodal.utils import BeamlinePrefix, get_beamline_name
28
+
29
+ BL = get_beamline_name("i02-1")
30
+ PREFIX = BeamlinePrefix(BL, suffix="J")
31
+ set_log_beamline(BL)
32
+ set_utils_beamline(BL)
33
+ DAQ_CONFIGURATION_PATH = "/dls_sw/i02-1/software/daq_configuration"
34
+
35
+ I02_1_ZEBRA_MAPPING = ZebraMapping(
36
+ outputs=ZebraTTLOutputs(TTL_EIGER=2, TTL_XSPRESS3=3, TTL_FAST_SHUTTER=1),
37
+ sources=ZebraSources(),
38
+ )
39
+
40
+
41
+ @device_factory()
42
+ def eiger(mock: bool = False) -> EigerDetector:
43
+ """Get the i02-1 Eiger device, instantiate it if it hasn't already been.
44
+ If this is called when already instantiated in i02-1, it will return the existing object.
45
+ """
46
+ return device_instantiation(
47
+ device_factory=EigerDetector,
48
+ prefix=f"{PREFIX.beamline_prefix}-EA-EIGER-01:",
49
+ bl_prefix=False,
50
+ wait=False,
51
+ fake=mock,
52
+ name="eiger",
53
+ )
54
+
55
+
56
+ @device_factory()
57
+ def zebra_fast_grid_scan() -> ZebraFastGridScanTwoD:
58
+ """Get the i02-1 zebra_fast_grid_scan device, instantiate it if it hasn't already been.
59
+ If this is called when already instantiated in i02-1, it will return the existing object.
60
+ """
61
+ return ZebraFastGridScanTwoD(
62
+ prefix=f"{PREFIX.beamline_prefix}-MO-SAMP-11:",
63
+ motion_controller_prefix="BL02J-MO-STEP-11:",
64
+ )
65
+
66
+
67
+ @device_factory()
68
+ def synchrotron() -> Synchrotron:
69
+ """Get the i02-1 synchrotron device, instantiate it if it hasn't already been.
70
+ If this is called when already instantiated in i02-1, it will return the existing object.
71
+ """
72
+ return Synchrotron()
73
+
74
+
75
+ @device_factory()
76
+ def zebra() -> Zebra:
77
+ """Get the i02-1 zebra device, instantiate it if it hasn't already been.
78
+ If this is called when already instantiated in i02-1, it will return the existing object.
79
+ """
80
+ return Zebra(
81
+ prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-01:",
82
+ mapping=I02_1_ZEBRA_MAPPING,
83
+ )
84
+
85
+
86
+ # Device not needed after https://github.com/DiamondLightSource/mx-bluesky/issues/1299
87
+ @device_factory()
88
+ def zocalo() -> ZocaloResults:
89
+ """Get the i02-1 ZocaloResults device, instantiate it if it hasn't already been.
90
+ If this is called when already instantiated in i02-1, it will return the existing object.
91
+ """
92
+ return ZocaloResults()
93
+
94
+
95
+ @device_factory()
96
+ def goniometer() -> SampleMotors:
97
+ """Get the i02-1 goniometer device, instantiate it if it hasn't already been.
98
+ If this is called when already instantiated in i02-1, it will return the existing object.
99
+ """
100
+ return SampleMotors(f"{PREFIX.beamline_prefix}-MO-SAMP-01:")
101
+
102
+
103
+ @device_factory()
104
+ def attenuator() -> EnumFilterAttenuator:
105
+ """Get the i02-1 attenuator device, instantiate it if it hasn't already been.
106
+ If this is called when already instantiated in i02-1, it will return the existing object.
107
+ """
108
+
109
+ return EnumFilterAttenuator(
110
+ f"{PREFIX.beamline_prefix}-OP-ATTN-01:",
111
+ (
112
+ I02_1FilterOneSelections,
113
+ I02_1FilterTwoSelections,
114
+ I02_1FilterThreeSelections,
115
+ I02_1FilterFourSelections,
116
+ ),
117
+ )
@@ -25,7 +25,7 @@ from dodal.devices.cryostream import CryoStream
25
25
  from dodal.devices.detector.detector_motion import DetectorMotion
26
26
  from dodal.devices.diamond_filter import DiamondFilter, I03Filters
27
27
  from dodal.devices.eiger import EigerDetector
28
- from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
28
+ from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScanThreeD
29
29
  from dodal.devices.fluorescence_detector_motion import FluorescenceDetector
30
30
  from dodal.devices.flux import Flux
31
31
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
@@ -191,11 +191,13 @@ def fastcs_eiger() -> FastEiger:
191
191
 
192
192
 
193
193
  @device_factory()
194
- def zebra_fast_grid_scan() -> ZebraFastGridScan:
194
+ def zebra_fast_grid_scan() -> ZebraFastGridScanThreeD:
195
195
  """Get the i03 zebra_fast_grid_scan device, instantiate it if it hasn't already been.
196
196
  If this is called when already instantiated in i03, it will return the existing object.
197
197
  """
198
- return ZebraFastGridScan(prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:")
198
+ return ZebraFastGridScanThreeD(
199
+ prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:",
200
+ )
199
201
 
200
202
 
201
203
  @device_factory()
@@ -17,7 +17,7 @@ from dodal.devices.detector import DetectorParams
17
17
  from dodal.devices.detector.detector_motion import DetectorMotion
18
18
  from dodal.devices.diamond_filter import DiamondFilter, I04Filters
19
19
  from dodal.devices.eiger import EigerDetector
20
- from dodal.devices.fast_grid_scan import ZebraFastGridScan
20
+ from dodal.devices.fast_grid_scan import ZebraFastGridScanThreeD
21
21
  from dodal.devices.flux import Flux
22
22
  from dodal.devices.i03.dcm import DCM
23
23
  from dodal.devices.i04.constants import RedisConstants
@@ -210,11 +210,13 @@ def eiger(mock: bool = False, params: DetectorParams | None = None) -> EigerDete
210
210
 
211
211
 
212
212
  @device_factory()
213
- def zebra_fast_grid_scan() -> ZebraFastGridScan:
213
+ def zebra_fast_grid_scan() -> ZebraFastGridScanThreeD:
214
214
  """Get the i04 zebra_fast_grid_scan device, instantiate it if it hasn't already been.
215
215
  If this is called when already instantiated in i04, it will return the existing object.
216
216
  """
217
- return ZebraFastGridScan(f"{PREFIX.beamline_prefix}-MO-SGON-01:")
217
+ return ZebraFastGridScanThreeD(
218
+ prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:",
219
+ )
218
220
 
219
221
 
220
222
  @device_factory()
@@ -2,8 +2,8 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.electron_analyser import SelectedSource
6
- from dodal.devices.electron_analyser.vgscienta import VGScientaAnalyserDriverIO
5
+ from dodal.devices.electron_analyser import DualEnergySource
6
+ from dodal.devices.electron_analyser.vgscienta import VGScientaDetector
7
7
  from dodal.devices.i09 import DCM, Grating, LensMode, PassEnergy, PsuMode
8
8
  from dodal.devices.pgm import PGM
9
9
  from dodal.devices.synchrotron import Synchrotron
@@ -34,18 +34,19 @@ def dcm() -> DCM:
34
34
  return DCM(prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:")
35
35
 
36
36
 
37
+ @device_factory()
38
+ def energy_source() -> DualEnergySource:
39
+ return DualEnergySource(dcm().energy_in_ev, pgm().energy.user_readback)
40
+
41
+
37
42
  # Connect will work again after this work completed
38
43
  # https://jira.diamond.ac.uk/browse/I09-651
39
44
  @device_factory()
40
- def analyser_driver() -> VGScientaAnalyserDriverIO[LensMode, PsuMode, PassEnergy]:
41
- energy_sources = {
42
- SelectedSource.SOURCE1: pgm().energy.user_readback,
43
- SelectedSource.SOURCE2: dcm().energy_in_ev,
44
- }
45
- return VGScientaAnalyserDriverIO[LensMode, PsuMode, PassEnergy](
45
+ def ew4000() -> VGScientaDetector[LensMode, PsuMode, PassEnergy]:
46
+ return VGScientaDetector[LensMode, PsuMode, PassEnergy](
46
47
  prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
47
48
  lens_mode_type=LensMode,
48
49
  psu_mode_type=PsuMode,
49
50
  pass_energy_type=PassEnergy,
50
- energy_sources=energy_sources,
51
+ energy_source=energy_source(),
51
52
  )
@@ -2,8 +2,8 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.electron_analyser import SelectedSource
6
- from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
5
+ from dodal.devices.electron_analyser import EnergySource
6
+ from dodal.devices.electron_analyser.specs import SpecsDetector
7
7
  from dodal.devices.i09.dcm import DCM
8
8
  from dodal.devices.i09_1 import LensMode, PsuMode
9
9
  from dodal.devices.synchrotron import Synchrotron
@@ -26,13 +26,18 @@ def dcm() -> DCM:
26
26
  return DCM(prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:")
27
27
 
28
28
 
29
+ @device_factory()
30
+ def energy_source() -> EnergySource:
31
+ return EnergySource(dcm().energy_in_ev)
32
+
33
+
29
34
  # Connect will work again after this work completed
30
35
  # https://jira.diamond.ac.uk/browse/I09-651
31
36
  @device_factory()
32
- def analyser_driver() -> SpecsAnalyserDriverIO[LensMode, PsuMode]:
33
- return SpecsAnalyserDriverIO[LensMode, PsuMode](
37
+ def analyser() -> SpecsDetector[LensMode, PsuMode]:
38
+ return SpecsDetector[LensMode, PsuMode](
34
39
  prefix=f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:",
35
40
  lens_mode_type=LensMode,
36
41
  psu_mode_type=PsuMode,
37
- energy_sources={SelectedSource.SOURCE1: dcm().energy_in_ev},
42
+ energy_source=energy_source(),
38
43
  )