dls-dodal 1.36.2__tar.gz → 1.37.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 (407) hide show
  1. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/PKG-INFO +4 -4
  2. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/conftest.py +4 -31
  3. dls_dodal-1.37.0/docs/how-to/zocalo.rst +71 -0
  4. dls_dodal-1.37.0/docs/reference/api.md +28 -0
  5. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/reference.md +1 -1
  6. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/pyproject.toml +2 -2
  7. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/PKG-INFO +4 -4
  8. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/SOURCES.txt +24 -2
  9. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/requires.txt +2 -2
  10. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/_version.py +2 -2
  11. dls_dodal-1.37.0/src/dodal/beamlines/i02_1.py +37 -0
  12. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i03.py +20 -3
  13. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i04.py +3 -3
  14. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i10.py +179 -7
  15. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i22.py +15 -0
  16. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i24.py +2 -2
  17. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/p99.py +6 -2
  18. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/crystal_metadata.py +3 -3
  19. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/udc_directory_provider.py +3 -1
  20. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/aperturescatterguard.py +3 -0
  21. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/apple2_undulator.py +9 -9
  22. {dls_dodal-1.36.2/src/dodal/devices → dls_dodal-1.37.0/src/dodal/devices/attenuator}/attenuator.py +29 -1
  23. dls_dodal-1.37.0/src/dodal/devices/attenuator/filter.py +11 -0
  24. dls_dodal-1.37.0/src/dodal/devices/attenuator/filter_selections.py +72 -0
  25. dls_dodal-1.37.0/src/dodal/devices/bimorph_mirror.py +151 -0
  26. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/__init__.py +34 -0
  27. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/current_amplifier.py +103 -0
  28. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +109 -0
  29. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/femto.py +143 -0
  30. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/sr570.py +214 -0
  31. dls_dodal-1.37.0/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +79 -0
  32. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/det_dim_constants.py +15 -0
  33. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/eiger_odin.py +3 -3
  34. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/fast_grid_scan.py +8 -3
  35. dls_dodal-1.37.0/src/dodal/devices/i03/beamstop.py +85 -0
  36. dls_dodal-1.37.0/src/dodal/devices/i04/transfocator.py +96 -0
  37. dls_dodal-1.37.0/src/dodal/devices/i10/i10_setting_data.py +7 -0
  38. dls_dodal-1.37.0/src/dodal/devices/i10/mirrors.py +24 -0
  39. dls_dodal-1.37.0/src/dodal/devices/i10/rasor/rasor_current_amp.py +72 -0
  40. dls_dodal-1.37.0/src/dodal/devices/i10/rasor/rasor_motors.py +62 -0
  41. dls_dodal-1.37.0/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +12 -0
  42. dls_dodal-1.37.0/src/dodal/devices/i10/slits.py +37 -0
  43. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/dual_backlight.py +1 -0
  44. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/focus_mirrors.py +12 -12
  45. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/linkam3.py +2 -2
  46. dls_dodal-1.37.0/src/dodal/devices/p99/sample_stage.py +11 -0
  47. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/robot.py +2 -2
  48. dls_dodal-1.37.0/src/dodal/devices/slits.py +39 -0
  49. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/tetramm.py +16 -16
  50. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/undulator_dcm.py +9 -11
  51. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/test_utils.py +2 -2
  52. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/xspress3/xspress3.py +3 -3
  53. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zebra.py +19 -14
  54. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zocalo/zocalo_interaction.py +2 -1
  55. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zocalo/zocalo_results.py +22 -2
  56. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/log.py +2 -2
  57. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plans/wrapped.py +3 -3
  58. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_oav_to_redis_system.py +2 -1
  59. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/beamlines/test_beamline_utils.py +2 -1
  60. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/beamlines/test_device_instantiation.py +6 -6
  61. dls_dodal-1.37.0/tests/conftest.py +34 -0
  62. dls_dodal-1.37.0/tests/devices/i03/test_beamstop.py +66 -0
  63. dls_dodal-1.37.0/tests/devices/i04/test_transfocator.py +74 -0
  64. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/test_i10Apple2.py +6 -6
  65. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i22/test_dcm.py +2 -2
  66. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i22/test_fswitch.py +2 -1
  67. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/test_diamond_filter.py +2 -4
  68. dls_dodal-1.37.0/tests/devices/unit_tests/current_amplifier/test_femto.py +309 -0
  69. dls_dodal-1.37.0/tests/devices/unit_tests/current_amplifier/test_sr570.py +309 -0
  70. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/detector/test_det_resolution.py +6 -6
  71. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +1 -1
  72. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +2 -2
  73. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +1 -1
  74. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/i24/test_pmac.py +1 -1
  75. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/conftest.py +2 -1
  76. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +1 -1
  77. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_oav.py +1 -1
  78. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +2 -1
  79. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_oav_utils.py +1 -1
  80. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_snapshots.py +1 -1
  81. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/p99/test_p99_stage.py +12 -6
  82. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +9 -2
  83. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_apple2_undulator.py +17 -17
  84. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_attenuator.py +12 -7
  85. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_backlight.py +2 -1
  86. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_bart_robot.py +6 -5
  87. dls_dodal-1.37.0/tests/devices/unit_tests/test_bimorph_mirror.py +167 -0
  88. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_focusing_mirror.py +2 -2
  89. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_gridscan.py +2 -1
  90. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -1
  91. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_linkam3.py +2 -2
  92. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +2 -1
  93. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_qbpm.py +2 -4
  94. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_shutter.py +5 -4
  95. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_slits.py +2 -1
  96. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_smargon.py +2 -1
  97. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_synchrotron.py +2 -1
  98. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_tetramm.py +22 -27
  99. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_thawer.py +2 -1
  100. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_undulator.py +2 -2
  101. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_undulator_dcm.py +41 -28
  102. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_utils.py +2 -1
  103. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +2 -1
  104. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_xbpm_feedback.py +2 -1
  105. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_xspress3.py +2 -2
  106. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_zebra.py +1 -1
  107. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_zocalo_results.py +31 -2
  108. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_zocalo/__main__.py +3 -3
  109. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plan_stubs/test_motor_util_plans.py +3 -5
  110. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plan_stubs/test_topup_plan.py +1 -1
  111. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plans/test_compliance.py +6 -6
  112. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_utils.py +6 -8
  113. dls_dodal-1.37.0/tests/unit_tests/__init__.py +0 -0
  114. dls_dodal-1.36.2/docs/_api.rst +0 -16
  115. dls_dodal-1.36.2/docs/how-to/zocalo.rst +0 -13
  116. dls_dodal-1.36.2/src/dodal/devices/i04/transfocator.py +0 -82
  117. dls_dodal-1.36.2/src/dodal/devices/i10/i10_setting_data.py +0 -7
  118. dls_dodal-1.36.2/src/dodal/devices/p99/sample_stage.py +0 -37
  119. dls_dodal-1.36.2/src/dodal/devices/slits.py +0 -17
  120. dls_dodal-1.36.2/tests/devices/i04/test_transfocator.py +0 -66
  121. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.copier-answers.yml +0 -0
  122. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.devcontainer/devcontainer.json +0 -0
  123. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/CODEOWNERS +0 -0
  124. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/CONTRIBUTING.md +0 -0
  125. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  126. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/actions/install_requirements/action.yml +0 -0
  127. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/dependabot.yml +0 -0
  128. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/pages/index.html +0 -0
  129. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/pages/make_switcher.py +0 -0
  130. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_check.yml +0 -0
  131. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_dist.yml +0 -0
  132. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_docs.yml +0 -0
  133. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_pypi.yml +0 -0
  134. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_release.yml +0 -0
  135. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_test.yml +0 -0
  136. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/_tox.yml +0 -0
  137. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/ci.yml +0 -0
  138. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.github/workflows/periodic.yml +0 -0
  139. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.gitignore +0 -0
  140. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.pre-commit-config.yaml +0 -0
  141. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.vscode/extensions.json +0 -0
  142. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.vscode/launch.json +0 -0
  143. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.vscode/settings.json +0 -0
  144. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/.vscode/tasks.json +0 -0
  145. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/Dockerfile +0 -0
  146. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/LICENSE +0 -0
  147. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/README.md +0 -0
  148. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/catalog-info.yaml +0 -0
  149. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/_templates/autosummary/class.rst +0 -0
  150. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/_templates/autosummary/module.rst +0 -0
  151. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/_templates/custom-module-template.rst +0 -0
  152. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/assets/zocalo.png +0 -0
  153. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/conf.py +0 -0
  154. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  155. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  156. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  157. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  158. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions/COPYME +0 -0
  159. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/decisions.md +0 -0
  160. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations/reviews.md +0 -0
  161. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/explanations.md +0 -0
  162. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/genindex.md +0 -0
  163. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/build-docs.md +0 -0
  164. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/contribute.md +0 -0
  165. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/coverage.md +0 -0
  166. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/create-beamline.rst +0 -0
  167. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/dev-install.md +0 -0
  168. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/excalidraw.md +0 -0
  169. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/lint.md +0 -0
  170. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/lock-requirements.md +0 -0
  171. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  172. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/make-release.md +0 -0
  173. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/move-code.rst +0 -0
  174. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/pypi.md +0 -0
  175. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/run-tests.md +0 -0
  176. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/static-analysis.md +0 -0
  177. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/update-template.md +0 -0
  178. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to/write-tests.md +0 -0
  179. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/how-to.md +0 -0
  180. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/images/dls-logo.svg +0 -0
  181. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/images/excalidraw-example.svg +0 -0
  182. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/index.md +0 -0
  183. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/reference/device-standards.rst +0 -0
  184. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/reference/standards.rst +0 -0
  185. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/tutorials/get_started.rst +0 -0
  186. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/tutorials/installation.md +0 -0
  187. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/docs/tutorials.md +0 -0
  188. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/pull_request_template.md +0 -0
  189. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/setup.cfg +0 -0
  190. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/__init__.py +0 -0
  191. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  192. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  193. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  194. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/__init__.py +0 -0
  195. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/__main__.py +0 -0
  196. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  197. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  198. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/README.md +0 -0
  199. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/__init__.py +0 -0
  200. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/adsim.py +0 -0
  201. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/b01_1.py +0 -0
  202. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i13_1.py +0 -0
  203. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i20_1.py +0 -0
  204. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/i23.py +0 -0
  205. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/p38.py +0 -0
  206. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/p45.py +0 -0
  207. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/beamlines/training_rig.py +0 -0
  208. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/cli.py +0 -0
  209. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/__init__.py +0 -0
  210. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/beamlines/__init__.py +0 -0
  211. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  212. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  213. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  214. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/coordination.py +0 -0
  215. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/maths.py +0 -0
  216. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/signal_utils.py +0 -0
  217. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/types.py +0 -0
  218. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/common/visit.py +0 -0
  219. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/CTAB.py +0 -0
  220. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/__init__.py +0 -0
  221. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/adsim.py +0 -0
  222. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/aperture.py +0 -0
  223. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  224. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  225. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/backlight.py +0 -0
  226. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/cryostream.py +0 -0
  227. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/dcm.py +0 -0
  228. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/__init__.py +0 -0
  229. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  230. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  231. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/detector.py +0 -0
  232. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  233. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/diamond_filter.py +0 -0
  234. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/eiger.py +0 -0
  235. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  236. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/flux.py +0 -0
  237. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/focusing_mirror.py +0 -0
  238. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/hutch_shutter.py +0 -0
  239. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i03/__init__.py +0 -0
  240. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  241. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  242. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i22/dcm.py +0 -0
  243. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i22/fswitch.py +0 -0
  244. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i22/nxsas.py +0 -0
  245. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/__init__.py +0 -0
  246. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/aperture.py +0 -0
  247. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/beam_center.py +0 -0
  248. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/beamstop.py +0 -0
  249. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/dcm.py +0 -0
  250. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  251. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  252. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/pmac.py +0 -0
  253. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/i24/vgonio.py +0 -0
  254. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/ipin.py +0 -0
  255. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  256. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/motors.py +0 -0
  257. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/__init__.py +0 -0
  258. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  259. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  260. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  261. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  262. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  263. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  264. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  265. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  266. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  267. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
  268. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  269. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/oav/utils.py +0 -0
  270. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/p45.py +0 -0
  271. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/p99/__init__.py +0 -0
  272. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/pgm.py +0 -0
  273. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  274. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/qbpm.py +0 -0
  275. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  276. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/scatterguard.py +0 -0
  277. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/scintillator.py +0 -0
  278. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/smargon.py +0 -0
  279. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/status.py +0 -0
  280. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/synchrotron.py +0 -0
  281. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/thawer.py +0 -0
  282. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/training_rig/__init__.py +0 -0
  283. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  284. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/turbo_slit.py +0 -0
  285. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/undulator.py +0 -0
  286. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/__init__.py +0 -0
  287. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  288. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/epics_util.py +0 -0
  289. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  290. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/motor_utils.py +0 -0
  291. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/util/save_panda.py +0 -0
  292. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  293. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/webcam.py +0 -0
  294. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  295. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  296. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zebra_controlled_shutter.py +0 -0
  297. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  298. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  299. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  300. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plan_stubs/__init__.py +0 -0
  301. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  302. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plan_stubs/data_session.py +0 -0
  303. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  304. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  305. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plans/__init__.py +0 -0
  306. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/plans/scanspec.py +0 -0
  307. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/src/dodal/utils.py +0 -0
  308. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/__init__.py +0 -0
  309. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_adsim.py +0 -0
  310. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  311. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_eiger_system.py +0 -0
  312. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_gridscan_system.py +0 -0
  313. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_oav_system.py +0 -0
  314. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_slit_gaps_system.py +0 -0
  315. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_smargon_system.py +0 -0
  316. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_synchrotron_system.py +0 -0
  317. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_undulator_system.py +0 -0
  318. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_zebra_system.py +0 -0
  319. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/system_tests/test_zocalo_results.py +0 -0
  320. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/__init__.py +0 -0
  321. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/beamlines/__init__.py +0 -0
  322. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/beamlines/unit_tests/__init__.py +0 -0
  323. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  324. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  325. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  326. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/__init__.py +0 -0
  327. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/beamlines/__init__.py +0 -0
  328. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  329. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  330. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/test_coordination.py +0 -0
  331. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/test_crystal_metadata.py +0 -0
  332. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/test_maths.py +0 -0
  333. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/test_udc_directory_provider.py +0 -0
  334. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/common/test_visit.py +0 -0
  335. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/__init__.py +0 -0
  336. {dls_dodal-1.36.2/tests/devices/i04 → dls_dodal-1.37.0/tests/devices/i03}/__init__.py +0 -0
  337. {dls_dodal-1.36.2/tests/devices/unit_tests → dls_dodal-1.37.0/tests/devices/i04}/__init__.py +0 -0
  338. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  339. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  340. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  341. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  342. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  343. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  344. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/i22/test_metadataholder.py +0 -0
  345. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  346. {dls_dodal-1.36.2/tests/devices/unit_tests/i24 → dls_dodal-1.37.0/tests/devices/unit_tests}/__init__.py +0 -0
  347. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/conftest.py +0 -0
  348. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  349. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  350. {dls_dodal-1.36.2/tests/devices/unit_tests/oav → dls_dodal-1.37.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  351. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  352. {dls_dodal-1.36.2/tests/devices/unit_tests/util → dls_dodal-1.37.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  353. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  354. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  355. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  356. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  357. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  358. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  359. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  360. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  361. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  362. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  363. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_dcm.py +0 -0
  364. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  365. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_eiger.py +1 -1
  366. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  367. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  368. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  369. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_odin.py +0 -0
  370. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_status.py +0 -0
  371. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  372. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  373. {dls_dodal-1.36.2/tests/fake_zocalo → dls_dodal-1.37.0/tests/devices/unit_tests/util}/__init__.py +0 -0
  374. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  375. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  376. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  377. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  378. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline.py +0 -0
  379. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  380. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_broken_dependency.py +0 -0
  381. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_dependencies.py +0 -0
  382. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  383. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  384. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_beamline_some_devices_working.py +0 -0
  385. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_device_factory_beamline.py +0 -0
  386. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_zocalo/README.rst +0 -0
  387. {dls_dodal-1.36.2/tests/unit_tests → dls_dodal-1.37.0/tests/fake_zocalo}/__init__.py +0 -0
  388. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  389. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  390. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plans/conftest.py +0 -0
  391. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plans/test_scanspec.py +0 -0
  392. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/plans/test_wrapped.py +0 -0
  393. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  394. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_cli.py +0 -0
  395. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/bad_beamlineParameters +0 -0
  396. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/i04_beamlineParameters +0 -0
  397. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  398. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  399. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  400. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  401. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  402. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  403. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  404. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/topup_long_delay.txt +0 -0
  405. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/test_data/topup_short_params.txt +0 -0
  406. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/unit_tests/test_cli.py +0 -0
  407. {dls_dodal-1.36.2 → dls_dodal-1.37.0}/tests/unit_tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.36.2
3
+ Version: 1.37.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.8.0a5
219
+ Requires-Dist: ophyd-async>=0.9.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -228,7 +228,7 @@ Requires-Dist: pydantic>=2.0
228
228
  Requires-Dist: opencv-python-headless
229
229
  Requires-Dist: aioca
230
230
  Requires-Dist: p4p
231
- Requires-Dist: numpy<2.0
231
+ Requires-Dist: numpy
232
232
  Requires-Dist: aiofiles
233
233
  Requires-Dist: aiohttp
234
234
  Requires-Dist: redis
@@ -1,5 +1,4 @@
1
1
  import asyncio
2
- import importlib
3
2
  import logging
4
3
  import os
5
4
  import sys
@@ -18,14 +17,13 @@ from ophyd_async.core import (
18
17
  PathProvider,
19
18
  )
20
19
 
21
- from dodal.common.beamlines import beamline_parameters, beamline_utils
20
+ from dodal.common.beamlines import beamline_utils
22
21
  from dodal.common.visit import (
23
22
  DirectoryServiceClient,
24
23
  LocalDirectoryServiceClient,
25
24
  StaticVisitPathProvider,
26
25
  )
27
26
  from dodal.log import LOGGER, GELFTCPHandler, set_up_all_logging_handlers
28
- from dodal.utils import make_all_devices
29
27
 
30
28
  MOCK_DAQ_CONFIG_PATH = "tests/devices/unit_tests/test_daq_configuration"
31
29
  mock_paths = [
@@ -55,9 +53,9 @@ def patch_open_to_prevent_dls_reads_in_tests():
55
53
  requested_path = Path(args[0])
56
54
  if requested_path.is_absolute():
57
55
  for p in BANNED_PATHS:
58
- assert not requested_path.is_relative_to(
59
- p
60
- ), f"Attempt to open {requested_path} from inside a unit test"
56
+ assert not requested_path.is_relative_to(p), (
57
+ f"Attempt to open {requested_path} from inside a unit test"
58
+ )
61
59
  return unpatched_open(*args, **kwargs)
62
60
 
63
61
  with patch("builtins.open", side_effect=patched_open):
@@ -82,31 +80,6 @@ if os.getenv("PYTEST_RAISE", "0") == "1":
82
80
  raise excinfo.value
83
81
 
84
82
 
85
- def mock_beamline_module_filepaths(bl_name, bl_module):
86
- if mock_attributes := mock_attributes_table.get(bl_name):
87
- [bl_module.__setattr__(attr[0], attr[1]) for attr in mock_attributes]
88
- beamline_parameters.BEAMLINE_PARAMETER_PATHS[bl_name] = (
89
- "tests/test_data/i04_beamlineParameters"
90
- )
91
-
92
-
93
- @pytest.fixture(scope="function")
94
- def module_and_devices_for_beamline(request):
95
- beamline = request.param
96
- with patch.dict(os.environ, {"BEAMLINE": beamline}, clear=True):
97
- bl_mod = importlib.import_module("dodal.beamlines." + beamline)
98
- importlib.reload(bl_mod)
99
- mock_beamline_module_filepaths(beamline, bl_mod)
100
- devices, exceptions = make_all_devices(
101
- bl_mod,
102
- include_skipped=True,
103
- fake_with_ophyd_sim=True,
104
- )
105
- yield (bl_mod, devices, exceptions)
106
- beamline_utils.clear_devices()
107
- del bl_mod
108
-
109
-
110
83
  def pytest_runtest_setup(item):
111
84
  beamline_utils.clear_devices()
112
85
  if LOGGER.handlers == []:
@@ -0,0 +1,71 @@
1
+ Zocalo Interaction
2
+ ==================
3
+
4
+ .. image:: ../assets/zocalo.png
5
+ :alt: Diagram of zocalo
6
+
7
+ Zocalo jobs are triggered based on their ISPyB DCID using the ``ZocaloTrigger`` class in a callback subscribed to the
8
+ Bluesky plan or ``RunEngine``. These can trigger processing for any kind of job, as zocalo infers the necessary
9
+ processing from data in ISPyB.
10
+
11
+ Results are received using the ``ZocaloResults`` device, so that they can be read into a plan and used for
12
+ decision-making. Currently the ``ZocaloResults`` device is only made to handle X-ray centring results. It subscribes to
13
+ a given zocalo RabbitMQ channel the first time that it is triggered.
14
+
15
+ Zocalo Service
16
+ ==============
17
+
18
+ The Zocalo service processes incoming messages using recipes which describe routing of messages between processing
19
+ steps. You can see `source for the recipes here`_.
20
+
21
+ .. _source for the recipes here: https://gitlab.diamond.ac.uk/scisoft/zocalo/-/tree/master/recipes
22
+
23
+ You can find more information about Zocalo at https://confluence.diamond.ac.uk/display/SSCC/How+to+create+an+MX+processing+pipeline
24
+
25
+ Gridscans
26
+ ---------
27
+
28
+ The Zocalo Service receives messages of the following form for both the xy and xz gridscans::
29
+
30
+ {
31
+ 'recipes': ['mimas'],
32
+ 'parameters': {
33
+ 'ispyb_dcid': 16085800,
34
+ 'filename': 'ins_10_31',
35
+ 'start_frame_index': 0,
36
+ 'number_of_frames': 1140,
37
+ 'message_index': 0,
38
+ 'event': 'start',
39
+ 'guid': 'd6f117bb-c856-4df8-b9bc-2d3c625e9fd5'
40
+ }
41
+ }
42
+
43
+ Zocalo is then sent stop messages::
44
+
45
+ {
46
+ 'recipes': ['mimas'],
47
+ 'parameters': {
48
+ 'event': 'end',
49
+ 'ispyb_dcid': 16085800,
50
+ 'guid': '9a96e59c-da30-494c-8380-c7a5c828c2c9'
51
+ },
52
+ }
53
+
54
+ these tell zocalo that the data is now ready to be processed.
55
+
56
+ Zocalo then uses the ISPyB DataCollection ID to fetch the corresponding info from ISPyB
57
+
58
+ The messages that zocalo receives can be found in Graylog in the Zocalo stream, from there you can find the log of
59
+ the recipe processing using the path to the logbook that comes from messages like these::
60
+ Message saved in logbook at /dls/tmp/zocalo/dispatcher/2024-12/cb/62d35b-7cc9-4f1b-868b-712e82aa0271
61
+
62
+ From the zocalo graylog you can also see that once the gridscan nexus file is picked up (for the CPU gridscan) it
63
+ starts a recipe::
64
+
65
+ {'recipes': ['per-image-analysis-gridscan-i03-no-really'], 'parameters': {'ispyb_dcid': 16085803, 'filename': '{filename}', 'start_frame_index': '{start_frame_index}', 'number_of_frames': '{number_of_frames}', 'message_index': '{message_index}', 'guid': 'd10f8b8c-57a5-4dc4-acaf-a22f8d2bbf60'}, 'recipe': <workflows.recipe.recipe.Recipe object at 0x7f0587f13110>}
66
+
67
+
68
+ If you look at the recipe json, Zocalo then runs Per-Image-Analysis on each frame and then assembles the results in
69
+ the `DLS X-Ray Centring service`_.
70
+
71
+ .. _DLS X-Ray Centring service: https://github.com/DiamondLightSource/python-dlstbx/blob/a8fcbd30335bf13f5e35df78badfc60397500535/src/dlstbx/services/xray_centering.py
@@ -0,0 +1,28 @@
1
+ # API
2
+
3
+ ```{eval-rst}
4
+ .. autosummary::
5
+ :recursive:
6
+ :toctree: generated
7
+
8
+ dodal.beamlines
9
+ dodal.common
10
+ dodal.devices
11
+ dodal.parameters
12
+ dodal.plan_stubs
13
+ dodal.plans
14
+
15
+ .. automodule:: dodal
16
+
17
+ ``dodal``
18
+ -----------------------------------
19
+ ```
20
+
21
+ This is the internal API reference for dodal
22
+
23
+ ```{eval-rst}
24
+ .. data:: dodal.__version__
25
+ :type: str
26
+
27
+ Version number as calculated by https://github.com/pypa/setuptools_scm
28
+ ```
@@ -6,7 +6,7 @@ Technical reference material including APIs and release notes.
6
6
  :maxdepth: 1
7
7
  :glob:
8
8
 
9
- API <_api/dodal>
9
+ reference/*
10
10
  genindex
11
11
  Release Notes <https://github.com/DiamondLightSource/dodal/releases>
12
12
  ```
@@ -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.8.0a5",
18
+ "ophyd-async >= 0.9.0a1",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -27,7 +27,7 @@ dependencies = [
27
27
  "opencv-python-headless", # For pin-tip detection.
28
28
  "aioca", # Required for CA support with ophyd-async.
29
29
  "p4p", # Required for PVA support with ophyd-async.
30
- "numpy<2.0", # Unpin when https://github.com/bluesky/ophyd-async/issues/387 resolved
30
+ "numpy",
31
31
  "aiofiles",
32
32
  "aiohttp",
33
33
  "redis",
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.36.2
3
+ Version: 1.37.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.8.0a5
219
+ Requires-Dist: ophyd-async>=0.9.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -228,7 +228,7 @@ Requires-Dist: pydantic>=2.0
228
228
  Requires-Dist: opencv-python-headless
229
229
  Requires-Dist: aioca
230
230
  Requires-Dist: p4p
231
- Requires-Dist: numpy<2.0
231
+ Requires-Dist: numpy
232
232
  Requires-Dist: aiofiles
233
233
  Requires-Dist: aiohttp
234
234
  Requires-Dist: redis
@@ -29,7 +29,6 @@ pyproject.toml
29
29
  .vscode/launch.json
30
30
  .vscode/settings.json
31
31
  .vscode/tasks.json
32
- docs/_api.rst
33
32
  docs/conf.py
34
33
  docs/explanations.md
35
34
  docs/genindex.md
@@ -67,6 +66,7 @@ docs/how-to/write-tests.md
67
66
  docs/how-to/zocalo.rst
68
67
  docs/images/dls-logo.svg
69
68
  docs/images/excalidraw-example.svg
69
+ docs/reference/api.md
70
70
  docs/reference/device-standards.rst
71
71
  docs/reference/standards.rst
72
72
  docs/tutorials/get_started.rst
@@ -90,6 +90,7 @@ src/dodal/beamlines/README.md
90
90
  src/dodal/beamlines/__init__.py
91
91
  src/dodal/beamlines/adsim.py
92
92
  src/dodal/beamlines/b01_1.py
93
+ src/dodal/beamlines/i02_1.py
93
94
  src/dodal/beamlines/i03.py
94
95
  src/dodal/beamlines/i04.py
95
96
  src/dodal/beamlines/i10.py
@@ -120,8 +121,8 @@ src/dodal/devices/adsim.py
120
121
  src/dodal/devices/aperture.py
121
122
  src/dodal/devices/aperturescatterguard.py
122
123
  src/dodal/devices/apple2_undulator.py
123
- src/dodal/devices/attenuator.py
124
124
  src/dodal/devices/backlight.py
125
+ src/dodal/devices/bimorph_mirror.py
125
126
  src/dodal/devices/cryostream.py
126
127
  src/dodal/devices/dcm.py
127
128
  src/dodal/devices/diamond_filter.py
@@ -160,6 +161,15 @@ src/dodal/devices/zebra.py
160
161
  src/dodal/devices/zebra_controlled_shutter.py
161
162
  src/dodal/devices/areadetector/plugins/CAM.py
162
163
  src/dodal/devices/areadetector/plugins/MJPG.py
164
+ src/dodal/devices/attenuator/attenuator.py
165
+ src/dodal/devices/attenuator/filter.py
166
+ src/dodal/devices/attenuator/filter_selections.py
167
+ src/dodal/devices/current_amplifiers/__init__.py
168
+ src/dodal/devices/current_amplifiers/current_amplifier.py
169
+ src/dodal/devices/current_amplifiers/current_amplifier_detector.py
170
+ src/dodal/devices/current_amplifiers/femto.py
171
+ src/dodal/devices/current_amplifiers/sr570.py
172
+ src/dodal/devices/current_amplifiers/struck_scaler_counter.py
163
173
  src/dodal/devices/detector/__init__.py
164
174
  src/dodal/devices/detector/det_dim_constants.py
165
175
  src/dodal/devices/detector/det_dist_to_beam_converter.py
@@ -167,9 +177,15 @@ src/dodal/devices/detector/det_resolution.py
167
177
  src/dodal/devices/detector/detector.py
168
178
  src/dodal/devices/detector/detector_motion.py
169
179
  src/dodal/devices/i03/__init__.py
180
+ src/dodal/devices/i03/beamstop.py
170
181
  src/dodal/devices/i04/transfocator.py
171
182
  src/dodal/devices/i10/i10_apple2.py
172
183
  src/dodal/devices/i10/i10_setting_data.py
184
+ src/dodal/devices/i10/mirrors.py
185
+ src/dodal/devices/i10/slits.py
186
+ src/dodal/devices/i10/rasor/rasor_current_amp.py
187
+ src/dodal/devices/i10/rasor/rasor_motors.py
188
+ src/dodal/devices/i10/rasor/rasor_scaler_cards.py
173
189
  src/dodal/devices/i20_1/__init__.py
174
190
  src/dodal/devices/i22/dcm.py
175
191
  src/dodal/devices/i22/fswitch.py
@@ -238,6 +254,7 @@ system_tests/test_undulator_system.py
238
254
  system_tests/test_zebra_system.py
239
255
  system_tests/test_zocalo_results.py
240
256
  tests/__init__.py
257
+ tests/conftest.py
241
258
  tests/fake_beamline.py
242
259
  tests/fake_beamline_all_devices_raise_exception.py
243
260
  tests/fake_beamline_broken_dependency.py
@@ -266,6 +283,8 @@ tests/common/beamlines/test_device_helpers.py
266
283
  tests/common/beamlines/test_device_instantiation.py
267
284
  tests/devices/__init__.py
268
285
  tests/devices/test_diamond_filter.py
286
+ tests/devices/i03/__init__.py
287
+ tests/devices/i03/test_beamstop.py
269
288
  tests/devices/i04/__init__.py
270
289
  tests/devices/i04/test_transfocator.py
271
290
  tests/devices/i10/test_i10Apple2.py
@@ -290,6 +309,7 @@ tests/devices/unit_tests/test_backlight.py
290
309
  tests/devices/unit_tests/test_bart_robot.py
291
310
  tests/devices/unit_tests/test_beam_converter.py
292
311
  tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
312
+ tests/devices/unit_tests/test_bimorph_mirror.py
293
313
  tests/devices/unit_tests/test_dcm.py
294
314
  tests/devices/unit_tests/test_display.configuration
295
315
  tests/devices/unit_tests/test_eiger.py
@@ -320,6 +340,8 @@ tests/devices/unit_tests/test_xspress3.py
320
340
  tests/devices/unit_tests/test_zebra.py
321
341
  tests/devices/unit_tests/test_zocalo_interaction.py
322
342
  tests/devices/unit_tests/test_zocalo_results.py
343
+ tests/devices/unit_tests/current_amplifier/test_femto.py
344
+ tests/devices/unit_tests/current_amplifier/test_sr570.py
323
345
  tests/devices/unit_tests/detector/test_det_dim_constants.py
324
346
  tests/devices/unit_tests/detector/test_det_resolution.py
325
347
  tests/devices/unit_tests/detector/test_detector.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async>=0.8.0a5
3
+ ophyd-async>=0.9.0a1
4
4
  bluesky
5
5
  pyepics
6
6
  dataclasses-json
@@ -12,7 +12,7 @@ pydantic>=2.0
12
12
  opencv-python-headless
13
13
  aioca
14
14
  p4p
15
- numpy<2.0
15
+ numpy
16
16
  aiofiles
17
17
  aiohttp
18
18
  redis
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.36.2'
16
- __version_tuple__ = version_tuple = (1, 36, 2)
15
+ __version__ = version = '1.37.0'
16
+ __version_tuple__ = version_tuple = (1, 37, 0)
@@ -0,0 +1,37 @@
1
+ """Beamline i02-1 is also known as VMXm, or I02J"""
2
+
3
+ from dodal.common.beamlines.beamline_utils import (
4
+ device_factory,
5
+ )
6
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
7
+ from dodal.devices.attenuator.attenuator import EnumFilterAttenuator
8
+ from dodal.devices.attenuator.filter_selections import (
9
+ I02_1FilterFourSelections,
10
+ I02_1FilterOneSelections,
11
+ I02_1FilterThreeSelections,
12
+ I02_1FilterTwoSelections,
13
+ )
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("i02-1")
18
+ PREFIX = BeamlinePrefix(BL, suffix="J")
19
+ set_log_beamline(BL)
20
+ set_utils_beamline(BL)
21
+
22
+
23
+ @device_factory()
24
+ def attenuator() -> EnumFilterAttenuator:
25
+ """Get the i02-1 attenuator device, instantiate it if it hasn't already been.
26
+ If this is called when already instantiated in i02-1, it will return the existing object.
27
+ """
28
+
29
+ return EnumFilterAttenuator(
30
+ f"{PREFIX.beamline_prefix}-OP-ATTN-01:",
31
+ (
32
+ I02_1FilterOneSelections,
33
+ I02_1FilterTwoSelections,
34
+ I02_1FilterThreeSelections,
35
+ I02_1FilterFourSelections,
36
+ ),
37
+ )
@@ -13,7 +13,7 @@ from dodal.devices.aperturescatterguard import (
13
13
  ApertureScatterguard,
14
14
  load_positions_from_beamline_parameters,
15
15
  )
16
- from dodal.devices.attenuator import Attenuator
16
+ from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
17
17
  from dodal.devices.backlight import Backlight
18
18
  from dodal.devices.cryostream import CryoStream
19
19
  from dodal.devices.dcm import DCM
@@ -24,6 +24,7 @@ from dodal.devices.eiger import EigerDetector
24
24
  from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
25
25
  from dodal.devices.flux import Flux
26
26
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
27
+ from dodal.devices.i03.beamstop import Beamstop
27
28
  from dodal.devices.motors import XYZPositioner
28
29
  from dodal.devices.oav.oav_detector import OAV
29
30
  from dodal.devices.oav.oav_parameters import OAVConfig
@@ -80,12 +81,12 @@ def aperture_scatterguard(
80
81
 
81
82
  def attenuator(
82
83
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
83
- ) -> Attenuator:
84
+ ) -> BinaryFilterAttenuator:
84
85
  """Get the i03 attenuator device, instantiate it if it hasn't already been.
85
86
  If this is called when already instantiated in i03, it will return the existing object.
86
87
  """
87
88
  return device_instantiation(
88
- Attenuator,
89
+ BinaryFilterAttenuator,
89
90
  "attenuator",
90
91
  "-EA-ATTN-01:",
91
92
  wait_for_connection,
@@ -93,6 +94,22 @@ def attenuator(
93
94
  )
94
95
 
95
96
 
97
+ def beamstop(
98
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
99
+ ) -> Beamstop:
100
+ """Get the i03 beamstop device, instantiate it if it hasn't already been.
101
+ If this is called when already instantiated in i03, it will return the existing object.
102
+ """
103
+ return device_instantiation(
104
+ Beamstop,
105
+ "beamstop",
106
+ "-MO-BS-01:",
107
+ wait_for_connection,
108
+ fake_with_ophyd_sim,
109
+ beamline_parameters=get_beamline_parameters(),
110
+ )
111
+
112
+
96
113
  def dcm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> DCM:
97
114
  """Get the i03 DCM device, instantiate it if it hasn't already been.
98
115
  If this is called when already instantiated in i03, it will return the existing object.
@@ -6,7 +6,7 @@ from dodal.devices.aperturescatterguard import (
6
6
  ApertureScatterguard,
7
7
  load_positions_from_beamline_parameters,
8
8
  )
9
- from dodal.devices.attenuator import Attenuator
9
+ from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
10
10
  from dodal.devices.backlight import Backlight
11
11
  from dodal.devices.dcm import DCM
12
12
  from dodal.devices.detector import DetectorParams
@@ -138,12 +138,12 @@ def sample_shutter(
138
138
 
139
139
  def attenuator(
140
140
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
141
- ) -> Attenuator:
141
+ ) -> BinaryFilterAttenuator:
142
142
  """Get the i04 attenuator device, instantiate it if it hasn't already been.
143
143
  If this is called when already instantiated in i04, it will return the existing object.
144
144
  """
145
145
  return device_instantiation(
146
- Attenuator,
146
+ BinaryFilterAttenuator,
147
147
  "attenuator",
148
148
  "-EA-ATTN-01:",
149
149
  wait_for_connection,