dls-dodal 1.36.0__tar.gz → 1.36.1a0__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 (383) hide show
  1. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/PKG-INFO +2 -2
  2. dls_dodal-1.36.1a0/docs/explanations/decisions/0003-make-devices-factory.md +28 -0
  3. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/pyproject.toml +1 -1
  4. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
  5. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/SOURCES.txt +9 -0
  6. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/requires.txt +1 -1
  7. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/_version.py +2 -2
  8. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/b01_1.py +16 -31
  9. dls_dodal-1.36.1a0/src/dodal/beamlines/i22.py +251 -0
  10. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i24.py +56 -7
  11. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/p38.py +16 -1
  12. dls_dodal-1.36.1a0/src/dodal/beamlines/p99.py +30 -0
  13. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/training_rig.py +16 -26
  14. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/cli.py +54 -8
  15. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/beamlines/beamline_utils.py +32 -2
  16. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/beamlines/device_helpers.py +2 -0
  17. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/aperture.py +7 -0
  18. dls_dodal-1.36.1a0/src/dodal/devices/aperturescatterguard.py +359 -0
  19. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/dcm.py +5 -4
  20. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/fast_grid_scan.py +21 -46
  21. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/focusing_mirror.py +8 -3
  22. dls_dodal-1.36.1a0/src/dodal/devices/i24/beam_center.py +12 -0
  23. dls_dodal-1.36.1a0/src/dodal/devices/i24/focus_mirrors.py +60 -0
  24. dls_dodal-1.36.1a0/src/dodal/devices/i24/pilatus_metadata.py +44 -0
  25. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/linkam3.py +1 -1
  26. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/motors.py +14 -10
  27. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/oav_detector.py +2 -2
  28. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +4 -5
  29. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/utils.py +1 -0
  30. dls_dodal-1.36.1a0/src/dodal/devices/p99/sample_stage.py +37 -0
  31. dls_dodal-1.36.1a0/src/dodal/devices/pressure_jump_cell.py +299 -0
  32. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/robot.py +1 -1
  33. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/tetramm.py +1 -1
  34. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/undulator.py +4 -1
  35. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/undulator_dcm.py +3 -19
  36. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zocalo/zocalo_results.py +7 -7
  37. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/utils.py +151 -2
  38. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_oav_system.py +2 -4
  39. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/beamlines/test_beamline_utils.py +83 -1
  40. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/beamlines/test_device_instantiation.py +22 -12
  41. dls_dodal-1.36.1a0/tests/devices/unit_tests/i24/test_focus_mirrors.py +27 -0
  42. dls_dodal-1.36.1a0/tests/devices/unit_tests/i24/test_pilatus_metadata.py +24 -0
  43. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +11 -9
  44. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_oav.py +2 -2
  45. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_aperture_scatterguard.py +127 -52
  46. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_eiger.py +1 -1
  47. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_gridscan.py +16 -16
  48. dls_dodal-1.36.1a0/tests/devices/unit_tests/test_pressure_jump_cell.py +354 -0
  49. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_undulator_dcm.py +14 -13
  50. dls_dodal-1.36.1a0/tests/fake_device_factory_beamline.py +34 -0
  51. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_utils.py +178 -1
  52. dls_dodal-1.36.1a0/tests/unit_tests/test_cli.py +307 -0
  53. dls_dodal-1.36.0/src/dodal/beamlines/i22.py +0 -392
  54. dls_dodal-1.36.0/src/dodal/beamlines/p99.py +0 -61
  55. dls_dodal-1.36.0/src/dodal/devices/aperturescatterguard.py +0 -243
  56. dls_dodal-1.36.0/src/dodal/devices/p99/sample_stage.py +0 -41
  57. dls_dodal-1.36.0/tests/unit_tests/test_cli.py +0 -113
  58. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.copier-answers.yml +0 -0
  59. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.devcontainer/devcontainer.json +0 -0
  60. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/CONTRIBUTING.md +0 -0
  61. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  62. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/actions/install_requirements/action.yml +0 -0
  63. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/dependabot.yml +0 -0
  64. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/pages/index.html +0 -0
  65. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/pages/make_switcher.py +0 -0
  66. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_check.yml +0 -0
  67. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_dist.yml +0 -0
  68. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_docs.yml +0 -0
  69. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_pypi.yml +0 -0
  70. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_release.yml +0 -0
  71. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_test.yml +0 -0
  72. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/_tox.yml +0 -0
  73. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/ci.yml +0 -0
  74. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.github/workflows/periodic.yml +0 -0
  75. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.gitignore +0 -0
  76. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.pre-commit-config.yaml +0 -0
  77. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.vscode/extensions.json +0 -0
  78. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.vscode/launch.json +0 -0
  79. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.vscode/settings.json +0 -0
  80. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/.vscode/tasks.json +0 -0
  81. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/Dockerfile +0 -0
  82. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/LICENSE +0 -0
  83. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/README.md +0 -0
  84. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/catalog-info.yaml +0 -0
  85. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/conftest.py +0 -0
  86. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/_api.rst +0 -0
  87. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/_templates/autosummary/class.rst +0 -0
  88. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/_templates/autosummary/module.rst +0 -0
  89. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/_templates/custom-module-template.rst +0 -0
  90. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/assets/zocalo.png +0 -0
  91. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/conf.py +0 -0
  92. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  93. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  94. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/explanations/decisions/COPYME +0 -0
  95. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/explanations/decisions.md +0 -0
  96. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/explanations.md +0 -0
  97. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/genindex.md +0 -0
  98. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/build-docs.md +0 -0
  99. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/contribute.md +0 -0
  100. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/coverage.md +0 -0
  101. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/create-beamline.rst +0 -0
  102. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/dev-install.md +0 -0
  103. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/excalidraw.md +0 -0
  104. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/lint.md +0 -0
  105. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/lock-requirements.md +0 -0
  106. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  107. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/make-release.md +0 -0
  108. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/move-code.rst +0 -0
  109. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/pypi.md +0 -0
  110. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/run-tests.md +0 -0
  111. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/static-analysis.md +0 -0
  112. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/update-template.md +0 -0
  113. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/write-tests.md +0 -0
  114. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to/zocalo.rst +0 -0
  115. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/how-to.md +0 -0
  116. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/images/dls-logo.svg +0 -0
  117. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/images/excalidraw-example.svg +0 -0
  118. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/index.md +0 -0
  119. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/reference/device-standards.rst +0 -0
  120. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/reference/standards.rst +0 -0
  121. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/reference.md +0 -0
  122. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/tutorials/get_started.rst +0 -0
  123. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/tutorials/installation.md +0 -0
  124. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/docs/tutorials.md +0 -0
  125. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/pull_request_template.md +0 -0
  126. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/setup.cfg +0 -0
  127. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/__init__.py +0 -0
  128. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  129. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  130. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  131. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/__init__.py +0 -0
  132. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/__main__.py +0 -0
  133. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/adsim.py +0 -0
  134. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  135. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  136. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/README.md +0 -0
  137. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/__init__.py +0 -0
  138. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i03.py +0 -0
  139. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i04.py +0 -0
  140. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i10.py +0 -0
  141. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i13_1.py +0 -0
  142. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i20_1.py +0 -0
  143. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/i23.py +0 -0
  144. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/beamlines/p45.py +0 -0
  145. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/__init__.py +0 -0
  146. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/beamlines/__init__.py +0 -0
  147. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  148. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/coordination.py +0 -0
  149. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/crystal_metadata.py +0 -0
  150. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/maths.py +0 -0
  151. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/signal_utils.py +0 -0
  152. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/types.py +0 -0
  153. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/udc_directory_provider.py +0 -0
  154. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/common/visit.py +0 -0
  155. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/CTAB.py +0 -0
  156. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/__init__.py +0 -0
  157. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/adsim.py +0 -0
  158. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/apple2_undulator.py +0 -0
  159. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/__init__.py +0 -0
  160. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/adaravis.py +0 -0
  161. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/adsim.py +0 -0
  162. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/adutils.py +0 -0
  163. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  164. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  165. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/attenuator.py +0 -0
  166. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/backlight.py +0 -0
  167. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/cryostream.py +0 -0
  168. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/__init__.py +0 -0
  169. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  170. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  171. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/det_resolution.py +0 -0
  172. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/detector.py +0 -0
  173. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/detector/detector_motion.py +0 -0
  174. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/diamond_filter.py +0 -0
  175. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/eiger.py +0 -0
  176. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/eiger_odin.py +0 -0
  177. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  178. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/flux.py +0 -0
  179. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/hutch_shutter.py +0 -0
  180. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i03/__init__.py +0 -0
  181. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i04/transfocator.py +0 -0
  182. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  183. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  184. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i20_1/__init__.py +0 -0
  185. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i22/dcm.py +0 -0
  186. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i22/fswitch.py +0 -0
  187. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i22/nxsas.py +0 -0
  188. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/__init__.py +0 -0
  189. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/aperture.py +0 -0
  190. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/beamstop.py +0 -0
  191. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/dcm.py +0 -0
  192. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  193. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  194. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/pmac.py +0 -0
  195. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/i24/vgonio.py +0 -0
  196. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/ipin.py +0 -0
  197. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/logging_ophyd_device.py +0 -0
  198. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/__init__.py +0 -0
  199. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  200. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  201. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  202. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  203. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  204. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  205. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  206. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +0 -0
  207. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  208. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/p45.py +0 -0
  209. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/p99/__init__.py +0 -0
  210. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/pgm.py +0 -0
  211. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/qbpm.py +0 -0
  212. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  213. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/scatterguard.py +0 -0
  214. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/scintillator.py +0 -0
  215. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/slits.py +0 -0
  216. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/smargon.py +0 -0
  217. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/status.py +0 -0
  218. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/synchrotron.py +0 -0
  219. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/thawer.py +0 -0
  220. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/training_rig/__init__.py +0 -0
  221. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  222. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/turbo_slit.py +0 -0
  223. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/__init__.py +0 -0
  224. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  225. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/epics_util.py +0 -0
  226. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/lookup_tables.py +0 -0
  227. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/motor_utils.py +0 -0
  228. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/save_panda.py +0 -0
  229. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/util/test_utils.py +0 -0
  230. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  231. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/webcam.py +0 -0
  232. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/xbpm_feedback.py +0 -0
  233. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  234. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  235. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zebra.py +0 -0
  236. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zebra_controlled_shutter.py +0 -0
  237. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zocalo/__init__.py +0 -0
  238. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  239. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  240. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/log.py +0 -0
  241. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  242. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plan_stubs/__init__.py +0 -0
  243. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plan_stubs/check_topup.py +0 -0
  244. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plan_stubs/data_session.py +0 -0
  245. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  246. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plan_stubs/wrapped.py +0 -0
  247. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plans/__init__.py +0 -0
  248. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plans/scanspec.py +0 -0
  249. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/src/dodal/plans/wrapped.py +0 -0
  250. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/__init__.py +0 -0
  251. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_aperturescatterguard_system.py +0 -0
  252. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_eiger_system.py +0 -0
  253. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_gridscan_system.py +0 -0
  254. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_oav_to_redis_system.py +0 -0
  255. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_slit_gaps_system.py +0 -0
  256. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_smargon_system.py +0 -0
  257. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_synchrotron_system.py +0 -0
  258. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_undulator_system.py +0 -0
  259. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_zebra_system.py +0 -0
  260. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/system_tests/test_zocalo_results.py +0 -0
  261. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/__init__.py +0 -0
  262. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/beamlines/__init__.py +0 -0
  263. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/beamlines/unit_tests/__init__.py +0 -0
  264. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  265. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  266. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
  267. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/__init__.py +0 -0
  268. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/beamlines/__init__.py +0 -0
  269. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  270. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/beamlines/test_device_helpers.py +0 -0
  271. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/test_coordination.py +0 -0
  272. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/test_crystal_metadata.py +0 -0
  273. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/test_maths.py +0 -0
  274. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/test_udc_directory_provider.py +0 -0
  275. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/common/test_visit.py +0 -0
  276. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/__init__.py +0 -0
  277. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i04/__init__.py +0 -0
  278. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i04/test_transfocator.py +0 -0
  279. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  280. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  281. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  282. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  283. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  284. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  285. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i10/test_i10Apple2.py +0 -0
  286. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i22/test_dcm.py +0 -0
  287. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i22/test_fswitch.py +0 -0
  288. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/i22/test_metadataholder.py +0 -0
  289. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/test_diamond_filter.py +0 -0
  290. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  291. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/__init__.py +0 -0
  292. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/conftest.py +0 -0
  293. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  294. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  295. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  296. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/i24/__init__.py +0 -0
  297. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  298. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/i24/test_pmac.py +0 -0
  299. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  300. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/__init__.py +0 -0
  301. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  302. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  303. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  304. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  305. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  306. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_oav_utils.py +0 -0
  307. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  308. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  309. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  310. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_aperture.py +0 -0
  311. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  312. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  313. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_backlight.py +0 -0
  314. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  315. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  316. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  317. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  318. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  319. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  320. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_dcm.py +0 -0
  321. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_display.configuration +0 -0
  322. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  323. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  324. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  325. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  326. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  327. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  328. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_odin.py +0 -0
  329. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  330. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_shutter.py +0 -0
  331. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_slits.py +0 -0
  332. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_smargon.py +0 -0
  333. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_status.py +0 -0
  334. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  335. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_tetramm.py +0 -0
  336. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_thawer.py +0 -0
  337. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_undulator.py +0 -0
  338. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_utils.py +0 -0
  339. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  340. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_webcam.py +0 -0
  341. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  342. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  343. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_zebra.py +0 -0
  344. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  345. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/test_zocalo_results.py +0 -0
  346. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/util/__init__.py +0 -0
  347. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  348. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  349. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  350. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  351. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline.py +0 -0
  352. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  353. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_broken_dependency.py +0 -0
  354. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_dependencies.py +0 -0
  355. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  356. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  357. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_beamline_some_devices_working.py +0 -0
  358. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_zocalo/README.rst +0 -0
  359. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_zocalo/__init__.py +0 -0
  360. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_zocalo/__main__.py +0 -0
  361. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  362. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  363. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plan_stubs/test_topup_plan.py +0 -0
  364. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  365. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plans/conftest.py +0 -0
  366. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plans/test_compliance.py +0 -0
  367. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plans/test_scanspec.py +0 -0
  368. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/plans/test_wrapped.py +0 -0
  369. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  370. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_cli.py +0 -0
  371. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/bad_beamlineParameters +0 -0
  372. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/i04_beamlineParameters +0 -0
  373. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  374. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  375. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  376. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_beamline_parameters.txt +0 -0
  377. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_det_dist_converter.txt +0 -0
  378. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  379. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  380. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/topup_long_delay.txt +0 -0
  381. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/test_data/topup_short_params.txt +0 -0
  382. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/unit_tests/__init__.py +0 -0
  383. {dls_dodal-1.36.0 → dls_dodal-1.36.1a0}/tests/unit_tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.36.0
3
+ Version: 1.36.1a0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async==0.8.0a4
219
+ Requires-Dist: ophyd-async>=0.8.0a5
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -0,0 +1,28 @@
1
+ # 3. Add device factory decorator with lazy connect support
2
+
3
+ Date: 2024-04-26
4
+
5
+ ## Status
6
+
7
+ Accepted
8
+
9
+ ## Context
10
+
11
+ Device instances should be capable of being created without necessarily connecting, so long as they are connected prior to being utilised to collect data. The current method puts requirements on the init method of device classes, and does not expose all options for connecting to ophyd-async devices.
12
+
13
+ ## Decision
14
+
15
+ DAQ members led us to this proposal:
16
+
17
+ - ophyd-async: make Device.connect(mock, timeout, force=False) idempotent
18
+ - ophyd-async: make ensure_connected(\*devices) plan stub
19
+ - dodal: make device_factory() decorator that may construct, name, cache and connect a device
20
+ - dodal: collect_factories() returns all device factories
21
+ - blueapi: call collect_factories(), instantiate and connect Devices appropriately, log those that fail
22
+ - blueapi: when plan is called, run ensure_connected on all plan args and defaults that are Devices
23
+
24
+ We can then iterate on this if the parallel connect causes a broadcast storm. We could also in future add a monitor to a heartbeat PV per device in Device.connect so that it would reconnect next time it was called.
25
+
26
+ ## Consequences
27
+
28
+ Beamlines will be converted to use the decorator, and default arguments to plans should be replaced with a non-eagerly connecting call to the initializer controlling device.
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
15
15
  dependencies = [
16
16
  "click",
17
17
  "ophyd",
18
- "ophyd-async==0.8.0a4",
18
+ "ophyd-async >= 0.8.0a5",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.36.0
3
+ Version: 1.36.1a0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async==0.8.0a4
219
+ Requires-Dist: ophyd-async>=0.8.0a5
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -43,6 +43,7 @@ docs/assets/zocalo.png
43
43
  docs/explanations/decisions.md
44
44
  docs/explanations/decisions/0001-record-architecture-decisions.md
45
45
  docs/explanations/decisions/0002-switched-to-python-copier-template.md
46
+ docs/explanations/decisions/0003-make-devices-factory.md
46
47
  docs/explanations/decisions/COPYME
47
48
  docs/how-to/build-docs.md
48
49
  docs/how-to/contribute.md
@@ -134,6 +135,7 @@ src/dodal/devices/logging_ophyd_device.py
134
135
  src/dodal/devices/motors.py
135
136
  src/dodal/devices/p45.py
136
137
  src/dodal/devices/pgm.py
138
+ src/dodal/devices/pressure_jump_cell.py
137
139
  src/dodal/devices/qbpm.py
138
140
  src/dodal/devices/robot.py
139
141
  src/dodal/devices/s4_slit_gaps.py
@@ -175,10 +177,13 @@ src/dodal/devices/i22/fswitch.py
175
177
  src/dodal/devices/i22/nxsas.py
176
178
  src/dodal/devices/i24/__init__.py
177
179
  src/dodal/devices/i24/aperture.py
180
+ src/dodal/devices/i24/beam_center.py
178
181
  src/dodal/devices/i24/beamstop.py
179
182
  src/dodal/devices/i24/dcm.py
180
183
  src/dodal/devices/i24/dual_backlight.py
184
+ src/dodal/devices/i24/focus_mirrors.py
181
185
  src/dodal/devices/i24/i24_detector_motion.py
186
+ src/dodal/devices/i24/pilatus_metadata.py
182
187
  src/dodal/devices/i24/pmac.py
183
188
  src/dodal/devices/i24/vgonio.py
184
189
  src/dodal/devices/oav/__init__.py
@@ -240,6 +245,7 @@ tests/fake_beamline_dependencies.py
240
245
  tests/fake_beamline_disordered_dependencies.py
241
246
  tests/fake_beamline_misbehaving_builtins.py
242
247
  tests/fake_beamline_some_devices_working.py
248
+ tests/fake_device_factory_beamline.py
243
249
  tests/test_cli.py
244
250
  tests/test_utils.py
245
251
  tests/beamlines/__init__.py
@@ -295,6 +301,7 @@ tests/devices/unit_tests/test_linkam3.py
295
301
  tests/devices/unit_tests/test_lookup_table.txt
296
302
  tests/devices/unit_tests/test_lookup_table_2.txt
297
303
  tests/devices/unit_tests/test_odin.py
304
+ tests/devices/unit_tests/test_pressure_jump_cell.py
298
305
  tests/devices/unit_tests/test_qbpm.py
299
306
  tests/devices/unit_tests/test_shutter.py
300
307
  tests/devices/unit_tests/test_slits.py
@@ -318,6 +325,8 @@ tests/devices/unit_tests/detector/test_det_resolution.py
318
325
  tests/devices/unit_tests/detector/test_detector.py
319
326
  tests/devices/unit_tests/i24/__init__.py
320
327
  tests/devices/unit_tests/i24/test_dual_backlight.py
328
+ tests/devices/unit_tests/i24/test_focus_mirrors.py
329
+ tests/devices/unit_tests/i24/test_pilatus_metadata.py
321
330
  tests/devices/unit_tests/i24/test_pmac.py
322
331
  tests/devices/unit_tests/i24/test_vgonio.py
323
332
  tests/devices/unit_tests/oav/__init__.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async==0.8.0a4
3
+ ophyd-async>=0.8.0a5
4
4
  bluesky
5
5
  pyepics
6
6
  dataclasses-json
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.36.0'
16
- __version_tuple__ = version_tuple = (1, 36, 0)
15
+ __version__ = version = '1.36.1a0'
16
+ __version_tuple__ = version_tuple = (1, 36, 1)
@@ -4,16 +4,19 @@ from ophyd_async.epics.adaravis import AravisDetector
4
4
  from ophyd_async.fastcs.panda import HDFPanda
5
5
 
6
6
  from dodal.common.beamlines.beamline_utils import (
7
- device_instantiation,
7
+ device_factory,
8
8
  get_path_provider,
9
9
  set_path_provider,
10
10
  )
11
11
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
+ from dodal.common.beamlines.device_helpers import HDF5_PREFIX
12
13
  from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
13
14
  from dodal.devices.synchrotron import Synchrotron
14
15
  from dodal.log import set_beamline as set_log_beamline
16
+ from dodal.utils import BeamlinePrefix
15
17
 
16
18
  BL = "c01"
19
+ PREFIX = BeamlinePrefix(BL)
17
20
  set_log_beamline(BL)
18
21
  set_utils_beamline(BL)
19
22
 
@@ -36,42 +39,24 @@ https://argocd.diamond.ac.uk/applications?showFavorites=false&proj=&sync=&autoSy
36
39
  """
37
40
 
38
41
 
39
- def panda(
40
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
41
- ) -> HDFPanda:
42
- return device_instantiation(
43
- device_factory=HDFPanda,
44
- name="panda",
45
- prefix="-EA-PANDA-01:",
46
- wait=wait_for_connection,
47
- fake=fake_with_ophyd_sim,
42
+ @device_factory()
43
+ def panda() -> HDFPanda:
44
+ return HDFPanda(
45
+ f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
48
46
  path_provider=get_path_provider(),
49
47
  )
50
48
 
51
49
 
52
- def synchrotron(
53
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
54
- ) -> Synchrotron:
55
- return device_instantiation(
56
- Synchrotron,
57
- "synchrotron",
58
- "",
59
- wait_for_connection,
60
- fake_with_ophyd_sim,
61
- bl_prefix=False,
62
- )
50
+ @device_factory()
51
+ def synchrotron() -> Synchrotron:
52
+ return Synchrotron()
63
53
 
64
54
 
65
- def manta(
66
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
67
- ) -> AravisDetector:
68
- return device_instantiation(
69
- AravisDetector,
70
- "manta",
71
- "-DI-DCAM-02:",
72
- wait_for_connection,
73
- fake_with_ophyd_sim,
55
+ @device_factory()
56
+ def manta() -> AravisDetector:
57
+ return AravisDetector(
58
+ f"{PREFIX.beamline_prefix}-DI-DCAM-02:",
74
59
  path_provider=get_path_provider(),
75
60
  drv_suffix="CAM:",
76
- hdf_suffix="HDF5:",
61
+ hdf_suffix=HDF5_PREFIX,
77
62
  )
@@ -0,0 +1,251 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adaravis import AravisDetector
4
+ from ophyd_async.epics.adpilatus import PilatusDetector
5
+ from ophyd_async.fastcs.panda import HDFPanda
6
+
7
+ from dodal.common.beamlines.beamline_utils import (
8
+ device_factory,
9
+ get_path_provider,
10
+ set_path_provider,
11
+ )
12
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
13
+ from dodal.common.beamlines.device_helpers import HDF5_PREFIX
14
+ from dodal.common.crystal_metadata import (
15
+ MaterialsEnum,
16
+ make_crystal_metadata_from_material,
17
+ )
18
+ from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
19
+ from dodal.devices.focusing_mirror import FocusingMirror
20
+ from dodal.devices.i22.dcm import DoubleCrystalMonochromator
21
+ from dodal.devices.i22.fswitch import FSwitch
22
+ from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV, NXSasPilatus
23
+ from dodal.devices.linkam3 import Linkam3
24
+ from dodal.devices.slits import Slits
25
+ from dodal.devices.synchrotron import Synchrotron
26
+ from dodal.devices.tetramm import TetrammDetector
27
+ from dodal.devices.undulator import Undulator
28
+ from dodal.devices.watsonmarlow323_pump import WatsonMarlow323Pump
29
+ from dodal.log import set_beamline as set_log_beamline
30
+ from dodal.utils import BeamlinePrefix, get_beamline_name
31
+
32
+ BL = get_beamline_name("i22")
33
+ PREFIX = BeamlinePrefix(BL)
34
+ set_log_beamline(BL)
35
+ set_utils_beamline(BL)
36
+
37
+ # Currently we must hard-code the visit, determining the visit at runtime requires
38
+ # infrastructure that is still WIP.
39
+ # Communication with GDA is also WIP so for now we determine an arbitrary scan number
40
+ # locally and write the commissioning directory. The scan number is not guaranteed to
41
+ # be unique and the data is at risk - this configuration is for testing only.
42
+ set_path_provider(
43
+ StaticVisitPathProvider(
44
+ BL,
45
+ Path("/dls/i22/data/2024/cm37271-2/bluesky"),
46
+ client=RemoteDirectoryServiceClient("http://i22-control:8088/api"),
47
+ )
48
+ )
49
+
50
+
51
+ @device_factory()
52
+ def saxs() -> PilatusDetector:
53
+ metadata_holder = NXSasMetadataHolder(
54
+ x_pixel_size=(1.72e-1, "mm"),
55
+ y_pixel_size=(1.72e-1, "mm"),
56
+ description="Dectris Pilatus3 2M",
57
+ type="Photon Counting Hybrid Pixel",
58
+ sensor_material="silicon",
59
+ sensor_thickness=(0.45, "mm"),
60
+ distance=(4711.833684146172, "mm"),
61
+ )
62
+ return NXSasPilatus(
63
+ prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-01:",
64
+ path_provider=get_path_provider(),
65
+ drv_suffix="CAM:",
66
+ hdf_suffix=HDF5_PREFIX,
67
+ metadata_holder=metadata_holder,
68
+ )
69
+
70
+
71
+ @device_factory()
72
+ def synchrotron() -> Synchrotron:
73
+ return Synchrotron()
74
+
75
+
76
+ @device_factory()
77
+ def waxs() -> PilatusDetector:
78
+ metadata_holder = NXSasMetadataHolder(
79
+ x_pixel_size=(1.72e-1, "mm"),
80
+ y_pixel_size=(1.72e-1, "mm"),
81
+ description="Dectris Pilatus3 2M",
82
+ type="Photon Counting Hybrid Pixel",
83
+ sensor_material="silicon",
84
+ sensor_thickness=(0.45, "mm"),
85
+ distance=(175.4199417092314, "mm"),
86
+ )
87
+ return NXSasPilatus(
88
+ prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-03:",
89
+ path_provider=get_path_provider(),
90
+ drv_suffix="CAM:",
91
+ hdf_suffix=HDF5_PREFIX,
92
+ metadata_holder=metadata_holder,
93
+ )
94
+
95
+
96
+ @device_factory()
97
+ def i0() -> TetrammDetector:
98
+ return TetrammDetector(
99
+ prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:",
100
+ path_provider=get_path_provider(),
101
+ type="Cividec Diamond XBPM",
102
+ )
103
+
104
+
105
+ @device_factory()
106
+ def it() -> TetrammDetector:
107
+ return TetrammDetector(
108
+ prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:",
109
+ path_provider=get_path_provider(),
110
+ type="PIN Diode",
111
+ )
112
+
113
+
114
+ @device_factory()
115
+ def vfm() -> FocusingMirror:
116
+ return FocusingMirror(
117
+ prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:VFM:",
118
+ )
119
+
120
+
121
+ @device_factory()
122
+ def hfm() -> FocusingMirror:
123
+ return FocusingMirror(
124
+ prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:HFM:",
125
+ )
126
+
127
+
128
+ @device_factory()
129
+ def dcm() -> DoubleCrystalMonochromator:
130
+ return DoubleCrystalMonochromator(
131
+ prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
132
+ temperature_prefix=f"{PREFIX.beamline_prefix}-DI-DCM-01:",
133
+ crystal_1_metadata=make_crystal_metadata_from_material(
134
+ MaterialsEnum.Si, (1, 1, 1)
135
+ ),
136
+ crystal_2_metadata=make_crystal_metadata_from_material(
137
+ MaterialsEnum.Si, (1, 1, 1)
138
+ ),
139
+ )
140
+
141
+
142
+ @device_factory()
143
+ def undulator() -> Undulator:
144
+ return Undulator(
145
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
146
+ id_gap_lookup_table_path="/dls_sw/i22/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
147
+ poles=80,
148
+ length=2.0,
149
+ )
150
+
151
+
152
+ @device_factory()
153
+ def slits_1() -> Slits:
154
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:")
155
+
156
+
157
+ @device_factory()
158
+ def slits_2() -> Slits:
159
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:")
160
+
161
+
162
+ @device_factory()
163
+ def slits_3() -> Slits:
164
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:")
165
+
166
+
167
+ @device_factory()
168
+ def slits_4() -> Slits:
169
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:")
170
+
171
+
172
+ @device_factory()
173
+ def slits_5() -> Slits:
174
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:")
175
+
176
+
177
+ @device_factory()
178
+ def slits_6() -> Slits:
179
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:")
180
+
181
+
182
+ @device_factory()
183
+ def fswitch() -> FSwitch:
184
+ return FSwitch(
185
+ prefix=f"{PREFIX.beamline_prefix}-MO-FSWT-01:",
186
+ lens_geometry="paraboloid",
187
+ cylindrical=True,
188
+ lens_material="Beryllium",
189
+ )
190
+
191
+
192
+ # Must document what PandAs are physically connected to
193
+ # See: https://github.com/bluesky/ophyd-async/issues/284
194
+ @device_factory()
195
+ def panda1() -> HDFPanda:
196
+ return HDFPanda(
197
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
198
+ path_provider=get_path_provider(),
199
+ )
200
+
201
+
202
+ @device_factory(skip=True)
203
+ def panda2() -> HDFPanda:
204
+ return HDFPanda(
205
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-02:",
206
+ path_provider=get_path_provider(),
207
+ )
208
+
209
+
210
+ @device_factory(skip=True)
211
+ def panda3() -> HDFPanda:
212
+ return HDFPanda(
213
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-03:",
214
+ path_provider=get_path_provider(),
215
+ )
216
+
217
+
218
+ @device_factory(skip=True)
219
+ def panda4() -> HDFPanda:
220
+ return HDFPanda(
221
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-04:",
222
+ path_provider=get_path_provider(),
223
+ )
224
+
225
+
226
+ @device_factory()
227
+ def oav() -> AravisDetector:
228
+ metadata_holder = NXSasMetadataHolder(
229
+ x_pixel_size=(3.45e-3, "mm"), # Double check this figure
230
+ y_pixel_size=(3.45e-3, "mm"),
231
+ description="AVT Mako G-507B",
232
+ distance=(-1.0, "m"),
233
+ )
234
+ return NXSasOAV(
235
+ prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
236
+ drv_suffix="DET:",
237
+ hdf_suffix=HDF5_PREFIX,
238
+ path_provider=get_path_provider(),
239
+ metadata_holder=metadata_holder,
240
+ )
241
+
242
+
243
+ @device_factory(skip=True)
244
+ def linkam() -> Linkam3:
245
+ return Linkam3(prefix=f"{PREFIX.beamline_prefix}-EA-TEMPC-05:")
246
+
247
+
248
+ @device_factory()
249
+ def ppump() -> WatsonMarlow323Pump:
250
+ """Sample Environment Peristaltic Pump"""
251
+ return WatsonMarlow323Pump(f"{PREFIX.beamline_prefix}-EA-PUMP-01:")
@@ -1,16 +1,16 @@
1
- from dodal.common.beamlines.beamline_utils import (
2
- BL,
3
- device_instantiation,
4
- )
1
+ from dodal.common.beamlines.beamline_utils import BL, device_instantiation
5
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
6
3
  from dodal.devices.detector import DetectorParams
7
4
  from dodal.devices.eiger import EigerDetector
8
5
  from dodal.devices.hutch_shutter import HutchShutter
9
6
  from dodal.devices.i24.aperture import Aperture
7
+ from dodal.devices.i24.beam_center import DetectorBeamCenter
10
8
  from dodal.devices.i24.beamstop import Beamstop
11
9
  from dodal.devices.i24.dcm import DCM
12
10
  from dodal.devices.i24.dual_backlight import DualBacklight
11
+ from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
13
12
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
13
+ from dodal.devices.i24.pilatus_metadata import PilatusMetadata
14
14
  from dodal.devices.i24.pmac import PMAC
15
15
  from dodal.devices.i24.vgonio import VerticalGoniometer
16
16
  from dodal.devices.oav.oav_detector import OAV
@@ -70,7 +70,6 @@ def backlight(
70
70
  )
71
71
 
72
72
 
73
- @skip_device(lambda: BL == "s24")
74
73
  def detector_motion(
75
74
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
76
75
  ) -> DetectorMotion:
@@ -151,7 +150,6 @@ def oav(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) ->
151
150
  )
152
151
 
153
152
 
154
- @skip_device(lambda: BL == "s24")
155
153
  def vgonio(
156
154
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
157
155
  ) -> VerticalGoniometer:
@@ -180,7 +178,6 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
180
178
  )
181
179
 
182
180
 
183
- @skip_device(lambda: BL == "s24")
184
181
  def shutter(
185
182
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
186
183
  ) -> HutchShutter:
@@ -194,3 +191,55 @@ def shutter(
194
191
  wait_for_connection,
195
192
  fake_with_ophyd_sim,
196
193
  )
194
+
195
+
196
+ def focus_mirrors(
197
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
198
+ ) -> FocusMirrorsMode:
199
+ """Get the i24 focus mirror devise to find the beam size."""
200
+ return device_instantiation(
201
+ FocusMirrorsMode,
202
+ "focus_mirrors",
203
+ "-OP-MFM-01:",
204
+ wait_for_connection,
205
+ fake_with_ophyd_sim,
206
+ )
207
+
208
+
209
+ def eiger_beam_center(
210
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
211
+ ) -> DetectorBeamCenter:
212
+ """A device for setting/reading the beamcenter from the eiger on i24."""
213
+ return device_instantiation(
214
+ DetectorBeamCenter,
215
+ "eiger_bc",
216
+ "-EA-EIGER-01:CAM:",
217
+ wait_for_connection,
218
+ fake_with_ophyd_sim,
219
+ )
220
+
221
+
222
+ def pilatus_beam_center(
223
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
224
+ ) -> DetectorBeamCenter:
225
+ """A device for setting/reading the beamcenter from the pilatus on i24."""
226
+ return device_instantiation(
227
+ DetectorBeamCenter,
228
+ "pilatus_bc",
229
+ "-EA-PILAT-01:cam1:",
230
+ wait_for_connection,
231
+ fake_with_ophyd_sim,
232
+ )
233
+
234
+
235
+ def pilatus_metadata(
236
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
237
+ ) -> PilatusMetadata:
238
+ """A small pilatus driver device for figuring out the filename template."""
239
+ return device_instantiation(
240
+ PilatusMetadata,
241
+ "pilatus_meta",
242
+ "-EA-PILAT-01:",
243
+ wait_for_connection,
244
+ fake_with_ophyd_sim,
245
+ )
@@ -19,6 +19,7 @@ from dodal.devices.focusing_mirror import FocusingMirror
19
19
  from dodal.devices.i22.dcm import DoubleCrystalMonochromator
20
20
  from dodal.devices.i22.fswitch import FSwitch
21
21
  from dodal.devices.linkam3 import Linkam3
22
+ from dodal.devices.pressure_jump_cell import PressureJumpCell
22
23
  from dodal.devices.slits import Slits
23
24
  from dodal.devices.tetramm import TetrammDetector
24
25
  from dodal.devices.undulator import Undulator
@@ -312,7 +313,7 @@ def linkam(
312
313
  return device_instantiation(
313
314
  Linkam3,
314
315
  "linkam",
315
- "-EA-LINKM-02:",
316
+ f"{BeamlinePrefix(BL).insertion_prefix}-EA-LINKM-02:",
316
317
  wait_for_connection,
317
318
  fake_with_ophyd_sim,
318
319
  )
@@ -329,3 +330,17 @@ def ppump(
329
330
  wait_for_connection,
330
331
  fake_with_ophyd_sim,
331
332
  )
333
+
334
+
335
+ def high_pressure_xray_cell(
336
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
337
+ ) -> PressureJumpCell:
338
+ return device_instantiation(
339
+ PressureJumpCell,
340
+ "high_pressure_xray_cell",
341
+ f"{BeamlinePrefix(BL).insertion_prefix}-EA",
342
+ wait_for_connection,
343
+ fake_with_ophyd_sim,
344
+ cell_prefix="-HPXC-01:",
345
+ adc_prefix="-ADC",
346
+ )
@@ -0,0 +1,30 @@
1
+ from dodal.common.beamlines.beamline_utils import device_factory, set_beamline
2
+ from dodal.devices.motors import XYZPositioner
3
+ from dodal.devices.p99.sample_stage import FilterMotor, SampleAngleStage
4
+ from dodal.log import set_beamline as set_log_beamline
5
+ from dodal.utils import BeamlinePrefix, get_beamline_name
6
+
7
+ BL = get_beamline_name("p99")
8
+ PREFIX = BeamlinePrefix(BL)
9
+ set_log_beamline(BL)
10
+ set_beamline(BL)
11
+
12
+
13
+ @device_factory()
14
+ def angle_stage() -> SampleAngleStage:
15
+ return SampleAngleStage(f"{PREFIX.beamline_prefix}-MO-STAGE-01:")
16
+
17
+
18
+ @device_factory()
19
+ def filter() -> FilterMotor:
20
+ return FilterMotor(f"{PREFIX.beamline_prefix}-MO-STAGE-02:MP:SELECT")
21
+
22
+
23
+ @device_factory()
24
+ def sample_stage() -> XYZPositioner:
25
+ return XYZPositioner(f"{PREFIX.beamline_prefix}-MO-STAGE-02:")
26
+
27
+
28
+ @device_factory()
29
+ def lab_stage() -> XYZPositioner:
30
+ return XYZPositioner(f"{PREFIX.beamline_prefix}-MO-STAGE-02:LAB:")