dls-dodal 1.41.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 (434) hide show
  1. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/PKG-INFO +3 -3
  2. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/create-beamline.rst +44 -32
  3. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/pyproject.toml +6 -5
  4. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/PKG-INFO +3 -3
  5. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/SOURCES.txt +10 -0
  6. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/requires.txt +2 -2
  7. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/_version.py +2 -2
  8. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/__init__.py +1 -0
  9. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/adsim.py +1 -1
  10. dls_dodal-1.42.0/src/dodal/beamlines/aithre.py +9 -0
  11. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i04.py +1 -1
  12. dls_dodal-1.42.0/src/dodal/beamlines/i19_optics.py +34 -0
  13. dls_dodal-1.42.0/src/dodal/beamlines/p45.py +78 -0
  14. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/visit.py +1 -1
  15. dls_dodal-1.42.0/src/dodal/devices/aithre_lasershaping/goniometer.py +15 -0
  16. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/aperturescatterguard.py +1 -1
  17. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/apple2_undulator.py +8 -10
  18. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/attenuator.py +1 -1
  19. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/backlight.py +1 -1
  20. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/bimorph_mirror.py +2 -2
  21. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector.py +1 -1
  22. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger.py +2 -2
  23. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/hutch_shutter.py +1 -1
  24. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_apple2.py +3 -3
  25. dls_dodal-1.42.0/src/dodal/devices/i19/hutch_access.py +8 -0
  26. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/shutter.py +1 -1
  27. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pmac.py +2 -2
  28. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_detector.py +1 -1
  29. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +4 -3
  30. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p45.py +8 -8
  31. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/pressure_jump_cell.py +3 -7
  32. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/robot.py +1 -1
  33. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/thawer.py +4 -4
  34. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator.py +1 -1
  35. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/undulator_dcm.py +1 -1
  36. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/epics_util.py +1 -1
  37. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra.py +3 -4
  38. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +1 -1
  39. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/wrapped.py +12 -10
  40. dls_dodal-1.42.0/src/dodal/plans/preprocessors/verify_undulator_gap.py +49 -0
  41. dls_dodal-1.42.0/src/dodal/plans/verify_undulator_gap.py +19 -0
  42. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_eiger_system.py +1 -1
  43. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_undulator_system.py +2 -5
  44. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_visit.py +1 -1
  45. dls_dodal-1.42.0/tests/constants.py +3 -0
  46. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_det_resolution.py +1 -1
  47. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_detector.py +6 -6
  48. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_apple2_undulator.py +4 -3
  49. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_eiger.py +1 -1
  50. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator.py +4 -7
  51. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_undulator_dcm.py +3 -6
  52. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_motor_util_plans.py +7 -11
  53. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_wrapped_stubs.py +4 -8
  54. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/conftest.py +21 -0
  55. dls_dodal-1.42.0/tests/plans/test_preprocessors/test_verify_undulator_gap.py +79 -0
  56. dls_dodal-1.42.0/tests/plans/test_verify_undulator_gap_plan.py +17 -0
  57. dls_dodal-1.42.0/tests/unit_tests/__init__.py +0 -0
  58. dls_dodal-1.41.0/src/dodal/beamlines/p45.py +0 -117
  59. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.copier-answers.yml +0 -0
  60. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.devcontainer/devcontainer.json +0 -0
  61. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/CODEOWNERS +0 -0
  62. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/CONTRIBUTING.md +0 -0
  63. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  64. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/actions/install_requirements/action.yml +0 -0
  65. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/dependabot.yml +0 -0
  66. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/pages/index.html +0 -0
  67. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/pages/make_switcher.py +0 -0
  68. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/scripts/check_test_durations.py +0 -0
  69. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_check.yml +0 -0
  70. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_dist.yml +0 -0
  71. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_docs.yml +0 -0
  72. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_pypi.yml +0 -0
  73. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_release.yml +0 -0
  74. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_test.yml +0 -0
  75. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/_tox.yml +0 -0
  76. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/ci.yml +0 -0
  77. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.github/workflows/periodic.yml +0 -0
  78. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.gitignore +0 -0
  79. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.pre-commit-config.yaml +0 -0
  80. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/extensions.json +0 -0
  81. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/launch.json +0 -0
  82. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/settings.json +0 -0
  83. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/.vscode/tasks.json +0 -0
  84. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/Dockerfile +0 -0
  85. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/LICENSE +0 -0
  86. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/README.md +0 -0
  87. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/catalog-info.yaml +0 -0
  88. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/conftest.py +0 -0
  89. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/class.rst +0 -0
  90. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/autosummary/module.rst +0 -0
  91. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/_templates/custom-module-template.rst +0 -0
  92. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/assets/zocalo.png +0 -0
  93. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/conf.py +0 -0
  94. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  95. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  96. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  97. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/0003-make-devices-factory.md +0 -0
  98. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions/COPYME +0 -0
  99. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/decisions.md +0 -0
  100. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations/reviews.md +0 -0
  101. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/explanations.md +0 -0
  102. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/genindex.md +0 -0
  103. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/build-docs.md +0 -0
  104. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/contribute.md +0 -0
  105. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/coverage.md +0 -0
  106. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/dev-install.md +0 -0
  107. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/excalidraw.md +0 -0
  108. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/lint.md +0 -0
  109. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/lock-requirements.md +0 -0
  110. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  111. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/make-release.md +0 -0
  112. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/move-code.rst +0 -0
  113. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/pypi.md +0 -0
  114. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/run-tests.md +0 -0
  115. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/static-analysis.md +0 -0
  116. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/update-template.md +0 -0
  117. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/write-tests.md +0 -0
  118. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to/zocalo.rst +0 -0
  119. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/how-to.md +0 -0
  120. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/images/dls-logo.svg +0 -0
  121. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/images/excalidraw-example.svg +0 -0
  122. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/index.md +0 -0
  123. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/api.md +0 -0
  124. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/device-standards.rst +0 -0
  125. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference/standards.rst +0 -0
  126. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/reference.md +0 -0
  127. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials/get_started.rst +0 -0
  128. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials/installation.md +0 -0
  129. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/docs/tutorials.md +0 -0
  130. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/pull_request_template.md +0 -0
  131. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/setup.cfg +0 -0
  132. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/__init__.py +0 -0
  133. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  134. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  135. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  136. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/__init__.py +0 -0
  137. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/__main__.py +0 -0
  138. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  139. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  140. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/README.md +0 -0
  141. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/b01_1.py +0 -0
  142. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i02_1.py +0 -0
  143. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i03.py +0 -0
  144. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i10.py +0 -0
  145. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i13_1.py +0 -0
  146. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i18.py +0 -0
  147. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_1.py +0 -0
  148. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i19_2.py +0 -0
  149. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i20_1.py +0 -0
  150. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i22.py +0 -0
  151. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i23.py +0 -0
  152. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/i24.py +0 -0
  153. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/p38.py +0 -0
  154. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/p99.py +0 -0
  155. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/beamlines/training_rig.py +0 -0
  156. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/cli.py +0 -0
  157. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/__init__.py +0 -0
  158. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/__init__.py +0 -0
  159. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  160. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  161. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  162. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/coordination.py +0 -0
  163. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/crystal_metadata.py +0 -0
  164. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/maths.py +0 -0
  165. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/signal_utils.py +0 -0
  166. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/types.py +0 -0
  167. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/common/udc_directory_provider.py +0 -0
  168. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/CTAB.py +0 -0
  169. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/__init__.py +0 -0
  170. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/adsim.py +0 -0
  171. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/aperture.py +0 -0
  172. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  173. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  174. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter.py +0 -0
  175. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  176. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/cryostream.py +0 -0
  177. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  178. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  179. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  180. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  181. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  182. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  183. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/dcm.py +0 -0
  184. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/__init__.py +0 -0
  185. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  186. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  187. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  188. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  189. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/diamond_filter.py +0 -0
  190. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/eiger_odin.py +0 -0
  191. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/fast_grid_scan.py +0 -0
  192. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  193. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/flux.py +0 -0
  194. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/focusing_mirror.py +0 -0
  195. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/__init__.py +0 -0
  196. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i03/beamstop.py +0 -0
  197. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i04/transfocator.py +0 -0
  198. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  199. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/mirrors.py +0 -0
  200. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  201. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  202. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  203. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i10/slits.py +0 -0
  204. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/__init__.py +0 -0
  205. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  206. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  207. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i13_1/merlin_io.py +0 -0
  208. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  209. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/diode.py +0 -0
  210. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/table.py +0 -0
  211. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
  212. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i19/__init__.py +0 -0
  213. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i20_1/__init__.py +0 -0
  214. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/dcm.py +0 -0
  215. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/fswitch.py +0 -0
  216. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i22/nxsas.py +0 -0
  217. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/__init__.py +0 -0
  218. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/aperture.py +0 -0
  219. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beam_center.py +0 -0
  220. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/beamstop.py +0 -0
  221. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dcm.py +0 -0
  222. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  223. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  224. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  225. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
  226. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/i24/vgonio.py +0 -0
  227. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/ipin.py +0 -0
  228. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/linkam3.py +0 -0
  229. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  230. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/motors.py +0 -0
  231. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/__init__.py +0 -0
  232. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  233. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  234. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  235. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  236. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  237. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  238. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  239. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  240. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
  241. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/oav/utils.py +0 -0
  242. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/__init__.py +0 -0
  243. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  244. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/pgm.py +0 -0
  245. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/qbpm.py +0 -0
  246. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  247. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/scatterguard.py +0 -0
  248. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/scintillator.py +0 -0
  249. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/slits.py +0 -0
  250. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/smargon.py +0 -0
  251. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/status.py +0 -0
  252. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/synchrotron.py +0 -0
  253. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/tetramm.py +0 -0
  254. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/__init__.py +0 -0
  255. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  256. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/turbo_slit.py +0 -0
  257. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/__init__.py +0 -0
  258. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  259. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  260. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/motor_utils.py +0 -0
  261. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/util/test_utils.py +0 -0
  262. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  263. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/webcam.py +0 -0
  264. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  265. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  266. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  267. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/__init__.py +0 -0
  268. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  269. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  270. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  271. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  272. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  273. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/log.py +0 -0
  274. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  275. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/__init__.py +0 -0
  276. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  277. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/data_session.py +0 -0
  278. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  279. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/__init__.py +0 -0
  280. {dls_dodal-1.41.0/system_tests → dls_dodal-1.42.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  281. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/save_panda.py +0 -0
  282. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/scanspec.py +0 -0
  283. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/plans/wrapped.py +0 -0
  284. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/src/dodal/utils.py +0 -0
  285. {dls_dodal-1.41.0/tests → dls_dodal-1.42.0/system_tests}/__init__.py +0 -0
  286. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_adsim.py +0 -0
  287. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_aperturescatterguard_system.py +0 -0
  288. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_cli.py +0 -0
  289. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_gridscan_system.py +0 -0
  290. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_oav_system.py +0 -0
  291. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_oav_to_redis_system.py +0 -0
  292. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_slit_gaps_system.py +0 -0
  293. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_smargon_system.py +0 -0
  294. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_synchrotron_system.py +0 -0
  295. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_zebra_system.py +0 -0
  296. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/system_tests/test_zocalo_results.py +0 -0
  297. {dls_dodal-1.41.0/tests/beamlines → dls_dodal-1.42.0/tests}/__init__.py +0 -0
  298. {dls_dodal-1.41.0/tests/beamlines/unit_tests → dls_dodal-1.42.0/tests/beamlines}/__init__.py +0 -0
  299. {dls_dodal-1.41.0/tests/common → dls_dodal-1.42.0/tests/beamlines/unit_tests}/__init__.py +0 -0
  300. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  301. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  302. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  303. {dls_dodal-1.41.0/tests/common/beamlines → dls_dodal-1.42.0/tests/common}/__init__.py +0 -0
  304. {dls_dodal-1.41.0/tests/devices → dls_dodal-1.42.0/tests/common/beamlines}/__init__.py +0 -0
  305. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  306. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  307. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  308. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  309. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_coordination.py +0 -0
  310. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_crystal_metadata.py +0 -0
  311. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_maths.py +0 -0
  312. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/common/test_udc_directory_provider.py +0 -0
  313. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/conftest.py +0 -0
  314. {dls_dodal-1.41.0/tests/devices/i03 → dls_dodal-1.42.0/tests/devices}/__init__.py +0 -0
  315. {dls_dodal-1.41.0/tests/devices/i04 → dls_dodal-1.42.0/tests/devices/i03}/__init__.py +0 -0
  316. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i03/test_beamstop.py +0 -0
  317. {dls_dodal-1.41.0/tests/devices/i19 → dls_dodal-1.42.0/tests/devices/i04}/__init__.py +0 -0
  318. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i04/test_transfocator.py +0 -0
  319. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  320. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  321. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  322. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  323. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  324. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  325. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  326. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i13_1/test_merlin.py +0 -0
  327. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  328. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_table.py +0 -0
  329. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
  330. {dls_dodal-1.41.0/tests/devices/unit_tests → dls_dodal-1.42.0/tests/devices/i19}/__init__.py +0 -0
  331. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i19/test_shutter.py +0 -0
  332. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_dcm.py +0 -0
  333. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_fswitch.py +0 -0
  334. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/i22/test_metadataholder.py +0 -0
  335. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/test_diamond_filter.py +0 -0
  336. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  337. {dls_dodal-1.41.0/tests/devices/unit_tests/i24 → dls_dodal-1.42.0/tests/devices/unit_tests}/__init__.py +0 -0
  338. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/conftest.py +0 -0
  339. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  340. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  341. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  342. {dls_dodal-1.41.0/tests/devices/unit_tests/oav → dls_dodal-1.42.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  343. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  344. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  345. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  346. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  347. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  348. {dls_dodal-1.41.0/tests/devices/unit_tests/util → dls_dodal-1.42.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  349. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  350. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  351. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  352. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  353. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  354. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  355. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  356. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  357. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  358. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  359. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  360. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  361. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +0 -0
  362. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  363. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_backlight.py +0 -0
  364. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  365. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  366. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  367. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  368. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  369. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  370. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  371. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_dcm.py +0 -0
  372. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  373. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  374. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
  375. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  376. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  377. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  378. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  379. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  380. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_odin.py +0 -0
  381. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  382. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  383. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_shutter.py +0 -0
  384. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_slits.py +0 -0
  385. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  386. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_status.py +0 -0
  387. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  388. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
  389. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  390. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_utils.py +0 -0
  391. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  392. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_webcam.py +0 -0
  393. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  394. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  395. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  396. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  397. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  398. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  399. {dls_dodal-1.41.0/tests/fake_zocalo → dls_dodal-1.42.0/tests/devices/unit_tests/util}/__init__.py +0 -0
  400. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  401. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  402. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  403. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  404. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline.py +0 -0
  405. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  406. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_broken_dependency.py +0 -0
  407. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_dependencies.py +0 -0
  408. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  409. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  410. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_beamline_some_devices_working.py +0 -0
  411. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_device_factory_beamline.py +0 -0
  412. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/README.rst +0 -0
  413. {dls_dodal-1.41.0/tests/unit_tests → dls_dodal-1.42.0/tests/fake_zocalo}/__init__.py +0 -0
  414. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/__main__.py +0 -0
  415. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  416. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  417. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_compliance.py +0 -0
  418. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_scanspec.py +0 -0
  419. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/plans/test_wrapped.py +0 -0
  420. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  421. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/bad_beamlineParameters +0 -0
  422. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/i04_beamlineParameters +0 -0
  423. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  424. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  425. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  426. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  427. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  428. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  429. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  430. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/topup_long_delay.txt +0 -0
  431. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_data/topup_short_params.txt +0 -0
  432. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/test_utils.py +0 -0
  433. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/unit_tests/test_cli.py +0 -0
  434. {dls_dodal-1.41.0 → dls_dodal-1.42.0}/tests/unit_tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.41.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
@@ -246,7 +246,7 @@ Requires-Dist: pipdeptree; extra == "dev"
246
246
  Requires-Dist: pre-commit; extra == "dev"
247
247
  Requires-Dist: psutil; extra == "dev"
248
248
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
249
- Requires-Dist: pyright==1.1.394; extra == "dev"
249
+ Requires-Dist: pyright; extra == "dev"
250
250
  Requires-Dist: pytest; extra == "dev"
251
251
  Requires-Dist: pytest-asyncio; extra == "dev"
252
252
  Requires-Dist: pytest-cov; 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",
@@ -55,7 +55,7 @@ dev = [
55
55
  "pre-commit",
56
56
  "psutil",
57
57
  "pydata-sphinx-theme>=0.12",
58
- "pyright==1.1.394", # See https://github.com/DiamondLightSource/dodal/issues/1079
58
+ "pyright",
59
59
  "pytest",
60
60
  "pytest-asyncio",
61
61
  "pytest-cov",
@@ -178,14 +178,15 @@ lint.select = [
178
178
  "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
179
179
  "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
180
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/
181
182
  ]
182
183
 
183
184
  [tool.ruff.lint.per-file-ignores]
184
185
  # By default, private member access is allowed in tests
185
186
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
186
- # Remove this line to forbid private member access in tests
187
- "tests/**/*" = ["SLF001"]
188
- "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"]
189
190
 
190
191
  [tool.importlinter]
191
192
  root_package = "dodal"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dls-dodal
3
- Version: 1.41.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
@@ -246,7 +246,7 @@ Requires-Dist: pipdeptree; extra == "dev"
246
246
  Requires-Dist: pre-commit; extra == "dev"
247
247
  Requires-Dist: psutil; extra == "dev"
248
248
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
249
- Requires-Dist: pyright==1.1.394; extra == "dev"
249
+ Requires-Dist: pyright; extra == "dev"
250
250
  Requires-Dist: pytest; extra == "dev"
251
251
  Requires-Dist: pytest-asyncio; extra == "dev"
252
252
  Requires-Dist: pytest-cov; extra == "dev"
@@ -90,6 +90,7 @@ src/dodal/beamline_specific_utils/i03.py
90
90
  src/dodal/beamlines/README.md
91
91
  src/dodal/beamlines/__init__.py
92
92
  src/dodal/beamlines/adsim.py
93
+ src/dodal/beamlines/aithre.py
93
94
  src/dodal/beamlines/b01_1.py
94
95
  src/dodal/beamlines/i02_1.py
95
96
  src/dodal/beamlines/i03.py
@@ -99,6 +100,7 @@ src/dodal/beamlines/i13_1.py
99
100
  src/dodal/beamlines/i18.py
100
101
  src/dodal/beamlines/i19_1.py
101
102
  src/dodal/beamlines/i19_2.py
103
+ src/dodal/beamlines/i19_optics.py
102
104
  src/dodal/beamlines/i20_1.py
103
105
  src/dodal/beamlines/i22.py
104
106
  src/dodal/beamlines/i23.py
@@ -161,6 +163,7 @@ src/dodal/devices/undulator_dcm.py
161
163
  src/dodal/devices/watsonmarlow323_pump.py
162
164
  src/dodal/devices/webcam.py
163
165
  src/dodal/devices/xbpm_feedback.py
166
+ src/dodal/devices/aithre_lasershaping/goniometer.py
164
167
  src/dodal/devices/areadetector/plugins/CAM.py
165
168
  src/dodal/devices/areadetector/plugins/MJPG.py
166
169
  src/dodal/devices/attenuator/attenuator.py
@@ -197,6 +200,7 @@ src/dodal/devices/i18/diode.py
197
200
  src/dodal/devices/i18/table.py
198
201
  src/dodal/devices/i18/thor_labs_stage.py
199
202
  src/dodal/devices/i19/__init__.py
203
+ src/dodal/devices/i19/hutch_access.py
200
204
  src/dodal/devices/i19/shutter.py
201
205
  src/dodal/devices/i20_1/__init__.py
202
206
  src/dodal/devices/i22/dcm.py
@@ -255,7 +259,10 @@ src/dodal/plan_stubs/wrapped.py
255
259
  src/dodal/plans/__init__.py
256
260
  src/dodal/plans/save_panda.py
257
261
  src/dodal/plans/scanspec.py
262
+ src/dodal/plans/verify_undulator_gap.py
258
263
  src/dodal/plans/wrapped.py
264
+ src/dodal/plans/preprocessors/__init__.py
265
+ src/dodal/plans/preprocessors/verify_undulator_gap.py
259
266
  system_tests/__init__.py
260
267
  system_tests/test_adsim.py
261
268
  system_tests/test_aperturescatterguard_system.py
@@ -272,6 +279,7 @@ system_tests/test_zebra_system.py
272
279
  system_tests/test_zocalo_results.py
273
280
  tests/__init__.py
274
281
  tests/conftest.py
282
+ tests/constants.py
275
283
  tests/fake_beamline.py
276
284
  tests/fake_beamline_all_devices_raise_exception.py
277
285
  tests/fake_beamline_broken_dependency.py
@@ -403,7 +411,9 @@ tests/plan_stubs/test_wrapped_stubs.py
403
411
  tests/plans/conftest.py
404
412
  tests/plans/test_compliance.py
405
413
  tests/plans/test_scanspec.py
414
+ tests/plans/test_verify_undulator_gap_plan.py
406
415
  tests/plans/test_wrapped.py
416
+ tests/plans/test_preprocessors/test_verify_undulator_gap.py
407
417
  tests/preprocessors/test_filesystem_metadata.py
408
418
  tests/test_data/bad_beamlineParameters
409
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
@@ -31,7 +31,7 @@ pipdeptree
31
31
  pre-commit
32
32
  psutil
33
33
  pydata-sphinx-theme>=0.12
34
- pyright==1.1.394
34
+ pyright
35
35
  pytest
36
36
  pytest-asyncio
37
37
  pytest-cov
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.41.0'
21
- __version_tuple__ = version_tuple = (1, 41, 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")
@@ -0,0 +1,78 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adaravis import AravisDetector
4
+ from ophyd_async.fastcs.panda import HDFPanda
5
+
6
+ from dodal.common.beamlines.beamline_utils import (
7
+ device_factory,
8
+ get_path_provider,
9
+ set_path_provider,
10
+ )
11
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
+ from dodal.common.beamlines.device_helpers import DET_SUFFIX, HDF5_SUFFIX
13
+ from dodal.common.visit import StaticVisitPathProvider
14
+ from dodal.devices.p45 import Choppers, TomoStageWithStretchAndSkew
15
+ from dodal.log import set_beamline as set_log_beamline
16
+ from dodal.utils import BeamlinePrefix, get_beamline_name
17
+
18
+ BL = get_beamline_name("p45")
19
+ PREFIX = BeamlinePrefix(BL)
20
+ set_log_beamline(BL)
21
+ set_utils_beamline(BL)
22
+
23
+ set_path_provider(
24
+ StaticVisitPathProvider(
25
+ BL,
26
+ Path("/data/2024/cm37283-2/"), # latest commissioning visit
27
+ )
28
+ )
29
+
30
+
31
+ @device_factory()
32
+ def sample() -> TomoStageWithStretchAndSkew:
33
+ return TomoStageWithStretchAndSkew(f"{PREFIX.beamline_prefix}-MO-STAGE-01:")
34
+
35
+
36
+ @device_factory()
37
+ def choppers() -> Choppers:
38
+ return Choppers(f"{PREFIX.beamline_prefix}-MO-CHOP-01:")
39
+
40
+
41
+ # Disconnected
42
+ @device_factory(skip=True)
43
+ def det() -> AravisDetector:
44
+ return AravisDetector(
45
+ f"{PREFIX.beamline_prefix}-EA-MAP-01:",
46
+ path_provider=get_path_provider(),
47
+ drv_suffix=DET_SUFFIX,
48
+ fileio_suffix=HDF5_SUFFIX,
49
+ )
50
+
51
+
52
+ # Disconnected
53
+ @device_factory(skip=True)
54
+ def diff() -> AravisDetector:
55
+ return AravisDetector(
56
+ f"{PREFIX.beamline_prefix}-EA-DIFF-01:",
57
+ path_provider=get_path_provider(),
58
+ drv_suffix=DET_SUFFIX,
59
+ fileio_suffix=HDF5_SUFFIX,
60
+ )
61
+
62
+
63
+ # Must document what PandAs are physically connected to
64
+ # See: https://github.com/bluesky/ophyd-async/issues/284
65
+ @device_factory(skip=True)
66
+ def panda1() -> HDFPanda:
67
+ return HDFPanda(
68
+ f"{PREFIX.beamline_prefix}-MO-PANDA-01:",
69
+ path_provider=get_path_provider(),
70
+ )
71
+
72
+
73
+ @device_factory(skip=True)
74
+ def panda2() -> HDFPanda:
75
+ return HDFPanda(
76
+ f"{PREFIX.beamline_prefix}-MO-PANDA-02:",
77
+ path_provider=get_path_provider(),
78
+ )
@@ -78,7 +78,7 @@ class RemoteDirectoryServiceClient(DirectoryServiceClient):
78
78
  ):
79
79
  response.raise_for_status()
80
80
  json = await response.json()
81
- return DataCollectionIdentifier.model_validate_json(json)
81
+ return DataCollectionIdentifier.model_validate(json)
82
82
 
83
83
 
84
84
  class LocalDirectoryServiceClient(DirectoryServiceClient):
@@ -0,0 +1,15 @@
1
+ from ophyd_async.core import StandardReadable
2
+ from ophyd_async.epics.motor import Motor
3
+
4
+
5
+ class Goniometer(StandardReadable):
6
+ """Goniometer and the stages it sits on"""
7
+
8
+ def __init__(self, prefix: str, name: str = "") -> None:
9
+ self.x = Motor(prefix + "X")
10
+ self.y = Motor(prefix + "Y")
11
+ self.z = Motor(prefix + "Z")
12
+ self.sampy = Motor(prefix + "SAMPY")
13
+ self.sampz = Motor(prefix + "SAMPZ")
14
+ self.omega = Motor(prefix + "OMEGA")
15
+ super().__init__(name)
@@ -123,7 +123,7 @@ def load_positions_from_beamline_parameters(
123
123
  }
124
124
 
125
125
 
126
- class ApertureScatterguard(StandardReadable, Movable[ApertureValue], Preparable):
126
+ class ApertureScatterguard(StandardReadable, Movable, Preparable):
127
127
  """Move the aperture and scatterguard assembly in a safe way. There are two ways to
128
128
  interact with the device depending on if you want simplicity or move flexibility.
129
129
 
@@ -1,7 +1,7 @@
1
1
  import abc
2
2
  import asyncio
3
3
  from dataclasses import dataclass
4
- from typing import Any, Generic, TypeVar
4
+ from typing import Any
5
5
 
6
6
  import numpy as np
7
7
  from bluesky.protocols import Movable
@@ -21,8 +21,6 @@ from pydantic import BaseModel, ConfigDict, RootModel
21
21
 
22
22
  from dodal.log import LOGGER
23
23
 
24
- T = TypeVar("T")
25
-
26
24
 
27
25
  class UndulatorGateStatus(StrictEnum):
28
26
  OPEN = "Open"
@@ -101,7 +99,7 @@ async def estimate_motor_timeout(
101
99
  return abs((target_pos - cur_pos) * 2.0 / vel) + 1
102
100
 
103
101
 
104
- class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
102
+ class SafeUndulatorMover(StandardReadable, Movable):
105
103
  """A device that will check it's safe to move the undulator before moving it and
106
104
  wait for the undulator to be safe again before calling the move complete.
107
105
  """
@@ -117,7 +115,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
117
115
  super().__init__(name)
118
116
 
119
117
  @AsyncStatus.wrap
120
- async def set(self, value: T) -> None:
118
+ async def set(self, value) -> None:
121
119
  LOGGER.info(f"Setting {self.name} to {value}")
122
120
  await self.raise_if_cannot_move()
123
121
  await self._set_demand_positions(value)
@@ -127,7 +125,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
127
125
  await wait_for_value(self.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
128
126
 
129
127
  @abc.abstractmethod
130
- async def _set_demand_positions(self, value: T) -> None:
128
+ async def _set_demand_positions(self, value) -> None:
131
129
  """Set the demand positions on the device without actually hitting move."""
132
130
 
133
131
  @abc.abstractmethod
@@ -141,7 +139,7 @@ class SafeUndulatorMover(StandardReadable, Movable[T], Generic[T]):
141
139
  raise RuntimeError(f"{self.name} is already in motion.")
142
140
 
143
141
 
144
- class UndulatorGap(SafeUndulatorMover[float]):
142
+ class UndulatorGap(SafeUndulatorMover):
145
143
  """A device with a collection of epics signals to set Apple 2 undulator gap motion.
146
144
  Only PV used by beamline are added the full list is here:
147
145
  /dls_sw/work/R3.14.12.7/support/insertionDevice/db/IDGapVelocityControl.template
@@ -187,7 +185,7 @@ class UndulatorGap(SafeUndulatorMover[float]):
187
185
  self.user_readback = epics_signal_r(float, prefix + "CURRGAPD")
188
186
  super().__init__(self.set_move, prefix, name)
189
187
 
190
- async def _set_demand_positions(self, value: float) -> None:
188
+ async def _set_demand_positions(self, value) -> None:
191
189
  await self.user_setpoint.set(str(value))
192
190
 
193
191
  async def get_timeout(self) -> float:
@@ -236,7 +234,7 @@ class UndulatorPhaseMotor(StandardReadable):
236
234
  super().__init__(name=name)
237
235
 
238
236
 
239
- class UndulatorPhaseAxes(SafeUndulatorMover[Apple2PhasesVal]):
237
+ class UndulatorPhaseAxes(SafeUndulatorMover):
240
238
  """
241
239
  A collection of 4 phase Motor to make up the full id phase motion. We are using the diamond pv convention.
242
240
  e.g. top_outer == Q1
@@ -292,7 +290,7 @@ class UndulatorPhaseAxes(SafeUndulatorMover[Apple2PhasesVal]):
292
290
  return np.max(timeouts)
293
291
 
294
292
 
295
- class UndulatorJawPhase(SafeUndulatorMover[float]):
293
+ class UndulatorJawPhase(SafeUndulatorMover):
296
294
  """
297
295
  A JawPhase movable, this is use for moving the jaw phase which is use to control the
298
296
  linear arbitrary polarisation but only one some of the beamline.
@@ -29,7 +29,7 @@ class ReadOnlyAttenuator(StandardReadable):
29
29
  super().__init__(name)
30
30
 
31
31
 
32
- class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
32
+ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable):
33
33
  """The attenuator will insert filters into the beam to reduce its transmission.
34
34
  In this attenuator, each filter can be in one of two states: IN or OUT
35
35
 
@@ -15,7 +15,7 @@ class BacklightPosition(StrictEnum):
15
15
  OUT = "Out"
16
16
 
17
17
 
18
- class Backlight(StandardReadable, Movable[BacklightPosition]):
18
+ class Backlight(StandardReadable, Movable):
19
19
  """Simple device to trigger the pneumatic in/out."""
20
20
 
21
21
  TIME_TO_MOVE_S = 1.0 # Tested using a stopwatch on the beamline 09/2024
@@ -41,7 +41,7 @@ class BimorphMirrorStatus(StrictEnum):
41
41
  ERROR = "Error"
42
42
 
43
43
 
44
- class BimorphMirrorChannel(StandardReadable, Movable[float], EpicsDevice):
44
+ class BimorphMirrorChannel(StandardReadable, Movable, EpicsDevice):
45
45
  """Collection of PVs comprising a single bimorph channel.
46
46
 
47
47
  Attributes:
@@ -66,7 +66,7 @@ class BimorphMirrorChannel(StandardReadable, Movable[float], EpicsDevice):
66
66
  await self.output_voltage.set(value)
67
67
 
68
68
 
69
- class BimorphMirror(StandardReadable, Movable[Mapping[int, float]]):
69
+ class BimorphMirror(StandardReadable, Movable):
70
70
  """Class to represent CAENels Bimorph Mirrors.
71
71
 
72
72
  Attributes:
@@ -32,7 +32,7 @@ class DetectorParams(BaseModel):
32
32
  # Must use model_dump(by_alias=True) if serialising!
33
33
 
34
34
  expected_energy_ev: float | None = None
35
- exposure_time: float
35
+ exposure_time_s: float
36
36
  directory: str # : Path https://github.com/DiamondLightSource/dodal/issues/774
37
37
  prefix: str
38
38
  detector_distance: float
@@ -221,11 +221,11 @@ class EigerDetector(Device, Stageable):
221
221
  def set_cam_pvs(self) -> AndStatus:
222
222
  assert self.detector_params is not None
223
223
  status = self.cam.acquire_time.set(
224
- self.detector_params.exposure_time,
224
+ self.detector_params.exposure_time_s,
225
225
  timeout=self.timeouts.general_status_timeout,
226
226
  )
227
227
  status &= self.cam.acquire_period.set(
228
- self.detector_params.exposure_time,
228
+ self.detector_params.exposure_time_s,
229
229
  timeout=self.timeouts.general_status_timeout,
230
230
  )
231
231
  status &= self.cam.num_exposures.set(
@@ -55,7 +55,7 @@ class HutchInterlock(StandardReadable):
55
55
  return interlock_state == HUTCH_SAFE_FOR_OPERATIONS
56
56
 
57
57
 
58
- class HutchShutter(StandardReadable, Movable[ShutterDemand]):
58
+ class HutchShutter(StandardReadable, Movable):
59
59
  """Device to operate the hutch shutter.
60
60
 
61
61
  When a demand is sent, the device should first check the hutch status \
@@ -175,7 +175,7 @@ class I10Apple2(Apple2):
175
175
  self._available_pol = list(self.lookup_tables["Gap"].keys())
176
176
 
177
177
 
178
- class I10Apple2PGM(StandardReadable, Movable[float]):
178
+ class I10Apple2PGM(StandardReadable, Movable):
179
179
  """
180
180
  Compound device to set both ID and PGM energy at the sample time,poly_deg
181
181
 
@@ -211,7 +211,7 @@ class I10Apple2PGM(StandardReadable, Movable[float]):
211
211
  )
212
212
 
213
213
 
214
- class I10Apple2Pol(StandardReadable, Movable[str]):
214
+ class I10Apple2Pol(StandardReadable, Movable):
215
215
  """
216
216
  Compound device to set polorisation of ID.
217
217
  """
@@ -240,7 +240,7 @@ class I10Apple2Pol(StandardReadable, Movable[str]):
240
240
  ) # Move id to new polarisation
241
241
 
242
242
 
243
- class LinearArbitraryAngle(StandardReadable, Movable[SupportsFloat]):
243
+ class LinearArbitraryAngle(StandardReadable, Movable):
244
244
  """
245
245
  Device to set polorisation angle of the ID. Linear Arbitrary Angle (laa)
246
246
  is the direction of the magnetic field which can be change by varying the jaw_phase