dls-dodal 1.43.0__tar.gz → 1.44.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 (458) hide show
  1. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/PKG-INFO +4 -3
  2. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/reference/device-standards.rst +1 -1
  3. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/pyproject.toml +17 -13
  4. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/PKG-INFO +4 -3
  5. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/SOURCES.txt +21 -4
  6. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/requires.txt +1 -1
  7. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/_version.py +2 -2
  8. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/b01_1.py +8 -0
  9. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i03.py +11 -0
  10. dls_dodal-1.44.0/src/dodal/beamlines/i13_1.py +59 -0
  11. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i19_1.py +16 -5
  12. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i19_2.py +12 -3
  13. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i19_optics.py +4 -2
  14. dls_dodal-1.44.0/src/dodal/common/data_util.py +20 -0
  15. dls_dodal-1.44.0/src/dodal/common/signal_utils.py +88 -0
  16. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/aperturescatterguard.py +3 -3
  17. dls_dodal-1.44.0/src/dodal/devices/baton.py +17 -0
  18. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +1 -6
  19. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +2 -2
  20. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/femto.py +0 -5
  21. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -5
  22. dls_dodal-1.44.0/src/dodal/devices/electron_analyser/base_region.py +64 -0
  23. dls_dodal-1.44.0/src/dodal/devices/electron_analyser/specs/specs_region.py +24 -0
  24. dls_dodal-1.44.0/src/dodal/devices/electron_analyser/vgscienta/vgscienta_region.py +77 -0
  25. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/fast_grid_scan.py +2 -2
  26. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i03/beamstop.py +2 -2
  27. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i13_1/merlin.py +1 -2
  28. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i13_1/merlin_controller.py +12 -8
  29. dls_dodal-1.44.0/src/dodal/devices/i19/beamstop.py +30 -0
  30. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i19/hutch_access.py +2 -0
  31. dls_dodal-1.44.0/src/dodal/devices/i19/shutter.py +79 -0
  32. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i22/nxsas.py +1 -3
  33. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/focus_mirrors.py +3 -3
  34. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/pilatus_metadata.py +2 -2
  35. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/oav_detector.py +7 -9
  36. dls_dodal-1.44.0/src/dodal/devices/oav/snapshots/snapshot.py +21 -0
  37. dls_dodal-1.44.0/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +74 -0
  38. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plan_stubs/motor_utils.py +10 -12
  39. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/utils.py +0 -7
  40. dls_dodal-1.44.0/tests/common/test_signal_utils.py +84 -0
  41. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i13_1/test_merlin.py +1 -2
  42. dls_dodal-1.44.0/tests/devices/i19/test_beamstop.py +15 -0
  43. dls_dodal-1.44.0/tests/devices/i19/test_shutter.py +149 -0
  44. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i22/test_dcm.py +1 -0
  45. dls_dodal-1.44.0/tests/devices/unit_tests/electron_analyser/test_specs_region.py +63 -0
  46. dls_dodal-1.44.0/tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py +92 -0
  47. dls_dodal-1.44.0/tests/devices/unit_tests/electron_analyser/utils.py +16 -0
  48. dls_dodal-1.44.0/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +39 -0
  49. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_snapshots.py +5 -35
  50. dls_dodal-1.44.0/tests/devices/unit_tests/test_baton.py +27 -0
  51. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_tetramm.py +2 -2
  52. dls_dodal-1.44.0/tests/devices/unit_tests/util/__init__.py +0 -0
  53. dls_dodal-1.44.0/tests/fake_zocalo/__init__.py +0 -0
  54. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plan_stubs/test_wrapped_stubs.py +8 -8
  55. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/conftest.py +4 -3
  56. dls_dodal-1.44.0/tests/test_data/electron_analyser/specs_sequence.seq +40 -0
  57. dls_dodal-1.44.0/tests/test_data/electron_analyser/vgscienta_sequence.seq +61 -0
  58. dls_dodal-1.44.0/tests/unit_tests/__init__.py +0 -0
  59. dls_dodal-1.43.0/src/dodal/beamlines/i13_1.py +0 -85
  60. dls_dodal-1.43.0/src/dodal/common/signal_utils.py +0 -49
  61. dls_dodal-1.43.0/src/dodal/devices/i13_1/merlin_io.py +0 -17
  62. dls_dodal-1.43.0/src/dodal/devices/i19/shutter.py +0 -57
  63. dls_dodal-1.43.0/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -55
  64. dls_dodal-1.43.0/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -64
  65. dls_dodal-1.43.0/tests/devices/i19/test_shutter.py +0 -76
  66. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.copier-answers.yml +0 -0
  67. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.devcontainer/devcontainer.json +0 -0
  68. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/CODEOWNERS +0 -0
  69. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/CONTRIBUTING.md +0 -0
  70. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  71. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/actions/install_requirements/action.yml +0 -0
  72. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/dependabot.yml +0 -0
  73. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/pages/index.html +0 -0
  74. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/pages/make_switcher.py +0 -0
  75. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/scripts/check_test_durations.py +0 -0
  76. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_check.yml +0 -0
  77. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_dist.yml +0 -0
  78. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_docs.yml +0 -0
  79. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_pypi.yml +0 -0
  80. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_release.yml +0 -0
  81. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_test.yml +0 -0
  82. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/_tox.yml +0 -0
  83. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/ci.yml +0 -0
  84. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.github/workflows/periodic.yml +0 -0
  85. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.gitignore +0 -0
  86. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.pre-commit-config.yaml +0 -0
  87. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.vscode/extensions.json +0 -0
  88. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.vscode/launch.json +0 -0
  89. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.vscode/settings.json +0 -0
  90. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/.vscode/tasks.json +0 -0
  91. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/Dockerfile +0 -0
  92. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/LICENSE +0 -0
  93. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/README.md +0 -0
  94. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/catalog-info.yaml +0 -0
  95. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/conftest.py +0 -0
  96. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/_templates/autosummary/class.rst +0 -0
  97. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/_templates/autosummary/module.rst +0 -0
  98. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/_templates/custom-module-template.rst +0 -0
  99. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/assets/zocalo.png +0 -0
  100. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/conf.py +0 -0
  101. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  102. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  103. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  104. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  105. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions/COPYME +0 -0
  106. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/decisions.md +0 -0
  107. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations/reviews.md +0 -0
  108. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/explanations.md +0 -0
  109. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/genindex.md +0 -0
  110. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/build-docs.md +0 -0
  111. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/contribute.md +0 -0
  112. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/coverage.md +0 -0
  113. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/create-beamline.rst +0 -0
  114. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/dev-install.md +0 -0
  115. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/excalidraw.md +0 -0
  116. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/lint.md +0 -0
  117. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/lock-requirements.md +0 -0
  118. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  119. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/make-release.md +0 -0
  120. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/move-code.rst +0 -0
  121. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/pypi.md +0 -0
  122. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/run-tests.md +0 -0
  123. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/static-analysis.md +0 -0
  124. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/update-template.md +0 -0
  125. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/write-tests.md +0 -0
  126. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to/zocalo.rst +0 -0
  127. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/how-to.md +0 -0
  128. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/images/dls-logo.svg +0 -0
  129. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/images/excalidraw-example.svg +0 -0
  130. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/index.md +0 -0
  131. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/reference/api.md +0 -0
  132. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/reference/standards.rst +0 -0
  133. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/reference.md +0 -0
  134. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/tutorials/get_started.rst +0 -0
  135. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/tutorials/installation.md +0 -0
  136. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/docs/tutorials.md +0 -0
  137. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/pull_request_template.md +0 -0
  138. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/setup.cfg +0 -0
  139. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/__init__.py +0 -0
  140. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  141. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  142. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  143. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/__init__.py +0 -0
  144. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/__main__.py +0 -0
  145. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  146. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  147. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/README.md +0 -0
  148. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/__init__.py +0 -0
  149. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/adsim.py +0 -0
  150. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/aithre.py +0 -0
  151. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i02_1.py +0 -0
  152. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i04.py +0 -0
  153. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i10.py +0 -0
  154. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i18.py +0 -0
  155. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i20_1.py +0 -0
  156. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i22.py +0 -0
  157. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i23.py +0 -0
  158. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/i24.py +0 -0
  159. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/p38.py +0 -0
  160. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/p45.py +0 -0
  161. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/p99.py +0 -0
  162. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/beamlines/training_rig.py +0 -0
  163. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/cli.py +0 -0
  164. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/__init__.py +0 -0
  165. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/beamlines/__init__.py +0 -0
  166. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  167. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  168. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  169. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/coordination.py +0 -0
  170. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/crystal_metadata.py +0 -0
  171. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/maths.py +0 -0
  172. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/types.py +0 -0
  173. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/udc_directory_provider.py +0 -0
  174. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/common/visit.py +0 -0
  175. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/CTAB.py +0 -0
  176. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/__init__.py +0 -0
  177. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/adsim.py +0 -0
  178. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  179. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/aperture.py +0 -0
  180. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/apple2_undulator.py +0 -0
  181. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  182. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  183. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  184. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/attenuator/filter.py +0 -0
  185. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  186. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/backlight.py +0 -0
  187. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  188. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/cryostream.py +0 -0
  189. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  190. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  191. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/dcm.py +0 -0
  192. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/__init__.py +0 -0
  193. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  194. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  195. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  196. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/detector.py +0 -0
  197. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  198. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/diamond_filter.py +0 -0
  199. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/eiger.py +0 -0
  200. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/eiger_odin.py +0 -0
  201. {dls_dodal-1.43.0/src/dodal/devices/i03 → dls_dodal-1.44.0/src/dodal/devices/electron_analyser}/__init__.py +0 -0
  202. {dls_dodal-1.43.0/src/dodal/devices/i13_1 → dls_dodal-1.44.0/src/dodal/devices/electron_analyser/specs}/__init__.py +0 -0
  203. {dls_dodal-1.43.0/src/dodal/devices/i19 → dls_dodal-1.44.0/src/dodal/devices/electron_analyser/vgscienta}/__init__.py +0 -0
  204. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  205. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/flux.py +0 -0
  206. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/focusing_mirror.py +0 -0
  207. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/hutch_shutter.py +0 -0
  208. {dls_dodal-1.43.0/src/dodal/devices/i20_1 → dls_dodal-1.44.0/src/dodal/devices/i03}/__init__.py +0 -0
  209. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i04/transfocator.py +0 -0
  210. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  211. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  212. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/mirrors.py +0 -0
  213. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  214. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  215. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  216. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i10/slits.py +0 -0
  217. {dls_dodal-1.43.0/src/dodal/devices/i24 → dls_dodal-1.44.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  218. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  219. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i18/diode.py +0 -0
  220. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i18/table.py +0 -0
  221. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
  222. {dls_dodal-1.43.0/src/dodal/devices/oav → dls_dodal-1.44.0/src/dodal/devices/i19}/__init__.py +0 -0
  223. {dls_dodal-1.43.0/src/dodal/devices/p99 → dls_dodal-1.44.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  224. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i22/dcm.py +0 -0
  225. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i22/fswitch.py +0 -0
  226. {dls_dodal-1.43.0/src/dodal/devices/training_rig → dls_dodal-1.44.0/src/dodal/devices/i24}/__init__.py +0 -0
  227. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/aperture.py +0 -0
  228. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/beam_center.py +0 -0
  229. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/beamstop.py +0 -0
  230. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/dcm.py +0 -0
  231. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  232. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  233. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/pmac.py +0 -0
  234. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/i24/vgonio.py +0 -0
  235. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/ipin.py +0 -0
  236. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/linkam3.py +0 -0
  237. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  238. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/motors.py +0 -0
  239. {dls_dodal-1.43.0/src/dodal/devices/util → dls_dodal-1.44.0/src/dodal/devices/oav}/__init__.py +0 -0
  240. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  241. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  242. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  243. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  244. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  245. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  246. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  247. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  248. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/oav/utils.py +0 -0
  249. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/p45.py +0 -0
  250. {dls_dodal-1.43.0/src/dodal/devices/zebra → dls_dodal-1.44.0/src/dodal/devices/p99}/__init__.py +0 -0
  251. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  252. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/pgm.py +0 -0
  253. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  254. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/qbpm.py +0 -0
  255. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/robot.py +0 -0
  256. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  257. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/scatterguard.py +0 -0
  258. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/scintillator.py +0 -0
  259. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/slits.py +0 -0
  260. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/smargon.py +0 -0
  261. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/status.py +0 -0
  262. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/synchrotron.py +0 -0
  263. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/tetramm.py +0 -0
  264. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/thawer.py +0 -0
  265. {dls_dodal-1.43.0/src/dodal/plan_stubs → dls_dodal-1.44.0/src/dodal/devices/training_rig}/__init__.py +0 -0
  266. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  267. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/turbo_slit.py +0 -0
  268. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/undulator.py +0 -0
  269. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/undulator_dcm.py +0 -0
  270. {dls_dodal-1.43.0/src/dodal/plans/preprocessors → dls_dodal-1.44.0/src/dodal/devices/util}/__init__.py +0 -0
  271. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  272. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/util/epics_util.py +0 -0
  273. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  274. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/util/motor_utils.py +0 -0
  275. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/util/test_utils.py +0 -0
  276. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  277. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/webcam.py +0 -0
  278. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  279. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  280. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  281. {dls_dodal-1.43.0/system_tests → dls_dodal-1.44.0/src/dodal/devices/zebra}/__init__.py +0 -0
  282. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zebra/zebra.py +0 -0
  283. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  284. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  285. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  286. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  287. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  288. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  289. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/log.py +0 -0
  290. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  291. {dls_dodal-1.43.0/tests → dls_dodal-1.44.0/src/dodal/plan_stubs}/__init__.py +0 -0
  292. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  293. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plan_stubs/data_session.py +0 -0
  294. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  295. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/__init__.py +0 -0
  296. {dls_dodal-1.43.0/tests/beamlines → dls_dodal-1.44.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  297. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  298. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/save_panda.py +0 -0
  299. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/scanspec.py +0 -0
  300. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  301. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/src/dodal/plans/wrapped.py +0 -0
  302. {dls_dodal-1.43.0/tests/beamlines/unit_tests → dls_dodal-1.44.0/system_tests}/__init__.py +0 -0
  303. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_adsim.py +0 -0
  304. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  305. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_cli.py +0 -0
  306. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_eiger_system.py +0 -0
  307. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_gridscan_system.py +0 -0
  308. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_oav_system.py +0 -0
  309. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_oav_to_redis_system.py +0 -0
  310. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_slit_gaps_system.py +0 -0
  311. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_smargon_system.py +0 -0
  312. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_synchrotron_system.py +0 -0
  313. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_undulator_system.py +0 -0
  314. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_zebra_system.py +0 -0
  315. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/system_tests/test_zocalo_results.py +0 -0
  316. {dls_dodal-1.43.0/tests/common → dls_dodal-1.44.0/tests}/__init__.py +0 -0
  317. {dls_dodal-1.43.0/tests/common → dls_dodal-1.44.0/tests}/beamlines/__init__.py +0 -0
  318. {dls_dodal-1.43.0/tests/devices → dls_dodal-1.44.0/tests/beamlines/unit_tests}/__init__.py +0 -0
  319. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  320. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  321. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  322. {dls_dodal-1.43.0/tests/devices/i03 → dls_dodal-1.44.0/tests/common}/__init__.py +0 -0
  323. {dls_dodal-1.43.0/tests/devices/i04 → dls_dodal-1.44.0/tests/common/beamlines}/__init__.py +0 -0
  324. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  325. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  326. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  327. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  328. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/test_coordination.py +0 -0
  329. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/test_crystal_metadata.py +0 -0
  330. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/test_maths.py +0 -0
  331. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/test_udc_directory_provider.py +0 -0
  332. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/common/test_visit.py +0 -0
  333. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/conftest.py +0 -0
  334. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/constants.py +0 -0
  335. {dls_dodal-1.43.0/tests/devices/i19 → dls_dodal-1.44.0/tests/devices}/__init__.py +0 -0
  336. {dls_dodal-1.43.0/tests/devices/unit_tests → dls_dodal-1.44.0/tests/devices/i03}/__init__.py +0 -0
  337. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i03/test_beamstop.py +0 -0
  338. {dls_dodal-1.43.0/tests/devices/unit_tests/i24 → dls_dodal-1.44.0/tests/devices/i04}/__init__.py +0 -0
  339. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i04/test_transfocator.py +0 -0
  340. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  341. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  342. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  343. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  344. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  345. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  346. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  347. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  348. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i18/test_table.py +0 -0
  349. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
  350. {dls_dodal-1.43.0/tests/devices/unit_tests/oav → dls_dodal-1.44.0/tests/devices/i19}/__init__.py +0 -0
  351. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i22/test_fswitch.py +0 -0
  352. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/i22/test_metadataholder.py +0 -0
  353. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/test_diamond_filter.py +0 -0
  354. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  355. {dls_dodal-1.43.0/tests/devices/unit_tests/util → dls_dodal-1.44.0/tests/devices/unit_tests}/__init__.py +0 -0
  356. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/conftest.py +0 -0
  357. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  358. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  359. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  360. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  361. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  362. {dls_dodal-1.43.0/tests/fake_zocalo → dls_dodal-1.44.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  363. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  364. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  365. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  366. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  367. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  368. {dls_dodal-1.43.0/tests/unit_tests → dls_dodal-1.44.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  369. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  370. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  371. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  372. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  373. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  374. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  375. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  376. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  377. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  378. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  379. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  380. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
  381. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  382. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  383. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  384. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  385. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  386. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  387. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  388. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  389. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  390. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  391. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_dcm.py +0 -0
  392. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  393. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_eiger.py +0 -0
  394. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  395. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
  396. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  397. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  398. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  399. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  400. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  401. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_odin.py +0 -0
  402. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  403. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  404. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_slits.py +0 -0
  405. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  406. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_status.py +0 -0
  407. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  408. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  409. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_undulator.py +0 -0
  410. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_undulator_dcm.py +0 -0
  411. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_utils.py +0 -0
  412. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  413. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  414. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  415. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  416. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  417. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  418. /dls_dodal-1.43.0/tests/devices/unit_tests/test_shutter.py → /dls_dodal-1.44.0/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
  419. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  420. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  421. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  422. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  423. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  424. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  425. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline.py +0 -0
  426. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  427. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_broken_dependency.py +0 -0
  428. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_dependencies.py +0 -0
  429. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  430. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  431. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_beamline_some_devices_working.py +0 -0
  432. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_device_factory_beamline.py +0 -0
  433. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_zocalo/README.rst +0 -0
  434. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_zocalo/__main__.py +0 -0
  435. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  436. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plan_stubs/test_data_session.py +0 -0
  437. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  438. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  439. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/test_compliance.py +0 -0
  440. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  441. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/test_scanspec.py +0 -0
  442. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  443. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/plans/test_wrapped.py +0 -0
  444. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  445. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/bad_beamlineParameters +0 -0
  446. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/i04_beamlineParameters +0 -0
  447. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  448. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  449. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  450. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  451. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  452. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  453. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  454. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/topup_long_delay.txt +0 -0
  455. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_data/topup_short_params.txt +0 -0
  456. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/test_utils.py +0 -0
  457. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/unit_tests/test_cli.py +0 -0
  458. {dls_dodal-1.43.0 → dls_dodal-1.44.0}/tests/unit_tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.43.0
3
+ Version: 1.44.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.9.0a2
219
+ Requires-Dist: ophyd-async>=0.10.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -264,6 +264,7 @@ Requires-Dist: types-requests; extra == "dev"
264
264
  Requires-Dist: types-mock; extra == "dev"
265
265
  Requires-Dist: types-PyYAML; extra == "dev"
266
266
  Requires-Dist: types-aiofiles; extra == "dev"
267
+ Dynamic: license-file
267
268
 
268
269
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
269
270
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
@@ -150,7 +150,7 @@ based on this and so this has the issues listed above. Instead you should make s
150
150
  def __init__(self):
151
151
  self.underlying_motor = Motor("MOTOR")
152
152
  with self.add_children_as_readables():
153
- self.in_out = create_hardware_backed_soft_signal(InOut, self._get_in_out_from_hardware)
153
+ self.in_out = create_r_hardware_backed_soft_signal(InOut, self._get_in_out_from_hardware)
154
154
 
155
155
  async def _get_in_out_from_hardware(self):
156
156
  current_position = await self.underlying_motor.get_value()
@@ -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.9.0a2",
18
+ "ophyd-async>=0.10.0a1",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -170,23 +170,27 @@ lint.extend-ignore = [
170
170
  "F811", # support typing.overload decorator
171
171
  ]
172
172
  lint.select = [
173
- "B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
174
- "C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
175
- "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
176
- "F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
177
- "W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
178
- "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
179
- "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
180
- "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
181
- "RUF018" # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
173
+ "B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
174
+ "C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
175
+ "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
176
+ "F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
177
+ "W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
178
+ "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
179
+ "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
180
+ "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
181
+ "RUF018", # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
182
+ "TID251", # banned api - https://docs.astral.sh/ruff/rules/banned-api/
182
183
  ]
183
184
 
184
185
  [tool.ruff.lint.per-file-ignores]
185
186
  # By default, private member access is allowed in tests
186
187
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
187
- # Remove this line to forbid private member access and walrus operators in asserts in tests
188
- "tests/**/*" = ["SLF001", "RUF018"]
189
- "system_tests/**/*" = ["SLF001", "RUF018"]
188
+ # Remove this line to forbid private member access, walrus operators, banned api in asserts in tests
189
+ "tests/**/*" = ["SLF001", "RUF018", "TID251"]
190
+ "system_tests/**/*" = ["SLF001", "RUF018", "TID251"]
191
+
192
+ [tool.ruff.lint.flake8-tidy-imports.banned-api]
193
+ "time.sleep".msg = "Use bps.sleep or asyncio.sleep instead. # noqa will disable this rule for that line. See https://github.com/DiamondLightSource/mx-bluesky/issues/925"
190
194
 
191
195
  [tool.importlinter]
192
196
  root_package = "dodal"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.43.0
3
+ Version: 1.44.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.9.0a2
219
+ Requires-Dist: ophyd-async>=0.10.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -264,6 +264,7 @@ Requires-Dist: types-requests; extra == "dev"
264
264
  Requires-Dist: types-mock; extra == "dev"
265
265
  Requires-Dist: types-PyYAML; extra == "dev"
266
266
  Requires-Dist: types-aiofiles; extra == "dev"
267
+ Dynamic: license-file
267
268
 
268
269
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
269
270
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
@@ -112,6 +112,7 @@ src/dodal/beamlines/training_rig.py
112
112
  src/dodal/common/__init__.py
113
113
  src/dodal/common/coordination.py
114
114
  src/dodal/common/crystal_metadata.py
115
+ src/dodal/common/data_util.py
115
116
  src/dodal/common/maths.py
116
117
  src/dodal/common/signal_utils.py
117
118
  src/dodal/common/types.py
@@ -128,6 +129,7 @@ src/dodal/devices/aperture.py
128
129
  src/dodal/devices/aperturescatterguard.py
129
130
  src/dodal/devices/apple2_undulator.py
130
131
  src/dodal/devices/backlight.py
132
+ src/dodal/devices/baton.py
131
133
  src/dodal/devices/bimorph_mirror.py
132
134
  src/dodal/devices/cryostream.py
133
135
  src/dodal/devices/dcm.py
@@ -181,6 +183,12 @@ src/dodal/devices/detector/det_dist_to_beam_converter.py
181
183
  src/dodal/devices/detector/det_resolution.py
182
184
  src/dodal/devices/detector/detector.py
183
185
  src/dodal/devices/detector/detector_motion.py
186
+ src/dodal/devices/electron_analyser/__init__.py
187
+ src/dodal/devices/electron_analyser/base_region.py
188
+ src/dodal/devices/electron_analyser/specs/__init__.py
189
+ src/dodal/devices/electron_analyser/specs/specs_region.py
190
+ src/dodal/devices/electron_analyser/vgscienta/__init__.py
191
+ src/dodal/devices/electron_analyser/vgscienta/vgscienta_region.py
184
192
  src/dodal/devices/i03/__init__.py
185
193
  src/dodal/devices/i03/beamstop.py
186
194
  src/dodal/devices/i04/transfocator.py
@@ -194,12 +202,12 @@ src/dodal/devices/i10/rasor/rasor_scaler_cards.py
194
202
  src/dodal/devices/i13_1/__init__.py
195
203
  src/dodal/devices/i13_1/merlin.py
196
204
  src/dodal/devices/i13_1/merlin_controller.py
197
- src/dodal/devices/i13_1/merlin_io.py
198
205
  src/dodal/devices/i18/KBMirror.py
199
206
  src/dodal/devices/i18/diode.py
200
207
  src/dodal/devices/i18/table.py
201
208
  src/dodal/devices/i18/thor_labs_stage.py
202
209
  src/dodal/devices/i19/__init__.py
210
+ src/dodal/devices/i19/beamstop.py
203
211
  src/dodal/devices/i19/hutch_access.py
204
212
  src/dodal/devices/i19/shutter.py
205
213
  src/dodal/devices/i20_1/__init__.py
@@ -218,7 +226,6 @@ src/dodal/devices/i24/pilatus_metadata.py
218
226
  src/dodal/devices/i24/pmac.py
219
227
  src/dodal/devices/i24/vgonio.py
220
228
  src/dodal/devices/oav/__init__.py
221
- src/dodal/devices/oav/microns_for_zoom_levels.json
222
229
  src/dodal/devices/oav/oav_calculations.py
223
230
  src/dodal/devices/oav/oav_detector.py
224
231
  src/dodal/devices/oav/oav_parameters.py
@@ -228,7 +235,8 @@ src/dodal/devices/oav/pin_image_recognition/__init__.py
228
235
  src/dodal/devices/oav/pin_image_recognition/manual_test.py
229
236
  src/dodal/devices/oav/pin_image_recognition/utils.py
230
237
  src/dodal/devices/oav/snapshots/grid_overlay.py
231
- src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py
238
+ src/dodal/devices/oav/snapshots/snapshot.py
239
+ src/dodal/devices/oav/snapshots/snapshot_image_processing.py
232
240
  src/dodal/devices/oav/snapshots/snapshot_with_grid.py
233
241
  src/dodal/devices/p99/__init__.py
234
242
  src/dodal/devices/p99/sample_stage.py
@@ -298,6 +306,7 @@ tests/common/__init__.py
298
306
  tests/common/test_coordination.py
299
307
  tests/common/test_crystal_metadata.py
300
308
  tests/common/test_maths.py
309
+ tests/common/test_signal_utils.py
301
310
  tests/common/test_udc_directory_provider.py
302
311
  tests/common/test_visit.py
303
312
  tests/common/beamlines/__init__.py
@@ -323,6 +332,7 @@ tests/devices/i18/test_kb_mirror.py
323
332
  tests/devices/i18/test_table.py
324
333
  tests/devices/i18/test_thor_labs_stage.py
325
334
  tests/devices/i19/__init__.py
335
+ tests/devices/i19/test_beamstop.py
326
336
  tests/devices/i19/test_shutter.py
327
337
  tests/devices/i22/test_dcm.py
328
338
  tests/devices/i22/test_fswitch.py
@@ -337,6 +347,7 @@ tests/devices/unit_tests/test_apple2_undulator.py
337
347
  tests/devices/unit_tests/test_attenuator.py
338
348
  tests/devices/unit_tests/test_backlight.py
339
349
  tests/devices/unit_tests/test_bart_robot.py
350
+ tests/devices/unit_tests/test_baton.py
340
351
  tests/devices/unit_tests/test_beam_converter.py
341
352
  tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
342
353
  tests/devices/unit_tests/test_bimorph_mirror.py
@@ -353,7 +364,6 @@ tests/devices/unit_tests/test_lookup_table_2.txt
353
364
  tests/devices/unit_tests/test_odin.py
354
365
  tests/devices/unit_tests/test_pressure_jump_cell.py
355
366
  tests/devices/unit_tests/test_qbpm.py
356
- tests/devices/unit_tests/test_shutter.py
357
367
  tests/devices/unit_tests/test_slits.py
358
368
  tests/devices/unit_tests/test_smargon.py
359
369
  tests/devices/unit_tests/test_status.py
@@ -369,6 +379,7 @@ tests/devices/unit_tests/test_xbpm_feedback.py
369
379
  tests/devices/unit_tests/test_xspress3.py
370
380
  tests/devices/unit_tests/test_zebra.py
371
381
  tests/devices/unit_tests/test_zebra_constants_mapping.py
382
+ tests/devices/unit_tests/test_zebra_shutter.py
372
383
  tests/devices/unit_tests/test_zocalo_interaction.py
373
384
  tests/devices/unit_tests/test_zocalo_results.py
374
385
  tests/devices/unit_tests/current_amplifier/test_femto.py
@@ -376,6 +387,9 @@ tests/devices/unit_tests/current_amplifier/test_sr570.py
376
387
  tests/devices/unit_tests/detector/test_det_dim_constants.py
377
388
  tests/devices/unit_tests/detector/test_det_resolution.py
378
389
  tests/devices/unit_tests/detector/test_detector.py
390
+ tests/devices/unit_tests/electron_analyser/test_specs_region.py
391
+ tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py
392
+ tests/devices/unit_tests/electron_analyser/utils.py
379
393
  tests/devices/unit_tests/i24/__init__.py
380
394
  tests/devices/unit_tests/i24/test_dual_backlight.py
381
395
  tests/devices/unit_tests/i24/test_focus_mirrors.py
@@ -389,6 +403,7 @@ tests/devices/unit_tests/oav/test_oav.py
389
403
  tests/devices/unit_tests/oav/test_oav_parameters.py
390
404
  tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py
391
405
  tests/devices/unit_tests/oav/test_oav_utils.py
406
+ tests/devices/unit_tests/oav/test_snapshot_image_processing.py
392
407
  tests/devices/unit_tests/oav/test_snapshots.py
393
408
  tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py
394
409
  tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py
@@ -425,6 +440,8 @@ tests/test_data/test_beamline_parameters.txt
425
440
  tests/test_data/test_det_dist_converter.txt
426
441
  tests/test_data/topup_long_delay.txt
427
442
  tests/test_data/topup_short_params.txt
443
+ tests/test_data/electron_analyser/specs_sequence.seq
444
+ tests/test_data/electron_analyser/vgscienta_sequence.seq
428
445
  tests/test_data/test_images/oav_snapshot_expected.png
429
446
  tests/test_data/test_images/oav_snapshot_test.png
430
447
  tests/unit_tests/__init__.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async>=0.9.0a2
3
+ ophyd-async>=0.10.0a1
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.43.0'
21
- __version_tuple__ = version_tuple = (1, 43, 0)
20
+ __version__ = version = '1.44.0'
21
+ __version_tuple__ = version_tuple = (1, 44, 0)
@@ -11,6 +11,7 @@ from dodal.common.beamlines.beamline_utils import (
11
11
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
12
  from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
13
13
  from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
14
+ from dodal.devices.motors import XYZPositioner
14
15
  from dodal.devices.synchrotron import Synchrotron
15
16
  from dodal.log import set_beamline as set_log_beamline
16
17
  from dodal.utils import BeamlinePrefix
@@ -60,3 +61,10 @@ def manta() -> AravisDetector:
60
61
  drv_suffix=CAM_SUFFIX,
61
62
  fileio_suffix=HDF5_SUFFIX,
62
63
  )
64
+
65
+
66
+ @device_factory()
67
+ def sample_stage() -> XYZPositioner:
68
+ return XYZPositioner(
69
+ f"{PREFIX.beamline_prefix}-MO-PPMAC-01:",
70
+ )
@@ -16,6 +16,7 @@ from dodal.devices.aperturescatterguard import (
16
16
  )
17
17
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
18
18
  from dodal.devices.backlight import Backlight
19
+ from dodal.devices.baton import Baton
19
20
  from dodal.devices.cryostream import CryoStream
20
21
  from dodal.devices.dcm import DCM
21
22
  from dodal.devices.detector.detector_motion import DetectorMotion
@@ -436,3 +437,13 @@ def qbpm() -> QBPM:
436
437
  f"{PREFIX.beamline_prefix}-DI-QBPM-01:",
437
438
  "qbpm",
438
439
  )
440
+
441
+
442
+ @device_factory(
443
+ skip=True
444
+ ) # Skipping as not yet on the beamline, see https://jira.diamond.ac.uk/browse/I03-894
445
+ def baton() -> Baton:
446
+ """Get the i03 baton device, instantiate it if it hasn't already been.
447
+ If this is called when already instantiated in i03, it will return the existing object.
448
+ """
449
+ return Baton(f"{PREFIX.beamline_prefix}:")
@@ -0,0 +1,59 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adaravis import AravisDetector
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.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
12
+ from dodal.devices.i13_1.merlin import Merlin
13
+ from dodal.devices.motors import XYZPositioner
14
+ from dodal.log import set_beamline as set_log_beamline
15
+ from dodal.utils import BeamlinePrefix, get_beamline_name
16
+
17
+ BL = get_beamline_name("i13-1")
18
+ PREFIX_BL13I = BeamlinePrefix(BL) # Can't use this yet as returns BL13I
19
+ PREFIX = "BL13J"
20
+ set_log_beamline(BL)
21
+ set_utils_beamline(BL)
22
+ set_path_provider(
23
+ StaticVisitPathProvider(
24
+ BL,
25
+ Path("/dls/i13-1/data/2024/cm37257-5/tmp/"), # latest commissioning visit
26
+ client=LocalDirectoryServiceClient(),
27
+ )
28
+ )
29
+
30
+
31
+ @device_factory()
32
+ def sample_xyz_stage() -> XYZPositioner:
33
+ return XYZPositioner(prefix=f"{PREFIX}-MO-PI-02:")
34
+
35
+
36
+ @device_factory()
37
+ def sample_xyz_lab_fa_stage() -> XYZPositioner:
38
+ return XYZPositioner(prefix=f"{PREFIX}-MO-PI-02:FIXANG:")
39
+
40
+
41
+ @device_factory()
42
+ def side_camera() -> AravisDetector:
43
+ return AravisDetector(
44
+ prefix=f"{PREFIX}-OP-FLOAT-03:",
45
+ drv_suffix="CAM:",
46
+ fileio_suffix="HDF5:",
47
+ path_provider=get_path_provider(),
48
+ )
49
+
50
+
51
+ @device_factory()
52
+ def merlin() -> Merlin:
53
+ return Merlin(
54
+ prefix=f"{PREFIX}-EA-DET-04:",
55
+ name="merlin",
56
+ drv_suffix="CAM:",
57
+ fileio_suffix="HDF5:",
58
+ path_provider=get_path_provider(),
59
+ )
@@ -4,7 +4,8 @@ from dodal.common.beamlines.beamline_utils import (
4
4
  from dodal.common.beamlines.beamline_utils import (
5
5
  set_beamline as set_utils_beamline,
6
6
  )
7
- from dodal.devices.i19.shutter import HutchConditionalShutter, HutchState
7
+ from dodal.devices.i19.beamstop import BeamStop
8
+ from dodal.devices.i19.shutter import AccessControlledShutter, HutchState
8
9
  from dodal.devices.oav.oav_detector import OAV
9
10
  from dodal.devices.oav.oav_parameters import OAVConfig
10
11
  from dodal.devices.synchrotron import Synchrotron
@@ -35,10 +36,20 @@ ZOOM_PARAMS_FILE = (
35
36
  DISPLAY_CONFIG = "/dls_sw/i19-1/software/daq_configuration/domain/display.configuration"
36
37
 
37
38
 
39
+ # Needs to wait until enum is fixed on the beamline
40
+ # See https://github.com/DiamondLightSource/dodal/issues/1150
41
+ @device_factory(skip=True)
42
+ def beamstop() -> BeamStop:
43
+ """Get the i19-1 beamstop device, instantiate it if it hasn't already been.
44
+ If this is called when already instantiated in i19-1, it will return the existing object.
45
+ """
46
+ return BeamStop(prefix=f"{PREFIX.beamline_prefix}-RS-ABSB-01:")
47
+
48
+
38
49
  @device_factory()
39
50
  def oav() -> OAV:
40
51
  return OAV(
41
- prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
52
+ prefix=f"{PREFIX.beamline_prefix}-EA-OAV-01:",
42
53
  config=OAVConfig(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
43
54
  )
44
55
 
@@ -56,11 +67,11 @@ def zebra() -> Zebra:
56
67
 
57
68
 
58
69
  @device_factory()
59
- def shutter() -> HutchConditionalShutter:
60
- """Get the i19-2 hutch shutter device, instantiate it if it hasn't already been.
70
+ def shutter() -> AccessControlledShutter:
71
+ """Get the i19-1 hutch shutter device, instantiate it if it hasn't already been.
61
72
  If this is called when already instantiated, it will return the existing object.
62
73
  """
63
- return HutchConditionalShutter(
74
+ return AccessControlledShutter(
64
75
  prefix=f"{PREFIX.beamline_prefix}-PS-SHTR-01:",
65
76
  hutch=HutchState.EH1,
66
77
  )
@@ -4,7 +4,8 @@ from dodal.common.beamlines.beamline_utils import (
4
4
  from dodal.common.beamlines.beamline_utils import (
5
5
  set_beamline as set_utils_beamline,
6
6
  )
7
- from dodal.devices.i19.shutter import HutchConditionalShutter, HutchState
7
+ from dodal.devices.i19.beamstop import BeamStop
8
+ from dodal.devices.i19.shutter import AccessControlledShutter, HutchState
8
9
  from dodal.devices.synchrotron import Synchrotron
9
10
  from dodal.devices.zebra.zebra import Zebra
10
11
  from dodal.devices.zebra.zebra_constants_mapping import (
@@ -30,6 +31,14 @@ I19_2_ZEBRA_MAPPING = ZebraMapping(
30
31
  )
31
32
 
32
33
 
34
+ @device_factory()
35
+ def beamstop() -> BeamStop:
36
+ """Get the i19-2 beamstop device, instantiate it if it hasn't already been.
37
+ If this is called when already instantiated in i19-2, it will return the existing object.
38
+ """
39
+ return BeamStop(prefix=f"{PREFIX.beamline_prefix}-OP-ABSB-02:")
40
+
41
+
33
42
  @device_factory()
34
43
  def zebra() -> Zebra:
35
44
  """Get the i19-2 zebra device, instantiate it if it hasn't already been.
@@ -43,11 +52,11 @@ def zebra() -> Zebra:
43
52
 
44
53
 
45
54
  @device_factory()
46
- def shutter() -> HutchConditionalShutter:
55
+ def shutter() -> AccessControlledShutter:
47
56
  """Get the i19-2 hutch shutter device, instantiate it if it hasn't already been.
48
57
  If this is called when already instantiated, it will return the existing object.
49
58
  """
50
- return HutchConditionalShutter(
59
+ return AccessControlledShutter(
51
60
  prefix=f"{PREFIX.beamline_prefix}-PS-SHTR-01:",
52
61
  hutch=HutchState.EH2,
53
62
  )
@@ -5,7 +5,7 @@ from dodal.common.beamlines.beamline_utils import (
5
5
  set_beamline as set_utils_beamline,
6
6
  )
7
7
  from dodal.devices.hutch_shutter import HutchShutter
8
- from dodal.devices.i19.hutch_access import HutchAccessControl
8
+ from dodal.devices.i19.hutch_access import ACCESS_DEVICE_NAME, HutchAccessControl
9
9
  from dodal.log import set_beamline as set_log_beamline
10
10
  from dodal.utils import BeamlinePrefix
11
11
 
@@ -31,4 +31,6 @@ def access_control() -> HutchAccessControl:
31
31
  """Get a device that checks the active hutch for i19, instantiate it if it hasn't already been.
32
32
  If this is called when already instantiated, it will return the existing object.
33
33
  """
34
- return HutchAccessControl(f"{PREFIX.beamline_prefix}-OP-STAT-01:", "access_control")
34
+ return HutchAccessControl(
35
+ f"{PREFIX.beamline_prefix}-OP-STAT-01:", ACCESS_DEVICE_NAME
36
+ )
@@ -0,0 +1,20 @@
1
+ from typing import TypeVar
2
+
3
+ from pydantic import BaseModel
4
+
5
+ TBaseModel = TypeVar("TBaseModel", bound=BaseModel)
6
+
7
+
8
+ def load_json_file_to_class(
9
+ t: type[TBaseModel],
10
+ file: str,
11
+ ) -> TBaseModel:
12
+ with open(file) as f:
13
+ json_obj = f.read()
14
+ cls = t.model_validate_json(json_obj)
15
+ return cls
16
+
17
+
18
+ def save_class_to_json_file(model: BaseModel, file: str) -> None:
19
+ with open(file, "w") as f:
20
+ f.write(model.model_dump_json())
@@ -0,0 +1,88 @@
1
+ from collections.abc import Callable, Coroutine
2
+ from typing import Any
3
+
4
+ from bluesky.protocols import Reading
5
+ from ophyd_async.core import SignalDatatypeT, SignalR, SignalRW, SoftSignalBackend
6
+
7
+ SetHardwareType = Callable[[SignalDatatypeT], Coroutine[Any, Any, None]]
8
+
9
+
10
+ class HardwareBackedSoftSignalBackend(SoftSignalBackend[SignalDatatypeT]):
11
+ def __init__(
12
+ self,
13
+ get_from_hardware_func: Callable[[], Coroutine[Any, Any, SignalDatatypeT]],
14
+ set_to_hardware_func: SetHardwareType | None = None,
15
+ *args,
16
+ **kwargs,
17
+ ) -> None:
18
+ self.get_from_hardware_func = get_from_hardware_func
19
+ self.set_to_hardware_func = set_to_hardware_func
20
+ super().__init__(*args, **kwargs)
21
+
22
+ async def _update_value(self):
23
+ new_value = await self.get_from_hardware_func()
24
+ self.set_value(new_value)
25
+
26
+ async def get_reading(self) -> Reading:
27
+ await self._update_value()
28
+ return await super().get_reading()
29
+
30
+ async def get_value(self) -> SignalDatatypeT:
31
+ await self._update_value()
32
+ return await super().get_value()
33
+
34
+ async def put(self, value: SignalDatatypeT | None, wait: bool) -> None:
35
+ if self.set_to_hardware_func:
36
+ write_value = self.initial_value if value is None else value
37
+ await self.set_to_hardware_func(write_value)
38
+
39
+
40
+ def create_rw_hardware_backed_soft_signal(
41
+ datatype: type[SignalDatatypeT],
42
+ get_from_hardware_func: Callable[[], Coroutine[Any, Any, SignalDatatypeT]],
43
+ set_to_hardware_func: SetHardwareType,
44
+ units: str | None = None,
45
+ precision: int | None = None,
46
+ ):
47
+ """Creates a soft signal that, when read will call the function passed into
48
+ `get_from_hardware_func` and return this. When set it will call `set_to_hardware_func`
49
+ and send something to the hardware.
50
+
51
+ This will allow you to make soft signals derived from arbitrary hardware signals.
52
+ However, calling subscribe on this signal does not give you a sensible value. See https://github.com/bluesky/ophyd-async/issues/525
53
+ for a more full solution.
54
+ """
55
+ return SignalRW(
56
+ backend=HardwareBackedSoftSignalBackend(
57
+ get_from_hardware_func,
58
+ set_to_hardware_func,
59
+ datatype,
60
+ units=units,
61
+ precision=precision,
62
+ )
63
+ )
64
+
65
+
66
+ def create_r_hardware_backed_soft_signal(
67
+ datatype: type[SignalDatatypeT],
68
+ get_from_hardware_func: Callable[[], Coroutine[Any, Any, SignalDatatypeT]],
69
+ units: str | None = None,
70
+ precision: int | None = None,
71
+ ):
72
+ """Creates a soft signal that, when read will call the function passed into
73
+ `get_from_hardware_func` and return this.
74
+
75
+ This will allow you to make soft signals derived from arbitrary hardware signals.
76
+ However, calling subscribe on this signal does not give you a sensible value and
77
+ the signal is currently read only. See https://github.com/bluesky/ophyd-async/issues/525
78
+ for a more full solution.
79
+ """
80
+ return SignalR(
81
+ backend=HardwareBackedSoftSignalBackend(
82
+ get_from_hardware_func,
83
+ None,
84
+ datatype,
85
+ units=units,
86
+ precision=precision,
87
+ )
88
+ )
@@ -12,7 +12,7 @@ from ophyd_async.core import (
12
12
  from pydantic import BaseModel, Field
13
13
 
14
14
  from dodal.common.beamlines.beamline_parameters import GDABeamlineParameters
15
- from dodal.common.signal_utils import create_hardware_backed_soft_signal
15
+ from dodal.common.signal_utils import create_r_hardware_backed_soft_signal
16
16
  from dodal.devices.aperture import Aperture
17
17
  from dodal.devices.scatterguard import Scatterguard
18
18
 
@@ -164,7 +164,7 @@ class ApertureScatterguard(StandardReadable, Movable[ApertureValue], Preparable)
164
164
  ) -> None:
165
165
  self.aperture = Aperture(prefix + "-MO-MAPT-01:")
166
166
  self.scatterguard = Scatterguard(prefix + "-MO-SCAT-01:")
167
- self.radius = create_hardware_backed_soft_signal(
167
+ self.radius = create_r_hardware_backed_soft_signal(
168
168
  float, self._get_current_radius, units="µm"
169
169
  )
170
170
  self._loaded_positions = loaded_positions
@@ -181,7 +181,7 @@ class ApertureScatterguard(StandardReadable, Movable[ApertureValue], Preparable)
181
181
  )
182
182
 
183
183
  with self.add_children_as_readables(StandardReadableFormat.HINTED_SIGNAL):
184
- self.selected_aperture = create_hardware_backed_soft_signal(
184
+ self.selected_aperture = create_r_hardware_backed_soft_signal(
185
185
  ApertureValue, self._get_current_aperture_position
186
186
  )
187
187
 
@@ -0,0 +1,17 @@
1
+ from typing import Annotated as A
2
+
3
+ from ophyd_async.core import (
4
+ SignalRW,
5
+ StandardReadable,
6
+ )
7
+ from ophyd_async.core import StandardReadableFormat as Format
8
+ from ophyd_async.epics.core import EpicsDevice, PvSuffix
9
+
10
+
11
+ class Baton(StandardReadable, EpicsDevice):
12
+ requested_user: A[
13
+ SignalRW[str], PvSuffix("REQUESTED_USER"), Format.HINTED_UNCACHED_SIGNAL
14
+ ]
15
+ current_user: A[
16
+ SignalRW[str], PvSuffix("CURRENT_USER"), Format.HINTED_UNCACHED_SIGNAL
17
+ ]
@@ -23,7 +23,6 @@ class CurrentAmp(ABC, StandardReadable, Movable):
23
23
  super().__init__(name)
24
24
 
25
25
  @abstractmethod
26
- @AsyncStatus.wrap
27
26
  async def increase_gain(self, value: int = 1) -> None:
28
27
  """Increase gain, increment by 1 by default.
29
28
 
@@ -31,7 +30,6 @@ class CurrentAmp(ABC, StandardReadable, Movable):
31
30
  bool: True if success.
32
31
  """
33
32
 
34
- @AsyncStatus.wrap
35
33
  @abstractmethod
36
34
  async def decrease_gain(self, value: int = 1) -> None:
37
35
  """Decrease gain, decrement by 1 by default.
@@ -40,21 +38,18 @@ class CurrentAmp(ABC, StandardReadable, Movable):
40
38
  bool: True if success.
41
39
  """
42
40
 
43
- @AsyncStatus.wrap
44
41
  @abstractmethod
45
- async def get_gain(self) -> type[Enum]:
42
+ async def get_gain(self) -> Enum:
46
43
  """Get the current gain setting
47
44
 
48
45
  Returns:
49
46
  Enum: The member name of the current gain setting in gain_conversion_table.
50
47
  """
51
48
 
52
- @AsyncStatus.wrap
53
49
  @abstractmethod
54
50
  async def get_upperlimit(self) -> float:
55
51
  """Get the upper limit of the current amplifier"""
56
52
 
57
- @AsyncStatus.wrap
58
53
  @abstractmethod
59
54
  async def get_lowerlimit(self) -> float:
60
55
  """Get the lower limit of the current amplifier"""