dls-dodal 1.36.3__tar.gz → 1.38.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 (416) hide show
  1. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_tox.yml +3 -0
  2. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.pre-commit-config.yaml +8 -0
  3. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/PKG-INFO +4 -3
  4. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/conftest.py +3 -3
  5. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/reviews.md +1 -1
  6. dls_dodal-1.38.0/docs/how-to/zocalo.rst +71 -0
  7. dls_dodal-1.38.0/docs/reference/api.md +28 -0
  8. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/reference.md +1 -1
  9. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/pyproject.toml +16 -1
  10. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/PKG-INFO +4 -3
  11. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/SOURCES.txt +32 -5
  12. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/requires.txt +2 -1
  13. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/_version.py +2 -2
  14. dls_dodal-1.38.0/src/dodal/beamlines/i02_1.py +37 -0
  15. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i03.py +34 -5
  16. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i04.py +16 -5
  17. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i10.py +105 -0
  18. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i13_1.py +20 -2
  19. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i22.py +15 -0
  20. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i24.py +14 -2
  21. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/p99.py +6 -2
  22. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/training_rig.py +10 -1
  23. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/crystal_metadata.py +3 -3
  24. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/udc_directory_provider.py +3 -1
  25. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/aperturescatterguard.py +3 -0
  26. {dls_dodal-1.36.3/src/dodal/devices → dls_dodal-1.38.0/src/dodal/devices/attenuator}/attenuator.py +29 -1
  27. dls_dodal-1.38.0/src/dodal/devices/attenuator/filter.py +11 -0
  28. dls_dodal-1.38.0/src/dodal/devices/attenuator/filter_selections.py +72 -0
  29. dls_dodal-1.38.0/src/dodal/devices/bimorph_mirror.py +151 -0
  30. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/__init__.py +34 -0
  31. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/current_amplifier.py +103 -0
  32. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +109 -0
  33. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/femto.py +143 -0
  34. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/sr570.py +214 -0
  35. dls_dodal-1.38.0/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +79 -0
  36. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/det_dim_constants.py +15 -0
  37. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/eiger_odin.py +3 -3
  38. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/fast_grid_scan.py +8 -3
  39. dls_dodal-1.38.0/src/dodal/devices/flux.py +14 -0
  40. dls_dodal-1.38.0/src/dodal/devices/i03/beamstop.py +85 -0
  41. dls_dodal-1.38.0/src/dodal/devices/i04/transfocator.py +96 -0
  42. dls_dodal-1.38.0/src/dodal/devices/i10/rasor/rasor_current_amp.py +72 -0
  43. dls_dodal-1.38.0/src/dodal/devices/i10/rasor/rasor_motors.py +62 -0
  44. dls_dodal-1.38.0/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +12 -0
  45. dls_dodal-1.38.0/src/dodal/devices/i13_1/merlin.py +33 -0
  46. dls_dodal-1.38.0/src/dodal/devices/i13_1/merlin_controller.py +52 -0
  47. dls_dodal-1.38.0/src/dodal/devices/i13_1/merlin_io.py +17 -0
  48. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/beam_center.py +1 -1
  49. dls_dodal-1.38.0/src/dodal/devices/p45.py +55 -0
  50. dls_dodal-1.38.0/src/dodal/devices/p99/sample_stage.py +11 -0
  51. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/robot.py +2 -2
  52. dls_dodal-1.38.0/src/dodal/devices/s4_slit_gaps.py +12 -0
  53. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/undulator_dcm.py +9 -11
  54. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/util/lookup_tables.py +14 -10
  55. {dls_dodal-1.36.3/src/dodal/devices → dls_dodal-1.38.0/src/dodal/devices/zebra}/zebra.py +9 -33
  56. dls_dodal-1.38.0/src/dodal/devices/zebra/zebra_constants_mapping.py +96 -0
  57. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/zocalo/zocalo_interaction.py +2 -1
  58. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/zocalo/zocalo_results.py +22 -2
  59. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/log.py +2 -2
  60. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plans/wrapped.py +3 -3
  61. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_zebra_system.py +3 -2
  62. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/beamlines/test_beamline_utils.py +6 -7
  63. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/beamlines/test_device_instantiation.py +6 -6
  64. dls_dodal-1.38.0/tests/devices/i03/test_beamstop.py +66 -0
  65. dls_dodal-1.38.0/tests/devices/i04/test_transfocator.py +74 -0
  66. dls_dodal-1.38.0/tests/devices/i13_1/test_merlin.py +106 -0
  67. dls_dodal-1.38.0/tests/devices/unit_tests/current_amplifier/test_femto.py +309 -0
  68. dls_dodal-1.38.0/tests/devices/unit_tests/current_amplifier/test_sr570.py +309 -0
  69. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/detector/test_det_resolution.py +6 -6
  70. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/p99/test_p99_stage.py +10 -5
  71. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +7 -0
  72. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_attenuator.py +10 -6
  73. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_bart_robot.py +5 -4
  74. dls_dodal-1.38.0/tests/devices/unit_tests/test_bimorph_mirror.py +167 -0
  75. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_shutter.py +4 -4
  76. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_undulator_dcm.py +38 -26
  77. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_zebra.py +1 -1
  78. dls_dodal-1.38.0/tests/devices/unit_tests/test_zebra_constants_mapping.py +42 -0
  79. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_zocalo_results.py +31 -2
  80. dls_dodal-1.38.0/tests/devices/unit_tests/util/__init__.py +0 -0
  81. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/util/test_lookup_tables.py +22 -12
  82. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/util/test_save_panda.py +9 -9
  83. dls_dodal-1.38.0/tests/fake_zocalo/__init__.py +0 -0
  84. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_zocalo/__main__.py +3 -3
  85. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plans/test_compliance.py +6 -6
  86. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_utils.py +6 -8
  87. dls_dodal-1.38.0/tests/unit_tests/__init__.py +0 -0
  88. dls_dodal-1.36.3/docs/_api.rst +0 -16
  89. dls_dodal-1.36.3/docs/how-to/zocalo.rst +0 -13
  90. dls_dodal-1.36.3/src/dodal/devices/flux.py +0 -7
  91. dls_dodal-1.36.3/src/dodal/devices/i04/transfocator.py +0 -82
  92. dls_dodal-1.36.3/src/dodal/devices/p45.py +0 -44
  93. dls_dodal-1.36.3/src/dodal/devices/p99/sample_stage.py +0 -37
  94. dls_dodal-1.36.3/src/dodal/devices/s4_slit_gaps.py +0 -8
  95. dls_dodal-1.36.3/tests/devices/i04/test_transfocator.py +0 -66
  96. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.copier-answers.yml +0 -0
  97. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.devcontainer/devcontainer.json +0 -0
  98. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/CODEOWNERS +0 -0
  99. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/CONTRIBUTING.md +0 -0
  100. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  101. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/actions/install_requirements/action.yml +0 -0
  102. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/dependabot.yml +0 -0
  103. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/pages/index.html +0 -0
  104. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/pages/make_switcher.py +0 -0
  105. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_check.yml +0 -0
  106. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_dist.yml +0 -0
  107. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_docs.yml +0 -0
  108. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_pypi.yml +0 -0
  109. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_release.yml +0 -0
  110. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/_test.yml +0 -0
  111. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/ci.yml +0 -0
  112. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.github/workflows/periodic.yml +0 -0
  113. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.gitignore +0 -0
  114. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.vscode/extensions.json +0 -0
  115. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.vscode/launch.json +0 -0
  116. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.vscode/settings.json +0 -0
  117. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/.vscode/tasks.json +0 -0
  118. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/Dockerfile +0 -0
  119. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/LICENSE +0 -0
  120. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/README.md +0 -0
  121. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/catalog-info.yaml +0 -0
  122. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/_templates/autosummary/class.rst +0 -0
  123. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/_templates/autosummary/module.rst +0 -0
  124. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/_templates/custom-module-template.rst +0 -0
  125. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/assets/zocalo.png +0 -0
  126. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/conf.py +0 -0
  127. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  128. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  129. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  130. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  131. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions/COPYME +0 -0
  132. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations/decisions.md +0 -0
  133. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/explanations.md +0 -0
  134. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/genindex.md +0 -0
  135. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/build-docs.md +0 -0
  136. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/contribute.md +0 -0
  137. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/coverage.md +0 -0
  138. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/create-beamline.rst +0 -0
  139. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/dev-install.md +0 -0
  140. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/excalidraw.md +0 -0
  141. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/lint.md +0 -0
  142. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/lock-requirements.md +0 -0
  143. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  144. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/make-release.md +0 -0
  145. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/move-code.rst +0 -0
  146. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/pypi.md +0 -0
  147. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/run-tests.md +0 -0
  148. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/static-analysis.md +0 -0
  149. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/update-template.md +0 -0
  150. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to/write-tests.md +0 -0
  151. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/how-to.md +0 -0
  152. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/images/dls-logo.svg +0 -0
  153. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/images/excalidraw-example.svg +0 -0
  154. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/index.md +0 -0
  155. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/reference/device-standards.rst +0 -0
  156. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/reference/standards.rst +0 -0
  157. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/tutorials/get_started.rst +0 -0
  158. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/tutorials/installation.md +0 -0
  159. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/docs/tutorials.md +0 -0
  160. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/pull_request_template.md +0 -0
  161. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/setup.cfg +0 -0
  162. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/__init__.py +0 -0
  163. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  164. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  165. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  166. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/__init__.py +0 -0
  167. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/__main__.py +0 -0
  168. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  169. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  170. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/README.md +0 -0
  171. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/__init__.py +0 -0
  172. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/adsim.py +0 -0
  173. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/b01_1.py +0 -0
  174. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i20_1.py +0 -0
  175. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/i23.py +0 -0
  176. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/p38.py +0 -0
  177. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/beamlines/p45.py +0 -0
  178. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/cli.py +0 -0
  179. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/__init__.py +0 -0
  180. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/beamlines/__init__.py +0 -0
  181. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  182. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  183. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  184. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/coordination.py +0 -0
  185. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/maths.py +0 -0
  186. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/signal_utils.py +0 -0
  187. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/types.py +0 -0
  188. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/common/visit.py +0 -0
  189. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/CTAB.py +0 -0
  190. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/__init__.py +0 -0
  191. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/adsim.py +0 -0
  192. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/aperture.py +0 -0
  193. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/apple2_undulator.py +0 -0
  194. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  195. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  196. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/backlight.py +0 -0
  197. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/cryostream.py +0 -0
  198. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/dcm.py +0 -0
  199. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/__init__.py +0 -0
  200. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  201. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  202. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/detector.py +0 -0
  203. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  204. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/diamond_filter.py +0 -0
  205. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/eiger.py +0 -0
  206. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  207. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/focusing_mirror.py +0 -0
  208. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/hutch_shutter.py +0 -0
  209. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i03/__init__.py +0 -0
  210. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  211. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  212. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i10/mirrors.py +0 -0
  213. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i10/slits.py +0 -0
  214. {dls_dodal-1.36.3/src/dodal/devices/i20_1 → dls_dodal-1.38.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  215. {dls_dodal-1.36.3/src/dodal/devices/i24 → dls_dodal-1.38.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  216. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i22/dcm.py +0 -0
  217. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i22/fswitch.py +0 -0
  218. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i22/nxsas.py +0 -0
  219. {dls_dodal-1.36.3/src/dodal/devices/oav → dls_dodal-1.38.0/src/dodal/devices/i24}/__init__.py +0 -0
  220. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/aperture.py +0 -0
  221. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/beamstop.py +0 -0
  222. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/dcm.py +0 -0
  223. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  224. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  225. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  226. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  227. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/pmac.py +0 -0
  228. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/i24/vgonio.py +0 -0
  229. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/ipin.py +0 -0
  230. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/linkam3.py +0 -0
  231. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  232. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/motors.py +0 -0
  233. {dls_dodal-1.36.3/src/dodal/devices/p99 → dls_dodal-1.38.0/src/dodal/devices/oav}/__init__.py +0 -0
  234. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  235. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  236. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  237. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  238. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  239. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  240. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  241. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  242. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  243. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
  244. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  245. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/oav/utils.py +0 -0
  246. {dls_dodal-1.36.3/src/dodal/devices/training_rig → dls_dodal-1.38.0/src/dodal/devices/p99}/__init__.py +0 -0
  247. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/pgm.py +0 -0
  248. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  249. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/qbpm.py +0 -0
  250. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/scatterguard.py +0 -0
  251. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/scintillator.py +0 -0
  252. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/slits.py +0 -0
  253. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/smargon.py +0 -0
  254. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/status.py +0 -0
  255. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/synchrotron.py +0 -0
  256. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/tetramm.py +0 -0
  257. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/thawer.py +0 -0
  258. {dls_dodal-1.36.3/src/dodal/devices/util → dls_dodal-1.38.0/src/dodal/devices/training_rig}/__init__.py +0 -0
  259. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  260. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/turbo_slit.py +0 -0
  261. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/undulator.py +0 -0
  262. {dls_dodal-1.36.3/src/dodal/plan_stubs → dls_dodal-1.38.0/src/dodal/devices/util}/__init__.py +0 -0
  263. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  264. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/util/epics_util.py +0 -0
  265. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/util/motor_utils.py +0 -0
  266. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/util/test_utils.py +0 -0
  267. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  268. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/webcam.py +0 -0
  269. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  270. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  271. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  272. {dls_dodal-1.36.3/system_tests → dls_dodal-1.38.0/src/dodal/devices/zebra}/__init__.py +0 -0
  273. {dls_dodal-1.36.3/src/dodal/devices → dls_dodal-1.38.0/src/dodal/devices/zebra}/zebra_controlled_shutter.py +0 -0
  274. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  275. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  276. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  277. {dls_dodal-1.36.3/tests → dls_dodal-1.38.0/src/dodal/plan_stubs}/__init__.py +0 -0
  278. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  279. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plan_stubs/data_session.py +0 -0
  280. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  281. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  282. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plans/__init__.py +0 -0
  283. {dls_dodal-1.36.3/src/dodal/devices/util → dls_dodal-1.38.0/src/dodal/plans}/save_panda.py +0 -0
  284. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/plans/scanspec.py +0 -0
  285. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/src/dodal/utils.py +0 -0
  286. {dls_dodal-1.36.3/tests/beamlines → dls_dodal-1.38.0/system_tests}/__init__.py +0 -0
  287. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_adsim.py +0 -0
  288. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  289. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_eiger_system.py +0 -0
  290. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_gridscan_system.py +0 -0
  291. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_oav_system.py +0 -0
  292. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_oav_to_redis_system.py +0 -0
  293. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_slit_gaps_system.py +0 -0
  294. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_smargon_system.py +0 -0
  295. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_synchrotron_system.py +0 -0
  296. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_undulator_system.py +0 -0
  297. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/system_tests/test_zocalo_results.py +0 -0
  298. {dls_dodal-1.36.3/tests/beamlines/unit_tests → dls_dodal-1.38.0/tests}/__init__.py +0 -0
  299. {dls_dodal-1.36.3/tests/common → dls_dodal-1.38.0/tests/beamlines}/__init__.py +0 -0
  300. {dls_dodal-1.36.3/tests/common/beamlines → dls_dodal-1.38.0/tests/beamlines/unit_tests}/__init__.py +0 -0
  301. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  302. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  303. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  304. {dls_dodal-1.36.3/tests/devices → dls_dodal-1.38.0/tests/common}/__init__.py +0 -0
  305. {dls_dodal-1.36.3/tests/devices/i04 → dls_dodal-1.38.0/tests/common/beamlines}/__init__.py +0 -0
  306. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  307. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  308. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/test_coordination.py +0 -0
  309. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/test_crystal_metadata.py +0 -0
  310. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/test_maths.py +0 -0
  311. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/test_udc_directory_provider.py +0 -0
  312. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/common/test_visit.py +0 -0
  313. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/conftest.py +0 -0
  314. {dls_dodal-1.36.3/tests/devices/unit_tests → dls_dodal-1.38.0/tests/devices}/__init__.py +0 -0
  315. {dls_dodal-1.36.3/tests/devices/unit_tests/i24 → dls_dodal-1.38.0/tests/devices/i03}/__init__.py +0 -0
  316. {dls_dodal-1.36.3/tests/devices/unit_tests/oav → dls_dodal-1.38.0/tests/devices/i04}/__init__.py +0 -0
  317. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  318. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  319. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  320. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  321. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  322. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  323. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  324. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i22/test_dcm.py +0 -0
  325. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i22/test_fswitch.py +0 -0
  326. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/i22/test_metadataholder.py +0 -0
  327. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/test_diamond_filter.py +0 -0
  328. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  329. {dls_dodal-1.36.3/tests/devices/unit_tests/util → dls_dodal-1.38.0/tests/devices/unit_tests}/__init__.py +0 -0
  330. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/conftest.py +0 -0
  331. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  332. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  333. {dls_dodal-1.36.3/tests/fake_zocalo → dls_dodal-1.38.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  334. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  335. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  336. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  337. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  338. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  339. {dls_dodal-1.36.3/tests/unit_tests → dls_dodal-1.38.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  340. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  341. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  342. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  343. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  344. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  345. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  346. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  347. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  348. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  349. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  350. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  351. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  352. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  353. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  354. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  355. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  356. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  357. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  358. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_dcm.py +0 -0
  359. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  360. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_eiger.py +0 -0
  361. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  362. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
  363. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  364. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  365. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  366. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  367. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  368. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_odin.py +0 -0
  369. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  370. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  371. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_slits.py +0 -0
  372. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  373. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_status.py +0 -0
  374. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  375. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
  376. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  377. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_undulator.py +0 -0
  378. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_utils.py +0 -0
  379. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  380. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  381. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  382. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  383. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  384. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  385. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  386. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline.py +0 -0
  387. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  388. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_broken_dependency.py +0 -0
  389. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_dependencies.py +0 -0
  390. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  391. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  392. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_beamline_some_devices_working.py +0 -0
  393. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_device_factory_beamline.py +0 -0
  394. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_zocalo/README.rst +0 -0
  395. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  396. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  397. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  398. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  399. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plans/conftest.py +0 -0
  400. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plans/test_scanspec.py +0 -0
  401. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/plans/test_wrapped.py +0 -0
  402. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  403. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_cli.py +0 -0
  404. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/bad_beamlineParameters +0 -0
  405. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/i04_beamlineParameters +0 -0
  406. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  407. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  408. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  409. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  410. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  411. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  412. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  413. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/topup_long_delay.txt +0 -0
  414. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/test_data/topup_short_params.txt +0 -0
  415. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/unit_tests/test_cli.py +0 -0
  416. {dls_dodal-1.36.3 → dls_dodal-1.38.0}/tests/unit_tests/test_log.py +0 -0
@@ -20,5 +20,8 @@ jobs:
20
20
  - name: Install python packages
21
21
  uses: ./.github/actions/install_requirements
22
22
 
23
+ - name: Run import linter
24
+ run: lint-imports
25
+
23
26
  - name: Run tox
24
27
  run: tox -e ${{ inputs.tox }}
@@ -22,3 +22,11 @@ repos:
22
22
  entry: ruff format --force-exclude
23
23
  types: [python]
24
24
  require_serial: true
25
+
26
+ - id: import-contracts
27
+ name: Ensure import directionality
28
+ pass_filenames: false
29
+ language: system
30
+ entry: lint-imports
31
+ types: [python]
32
+ require_serial: false
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.36.3
3
+ Version: 1.38.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
@@ -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
@@ -237,6 +237,7 @@ Requires-Dist: scanspec>=0.7.3
237
237
  Provides-Extra: dev
238
238
  Requires-Dist: black; extra == "dev"
239
239
  Requires-Dist: diff-cover; extra == "dev"
240
+ Requires-Dist: import-linter; extra == "dev"
240
241
  Requires-Dist: mypy; extra == "dev"
241
242
  Requires-Dist: myst-parser; extra == "dev"
242
243
  Requires-Dist: ophyd_async[sim]; extra == "dev"
@@ -53,9 +53,9 @@ def patch_open_to_prevent_dls_reads_in_tests():
53
53
  requested_path = Path(args[0])
54
54
  if requested_path.is_absolute():
55
55
  for p in BANNED_PATHS:
56
- assert not requested_path.is_relative_to(
57
- p
58
- ), 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
+ )
59
59
  return unpatched_open(*args, **kwargs)
60
60
 
61
61
  with patch("builtins.open", side_effect=patched_open):
@@ -51,6 +51,6 @@ New members should be regular contributors to dodal and should have been "shadow
51
51
  - Adherence to the review standards above as well as the [repository standards](../reference/standards.rst) and [device standards](../reference/device-standards.rst).
52
52
  - Independent (i.e. not just to satisfy a reviewer) motivation to make sure all code in dodal is well-tested. Use of unit and system tests as appropriate. Clear effort made to keep test coverage high (>90%).
53
53
  - Advanced understanding of bluesky and ophyd-async including concepts and best practices, such as how to appropriately split logic between devices/plans/callbacks.
54
- - Humility in the use of reviewing as a tool in a way that balances the need to preserve quality with the need for progress. Appropriate use of the Must/Should/Could/Nit system documented above is helpful in showing this, as it gives the reviewer the opportunity to weight their comments in terms of project impact. They should also demonstrate similar humiliary as a reviewee.
54
+ - Humility in the use of reviewing as a tool in a way that balances the need to preserve quality with the need for progress. Appropriate use of the Must/Should/Could/Nit system documented above is helpful in showing this, as it gives the reviewer the opportunity to weight their comments in terms of project impact. They should also demonstrate similar humility as a reviewee.
55
55
 
56
56
  Additionally, they should be regularly raising issues in the repository and demonstrating the ability to write well formed issues, with well defined acceptance criteria, that are understandable without large amounts of context.
@@ -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
  ```
@@ -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",
@@ -44,6 +44,7 @@ requires-python = ">=3.10"
44
44
  dev = [
45
45
  "black",
46
46
  "diff-cover",
47
+ "import-linter",
47
48
  "mypy",
48
49
  # Commented out due to dependency version conflict with pydantic 1.x
49
50
  # "copier",
@@ -181,3 +182,17 @@ lint.select = [
181
182
  # Remove this line to forbid private member access in tests
182
183
  "tests/**/*" = ["SLF001"]
183
184
  "system_tests/**/*" = ["SLF001"]
185
+
186
+ [tool.importlinter]
187
+ root_package = "dodal"
188
+
189
+ [[tool.importlinter.contracts]]
190
+ name = "Common cannot import from beamlines"
191
+ type = "forbidden"
192
+ source_modules = ["dodal.common"]
193
+ forbidden_modules = ["dodal.beamlines"]
194
+
195
+ [[tool.importlinter.contracts]]
196
+ name = "Enforce import order"
197
+ type = "layers"
198
+ layers = ["dodal.plans", "dodal.beamlines", "dodal.devices"]
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.36.3
3
+ Version: 1.38.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
@@ -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
@@ -237,6 +237,7 @@ Requires-Dist: scanspec>=0.7.3
237
237
  Provides-Extra: dev
238
238
  Requires-Dist: black; extra == "dev"
239
239
  Requires-Dist: diff-cover; extra == "dev"
240
+ Requires-Dist: import-linter; extra == "dev"
240
241
  Requires-Dist: mypy; extra == "dev"
241
242
  Requires-Dist: myst-parser; extra == "dev"
242
243
  Requires-Dist: ophyd_async[sim]; extra == "dev"
@@ -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
@@ -156,10 +157,17 @@ src/dodal/devices/undulator_dcm.py
156
157
  src/dodal/devices/watsonmarlow323_pump.py
157
158
  src/dodal/devices/webcam.py
158
159
  src/dodal/devices/xbpm_feedback.py
159
- src/dodal/devices/zebra.py
160
- src/dodal/devices/zebra_controlled_shutter.py
161
160
  src/dodal/devices/areadetector/plugins/CAM.py
162
161
  src/dodal/devices/areadetector/plugins/MJPG.py
162
+ src/dodal/devices/attenuator/attenuator.py
163
+ src/dodal/devices/attenuator/filter.py
164
+ src/dodal/devices/attenuator/filter_selections.py
165
+ src/dodal/devices/current_amplifiers/__init__.py
166
+ src/dodal/devices/current_amplifiers/current_amplifier.py
167
+ src/dodal/devices/current_amplifiers/current_amplifier_detector.py
168
+ src/dodal/devices/current_amplifiers/femto.py
169
+ src/dodal/devices/current_amplifiers/sr570.py
170
+ src/dodal/devices/current_amplifiers/struck_scaler_counter.py
163
171
  src/dodal/devices/detector/__init__.py
164
172
  src/dodal/devices/detector/det_dim_constants.py
165
173
  src/dodal/devices/detector/det_dist_to_beam_converter.py
@@ -167,11 +175,19 @@ src/dodal/devices/detector/det_resolution.py
167
175
  src/dodal/devices/detector/detector.py
168
176
  src/dodal/devices/detector/detector_motion.py
169
177
  src/dodal/devices/i03/__init__.py
178
+ src/dodal/devices/i03/beamstop.py
170
179
  src/dodal/devices/i04/transfocator.py
171
180
  src/dodal/devices/i10/i10_apple2.py
172
181
  src/dodal/devices/i10/i10_setting_data.py
173
182
  src/dodal/devices/i10/mirrors.py
174
183
  src/dodal/devices/i10/slits.py
184
+ src/dodal/devices/i10/rasor/rasor_current_amp.py
185
+ src/dodal/devices/i10/rasor/rasor_motors.py
186
+ src/dodal/devices/i10/rasor/rasor_scaler_cards.py
187
+ src/dodal/devices/i13_1/__init__.py
188
+ src/dodal/devices/i13_1/merlin.py
189
+ src/dodal/devices/i13_1/merlin_controller.py
190
+ src/dodal/devices/i13_1/merlin_io.py
175
191
  src/dodal/devices/i20_1/__init__.py
176
192
  src/dodal/devices/i22/dcm.py
177
193
  src/dodal/devices/i22/fswitch.py
@@ -209,10 +225,13 @@ src/dodal/devices/util/adjuster_plans.py
209
225
  src/dodal/devices/util/epics_util.py
210
226
  src/dodal/devices/util/lookup_tables.py
211
227
  src/dodal/devices/util/motor_utils.py
212
- src/dodal/devices/util/save_panda.py
213
228
  src/dodal/devices/util/test_utils.py
214
229
  src/dodal/devices/xspress3/xspress3.py
215
230
  src/dodal/devices/xspress3/xspress3_channel.py
231
+ src/dodal/devices/zebra/__init__.py
232
+ src/dodal/devices/zebra/zebra.py
233
+ src/dodal/devices/zebra/zebra_constants_mapping.py
234
+ src/dodal/devices/zebra/zebra_controlled_shutter.py
216
235
  src/dodal/devices/zocalo/__init__.py
217
236
  src/dodal/devices/zocalo/zocalo_constants.py
218
237
  src/dodal/devices/zocalo/zocalo_interaction.py
@@ -224,6 +243,7 @@ src/dodal/plan_stubs/data_session.py
224
243
  src/dodal/plan_stubs/motor_utils.py
225
244
  src/dodal/plan_stubs/wrapped.py
226
245
  src/dodal/plans/__init__.py
246
+ src/dodal/plans/save_panda.py
227
247
  src/dodal/plans/scanspec.py
228
248
  src/dodal/plans/wrapped.py
229
249
  system_tests/__init__.py
@@ -269,6 +289,8 @@ tests/common/beamlines/test_device_helpers.py
269
289
  tests/common/beamlines/test_device_instantiation.py
270
290
  tests/devices/__init__.py
271
291
  tests/devices/test_diamond_filter.py
292
+ tests/devices/i03/__init__.py
293
+ tests/devices/i03/test_beamstop.py
272
294
  tests/devices/i04/__init__.py
273
295
  tests/devices/i04/test_transfocator.py
274
296
  tests/devices/i10/test_i10Apple2.py
@@ -278,6 +300,7 @@ tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl
278
300
  tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl
279
301
  tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl
280
302
  tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl
303
+ tests/devices/i13_1/test_merlin.py
281
304
  tests/devices/i22/test_dcm.py
282
305
  tests/devices/i22/test_fswitch.py
283
306
  tests/devices/i22/test_metadataholder.py
@@ -293,6 +316,7 @@ tests/devices/unit_tests/test_backlight.py
293
316
  tests/devices/unit_tests/test_bart_robot.py
294
317
  tests/devices/unit_tests/test_beam_converter.py
295
318
  tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
319
+ tests/devices/unit_tests/test_bimorph_mirror.py
296
320
  tests/devices/unit_tests/test_dcm.py
297
321
  tests/devices/unit_tests/test_display.configuration
298
322
  tests/devices/unit_tests/test_eiger.py
@@ -321,8 +345,11 @@ tests/devices/unit_tests/test_webcam.py
321
345
  tests/devices/unit_tests/test_xbpm_feedback.py
322
346
  tests/devices/unit_tests/test_xspress3.py
323
347
  tests/devices/unit_tests/test_zebra.py
348
+ tests/devices/unit_tests/test_zebra_constants_mapping.py
324
349
  tests/devices/unit_tests/test_zocalo_interaction.py
325
350
  tests/devices/unit_tests/test_zocalo_results.py
351
+ tests/devices/unit_tests/current_amplifier/test_femto.py
352
+ tests/devices/unit_tests/current_amplifier/test_sr570.py
326
353
  tests/devices/unit_tests/detector/test_det_dim_constants.py
327
354
  tests/devices/unit_tests/detector/test_det_resolution.py
328
355
  tests/devices/unit_tests/detector/test_detector.py
@@ -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
@@ -22,6 +22,7 @@ scanspec>=0.7.3
22
22
  [dev]
23
23
  black
24
24
  diff-cover
25
+ import-linter
25
26
  mypy
26
27
  myst-parser
27
28
  ophyd_async[sim]
@@ -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.3'
16
- __version_tuple__ = version_tuple = (1, 36, 3)
15
+ __version__ = version = '1.38.0'
16
+ __version_tuple__ = version_tuple = (1, 38, 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
@@ -39,8 +40,13 @@ from dodal.devices.undulator_dcm import UndulatorDCM
39
40
  from dodal.devices.webcam import Webcam
40
41
  from dodal.devices.xbpm_feedback import XBPMFeedback
41
42
  from dodal.devices.xspress3.xspress3 import Xspress3
42
- from dodal.devices.zebra import Zebra
43
- from dodal.devices.zebra_controlled_shutter import ZebraShutter
43
+ from dodal.devices.zebra.zebra import Zebra
44
+ from dodal.devices.zebra.zebra_constants_mapping import (
45
+ ZebraMapping,
46
+ ZebraSources,
47
+ ZebraTTLOutputs,
48
+ )
49
+ from dodal.devices.zebra.zebra_controlled_shutter import ZebraShutter
44
50
  from dodal.devices.zocalo import ZocaloResults
45
51
  from dodal.log import set_beamline as set_log_beamline
46
52
  from dodal.utils import BeamlinePrefix, get_beamline_name, skip_device
@@ -57,6 +63,12 @@ set_utils_beamline(BL)
57
63
 
58
64
  set_path_provider(PandASubpathProvider())
59
65
 
66
+ I03_ZEBRA_MAPPING = ZebraMapping(
67
+ outputs=ZebraTTLOutputs(TTL_DETECTOR=1, TTL_SHUTTER=2, TTL_XSPRESS3=3, TTL_PANDA=4),
68
+ sources=ZebraSources(),
69
+ AND_GATE_FOR_AUTO_SHUTTER=2,
70
+ )
71
+
60
72
 
61
73
  def aperture_scatterguard(
62
74
  wait_for_connection: bool = True,
@@ -80,12 +92,12 @@ def aperture_scatterguard(
80
92
 
81
93
  def attenuator(
82
94
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
83
- ) -> Attenuator:
95
+ ) -> BinaryFilterAttenuator:
84
96
  """Get the i03 attenuator device, instantiate it if it hasn't already been.
85
97
  If this is called when already instantiated in i03, it will return the existing object.
86
98
  """
87
99
  return device_instantiation(
88
- Attenuator,
100
+ BinaryFilterAttenuator,
89
101
  "attenuator",
90
102
  "-EA-ATTN-01:",
91
103
  wait_for_connection,
@@ -93,6 +105,22 @@ def attenuator(
93
105
  )
94
106
 
95
107
 
108
+ def beamstop(
109
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
110
+ ) -> Beamstop:
111
+ """Get the i03 beamstop device, instantiate it if it hasn't already been.
112
+ If this is called when already instantiated in i03, it will return the existing object.
113
+ """
114
+ return device_instantiation(
115
+ Beamstop,
116
+ "beamstop",
117
+ "-MO-BS-01:",
118
+ wait_for_connection,
119
+ fake_with_ophyd_sim,
120
+ beamline_parameters=get_beamline_parameters(),
121
+ )
122
+
123
+
96
124
  def dcm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> DCM:
97
125
  """Get the i03 DCM device, instantiate it if it hasn't already been.
98
126
  If this is called when already instantiated in i03, it will return the existing object.
@@ -351,6 +379,7 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
351
379
  "-EA-ZEBRA-01:",
352
380
  wait_for_connection,
353
381
  fake_with_ophyd_sim,
382
+ mapping=I03_ZEBRA_MAPPING,
354
383
  )
355
384
 
356
385
 
@@ -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
@@ -28,8 +28,13 @@ from dodal.devices.synchrotron import Synchrotron
28
28
  from dodal.devices.thawer import Thawer
29
29
  from dodal.devices.undulator import Undulator
30
30
  from dodal.devices.xbpm_feedback import XBPMFeedback
31
- from dodal.devices.zebra import Zebra
32
- from dodal.devices.zebra_controlled_shutter import ZebraShutter
31
+ from dodal.devices.zebra.zebra import Zebra
32
+ from dodal.devices.zebra.zebra_constants_mapping import (
33
+ ZebraMapping,
34
+ ZebraSources,
35
+ ZebraTTLOutputs,
36
+ )
37
+ from dodal.devices.zebra.zebra_controlled_shutter import ZebraShutter
33
38
  from dodal.log import set_beamline as set_log_beamline
34
39
  from dodal.utils import BeamlinePrefix, get_beamline_name, skip_device
35
40
 
@@ -47,6 +52,11 @@ BL = get_beamline_name("s04")
47
52
  set_log_beamline(BL)
48
53
  set_utils_beamline(BL)
49
54
 
55
+ I04_ZEBRA_MAPPING = ZebraMapping(
56
+ outputs=(ZebraTTLOutputs(TTL_DETECTOR=1, TTL_FAST_SHUTTER=2, TTL_XSPRESS3=3)),
57
+ sources=ZebraSources(),
58
+ )
59
+
50
60
 
51
61
  def smargon(
52
62
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
@@ -138,12 +148,12 @@ def sample_shutter(
138
148
 
139
149
  def attenuator(
140
150
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
141
- ) -> Attenuator:
151
+ ) -> BinaryFilterAttenuator:
142
152
  """Get the i04 attenuator device, instantiate it if it hasn't already been.
143
153
  If this is called when already instantiated in i04, it will return the existing object.
144
154
  """
145
155
  return device_instantiation(
146
- Attenuator,
156
+ BinaryFilterAttenuator,
147
157
  "attenuator",
148
158
  "-EA-ATTN-01:",
149
159
  wait_for_connection,
@@ -341,6 +351,7 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
341
351
  "-EA-ZEBRA-01:",
342
352
  wait_for_connection,
343
353
  fake_with_ophyd_sim,
354
+ mapping=I04_ZEBRA_MAPPING,
344
355
  )
345
356
 
346
357