dls-dodal 1.40.0__tar.gz → 1.42.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 (435) hide show
  1. dls_dodal-1.42.0/.github/scripts/check_test_durations.py +30 -0
  2. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_test.yml +14 -3
  3. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.gitignore +4 -0
  4. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/PKG-INFO +4 -2
  5. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/create-beamline.rst +44 -32
  6. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/pyproject.toml +10 -5
  7. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/PKG-INFO +4 -2
  8. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/SOURCES.txt +11 -0
  9. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/requires.txt +3 -1
  10. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/_version.py +9 -4
  11. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/__init__.py +1 -0
  12. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/adsim.py +1 -1
  13. dls_dodal-1.42.0/src/dodal/beamlines/aithre.py +9 -0
  14. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i04.py +1 -1
  15. dls_dodal-1.42.0/src/dodal/beamlines/i19_optics.py +34 -0
  16. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i23.py +8 -11
  17. dls_dodal-1.42.0/src/dodal/beamlines/p38.py +210 -0
  18. dls_dodal-1.42.0/src/dodal/beamlines/p45.py +78 -0
  19. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/visit.py +1 -1
  20. dls_dodal-1.42.0/src/dodal/devices/aithre_lasershaping/goniometer.py +15 -0
  21. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector.py +1 -1
  22. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger.py +2 -2
  23. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/fast_grid_scan.py +10 -1
  24. dls_dodal-1.42.0/src/dodal/devices/i19/hutch_access.py +8 -0
  25. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +4 -3
  26. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/p45.py +8 -8
  27. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/pressure_jump_cell.py +5 -2
  28. dls_dodal-1.42.0/src/dodal/plans/preprocessors/verify_undulator_gap.py +49 -0
  29. dls_dodal-1.42.0/src/dodal/plans/verify_undulator_gap.py +19 -0
  30. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/utils.py +1 -6
  31. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_eiger_system.py +1 -1
  32. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_undulator_system.py +2 -5
  33. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/test_visit.py +1 -1
  34. dls_dodal-1.42.0/tests/constants.py +3 -0
  35. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_det_resolution.py +1 -1
  36. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_detector.py +6 -6
  37. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_apple2_undulator.py +3 -3
  38. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_eiger.py +1 -1
  39. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_gridscan.py +16 -0
  40. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator.py +4 -7
  41. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator_dcm.py +3 -6
  42. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_zocalo/__main__.py +27 -1
  43. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_motor_util_plans.py +7 -11
  44. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plans/conftest.py +21 -0
  45. dls_dodal-1.42.0/tests/plans/test_preprocessors/test_verify_undulator_gap.py +79 -0
  46. dls_dodal-1.42.0/tests/plans/test_verify_undulator_gap_plan.py +17 -0
  47. dls_dodal-1.42.0/tests/unit_tests/__init__.py +0 -0
  48. dls_dodal-1.40.0/src/dodal/beamlines/p38.py +0 -350
  49. dls_dodal-1.40.0/src/dodal/beamlines/p45.py +0 -117
  50. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.copier-answers.yml +0 -0
  51. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.devcontainer/devcontainer.json +0 -0
  52. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/CODEOWNERS +0 -0
  53. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/CONTRIBUTING.md +0 -0
  54. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  55. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/actions/install_requirements/action.yml +0 -0
  56. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/dependabot.yml +0 -0
  57. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/pages/index.html +0 -0
  58. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/pages/make_switcher.py +0 -0
  59. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_check.yml +0 -0
  60. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_dist.yml +0 -0
  61. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_docs.yml +0 -0
  62. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_pypi.yml +0 -0
  63. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_release.yml +0 -0
  64. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/_tox.yml +0 -0
  65. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/ci.yml +0 -0
  66. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.github/workflows/periodic.yml +0 -0
  67. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.pre-commit-config.yaml +0 -0
  68. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.vscode/extensions.json +0 -0
  69. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.vscode/launch.json +0 -0
  70. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.vscode/settings.json +0 -0
  71. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/.vscode/tasks.json +0 -0
  72. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/Dockerfile +0 -0
  73. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/LICENSE +0 -0
  74. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/README.md +0 -0
  75. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/catalog-info.yaml +0 -0
  76. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/conftest.py +0 -0
  77. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/class.rst +0 -0
  78. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/module.rst +0 -0
  79. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/_templates/custom-module-template.rst +0 -0
  80. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/assets/zocalo.png +0 -0
  81. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/conf.py +0 -0
  82. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  83. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  84. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  85. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  86. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions/COPYME +0 -0
  87. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/decisions.md +0 -0
  88. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations/reviews.md +0 -0
  89. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/explanations.md +0 -0
  90. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/genindex.md +0 -0
  91. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/build-docs.md +0 -0
  92. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/contribute.md +0 -0
  93. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/coverage.md +0 -0
  94. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/dev-install.md +0 -0
  95. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/excalidraw.md +0 -0
  96. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/lint.md +0 -0
  97. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/lock-requirements.md +0 -0
  98. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  99. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/make-release.md +0 -0
  100. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/move-code.rst +0 -0
  101. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/pypi.md +0 -0
  102. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/run-tests.md +0 -0
  103. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/static-analysis.md +0 -0
  104. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/update-template.md +0 -0
  105. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/write-tests.md +0 -0
  106. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to/zocalo.rst +0 -0
  107. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/how-to.md +0 -0
  108. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/images/dls-logo.svg +0 -0
  109. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/images/excalidraw-example.svg +0 -0
  110. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/index.md +0 -0
  111. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/reference/api.md +0 -0
  112. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/reference/device-standards.rst +0 -0
  113. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/reference/standards.rst +0 -0
  114. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/reference.md +0 -0
  115. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/tutorials/get_started.rst +0 -0
  116. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/tutorials/installation.md +0 -0
  117. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/docs/tutorials.md +0 -0
  118. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/pull_request_template.md +0 -0
  119. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/setup.cfg +0 -0
  120. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/__init__.py +0 -0
  121. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  122. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  123. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  124. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/__init__.py +0 -0
  125. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/__main__.py +0 -0
  126. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  127. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  128. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/README.md +0 -0
  129. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/b01_1.py +0 -0
  130. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i02_1.py +0 -0
  131. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i03.py +0 -0
  132. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i10.py +0 -0
  133. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i13_1.py +0 -0
  134. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i18.py +0 -0
  135. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_1.py +0 -0
  136. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_2.py +0 -0
  137. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i20_1.py +0 -0
  138. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i22.py +0 -0
  139. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i24.py +0 -0
  140. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/p99.py +0 -0
  141. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/beamlines/training_rig.py +0 -0
  142. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/cli.py +0 -0
  143. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/__init__.py +0 -0
  144. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/__init__.py +0 -0
  145. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  146. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  147. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  148. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/coordination.py +0 -0
  149. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/crystal_metadata.py +0 -0
  150. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/maths.py +0 -0
  151. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/signal_utils.py +0 -0
  152. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/types.py +0 -0
  153. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/common/udc_directory_provider.py +0 -0
  154. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/CTAB.py +0 -0
  155. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/__init__.py +0 -0
  156. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/adsim.py +0 -0
  157. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/aperture.py +0 -0
  158. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  159. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/apple2_undulator.py +0 -0
  160. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  161. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  162. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  163. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter.py +0 -0
  164. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  165. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/backlight.py +0 -0
  166. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  167. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/cryostream.py +0 -0
  168. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  169. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  170. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  171. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  172. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  173. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  174. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/dcm.py +0 -0
  175. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/__init__.py +0 -0
  176. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  177. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  178. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  179. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  180. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/diamond_filter.py +0 -0
  181. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger_odin.py +0 -0
  182. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  183. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/flux.py +0 -0
  184. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/focusing_mirror.py +0 -0
  185. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/hutch_shutter.py +0 -0
  186. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/__init__.py +0 -0
  187. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/beamstop.py +0 -0
  188. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i04/transfocator.py +0 -0
  189. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  190. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  191. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/mirrors.py +0 -0
  192. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  193. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  194. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  195. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/slits.py +0 -0
  196. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/__init__.py +0 -0
  197. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  198. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  199. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_io.py +0 -0
  200. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  201. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/diode.py +0 -0
  202. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/table.py +0 -0
  203. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
  204. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/__init__.py +0 -0
  205. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/shutter.py +0 -0
  206. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  207. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/dcm.py +0 -0
  208. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/fswitch.py +0 -0
  209. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/nxsas.py +0 -0
  210. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/__init__.py +0 -0
  211. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/aperture.py +0 -0
  212. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beam_center.py +0 -0
  213. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beamstop.py +0 -0
  214. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dcm.py +0 -0
  215. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  216. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  217. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  218. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  219. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pmac.py +0 -0
  220. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/vgonio.py +0 -0
  221. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/ipin.py +0 -0
  222. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/linkam3.py +0 -0
  223. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  224. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/motors.py +0 -0
  225. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/__init__.py +0 -0
  226. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  227. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  228. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  229. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  230. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  231. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  232. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  233. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  234. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  235. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
  236. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/utils.py +0 -0
  237. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/__init__.py +0 -0
  238. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  239. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/pgm.py +0 -0
  240. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/qbpm.py +0 -0
  241. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/robot.py +0 -0
  242. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  243. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/scatterguard.py +0 -0
  244. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/scintillator.py +0 -0
  245. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/slits.py +0 -0
  246. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/smargon.py +0 -0
  247. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/status.py +0 -0
  248. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/synchrotron.py +0 -0
  249. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/tetramm.py +0 -0
  250. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/thawer.py +0 -0
  251. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/__init__.py +0 -0
  252. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  253. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/turbo_slit.py +0 -0
  254. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator.py +0 -0
  255. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator_dcm.py +0 -0
  256. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/__init__.py +0 -0
  257. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  258. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/epics_util.py +0 -0
  259. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  260. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/motor_utils.py +0 -0
  261. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/util/test_utils.py +0 -0
  262. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  263. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/webcam.py +0 -0
  264. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  265. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  266. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  267. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/__init__.py +0 -0
  268. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra.py +0 -0
  269. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  270. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  271. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  272. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  273. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  274. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  275. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/log.py +0 -0
  276. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  277. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/__init__.py +0 -0
  278. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  279. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/data_session.py +0 -0
  280. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  281. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  282. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plans/__init__.py +0 -0
  283. {dls_dodal-1.40.0/system_tests → dls_dodal-1.42.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  284. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plans/save_panda.py +0 -0
  285. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plans/scanspec.py +0 -0
  286. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/src/dodal/plans/wrapped.py +0 -0
  287. {dls_dodal-1.40.0/tests → dls_dodal-1.42.0/system_tests}/__init__.py +0 -0
  288. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_adsim.py +0 -0
  289. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  290. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_cli.py +0 -0
  291. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_gridscan_system.py +0 -0
  292. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_oav_system.py +0 -0
  293. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_oav_to_redis_system.py +0 -0
  294. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_slit_gaps_system.py +0 -0
  295. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_smargon_system.py +0 -0
  296. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_synchrotron_system.py +0 -0
  297. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_zebra_system.py +0 -0
  298. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/system_tests/test_zocalo_results.py +0 -0
  299. {dls_dodal-1.40.0/tests/beamlines → dls_dodal-1.42.0/tests}/__init__.py +0 -0
  300. {dls_dodal-1.40.0/tests/beamlines/unit_tests → dls_dodal-1.42.0/tests/beamlines}/__init__.py +0 -0
  301. {dls_dodal-1.40.0/tests/common → dls_dodal-1.42.0/tests/beamlines/unit_tests}/__init__.py +0 -0
  302. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  303. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  304. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  305. {dls_dodal-1.40.0/tests/common/beamlines → dls_dodal-1.42.0/tests/common}/__init__.py +0 -0
  306. {dls_dodal-1.40.0/tests/devices → dls_dodal-1.42.0/tests/common/beamlines}/__init__.py +0 -0
  307. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  308. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  309. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  310. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  311. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/test_coordination.py +0 -0
  312. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/test_crystal_metadata.py +0 -0
  313. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/test_maths.py +0 -0
  314. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/common/test_udc_directory_provider.py +0 -0
  315. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/conftest.py +0 -0
  316. {dls_dodal-1.40.0/tests/devices/i03 → dls_dodal-1.42.0/tests/devices}/__init__.py +0 -0
  317. {dls_dodal-1.40.0/tests/devices/i04 → dls_dodal-1.42.0/tests/devices/i03}/__init__.py +0 -0
  318. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i03/test_beamstop.py +0 -0
  319. {dls_dodal-1.40.0/tests/devices/i19 → dls_dodal-1.42.0/tests/devices/i04}/__init__.py +0 -0
  320. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i04/test_transfocator.py +0 -0
  321. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  322. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  323. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  324. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  325. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  326. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  327. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  328. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i13_1/test_merlin.py +0 -0
  329. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  330. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i18/test_table.py +0 -0
  331. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
  332. {dls_dodal-1.40.0/tests/devices/unit_tests → dls_dodal-1.42.0/tests/devices/i19}/__init__.py +0 -0
  333. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i19/test_shutter.py +0 -0
  334. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i22/test_dcm.py +0 -0
  335. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i22/test_fswitch.py +0 -0
  336. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/i22/test_metadataholder.py +0 -0
  337. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/test_diamond_filter.py +0 -0
  338. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  339. {dls_dodal-1.40.0/tests/devices/unit_tests/i24 → dls_dodal-1.42.0/tests/devices/unit_tests}/__init__.py +0 -0
  340. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/conftest.py +0 -0
  341. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  342. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  343. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  344. {dls_dodal-1.40.0/tests/devices/unit_tests/oav → dls_dodal-1.42.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  345. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  346. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  347. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  348. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  349. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  350. {dls_dodal-1.40.0/tests/devices/unit_tests/util → dls_dodal-1.42.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  351. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  352. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  353. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  354. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  355. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  356. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  357. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  358. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  359. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  360. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  361. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  362. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  363. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
  364. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  365. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  366. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  367. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  368. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  369. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  370. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  371. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  372. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  373. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_dcm.py +0 -0
  374. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  375. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  376. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  377. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  378. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  379. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  380. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  381. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_odin.py +0 -0
  382. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  383. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  384. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_shutter.py +0 -0
  385. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_slits.py +0 -0
  386. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  387. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_status.py +0 -0
  388. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  389. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
  390. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  391. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_utils.py +0 -0
  392. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  393. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  394. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  395. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  396. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  397. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  398. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  399. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  400. {dls_dodal-1.40.0/tests/fake_zocalo → dls_dodal-1.42.0/tests/devices/unit_tests/util}/__init__.py +0 -0
  401. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  402. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  403. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  404. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  405. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline.py +0 -0
  406. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  407. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_broken_dependency.py +0 -0
  408. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_dependencies.py +0 -0
  409. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  410. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  411. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_beamline_some_devices_working.py +0 -0
  412. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_device_factory_beamline.py +0 -0
  413. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_zocalo/README.rst +0 -0
  414. {dls_dodal-1.40.0/tests/unit_tests → dls_dodal-1.42.0/tests/fake_zocalo}/__init__.py +0 -0
  415. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  416. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  417. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  418. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plans/test_compliance.py +0 -0
  419. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plans/test_scanspec.py +0 -0
  420. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/plans/test_wrapped.py +0 -0
  421. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  422. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/bad_beamlineParameters +0 -0
  423. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/i04_beamlineParameters +0 -0
  424. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  425. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  426. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  427. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  428. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  429. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  430. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  431. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/topup_long_delay.txt +0 -0
  432. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_data/topup_short_params.txt +0 -0
  433. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/test_utils.py +0 -0
  434. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/unit_tests/test_cli.py +0 -0
  435. {dls_dodal-1.40.0 → dls_dodal-1.42.0}/tests/unit_tests/test_log.py +0 -0
@@ -0,0 +1,30 @@
1
+ import json
2
+ import sys
3
+
4
+ # Get report filename and threshold from command-line arguments
5
+ REPORT_FILE = sys.argv[1] if len(sys.argv) > 1 else "report.json"
6
+ THRESHOLD = float(sys.argv[2]) if len(sys.argv) > 2 else 1.0
7
+
8
+ try:
9
+ with open(REPORT_FILE) as f:
10
+ data = json.load(f)
11
+ except FileNotFoundError:
12
+ print(f"❌ Error: Report file '{REPORT_FILE}' not found.")
13
+ sys.exit(1)
14
+ except json.JSONDecodeError:
15
+ print(f"❌ Error: Failed to parse JSON in '{REPORT_FILE}'.")
16
+ sys.exit(1)
17
+
18
+ slow_tests = [
19
+ (t["nodeid"], t["call"]["duration"])
20
+ for t in data.get("tests", [])
21
+ if "call" in t and t["call"]["duration"] > THRESHOLD
22
+ ]
23
+
24
+ if slow_tests:
25
+ print(f"❌ The following tests exceeded the {THRESHOLD:.2f}s threshold:")
26
+ for test, duration in slow_tests:
27
+ print(f" - {test}: {duration:.2f}s")
28
+ sys.exit(1)
29
+
30
+ print("✅ All tests ran within the acceptable time limit.")
@@ -50,13 +50,24 @@ jobs:
50
50
  python-version: ${{ inputs.python-version }}
51
51
  pip-install: ".[dev]"
52
52
 
53
- - name: Run tests
54
- run: tox -e tests
53
+ - name: Run unit tests
54
+ run: tox -e unit-report
55
+
56
+ - name: Check unit test durations
57
+ run: |
58
+ python .github/scripts/check_test_durations.py unit-report.json 1
59
+
60
+ - name: Run system tests
61
+ run: tox -e system-report
62
+
63
+ - name: Check system test durations
64
+ run: |
65
+ python .github/scripts/check_test_durations.py system-report.json 5
55
66
 
56
67
  - name: Upload coverage to Codecov
57
68
  uses: codecov/codecov-action@v4
58
69
  with:
59
70
  name: ${{ inputs.python-version }}/${{ inputs.runs-on }}
60
- files: cov.xml
71
+ files: ./unit_cov.xml,./system_cov.xml
61
72
  env:
62
73
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -74,3 +74,7 @@ lockfiles/
74
74
 
75
75
  # pycharm project files
76
76
  .idea/
77
+
78
+
79
+ # custom CI setup
80
+ report.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.40.0
3
+ Version: 1.42.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
@@ -217,7 +217,7 @@ License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
219
  Requires-Dist: ophyd-async>=0.9.0a2
220
- Requires-Dist: bluesky
220
+ Requires-Dist: bluesky==1.13.0
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
223
223
  Requires-Dist: pillow
@@ -238,6 +238,7 @@ Provides-Extra: dev
238
238
  Requires-Dist: black; extra == "dev"
239
239
  Requires-Dist: diff-cover; extra == "dev"
240
240
  Requires-Dist: import-linter; extra == "dev"
241
+ Requires-Dist: ispyb; extra == "dev"
241
242
  Requires-Dist: mypy; extra == "dev"
242
243
  Requires-Dist: myst-parser; extra == "dev"
243
244
  Requires-Dist: ophyd_async[sim]; extra == "dev"
@@ -249,6 +250,7 @@ Requires-Dist: pyright; extra == "dev"
249
250
  Requires-Dist: pytest; extra == "dev"
250
251
  Requires-Dist: pytest-asyncio; extra == "dev"
251
252
  Requires-Dist: pytest-cov; extra == "dev"
253
+ Requires-Dist: pytest-json-report; extra == "dev"
252
254
  Requires-Dist: pytest-random-order; extra == "dev"
253
255
  Requires-Dist: ruff; extra == "dev"
254
256
  Requires-Dist: sphinx<7.4.6; extra == "dev"
@@ -7,7 +7,7 @@ They include motors in the experiment hutch, optical components in the optics hu
7
7
  Beamline Modules
8
8
  ----------------
9
9
 
10
- Each beamline should have its own file in the ``doodal.beamlines`` folder, in which the particular devices for the
10
+ Each beamline should have its own file in the ``dodal.beamlines`` folder, in which the particular devices for the
11
11
  beamline are instantiated. The file should be named after the colloquial name for the beamline. For example:
12
12
 
13
13
  * ``i03.py``
@@ -25,55 +25,67 @@ The following example creates a fictitious beamline ``w41``, with a simulated tw
25
25
 
26
26
  .. code-block:: python
27
27
 
28
- from dodal.common.beamlines.beamline_utils import device_instantiation
28
+ from ophyd_async.epics.adaravis import AravisDetector
29
+
30
+ from dodal.common.beamlines.beamline_utils import (
31
+ device_factory,
32
+ get_path_provider,
33
+ set_path_provider,
34
+ )
29
35
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
30
- from dodal.devices.areadetector.adaravis import AdAravisDetector
36
+ from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
37
+ from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
31
38
  from dodal.devices.synchrotron import Synchrotron
32
39
  from dodal.log import set_beamline as set_log_beamline
33
- from dodal.utils import get_beamline_name, skip_device
40
+ from dodal.utils import BeamlinePrefix
34
41
 
35
42
  BL = get_beamline_name("s41") # Default used when not on a live beamline
43
+ PREFIX = BeamlinePrefix(BL)
36
44
  set_log_beamline(BL) # Configure logging and util functions
37
45
  set_utils_beamline(BL)
38
46
 
47
+ # Currently we must hard-code the visit, determining the visit is WIP.
48
+ set_path_provider(
49
+ StaticVisitPathProvider(
50
+ BL,
51
+ # Root directory for all detectors
52
+ Path("/dls/w41/data/YYYY/cm12345-1"),
53
+ # Uses an existing GDA server to ensure filename uniqueness
54
+ client=RemoteDirectoryServiceClient("http://s41-control:8088/api"),
55
+ # Else if no GDA server use a LocalDirectoryServiceClient(),
56
+ )
57
+ )
39
58
 
40
59
  """
41
60
  Define device factory functions below this point.
42
- A device factory function is any function that has a return type which conforms
61
+ A device factory function is any function that has a return type which conforms
43
62
  to one or more Bluesky Protocols.
44
63
  """
45
64
 
46
-
47
65
  """
48
- A valid factory function which is:
49
- - instantiated only on the live beamline
50
- - a maximum of once
51
- - can optionally be faked with ophyd simulated axes
52
- - can optionally be connected concurrently by not waiting for connect to complete
53
- - if constructor took a prefix, could optionally exclude the BLIXX prefix
66
+ A valid factory function which:
67
+ - may be instantiated automatically, selectively on live beamline
68
+ - caches and re-uses the result for subsequent calls
69
+ - automatically names the device
70
+ - may be skipped when make_all_devices is called on this module
71
+ - must be explicitly connected (may be automated by tools)
72
+ - when connected may connect to a simulated backend
73
+ - may be connected concurrently (when automated by tools)
54
74
  """"
55
- @skip_device(lambda: BL == "s41") # Conditionally do not instantiate this device
56
- def synchrotron(
57
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
58
- ) -> Synchrotron:
59
- """Calls the Synchrotron class's constructor with name="synchrotron", prefix=""
60
- If this is called when already instantiated, it will return the existing object.
61
- """
62
- return device_instantiation(
63
- Synchrotron,
64
- "synchrotron",
65
- "",
66
- wait_for_connection,
67
- fake_with_ophyd_sim,
68
- bl_prefix=False,
75
+ @device_factory(skip = BL == "s41")
76
+ def synchrotron() -> Synchrotron:
77
+ return Synchrotron()
78
+
79
+
80
+ @device_factory()
81
+ def d11() -> AravisDetector:
82
+ return AravisDetector(
83
+ f"{PREFIX.beamline_prefix}-DI-DCAM-01:",
84
+ path_provider=get_path_provider(),
85
+ drv_suffix=CAM_SUFFIX,
86
+ fileio_suffix=HDF5_SUFFIX,
69
87
  )
70
88
 
71
- def d11(name: str = "D11") -> AdAravisDetector:
72
- """
73
- Also a valid Device factory function, but as multiple calls would instantiate
74
- multiple copies of a device, discouraged.
75
- """
76
- return AdAravisDetector(name=name, prefix=f"{BL}-DI-DCAM-01:")
77
89
 
78
90
  ``w41`` should also be added to the list of ``ALL_BEAMLINES`` in ``tests/beamlines/test_device_instantiation``.
79
91
  This test checks that the function returns a type that conforms to Bluesky protocols,
@@ -16,7 +16,7 @@ dependencies = [
16
16
  "click",
17
17
  "ophyd",
18
18
  "ophyd-async >= 0.9.0a2",
19
- "bluesky",
19
+ "bluesky == 1.13.0",
20
20
  "pyepics",
21
21
  "dataclasses-json",
22
22
  "pillow",
@@ -45,6 +45,7 @@ dev = [
45
45
  "black",
46
46
  "diff-cover",
47
47
  "import-linter",
48
+ "ispyb",
48
49
  "mypy",
49
50
  # Commented out due to dependency version conflict with pydantic 1.x
50
51
  # "copier",
@@ -58,6 +59,7 @@ dev = [
58
59
  "pytest",
59
60
  "pytest-asyncio",
60
61
  "pytest-cov",
62
+ "pytest-json-report",
61
63
  "pytest-random-order",
62
64
  "ruff",
63
65
  "sphinx<7.4.6", # pinned due to https://github.com/sphinx-doc/sphinx/issues/12660
@@ -141,7 +143,7 @@ legacy_tox_ini = """
141
143
  [tox]
142
144
  skipsdist=True
143
145
 
144
- [testenv:{pre-commit,type-checking,tests,docs}]
146
+ [testenv:{pre-commit,type-checking,tests,docs,unit-report,system-report}]
145
147
  # Don't create a virtualenv for the command, requires tox-direct plugin
146
148
  direct = True
147
149
  passenv = *
@@ -156,6 +158,8 @@ commands =
156
158
  type-checking: pyright src tests {posargs}
157
159
  pre-commit: pre-commit run --all-files --show-diff-on-failure {posargs}
158
160
  docs: sphinx-{posargs:build -E} -T docs build/html
161
+ unit-report: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:unit_cov.xml --json-report --json-report-file=unit-report.json tests {posargs}
162
+ system-report: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:system_cov.xml --json-report --json-report-file=system-report.json system_tests {posargs}
159
163
  """
160
164
 
161
165
  [tool.ruff]
@@ -174,14 +178,15 @@ lint.select = [
174
178
  "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
175
179
  "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
176
180
  "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
181
+ "RUF018" # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
177
182
  ]
178
183
 
179
184
  [tool.ruff.lint.per-file-ignores]
180
185
  # By default, private member access is allowed in tests
181
186
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
182
- # Remove this line to forbid private member access in tests
183
- "tests/**/*" = ["SLF001"]
184
- "system_tests/**/*" = ["SLF001"]
187
+ # Remove this line to forbid private member access and walrus operators in asserts in tests
188
+ "tests/**/*" = ["SLF001", "RUF018"]
189
+ "system_tests/**/*" = ["SLF001", "RUF018"]
185
190
 
186
191
  [tool.importlinter]
187
192
  root_package = "dodal"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.40.0
3
+ Version: 1.42.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
@@ -217,7 +217,7 @@ License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
219
  Requires-Dist: ophyd-async>=0.9.0a2
220
- Requires-Dist: bluesky
220
+ Requires-Dist: bluesky==1.13.0
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
223
223
  Requires-Dist: pillow
@@ -238,6 +238,7 @@ Provides-Extra: dev
238
238
  Requires-Dist: black; extra == "dev"
239
239
  Requires-Dist: diff-cover; extra == "dev"
240
240
  Requires-Dist: import-linter; extra == "dev"
241
+ Requires-Dist: ispyb; extra == "dev"
241
242
  Requires-Dist: mypy; extra == "dev"
242
243
  Requires-Dist: myst-parser; extra == "dev"
243
244
  Requires-Dist: ophyd_async[sim]; extra == "dev"
@@ -249,6 +250,7 @@ Requires-Dist: pyright; extra == "dev"
249
250
  Requires-Dist: pytest; extra == "dev"
250
251
  Requires-Dist: pytest-asyncio; extra == "dev"
251
252
  Requires-Dist: pytest-cov; extra == "dev"
253
+ Requires-Dist: pytest-json-report; extra == "dev"
252
254
  Requires-Dist: pytest-random-order; extra == "dev"
253
255
  Requires-Dist: ruff; extra == "dev"
254
256
  Requires-Dist: sphinx<7.4.6; extra == "dev"
@@ -16,6 +16,7 @@ pyproject.toml
16
16
  .github/actions/install_requirements/action.yml
17
17
  .github/pages/index.html
18
18
  .github/pages/make_switcher.py
19
+ .github/scripts/check_test_durations.py
19
20
  .github/workflows/_check.yml
20
21
  .github/workflows/_dist.yml
21
22
  .github/workflows/_docs.yml
@@ -89,6 +90,7 @@ src/dodal/beamline_specific_utils/i03.py
89
90
  src/dodal/beamlines/README.md
90
91
  src/dodal/beamlines/__init__.py
91
92
  src/dodal/beamlines/adsim.py
93
+ src/dodal/beamlines/aithre.py
92
94
  src/dodal/beamlines/b01_1.py
93
95
  src/dodal/beamlines/i02_1.py
94
96
  src/dodal/beamlines/i03.py
@@ -98,6 +100,7 @@ src/dodal/beamlines/i13_1.py
98
100
  src/dodal/beamlines/i18.py
99
101
  src/dodal/beamlines/i19_1.py
100
102
  src/dodal/beamlines/i19_2.py
103
+ src/dodal/beamlines/i19_optics.py
101
104
  src/dodal/beamlines/i20_1.py
102
105
  src/dodal/beamlines/i22.py
103
106
  src/dodal/beamlines/i23.py
@@ -160,6 +163,7 @@ src/dodal/devices/undulator_dcm.py
160
163
  src/dodal/devices/watsonmarlow323_pump.py
161
164
  src/dodal/devices/webcam.py
162
165
  src/dodal/devices/xbpm_feedback.py
166
+ src/dodal/devices/aithre_lasershaping/goniometer.py
163
167
  src/dodal/devices/areadetector/plugins/CAM.py
164
168
  src/dodal/devices/areadetector/plugins/MJPG.py
165
169
  src/dodal/devices/attenuator/attenuator.py
@@ -196,6 +200,7 @@ src/dodal/devices/i18/diode.py
196
200
  src/dodal/devices/i18/table.py
197
201
  src/dodal/devices/i18/thor_labs_stage.py
198
202
  src/dodal/devices/i19/__init__.py
203
+ src/dodal/devices/i19/hutch_access.py
199
204
  src/dodal/devices/i19/shutter.py
200
205
  src/dodal/devices/i20_1/__init__.py
201
206
  src/dodal/devices/i22/dcm.py
@@ -254,7 +259,10 @@ src/dodal/plan_stubs/wrapped.py
254
259
  src/dodal/plans/__init__.py
255
260
  src/dodal/plans/save_panda.py
256
261
  src/dodal/plans/scanspec.py
262
+ src/dodal/plans/verify_undulator_gap.py
257
263
  src/dodal/plans/wrapped.py
264
+ src/dodal/plans/preprocessors/__init__.py
265
+ src/dodal/plans/preprocessors/verify_undulator_gap.py
258
266
  system_tests/__init__.py
259
267
  system_tests/test_adsim.py
260
268
  system_tests/test_aperturescatterguard_system.py
@@ -271,6 +279,7 @@ system_tests/test_zebra_system.py
271
279
  system_tests/test_zocalo_results.py
272
280
  tests/__init__.py
273
281
  tests/conftest.py
282
+ tests/constants.py
274
283
  tests/fake_beamline.py
275
284
  tests/fake_beamline_all_devices_raise_exception.py
276
285
  tests/fake_beamline_broken_dependency.py
@@ -402,7 +411,9 @@ tests/plan_stubs/test_wrapped_stubs.py
402
411
  tests/plans/conftest.py
403
412
  tests/plans/test_compliance.py
404
413
  tests/plans/test_scanspec.py
414
+ tests/plans/test_verify_undulator_gap_plan.py
405
415
  tests/plans/test_wrapped.py
416
+ tests/plans/test_preprocessors/test_verify_undulator_gap.py
406
417
  tests/preprocessors/test_filesystem_metadata.py
407
418
  tests/test_data/bad_beamlineParameters
408
419
  tests/test_data/i04_beamlineParameters
@@ -1,7 +1,7 @@
1
1
  click
2
2
  ophyd
3
3
  ophyd-async>=0.9.0a2
4
- bluesky
4
+ bluesky==1.13.0
5
5
  pyepics
6
6
  dataclasses-json
7
7
  pillow
@@ -23,6 +23,7 @@ scanspec>=0.7.3
23
23
  black
24
24
  diff-cover
25
25
  import-linter
26
+ ispyb
26
27
  mypy
27
28
  myst-parser
28
29
  ophyd_async[sim]
@@ -34,6 +35,7 @@ pyright
34
35
  pytest
35
36
  pytest-asyncio
36
37
  pytest-cov
38
+ pytest-json-report
37
39
  pytest-random-order
38
40
  ruff
39
41
  sphinx<7.4.6
@@ -1,8 +1,13 @@
1
- # file generated by setuptools_scm
1
+ # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
3
6
  TYPE_CHECKING = False
4
7
  if TYPE_CHECKING:
5
- from typing import Tuple, Union
8
+ from typing import Tuple
9
+ from typing import Union
10
+
6
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
7
12
  else:
8
13
  VERSION_TUPLE = object
@@ -12,5 +17,5 @@ __version__: str
12
17
  __version_tuple__: VERSION_TUPLE
13
18
  version_tuple: VERSION_TUPLE
14
19
 
15
- __version__ = version = '1.40.0'
16
- __version_tuple__ = version_tuple = (1, 40, 0)
20
+ __version__ = version = '1.42.0'
21
+ __version_tuple__ = version_tuple = (1, 42, 0)
@@ -13,6 +13,7 @@ _BEAMLINE_NAME_OVERRIDES = {
13
13
  "i20-1": "i20_1",
14
14
  "i19-1": "i19_1",
15
15
  "i19-2": "i19_2",
16
+ "i19-optics": "i19_optics",
16
17
  "s03": "i03",
17
18
  "p46": "training_rig",
18
19
  "p47": "training_rig",
@@ -40,7 +40,7 @@ https://epics-containers.github.io/main/tutorials/launch_example.html
40
40
  And ensure that the signals are visible:
41
41
 
42
42
  ```sh
43
- export EPICS_CA_ADDR_LIST=127.0.0.1
43
+ export EPICS_CA_ADDR_LIST=127.0.0.1:5094
44
44
  ```
45
45
 
46
46
  How to use the devices in a plan:
@@ -0,0 +1,9 @@
1
+ from dodal.common.beamlines.beamline_utils import device_factory
2
+ from dodal.devices.aithre_lasershaping.goniometer import Goniometer
3
+
4
+ PREFIX = "LA18L"
5
+
6
+
7
+ @device_factory()
8
+ def goniometer() -> Goniometer:
9
+ return Goniometer(f"{PREFIX}-MO-LSR-01:", "goniometer")
@@ -46,7 +46,7 @@ ZOOM_PARAMS_FILE = (
46
46
  DISPLAY_CONFIG = "/dls_sw/i04/software/gda_versions/var/display.configuration"
47
47
  DAQ_CONFIGURATION_PATH = "/dls_sw/i04/software/daq_configuration"
48
48
 
49
- REDIS_HOST = os.environ.get("VALKEY_PROD_SVC_SERVICE_HOST", "test_redis")
49
+ REDIS_HOST = "i04-valkey-murko.diamond.ac.uk"
50
50
  REDIS_PASSWORD = os.environ.get("VALKEY_PASSWORD", "test_redis_password")
51
51
  MURKO_REDIS_DB = 7
52
52
 
@@ -0,0 +1,34 @@
1
+ from dodal.common.beamlines.beamline_utils import (
2
+ device_factory,
3
+ )
4
+ from dodal.common.beamlines.beamline_utils import (
5
+ set_beamline as set_utils_beamline,
6
+ )
7
+ from dodal.devices.hutch_shutter import HutchShutter
8
+ from dodal.devices.i19.hutch_access import HutchAccessControl
9
+ from dodal.log import set_beamline as set_log_beamline
10
+ from dodal.utils import BeamlinePrefix
11
+
12
+ BL = "i19-optics"
13
+ PREFIX = BeamlinePrefix("i19", "I")
14
+ set_log_beamline(BL)
15
+ set_utils_beamline(BL)
16
+
17
+
18
+ @device_factory()
19
+ def shutter() -> HutchShutter:
20
+ """Get the i19 hutch shutter device, instantiate it if it hasn't already been.
21
+ If this is called when already instantiated, it will return the existing object.
22
+ """
23
+ return HutchShutter(
24
+ f"{PREFIX.beamline_prefix}-PS-SHTR-01:",
25
+ "shutter",
26
+ )
27
+
28
+
29
+ @device_factory()
30
+ def access_control() -> HutchAccessControl:
31
+ """Get a device that checks the active hutch for i19, instantiate it if it hasn't already been.
32
+ If this is called when already instantiated, it will return the existing object.
33
+ """
34
+ return HutchAccessControl(f"{PREFIX.beamline_prefix}-OP-STAT-01:", "access_control")
@@ -1,13 +1,15 @@
1
- from dodal.common.beamlines.beamline_utils import device_instantiation
1
+ from dodal.common.beamlines.beamline_utils import device_factory
2
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
3
  from dodal.devices.oav.pin_image_recognition import PinTipDetection
4
4
  from dodal.log import set_beamline as set_log_beamline
5
- from dodal.utils import get_beamline_name, get_hostname, skip_device
5
+ from dodal.utils import BeamlinePrefix, get_beamline_name, get_hostname
6
6
 
7
7
  BL = get_beamline_name("i23")
8
8
  set_log_beamline(BL)
9
9
  set_utils_beamline(BL)
10
10
 
11
+ PREFIX = BeamlinePrefix(BL)
12
+
11
13
 
12
14
  def _is_i23_machine():
13
15
  """
@@ -18,16 +20,11 @@ def _is_i23_machine():
18
20
  return hostname.startswith("i23-ws") or hostname.startswith("i23-control")
19
21
 
20
22
 
21
- @skip_device(lambda: not _is_i23_machine())
22
- def oav_pin_tip_detection(
23
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
24
- ) -> PinTipDetection:
23
+ @device_factory(skip=lambda: not _is_i23_machine())
24
+ def oav_pin_tip_detection() -> PinTipDetection:
25
25
  """Get the i23 OAV pin-tip detection device"""
26
26
 
27
- return device_instantiation(
28
- PinTipDetection,
27
+ return PinTipDetection(
28
+ f"{PREFIX.beamline_prefix}-DI-OAV-01:",
29
29
  "pin_tip_detection",
30
- "-DI-OAV-01:",
31
- wait_for_connection,
32
- fake_with_ophyd_sim,
33
30
  )