dls-dodal 1.45.0__tar.gz → 1.46.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 (472) hide show
  1. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/PKG-INFO +2 -2
  2. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/pyproject.toml +1 -1
  3. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
  4. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/SOURCES.txt +7 -4
  5. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/requires.txt +1 -1
  6. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/_version.py +2 -2
  7. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i03.py +4 -4
  8. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i04.py +1 -1
  9. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i18.py +7 -4
  10. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i22.py +3 -3
  11. dls_dodal-1.46.0/src/dodal/beamlines/i23.py +95 -0
  12. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/p38.py +3 -3
  13. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/beamlines/beamline_utils.py +5 -0
  14. dls_dodal-1.46.0/src/dodal/devices/common_dcm.py +77 -0
  15. {dls_dodal-1.45.0/src/dodal/devices → dls_dodal-1.46.0/src/dodal/devices/i03}/dcm.py +8 -12
  16. {dls_dodal-1.45.0/src/dodal/devices → dls_dodal-1.46.0/src/dodal/devices/i03}/undulator_dcm.py +6 -4
  17. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i13_1/merlin.py +3 -4
  18. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i13_1/merlin_controller.py +1 -1
  19. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i22/dcm.py +10 -12
  20. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/dcm.py +8 -17
  21. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/tetramm.py +3 -4
  22. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/turbo_slit.py +2 -2
  23. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zebra/zebra.py +4 -0
  24. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/data_session.py +10 -1
  25. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/verify_undulator_gap.py +2 -2
  26. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i13_1/test_merlin.py +3 -4
  27. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i22/test_dcm.py +21 -16
  28. dls_dodal-1.46.0/tests/devices/test_common_dcm.py +8 -0
  29. {dls_dodal-1.45.0/tests/devices/unit_tests → dls_dodal-1.46.0/tests/devices/unit_tests/i03}/test_dcm.py +2 -2
  30. {dls_dodal-1.45.0/tests/devices/unit_tests → dls_dodal-1.46.0/tests/devices/unit_tests/i03}/test_undulator_dcm.py +2 -2
  31. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_tetramm.py +19 -19
  32. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plan_stubs/test_data_session.py +14 -0
  33. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/conftest.py +3 -2
  34. dls_dodal-1.46.0/tests/unit_tests/__init__.py +0 -0
  35. dls_dodal-1.45.0/src/dodal/beamlines/i23.py +0 -40
  36. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.copier-answers.yml +0 -0
  37. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.devcontainer/devcontainer.json +0 -0
  38. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/CODEOWNERS +0 -0
  39. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/CONTRIBUTING.md +0 -0
  40. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  41. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/actions/install_requirements/action.yml +0 -0
  42. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/dependabot.yml +0 -0
  43. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/pages/index.html +0 -0
  44. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/pages/make_switcher.py +0 -0
  45. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/scripts/check_test_durations.py +0 -0
  46. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_check.yml +0 -0
  47. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_dist.yml +0 -0
  48. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_docs.yml +0 -0
  49. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_pypi.yml +0 -0
  50. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_release.yml +0 -0
  51. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_test.yml +0 -0
  52. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/_tox.yml +0 -0
  53. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/ci.yml +0 -0
  54. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.github/workflows/periodic.yml +0 -0
  55. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.gitignore +0 -0
  56. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.pre-commit-config.yaml +0 -0
  57. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.vscode/extensions.json +0 -0
  58. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.vscode/launch.json +0 -0
  59. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.vscode/settings.json +0 -0
  60. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/.vscode/tasks.json +0 -0
  61. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/Dockerfile +0 -0
  62. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/LICENSE +0 -0
  63. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/README.md +0 -0
  64. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/catalog-info.yaml +0 -0
  65. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/conftest.py +0 -0
  66. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/_templates/autosummary/class.rst +0 -0
  67. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/_templates/autosummary/module.rst +0 -0
  68. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/_templates/custom-module-template.rst +0 -0
  69. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/assets/zocalo.png +0 -0
  70. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/conf.py +0 -0
  71. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  72. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  73. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  74. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  75. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions/COPYME +0 -0
  76. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/decisions.md +0 -0
  77. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations/reviews.md +0 -0
  78. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/explanations.md +0 -0
  79. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/genindex.md +0 -0
  80. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/build-docs.md +0 -0
  81. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/contribute.md +0 -0
  82. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/coverage.md +0 -0
  83. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/create-beamline.rst +0 -0
  84. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/dev-install.md +0 -0
  85. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/excalidraw.md +0 -0
  86. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/lint.md +0 -0
  87. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/lock-requirements.md +0 -0
  88. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  89. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/make-release.md +0 -0
  90. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/move-code.rst +0 -0
  91. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/pypi.md +0 -0
  92. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/run-tests.md +0 -0
  93. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/static-analysis.md +0 -0
  94. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/update-template.md +0 -0
  95. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/write-tests.md +0 -0
  96. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to/zocalo.rst +0 -0
  97. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/how-to.md +0 -0
  98. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/images/dls-logo.svg +0 -0
  99. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/images/excalidraw-example.svg +0 -0
  100. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/index.md +0 -0
  101. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/reference/api.md +0 -0
  102. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/reference/device-standards.rst +0 -0
  103. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/reference/standards.rst +0 -0
  104. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/reference.md +0 -0
  105. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/tutorials/get_started.rst +0 -0
  106. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/tutorials/installation.md +0 -0
  107. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/docs/tutorials.md +0 -0
  108. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/pull_request_template.md +0 -0
  109. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/setup.cfg +0 -0
  110. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/__init__.py +0 -0
  111. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  112. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  113. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  114. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/__init__.py +0 -0
  115. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/__main__.py +0 -0
  116. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  117. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  118. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/README.md +0 -0
  119. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/__init__.py +0 -0
  120. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/adsim.py +0 -0
  121. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/aithre.py +0 -0
  122. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/b01_1.py +0 -0
  123. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/b07.py +0 -0
  124. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/b07_1.py +0 -0
  125. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i02_1.py +0 -0
  126. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i09.py +0 -0
  127. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i09_1.py +0 -0
  128. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i10.py +0 -0
  129. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i13_1.py +0 -0
  130. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i19_1.py +0 -0
  131. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i19_2.py +0 -0
  132. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i19_optics.py +0 -0
  133. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i20_1.py +0 -0
  134. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/i24.py +0 -0
  135. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/p45.py +0 -0
  136. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/p60.py +0 -0
  137. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/p99.py +0 -0
  138. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/beamlines/training_rig.py +0 -0
  139. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/cli.py +0 -0
  140. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/__init__.py +0 -0
  141. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/beamlines/__init__.py +0 -0
  142. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  143. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  144. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/coordination.py +0 -0
  145. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/crystal_metadata.py +0 -0
  146. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/data_util.py +0 -0
  147. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/maths.py +0 -0
  148. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/signal_utils.py +0 -0
  149. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/types.py +0 -0
  150. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/udc_directory_provider.py +0 -0
  151. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/common/visit.py +0 -0
  152. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/CTAB.py +0 -0
  153. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/__init__.py +0 -0
  154. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/adsim.py +0 -0
  155. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  156. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/aperture.py +0 -0
  157. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  158. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/apple2_undulator.py +0 -0
  159. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  160. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  161. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  162. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/attenuator/filter.py +0 -0
  163. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  164. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/backlight.py +0 -0
  165. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/baton.py +0 -0
  166. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  167. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/cryostream.py +0 -0
  168. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  169. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  170. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  171. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  172. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  173. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  174. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/__init__.py +0 -0
  175. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  176. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  177. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  178. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/detector.py +0 -0
  179. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  180. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/diamond_filter.py +0 -0
  181. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/eiger.py +0 -0
  182. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/eiger_odin.py +0 -0
  183. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  184. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/abstract_analyser_io.py +0 -0
  185. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/abstract_region.py +0 -0
  186. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/specs_analyser_io.py +0 -0
  187. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/specs_region.py +0 -0
  188. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/vgscienta_analyser_io.py +0 -0
  189. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/electron_analyser/vgscienta_region.py +0 -0
  190. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/fast_grid_scan.py +0 -0
  191. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  192. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/flux.py +0 -0
  193. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/focusing_mirror.py +0 -0
  194. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/hutch_shutter.py +0 -0
  195. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i03/__init__.py +0 -0
  196. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i03/beamstop.py +0 -0
  197. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i04/transfocator.py +0 -0
  198. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  199. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  200. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  201. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/mirrors.py +0 -0
  202. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  203. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  204. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  205. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i10/slits.py +0 -0
  206. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i13_1/__init__.py +0 -0
  207. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  208. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i18/diode.py +0 -0
  209. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i18/table.py +0 -0
  210. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
  211. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i19/__init__.py +0 -0
  212. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i19/beamstop.py +0 -0
  213. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  214. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  215. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i19/shutter.py +0 -0
  216. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  217. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i22/fswitch.py +0 -0
  218. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i22/nxsas.py +0 -0
  219. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/__init__.py +0 -0
  220. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/aperture.py +0 -0
  221. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/beam_center.py +0 -0
  222. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/beamstop.py +0 -0
  223. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  224. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  225. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  226. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  227. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/pmac.py +0 -0
  228. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/i24/vgonio.py +0 -0
  229. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/ipin.py +0 -0
  230. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/linkam3.py +0 -0
  231. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  232. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/motors.py +0 -0
  233. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/__init__.py +0 -0
  234. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  235. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  236. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  237. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  238. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  239. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  240. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  241. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  242. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  243. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  244. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  245. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/oav/utils.py +0 -0
  246. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/p45.py +0 -0
  247. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/p99/__init__.py +0 -0
  248. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  249. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/pgm.py +0 -0
  250. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  251. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/qbpm.py +0 -0
  252. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/robot.py +0 -0
  253. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  254. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/scatterguard.py +0 -0
  255. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/scintillator.py +0 -0
  256. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/slits.py +0 -0
  257. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/smargon.py +0 -0
  258. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/status.py +0 -0
  259. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/synchrotron.py +0 -0
  260. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/thawer.py +0 -0
  261. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/training_rig/__init__.py +0 -0
  262. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  263. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/undulator.py +0 -0
  264. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/util/__init__.py +0 -0
  265. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  266. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/util/epics_util.py +0 -0
  267. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  268. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/util/test_utils.py +0 -0
  269. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  270. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/webcam.py +0 -0
  271. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  272. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  273. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  274. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zebra/__init__.py +0 -0
  275. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  276. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  277. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  278. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  279. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  280. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  281. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/log.py +0 -0
  282. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  283. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/__init__.py +0 -0
  284. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  285. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/electron_analyser/__init__.py +0 -0
  286. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/electron_analyser/configure_controller.py +0 -0
  287. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  288. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  289. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/__init__.py +0 -0
  290. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/preprocessors/__init__.py +0 -0
  291. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  292. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/save_panda.py +0 -0
  293. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/scanspec.py +0 -0
  294. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/plans/wrapped.py +0 -0
  295. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/src/dodal/utils.py +0 -0
  296. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/__init__.py +0 -0
  297. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_adsim.py +0 -0
  298. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  299. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_cli.py +0 -0
  300. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_eiger_system.py +0 -0
  301. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_gridscan_system.py +0 -0
  302. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_oav_system.py +0 -0
  303. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_oav_to_redis_system.py +0 -0
  304. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_slit_gaps_system.py +0 -0
  305. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_smargon_system.py +0 -0
  306. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_synchrotron_system.py +0 -0
  307. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_undulator_system.py +0 -0
  308. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_zebra_system.py +0 -0
  309. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/system_tests/test_zocalo_results.py +0 -0
  310. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/__init__.py +0 -0
  311. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/beamlines/__init__.py +0 -0
  312. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/beamlines/unit_tests/__init__.py +0 -0
  313. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  314. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  315. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  316. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/__init__.py +0 -0
  317. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/beamlines/__init__.py +0 -0
  318. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  319. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  320. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  321. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  322. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_coordination.py +0 -0
  323. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_crystal_metadata.py +0 -0
  324. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_maths.py +0 -0
  325. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_signal_utils.py +0 -0
  326. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_udc_directory_provider.py +0 -0
  327. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/common/test_visit.py +0 -0
  328. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/conftest.py +0 -0
  329. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/constants.py +0 -0
  330. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/__init__.py +0 -0
  331. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i03/__init__.py +0 -0
  332. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i03/test_beamstop.py +0 -0
  333. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i04/__init__.py +0 -0
  334. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i04/test_transfocator.py +0 -0
  335. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  336. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  337. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  338. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  339. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  340. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  341. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/test_diagnostic.py +0 -0
  342. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  343. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  344. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i18/test_table.py +0 -0
  345. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
  346. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i19/__init__.py +0 -0
  347. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i19/test_beamstop.py +0 -0
  348. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i19/test_shutter.py +0 -0
  349. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i22/test_fswitch.py +0 -0
  350. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/i22/test_metadataholder.py +0 -0
  351. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/test_diamond_filter.py +0 -0
  352. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  353. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/__init__.py +0 -0
  354. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/conftest.py +0 -0
  355. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  356. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  357. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  358. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  359. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  360. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/__init__.py +0 -0
  361. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/conftest.py +0 -0
  362. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_base_analayser_io.py +0 -0
  363. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_specs_analyser_io.py +0 -0
  364. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_specs_region.py +0 -0
  365. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_util.py +0 -0
  366. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_vgscienta_analyser_io.py +0 -0
  367. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py +0 -0
  368. {dls_dodal-1.45.0/tests/devices/unit_tests/i24 → dls_dodal-1.46.0/tests/devices/unit_tests/i03}/__init__.py +0 -0
  369. {dls_dodal-1.45.0/tests/devices/unit_tests/oav → dls_dodal-1.46.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  370. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  371. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  372. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  373. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  374. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  375. {dls_dodal-1.45.0/tests/devices/unit_tests/util → dls_dodal-1.46.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  376. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  377. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  378. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  379. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  380. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  381. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  382. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  383. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  384. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +0 -0
  385. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  386. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  387. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  388. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  389. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
  390. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  391. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  392. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  393. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  394. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_baton.py +0 -0
  395. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  396. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  397. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  398. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  399. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  400. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  401. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  402. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_eiger.py +0 -0
  403. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  404. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
  405. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  406. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  407. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  408. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  409. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  410. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_motors.py +0 -0
  411. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_odin.py +0 -0
  412. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  413. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  414. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_slits.py +0 -0
  415. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  416. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_status.py +0 -0
  417. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  418. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  419. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_turbo_slit.py +0 -0
  420. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_undulator.py +0 -0
  421. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_utils.py +0 -0
  422. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  423. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  424. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  425. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  426. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  427. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  428. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
  429. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  430. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  431. {dls_dodal-1.45.0/tests/fake_zocalo → dls_dodal-1.46.0/tests/devices/unit_tests/util}/__init__.py +0 -0
  432. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  433. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  434. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  435. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  436. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline.py +0 -0
  437. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  438. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_broken_dependency.py +0 -0
  439. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_dependencies.py +0 -0
  440. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  441. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  442. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_beamline_some_devices_working.py +0 -0
  443. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_device_factory_beamline.py +0 -0
  444. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_zocalo/README.rst +0 -0
  445. {dls_dodal-1.45.0/tests/unit_tests → dls_dodal-1.46.0/tests/fake_zocalo}/__init__.py +0 -0
  446. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_zocalo/__main__.py +0 -0
  447. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  448. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  449. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  450. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  451. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/test_compliance.py +0 -0
  452. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  453. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/test_scanspec.py +0 -0
  454. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  455. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/plans/test_wrapped.py +0 -0
  456. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  457. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/bad_beamlineParameters +0 -0
  458. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/electron_analyser/specs_sequence.seq +0 -0
  459. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/electron_analyser/vgscienta_sequence.seq +0 -0
  460. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/i04_beamlineParameters +0 -0
  461. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  462. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  463. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  464. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  465. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  466. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  467. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  468. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/topup_long_delay.txt +0 -0
  469. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_data/topup_short_params.txt +0 -0
  470. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/test_utils.py +0 -0
  471. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/unit_tests/test_cli.py +0 -0
  472. {dls_dodal-1.45.0 → dls_dodal-1.46.0}/tests/unit_tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.45.0
3
+ Version: 1.46.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async>=0.10.0a1
219
+ Requires-Dist: ophyd-async>=0.10.0a3
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
15
15
  dependencies = [
16
16
  "click",
17
17
  "ophyd",
18
- "ophyd-async>=0.10.0a1",
18
+ "ophyd-async>=0.10.0a3",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.45.0
3
+ Version: 1.46.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async>=0.10.0a1
219
+ Requires-Dist: ophyd-async>=0.10.0a3
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -136,8 +136,8 @@ src/dodal/devices/apple2_undulator.py
136
136
  src/dodal/devices/backlight.py
137
137
  src/dodal/devices/baton.py
138
138
  src/dodal/devices/bimorph_mirror.py
139
+ src/dodal/devices/common_dcm.py
139
140
  src/dodal/devices/cryostream.py
140
- src/dodal/devices/dcm.py
141
141
  src/dodal/devices/diamond_filter.py
142
142
  src/dodal/devices/eiger.py
143
143
  src/dodal/devices/eiger_odin.py
@@ -166,7 +166,6 @@ src/dodal/devices/tetramm.py
166
166
  src/dodal/devices/thawer.py
167
167
  src/dodal/devices/turbo_slit.py
168
168
  src/dodal/devices/undulator.py
169
- src/dodal/devices/undulator_dcm.py
170
169
  src/dodal/devices/watsonmarlow323_pump.py
171
170
  src/dodal/devices/webcam.py
172
171
  src/dodal/devices/xbpm_feedback.py
@@ -197,6 +196,8 @@ src/dodal/devices/electron_analyser/vgscienta_analyser_io.py
197
196
  src/dodal/devices/electron_analyser/vgscienta_region.py
198
197
  src/dodal/devices/i03/__init__.py
199
198
  src/dodal/devices/i03/beamstop.py
199
+ src/dodal/devices/i03/dcm.py
200
+ src/dodal/devices/i03/undulator_dcm.py
200
201
  src/dodal/devices/i04/transfocator.py
201
202
  src/dodal/devices/i10/diagnostics.py
202
203
  src/dodal/devices/i10/i10_apple2.py
@@ -324,6 +325,7 @@ tests/common/beamlines/test_beamline_utils.py
324
325
  tests/common/beamlines/test_device_helpers.py
325
326
  tests/common/beamlines/test_device_instantiation.py
326
327
  tests/devices/__init__.py
328
+ tests/devices/test_common_dcm.py
327
329
  tests/devices/test_diamond_filter.py
328
330
  tests/devices/i03/__init__.py
329
331
  tests/devices/i03/test_beamstop.py
@@ -361,7 +363,6 @@ tests/devices/unit_tests/test_baton.py
361
363
  tests/devices/unit_tests/test_beam_converter.py
362
364
  tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
363
365
  tests/devices/unit_tests/test_bimorph_mirror.py
364
- tests/devices/unit_tests/test_dcm.py
365
366
  tests/devices/unit_tests/test_display.configuration
366
367
  tests/devices/unit_tests/test_eiger.py
367
368
  tests/devices/unit_tests/test_focusing_mirror.py
@@ -383,7 +384,6 @@ tests/devices/unit_tests/test_tetramm.py
383
384
  tests/devices/unit_tests/test_thawer.py
384
385
  tests/devices/unit_tests/test_turbo_slit.py
385
386
  tests/devices/unit_tests/test_undulator.py
386
- tests/devices/unit_tests/test_undulator_dcm.py
387
387
  tests/devices/unit_tests/test_utils.py
388
388
  tests/devices/unit_tests/test_watsonmarlow323_pump.py
389
389
  tests/devices/unit_tests/test_webcam.py
@@ -407,6 +407,9 @@ tests/devices/unit_tests/electron_analyser/test_specs_region.py
407
407
  tests/devices/unit_tests/electron_analyser/test_util.py
408
408
  tests/devices/unit_tests/electron_analyser/test_vgscienta_analyser_io.py
409
409
  tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py
410
+ tests/devices/unit_tests/i03/__init__.py
411
+ tests/devices/unit_tests/i03/test_dcm.py
412
+ tests/devices/unit_tests/i03/test_undulator_dcm.py
410
413
  tests/devices/unit_tests/i24/__init__.py
411
414
  tests/devices/unit_tests/i24/test_dual_backlight.py
412
415
  tests/devices/unit_tests/i24/test_focus_mirrors.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async>=0.10.0a1
3
+ ophyd-async>=0.10.0a3
4
4
  bluesky
5
5
  pyepics
6
6
  dataclasses-json
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.45.0'
21
- __version_tuple__ = version_tuple = (1, 45, 0)
20
+ __version__ = version = '1.46.0'
21
+ __version_tuple__ = version_tuple = (1, 46, 0)
@@ -18,7 +18,6 @@ from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
18
18
  from dodal.devices.backlight import Backlight
19
19
  from dodal.devices.baton import Baton
20
20
  from dodal.devices.cryostream import CryoStream
21
- from dodal.devices.dcm import DCM
22
21
  from dodal.devices.detector.detector_motion import DetectorMotion
23
22
  from dodal.devices.diamond_filter import DiamondFilter, I03Filters
24
23
  from dodal.devices.eiger import EigerDetector
@@ -26,6 +25,8 @@ from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
26
25
  from dodal.devices.flux import Flux
27
26
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
28
27
  from dodal.devices.i03.beamstop import Beamstop
28
+ from dodal.devices.i03.dcm import DCM
29
+ from dodal.devices.i03.undulator_dcm import UndulatorDCM
29
30
  from dodal.devices.motors import XYZPositioner
30
31
  from dodal.devices.oav.oav_detector import OAV
31
32
  from dodal.devices.oav.oav_parameters import OAVConfig
@@ -37,7 +38,6 @@ from dodal.devices.smargon import Smargon
37
38
  from dodal.devices.synchrotron import Synchrotron
38
39
  from dodal.devices.thawer import Thawer
39
40
  from dodal.devices.undulator import Undulator
40
- from dodal.devices.undulator_dcm import UndulatorDCM
41
41
  from dodal.devices.webcam import Webcam
42
42
  from dodal.devices.xbpm_feedback import XBPMFeedback
43
43
  from dodal.devices.xspress3.xspress3 import Xspress3
@@ -113,8 +113,8 @@ def dcm() -> DCM:
113
113
  If this is called when already instantiated in i03, it will return the existing object.
114
114
  """
115
115
  return DCM(
116
- f"{PREFIX.beamline_prefix}-MO-DCM-01:",
117
- "dcm",
116
+ prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
117
+ name="dcm",
118
118
  )
119
119
 
120
120
 
@@ -10,13 +10,13 @@ from dodal.devices.aperturescatterguard import (
10
10
  )
11
11
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
12
12
  from dodal.devices.backlight import Backlight
13
- from dodal.devices.dcm import DCM
14
13
  from dodal.devices.detector import DetectorParams
15
14
  from dodal.devices.detector.detector_motion import DetectorMotion
16
15
  from dodal.devices.diamond_filter import DiamondFilter, I04Filters
17
16
  from dodal.devices.eiger import EigerDetector
18
17
  from dodal.devices.fast_grid_scan import ZebraFastGridScan
19
18
  from dodal.devices.flux import Flux
19
+ from dodal.devices.i03.dcm import DCM
20
20
  from dodal.devices.i04.transfocator import Transfocator
21
21
  from dodal.devices.ipin import IPin
22
22
  from dodal.devices.motors import XYZPositioner
@@ -12,7 +12,7 @@ from dodal.common.visit import (
12
12
  LocalDirectoryServiceClient,
13
13
  StaticVisitPathProvider,
14
14
  )
15
- from dodal.devices.dcm import DCM
15
+ from dodal.devices.common_dcm import BaseDCM, PitchAndRollCrystal, RollCrystal
16
16
  from dodal.devices.i18.diode import Diode
17
17
  from dodal.devices.i18.KBMirror import KBMirror
18
18
  from dodal.devices.i18.table import Table
@@ -54,12 +54,15 @@ def undulator() -> Undulator:
54
54
  return Undulator(f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
55
55
 
56
56
 
57
- @device_factory()
58
- def dcm() -> DCM:
57
+ # See https://github.com/DiamondLightSource/dodal/issues/1180
58
+ @device_factory(skip=True)
59
+ def dcm() -> BaseDCM[RollCrystal, PitchAndRollCrystal]:
59
60
  # once spacing is added Si111 d-spacing is 3.135 angsterm , and Si311 is 1.637
60
61
  # calculations are in gda/config/lookupTables/Si111/eV_Deg_converter.xml
61
- return DCM(
62
+ return BaseDCM(
62
63
  prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
64
+ xtal_1=RollCrystal,
65
+ xtal_2=PitchAndRollCrystal,
63
66
  )
64
67
 
65
68
 
@@ -18,7 +18,7 @@ from dodal.common.crystal_metadata import (
18
18
  from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
19
19
  from dodal.devices.bimorph_mirror import BimorphMirror
20
20
  from dodal.devices.focusing_mirror import FocusingMirror
21
- from dodal.devices.i22.dcm import DoubleCrystalMonochromator
21
+ from dodal.devices.i22.dcm import DCM
22
22
  from dodal.devices.i22.fswitch import FSwitch
23
23
  from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV, NXSasPilatus
24
24
  from dodal.devices.linkam3 import Linkam3
@@ -141,8 +141,8 @@ def bimorph_vfm() -> BimorphMirror:
141
141
 
142
142
 
143
143
  @device_factory()
144
- def dcm() -> DoubleCrystalMonochromator:
145
- return DoubleCrystalMonochromator(
144
+ def dcm() -> DCM:
145
+ return DCM(
146
146
  prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
147
147
  temperature_prefix=f"{PREFIX.beamline_prefix}-DI-DCM-01:",
148
148
  crystal_1_metadata=make_crystal_metadata_from_material(
@@ -0,0 +1,95 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adpilatus import PilatusDetector
4
+
5
+ from dodal.common.beamlines.beamline_utils import (
6
+ device_factory,
7
+ get_path_provider,
8
+ set_path_provider,
9
+ )
10
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
11
+ from dodal.common.beamlines.device_helpers import HDF5_SUFFIX
12
+ from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
13
+ from dodal.devices.motors import SixAxisGonio
14
+ from dodal.devices.oav.pin_image_recognition import PinTipDetection
15
+ from dodal.devices.zebra.zebra import Zebra
16
+ from dodal.devices.zebra.zebra_constants_mapping import (
17
+ ZebraMapping,
18
+ ZebraSources,
19
+ ZebraTTLOutputs,
20
+ )
21
+ from dodal.devices.zebra.zebra_controlled_shutter import ZebraShutter
22
+ from dodal.log import set_beamline as set_log_beamline
23
+ from dodal.utils import BeamlinePrefix, get_beamline_name, get_hostname
24
+
25
+ BL = get_beamline_name("i23")
26
+ set_log_beamline(BL)
27
+ set_utils_beamline(BL)
28
+
29
+ set_path_provider(
30
+ StaticVisitPathProvider(
31
+ BL,
32
+ Path("/tmp"),
33
+ client=LocalDirectoryServiceClient(),
34
+ )
35
+ )
36
+
37
+ PREFIX = BeamlinePrefix(BL)
38
+
39
+ I23_ZEBRA_MAPPING = ZebraMapping(
40
+ outputs=ZebraTTLOutputs(TTL_DETECTOR=1, TTL_SHUTTER=4),
41
+ sources=ZebraSources(),
42
+ AND_GATE_FOR_AUTO_SHUTTER=2,
43
+ )
44
+
45
+
46
+ def _is_i23_machine():
47
+ """
48
+ Devices using PVA can only connect from i23 machines, due to the absence of
49
+ PVA gateways at present.
50
+ """
51
+ hostname = get_hostname()
52
+ return hostname.startswith("i23-ws") or hostname.startswith("i23-control")
53
+
54
+
55
+ @device_factory(skip=lambda: not _is_i23_machine())
56
+ def oav_pin_tip_detection() -> PinTipDetection:
57
+ """Get the i23 OAV pin-tip detection device."""
58
+
59
+ return PinTipDetection(
60
+ f"{PREFIX.beamline_prefix}-DI-OAV-01:",
61
+ "pin_tip_detection",
62
+ )
63
+
64
+
65
+ @device_factory()
66
+ def shutter() -> ZebraShutter:
67
+ """Get the i23 zebra controlled shutter."""
68
+ return ZebraShutter(f"{PREFIX.beamline_prefix}-EA-SHTR-01:", "shutter")
69
+
70
+
71
+ @device_factory()
72
+ def gonio() -> SixAxisGonio:
73
+ """Get the i23 goniometer"""
74
+ return SixAxisGonio(f"{PREFIX.beamline_prefix}-MO-GONIO-01:")
75
+
76
+
77
+ @device_factory()
78
+ def zebra() -> Zebra:
79
+ """Get the i23 zebra"""
80
+ return Zebra(
81
+ name="zebra",
82
+ prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-01:ZEBRA:",
83
+ mapping=I23_ZEBRA_MAPPING,
84
+ )
85
+
86
+
87
+ @device_factory()
88
+ def pilatus() -> PilatusDetector:
89
+ """Get the i23 pilatus"""
90
+ return PilatusDetector(
91
+ prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-01:",
92
+ path_provider=get_path_provider(),
93
+ drv_suffix="cam1:",
94
+ fileio_suffix=HDF5_SUFFIX,
95
+ )
@@ -16,7 +16,7 @@ from dodal.common.crystal_metadata import (
16
16
  )
17
17
  from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
18
18
  from dodal.devices.focusing_mirror import FocusingMirror
19
- from dodal.devices.i22.dcm import DoubleCrystalMonochromator
19
+ from dodal.devices.i22.dcm import DCM
20
20
  from dodal.devices.i22.fswitch import FSwitch
21
21
  from dodal.devices.linkam3 import Linkam3
22
22
  from dodal.devices.pressure_jump_cell import PressureJumpCell
@@ -143,8 +143,8 @@ def hfm() -> FocusingMirror:
143
143
 
144
144
 
145
145
  @device_factory(mock=True)
146
- def dcm() -> DoubleCrystalMonochromator:
147
- return DoubleCrystalMonochromator(
146
+ def dcm() -> DCM:
147
+ return DCM(
148
148
  temperature_prefix=f"{PREFIX.beamline_prefix}-DI-DCM-01:",
149
149
  crystal_1_metadata=make_crystal_metadata_from_material(
150
150
  MaterialsEnum.Si, (1, 1, 1)
@@ -162,3 +162,8 @@ def set_path_provider(provider: PathProvider):
162
162
 
163
163
  def get_path_provider() -> PathProvider:
164
164
  return PATH_PROVIDER
165
+
166
+
167
+ def clear_path_provider() -> None:
168
+ global PATH_PROVIDER
169
+ del PATH_PROVIDER
@@ -0,0 +1,77 @@
1
+ from typing import Generic, TypeVar
2
+
3
+ from ophyd_async.core import (
4
+ StandardReadable,
5
+ )
6
+ from ophyd_async.epics.core import epics_signal_r
7
+ from ophyd_async.epics.motor import Motor
8
+
9
+
10
+ class StationaryCrystal(StandardReadable):
11
+ def __init__(self, prefix):
12
+ super().__init__(prefix)
13
+
14
+
15
+ class RollCrystal(StationaryCrystal):
16
+ def __init__(self, prefix):
17
+ with self.add_children_as_readables():
18
+ self.roll_in_mrad = Motor(prefix + "ROLL")
19
+ super().__init__(prefix)
20
+
21
+
22
+ class PitchAndRollCrystal(StationaryCrystal):
23
+ def __init__(self, prefix):
24
+ with self.add_children_as_readables():
25
+ self.pitch_in_mrad = Motor(prefix + "PITCH")
26
+ self.roll_in_mrad = Motor(prefix + "ROLL")
27
+ super().__init__(prefix)
28
+
29
+
30
+ Xtal_1 = TypeVar("Xtal_1", bound=StationaryCrystal)
31
+ Xtal_2 = TypeVar("Xtal_2", bound=StationaryCrystal)
32
+
33
+
34
+ class BaseDCM(StandardReadable, Generic[Xtal_1, Xtal_2]):
35
+ """
36
+ Common device for the double crystal monochromator (DCM), used to select the energy of the beam.
37
+
38
+ Features common across all DCM's should include virtual motors to set energy/wavelength and contain two crystals,
39
+ each of which can be movable. Some DCM's contain crystals with roll motors, and some contain crystals with roll and pitch motors.
40
+ This base device accounts for all combinations of this.
41
+
42
+ This device should act as a parent for beamline-specific DCM's, in which any other missing signals can be added.
43
+
44
+ Bluesky plans using DCM's should be typed to specify which types of crystals are required. For example, a plan
45
+ which only requires one crystal which can roll should be typed 'def my_plan(dcm: BaseDCM[RollCrystal, StationaryCrystal])`
46
+ """
47
+
48
+ def __init__(
49
+ self, prefix: str, xtal_1: type[Xtal_1], xtal_2: type[Xtal_2], name: str = ""
50
+ ) -> None:
51
+ with self.add_children_as_readables():
52
+ # Virtual motor PV's which set the physical motors so that the DCM produces requested
53
+ # wavelength/energy
54
+ self.energy_in_kev = Motor(prefix + "ENERGY")
55
+ self.wavelength_in_a = Motor(prefix + "WAVELENGTH")
56
+
57
+ # Real motors
58
+ self.bragg_in_degrees = Motor(prefix + "BRAGG")
59
+ # Offset ensures that the beam exits the DCM at the same point, regardless of energy.
60
+ self.offset_in_mm = Motor(prefix + "OFFSET")
61
+
62
+ self.crystal_metadata_d_spacing_a = epics_signal_r(
63
+ float, prefix + "DSPACING:RBV"
64
+ )
65
+
66
+ self._make_crystals(prefix, xtal_1, xtal_2)
67
+
68
+ super().__init__(name)
69
+
70
+ # Prefix convention is different depending on whether there are one or two controllable crystals
71
+ def _make_crystals(self, prefix: str, xtal_1: type[Xtal_1], xtal_2: type[Xtal_2]):
72
+ if StationaryCrystal not in [xtal_1, xtal_2]:
73
+ self.xtal_1 = xtal_1(f"{prefix}XTAL1:")
74
+ self.xtal_2 = xtal_2(f"{prefix}XTAL2:")
75
+ else:
76
+ self.xtal_1 = xtal_1(prefix)
77
+ self.xtal_2 = xtal_2(prefix)
@@ -1,5 +1,5 @@
1
1
  import numpy as np
2
- from ophyd_async.core import Array1D, StandardReadable, soft_signal_r_and_setter
2
+ from ophyd_async.core import Array1D, soft_signal_r_and_setter
3
3
  from ophyd_async.epics.core import epics_signal_r
4
4
  from ophyd_async.epics.motor import Motor
5
5
 
@@ -8,9 +8,14 @@ from dodal.common.crystal_metadata import (
8
8
  MaterialsEnum,
9
9
  make_crystal_metadata_from_material,
10
10
  )
11
+ from dodal.devices.common_dcm import (
12
+ BaseDCM,
13
+ PitchAndRollCrystal,
14
+ StationaryCrystal,
15
+ )
11
16
 
12
17
 
13
- class DCM(StandardReadable):
18
+ class DCM(BaseDCM[PitchAndRollCrystal, StationaryCrystal]):
14
19
  """
15
20
  A double crystal monochromator (DCM), used to select the energy of the beam.
16
21
 
@@ -30,13 +35,7 @@ class DCM(StandardReadable):
30
35
  MaterialsEnum.Si, (1, 1, 1)
31
36
  )
32
37
  with self.add_children_as_readables():
33
- self.bragg_in_degrees = Motor(prefix + "BRAGG")
34
- self.roll_in_mrad = Motor(prefix + "ROLL")
35
- self.offset_in_mm = Motor(prefix + "OFFSET")
36
38
  self.perp_in_mm = Motor(prefix + "PERP")
37
- self.energy_in_kev = Motor(prefix + "ENERGY")
38
- self.pitch_in_mrad = Motor(prefix + "PITCH")
39
- self.wavelength = Motor(prefix + "WAVELENGTH")
40
39
 
41
40
  # temperatures
42
41
  self.xtal1_temp = epics_signal_r(float, prefix + "TEMP1")
@@ -58,7 +57,4 @@ class DCM(StandardReadable):
58
57
  Array1D[np.uint64],
59
58
  initial_value=reflection_array,
60
59
  )
61
- self.crystal_metadata_d_spacing = epics_signal_r(
62
- float, prefix + "DSPACING:RBV"
63
- )
64
- super().__init__(name)
60
+ super().__init__(prefix, PitchAndRollCrystal, StationaryCrystal, name)
@@ -4,10 +4,9 @@ from bluesky.protocols import Movable
4
4
  from ophyd_async.core import AsyncStatus, Reference, StandardReadable
5
5
 
6
6
  from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
7
-
8
- from ..log import LOGGER
9
- from .dcm import DCM
10
- from .undulator import Undulator
7
+ from dodal.devices.i03.dcm import DCM
8
+ from dodal.devices.undulator import Undulator
9
+ from dodal.log import LOGGER
11
10
 
12
11
  ENERGY_TIMEOUT_S: float = 30.0
13
12
 
@@ -23,6 +22,9 @@ class UndulatorDCM(StandardReadable, Movable[float]):
23
22
  Calling unulator_dcm.set(energy) will move the DCM motor, perform a table lookup
24
23
  and move the Undulator gap motor if needed. So the set method can be thought of as
25
24
  a comprehensive way to set beam energy.
25
+
26
+ This class will be removed in the future. Use the separate Undulator and DCM devices
27
+ instead. See https://github.com/DiamondLightSource/dodal/issues/1092
26
28
  """
27
29
 
28
30
  def __init__(
@@ -23,10 +23,9 @@ class Merlin(StandardDetector):
23
23
  super().__init__(
24
24
  MerlinController(self.drv),
25
25
  adcore.ADHDFWriter(
26
- self.hdf,
27
- path_provider,
28
- lambda: self.name,
29
- adcore.ADBaseDatasetDescriber(self.drv),
26
+ fileio=self.hdf,
27
+ path_provider=path_provider,
28
+ dataset_describer=adcore.ADBaseDatasetDescriber(self.drv),
30
29
  ),
31
30
  config_sigs=(self.drv.acquire_period, self.drv.acquire_time),
32
31
  name=name,
@@ -37,7 +37,7 @@ class MerlinController(ADBaseController):
37
37
  DEFAULT_TIMEOUT + await self.driver.acquire_time.get_value()
38
38
  )
39
39
  await asyncio.gather(
40
- self.driver.num_images.set(trigger_info.total_number_of_triggers),
40
+ self.driver.num_images.set(trigger_info.total_number_of_exposures),
41
41
  self.driver.image_mode.set(ADImageMode.MULTIPLE),
42
42
  )
43
43
 
@@ -5,7 +5,6 @@ from bluesky.protocols import Reading
5
5
  from event_model.documents.event_descriptor import DataKey
6
6
  from ophyd_async.core import (
7
7
  Array1D,
8
- StandardReadable,
9
8
  StandardReadableFormat,
10
9
  soft_signal_r_and_setter,
11
10
  )
@@ -13,13 +12,18 @@ from ophyd_async.epics.core import epics_signal_r
13
12
  from ophyd_async.epics.motor import Motor
14
13
 
15
14
  from dodal.common.crystal_metadata import CrystalMetadata
15
+ from dodal.devices.common_dcm import (
16
+ BaseDCM,
17
+ PitchAndRollCrystal,
18
+ RollCrystal,
19
+ )
16
20
 
17
21
  # Conversion constant for energy and wavelength, taken from the X-Ray data booklet
18
22
  # Converts between energy in KeV and wavelength in angstrom
19
23
  _CONVERSION_CONSTANT = 12.3984
20
24
 
21
25
 
22
- class DoubleCrystalMonochromator(StandardReadable):
26
+ class DCM(BaseDCM[RollCrystal, PitchAndRollCrystal]):
23
27
  """
24
28
  A double crystal monochromator (DCM), used to select the energy of the beam.
25
29
 
@@ -39,13 +43,7 @@ class DoubleCrystalMonochromator(StandardReadable):
39
43
  ) -> None:
40
44
  with self.add_children_as_readables():
41
45
  # Positionable Parameters
42
- self.bragg = Motor(prefix + "BRAGG")
43
- self.offset = Motor(prefix + "OFFSET")
44
46
  self.perp = Motor(prefix + "PERP")
45
- self.energy = Motor(prefix + "ENERGY")
46
- self.crystal_1_roll = Motor(prefix + "XTAL1:ROLL")
47
- self.crystal_2_roll = Motor(prefix + "XTAL2:ROLL")
48
- self.crystal_2_pitch = Motor(prefix + "XTAL2:PITCH")
49
47
 
50
48
  # Temperatures
51
49
  self.backplate_temp = epics_signal_r(float, temperature_prefix + "PT100-7")
@@ -93,12 +91,12 @@ class DoubleCrystalMonochromator(StandardReadable):
93
91
  units=crystal_2_metadata.d_spacing[1],
94
92
  )
95
93
 
96
- super().__init__(name)
94
+ super().__init__(prefix, RollCrystal, PitchAndRollCrystal, name)
97
95
 
98
96
  async def describe(self) -> dict[str, DataKey]:
99
97
  default_describe = await super().describe()
100
98
  return {
101
- f"{self.name}-wavelength": DataKey(
99
+ f"{self.name}-wavelength_in_a": DataKey(
102
100
  dtype="number",
103
101
  shape=[],
104
102
  source=self.name,
@@ -109,7 +107,7 @@ class DoubleCrystalMonochromator(StandardReadable):
109
107
 
110
108
  async def read(self) -> dict[str, Reading]:
111
109
  default_reading = await super().read()
112
- energy: float = default_reading[f"{self.name}-energy"]["value"]
110
+ energy: float = default_reading[f"{self.name}-energy_in_kev"]["value"]
113
111
  if energy > 0.0:
114
112
  wavelength = _CONVERSION_CONSTANT / energy
115
113
  else:
@@ -117,7 +115,7 @@ class DoubleCrystalMonochromator(StandardReadable):
117
115
 
118
116
  return {
119
117
  **default_reading,
120
- f"{self.name}-wavelength": Reading(
118
+ f"{self.name}-wavelength_in_a": Reading(
121
119
  value=wavelength,
122
120
  timestamp=time.time(),
123
121
  ),
@@ -1,28 +1,19 @@
1
- from ophyd_async.core import StandardReadable
2
1
  from ophyd_async.epics.core import epics_signal_r
3
- from ophyd_async.epics.motor import Motor
4
2
 
3
+ from dodal.devices.common_dcm import (
4
+ BaseDCM,
5
+ PitchAndRollCrystal,
6
+ RollCrystal,
7
+ )
5
8
 
6
- class DCM(StandardReadable):
9
+
10
+ class DCM(BaseDCM[RollCrystal, PitchAndRollCrystal]):
7
11
  """
8
12
  A double crystal monocromator device, used to select the beam energy.
9
13
  """
10
14
 
11
15
  def __init__(self, prefix: str, name: str = "") -> None:
12
16
  with self.add_children_as_readables():
13
- # Motors
14
- self.bragg_in_degrees = Motor(prefix + "-MO-DCM-01:BRAGG")
15
- self.x_translation_in_mm = Motor(prefix + "-MO-DCM-01:X")
16
- self.offset_in_mm = Motor(prefix + "-MO-DCM-01:OFFSET")
17
- self.gap_in_mm = Motor(prefix + "-MO-DCM-01:GAP")
18
- self.energy_in_kev = Motor(prefix + "-MO-DCM-01:ENERGY")
19
- self.xtal1_roll = Motor(prefix + "-MO-DCM-01:XTAL1:ROLL")
20
- self.xtal2_roll = Motor(prefix + "-MO-DCM-01:XTAL2:ROLL")
21
- self.xtal2_pitch = Motor(prefix + "-MO-DCM-01:XTAL2:PITCH")
22
-
23
- # Wavelength is calculated in epics from the energy
24
- self.wavelength_in_a = epics_signal_r(float, prefix + "-MO-DCM-01:LAMBDA")
25
-
26
17
  # Temperatures
27
18
  self.xtal1_temp = epics_signal_r(float, prefix + "-DI-DCM-01:PT100-1")
28
19
  self.xtal1_heater_temp = epics_signal_r(
@@ -39,4 +30,4 @@ class DCM(StandardReadable):
39
30
  self.b1_plate_temp = epics_signal_r(float, prefix + "-DI-DCM-01:PT100-7")
40
31
  self.gap_temp = epics_signal_r(float, prefix + "-DI-DCM-01:TC-1")
41
32
 
42
- super().__init__(name)
33
+ super().__init__(prefix + "-MO-DCM-01:", RollCrystal, PitchAndRollCrystal, name)
@@ -244,10 +244,9 @@ class TetrammDetector(StandardDetector):
244
244
  super().__init__(
245
245
  controller,
246
246
  ADHDFWriter(
247
- self.hdf,
248
- path_provider,
249
- lambda: self.name,
250
- TetrammDatasetDescriber(controller),
247
+ fileio=self.hdf,
248
+ path_provider=path_provider,
249
+ dataset_describer=TetrammDatasetDescriber(controller),
251
250
  plugins=plugins,
252
251
  ),
253
252
  config_signals,
@@ -13,9 +13,9 @@ class TurboSlit(StandardReadable, Movable[float]):
13
13
  The xfine motor can move the slit in x direction at high frequencies for different scans.
14
14
  These slits can be scanned continously or in step mode.
15
15
  The relationship between the three motors is as follows:
16
- - arc - position of the middle of the gap (coarse/ macro) extension
16
+ - arc - position of the middle of the gap in degrees (coarse/ macro) extension
17
17
  - gap - width in mm, provides energy resolution
18
- - xfine selects the energy as part of the high frequency scan
18
+ - xfine - main scanning axis in mm, selects the energy as part of the high frequency scan
19
19
  """
20
20
 
21
21
  def __init__(self, prefix: str, name: str = ""):