dls-dodal 1.66.0__tar.gz → 1.67.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 (685) hide show
  1. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/PKG-INFO +1 -1
  2. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/create-beamline.md +19 -17
  3. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/PKG-INFO +1 -1
  4. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/SOURCES.txt +31 -5
  5. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/_version.py +3 -3
  6. dls_dodal-1.67.0/src/dodal/beamlines/i03.py +362 -0
  7. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i04.py +22 -1
  8. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i05.py +1 -1
  9. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i06.py +1 -1
  10. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i09_1.py +26 -2
  11. dls_dodal-1.67.0/src/dodal/beamlines/i09_2.py +112 -0
  12. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i10_optics.py +44 -25
  13. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i17.py +7 -3
  14. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i19_1.py +26 -14
  15. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i19_2.py +49 -38
  16. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i21.py +2 -2
  17. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i22.py +16 -1
  18. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/training_rig.py +0 -16
  19. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/cli.py +26 -12
  20. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/coordination.py +3 -2
  21. dls_dodal-1.67.0/src/dodal/device_manager.py +604 -0
  22. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/cryostream.py +28 -57
  23. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/eiger.py +26 -18
  24. dls_dodal-1.67.0/src/dodal/devices/i04/max_pixel.py +38 -0
  25. dls_dodal-1.67.0/src/dodal/devices/i09_1_shared/__init__.py +14 -0
  26. dls_dodal-1.67.0/src/dodal/devices/i09_1_shared/hard_energy.py +112 -0
  27. dls_dodal-1.67.0/src/dodal/devices/i09_2_shared/i09_apple2.py +86 -0
  28. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/i10_apple2.py +23 -21
  29. dls_dodal-1.67.0/src/dodal/devices/i17/i17_apple2.py +66 -0
  30. dls_dodal-1.67.0/src/dodal/devices/i19/access_controlled/attenuator_motor_squad.py +61 -0
  31. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/access_controlled/blueapi_device.py +9 -1
  32. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/access_controlled/shutter.py +2 -4
  33. {dls_dodal-1.66.0/src/dodal/devices → dls_dodal-1.67.0/src/dodal/devices/insertion_device}/apple2_undulator.py +36 -28
  34. dls_dodal-1.67.0/src/dodal/devices/insertion_device/energy_motor_lookup.py +88 -0
  35. dls_dodal-1.67.0/src/dodal/devices/insertion_device/lookup_table_models.py +287 -0
  36. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/motors.py +14 -0
  37. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/robot.py +16 -11
  38. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/__init__.py +1 -1
  39. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +2 -4
  40. dls_dodal-1.67.0/src/dodal/testing/fixtures/devices/apple2.py +78 -0
  41. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/utils.py +6 -3
  42. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/system_tests/test_cli.py +17 -0
  43. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/beamlines/test_device_instantiation.py +7 -2
  44. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/conftest.py +15 -5
  45. dls_dodal-1.67.0/tests/devices/i04/test_max_pixel.py +71 -0
  46. dls_dodal-1.67.0/tests/devices/i09_1_shared/test_hard_energy.py +243 -0
  47. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_data/ExpectedJIDEnergy2GapCalibrations.json +84 -0
  48. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_data/ExpectedJIDEnergy2PhaseCalibrations.json +57 -0
  49. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_data/JIDEnergy2GapCalibrations.csv +7 -0
  50. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_data/JIDEnergy2PhaseCalibrations.csv +10 -0
  51. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_data/__init__.py +23 -0
  52. dls_dodal-1.67.0/tests/devices/i09_2_shared/test_i09_apple2.py +286 -0
  53. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.json +90 -114
  54. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.json +90 -114
  55. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.json +54 -78
  56. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.json +54 -78
  57. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_i10_apple2.py +93 -196
  58. dls_dodal-1.67.0/tests/devices/i17/test_i17_apple2.py +70 -0
  59. dls_dodal-1.67.0/tests/devices/i19/access_controlled/test_attenuator_motor_squad.py +134 -0
  60. dls_dodal-1.67.0/tests/devices/i19/access_controlled/test_attenuator_position_demand.py +145 -0
  61. dls_dodal-1.67.0/tests/devices/insertion_device/conftest.py +48 -0
  62. {dls_dodal-1.66.0/tests/devices → dls_dodal-1.67.0/tests/devices/insertion_device}/test_apple2_undulator.py +79 -117
  63. dls_dodal-1.67.0/tests/devices/insertion_device/test_energy_motor_lookup.py +86 -0
  64. dls_dodal-1.67.0/tests/devices/insertion_device/test_lookup_tables_models.py +93 -0
  65. dls_dodal-1.67.0/tests/devices/insertion_device/util.py +37 -0
  66. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_bart_robot.py +33 -2
  67. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_eiger.py +13 -0
  68. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline.py +2 -2
  69. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_all_devices_raise_exception.py +2 -2
  70. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_broken_dependency.py +2 -2
  71. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_dependencies.py +2 -2
  72. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_disordered_dependencies.py +2 -2
  73. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_device_factory_beamline.py +3 -3
  74. dls_dodal-1.67.0/tests/plans/__init__.py +0 -0
  75. dls_dodal-1.67.0/tests/plans/test_preprocessors/__init__.py +0 -0
  76. dls_dodal-1.67.0/tests/preprocessors/__init__.py +0 -0
  77. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_cli.py +29 -1
  78. dls_dodal-1.67.0/tests/test_device_manager.py +763 -0
  79. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_utils.py +16 -32
  80. dls_dodal-1.67.0/tests/testing/__init__.py +0 -0
  81. dls_dodal-1.67.0/tests/testing/fixtures/__init__.py +0 -0
  82. dls_dodal-1.66.0/src/dodal/beamlines/i03.py +0 -478
  83. dls_dodal-1.66.0/src/dodal/beamlines/i09_2.py +0 -57
  84. dls_dodal-1.66.0/src/dodal/devices/i09_1_shared/__init__.py +0 -7
  85. dls_dodal-1.66.0/src/dodal/devices/i17/i17_apple2.py +0 -54
  86. dls_dodal-1.66.0/src/dodal/devices/util/lookup_tables_apple2.py +0 -390
  87. dls_dodal-1.66.0/tests/devices/i17/test_i17_apple2.py +0 -54
  88. dls_dodal-1.66.0/tests/devices/util/test_lookup_tables_apple2.py +0 -185
  89. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.copier-answers.yml +0 -0
  90. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.devcontainer/devcontainer.json +0 -0
  91. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/CODEOWNERS +0 -0
  92. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/CONTRIBUTING.md +0 -0
  93. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  94. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/actions/install_requirements/action.yml +0 -0
  95. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/dependabot.yml +0 -0
  96. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/pages/index.html +0 -0
  97. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/pages/make_switcher.py +0 -0
  98. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/scripts/check_test_durations.py +0 -0
  99. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_dist.yml +0 -0
  100. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_docs.yml +0 -0
  101. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_pypi.yml +0 -0
  102. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_release.yml +0 -0
  103. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_test.yml +0 -0
  104. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/_tox.yml +0 -0
  105. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/ci.yml +0 -0
  106. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.github/workflows/periodic.yml +0 -0
  107. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.gitignore +0 -0
  108. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.pre-commit-config.yaml +0 -0
  109. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.vscode/extensions.json +0 -0
  110. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.vscode/launch.json +0 -0
  111. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.vscode/settings.json +0 -0
  112. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/.vscode/tasks.json +0 -0
  113. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/Dockerfile +0 -0
  114. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/LICENSE +0 -0
  115. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/README.md +0 -0
  116. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/catalog-info.yaml +0 -0
  117. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/conftest.py +0 -0
  118. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/_templates/autosummary/class.rst +0 -0
  119. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/_templates/autosummary/module.rst +0 -0
  120. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/_templates/custom-module-template.rst +0 -0
  121. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
  122. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/assets/zocalo.png +0 -0
  123. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/conf.py +0 -0
  124. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  125. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  126. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  127. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  128. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  129. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
  130. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions/COPYME +0 -0
  131. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/decisions.md +0 -0
  132. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/reviews.md +0 -0
  133. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/umls/apple2_design.png +0 -0
  134. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations/umls/i10_id_design.png +0 -0
  135. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/explanations.md +0 -0
  136. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/genindex.md +0 -0
  137. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/build-docs.md +0 -0
  138. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/contribute.md +0 -0
  139. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/coverage.md +0 -0
  140. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/create-device.md +0 -0
  141. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/dev-install.md +0 -0
  142. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/excalidraw.md +0 -0
  143. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/external-io-devices.md +0 -0
  144. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/lint.md +0 -0
  145. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/lock-requirements.md +0 -0
  146. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/make-release.md +0 -0
  147. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/move-code.md +0 -0
  148. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/pypi.md +0 -0
  149. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/run-tests.md +0 -0
  150. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/static-analysis.md +0 -0
  151. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/tidy-docs.md +0 -0
  152. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/update-template.md +0 -0
  153. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/write-tests.md +0 -0
  154. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to/zocalo.md +0 -0
  155. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/how-to.md +0 -0
  156. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/images/dls-logo.svg +0 -0
  157. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/images/excalidraw-example.svg +0 -0
  158. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/index.md +0 -0
  159. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/reference/api.md +0 -0
  160. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/reference/device-standards.md +0 -0
  161. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/reference/standards.md +0 -0
  162. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/reference.md +0 -0
  163. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/tutorials/get_started.md +0 -0
  164. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/tutorials/installation.md +0 -0
  165. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/docs/tutorials.md +0 -0
  166. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/pull_request_template.md +0 -0
  167. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/pyproject.toml +0 -0
  168. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/setup.cfg +0 -0
  169. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/__init__.py +0 -0
  170. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  171. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  172. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/requires.txt +0 -0
  173. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  174. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/__init__.py +0 -0
  175. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/__main__.py +0 -0
  176. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  177. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
  178. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/README.md +0 -0
  179. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/__init__.py +0 -0
  180. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/adsim.py +0 -0
  181. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/aithre.py +0 -0
  182. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b01_1.py +0 -0
  183. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b07.py +0 -0
  184. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b07_1.py +0 -0
  185. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b16.py +0 -0
  186. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b18.py +0 -0
  187. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/b21.py +0 -0
  188. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i02_1.py +0 -0
  189. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i02_2.py +0 -0
  190. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i05_1.py +0 -0
  191. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i07.py +0 -0
  192. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i09.py +0 -0
  193. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i10.py +0 -0
  194. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i10_1.py +0 -0
  195. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i11.py +0 -0
  196. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i13_1.py +0 -0
  197. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i15.py +0 -0
  198. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i15_1.py +0 -0
  199. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i18.py +0 -0
  200. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i19_optics.py +0 -0
  201. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i20_1.py +0 -0
  202. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i23.py +0 -0
  203. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/i24.py +0 -0
  204. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/k07.py +0 -0
  205. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/k11.py +0 -0
  206. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/p38.py +0 -0
  207. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/p45.py +0 -0
  208. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/p60.py +0 -0
  209. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/beamlines/p99.py +0 -0
  210. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/__init__.py +0 -0
  211. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/beamlines/__init__.py +0 -0
  212. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  213. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  214. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
  215. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  216. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/crystal_metadata.py +0 -0
  217. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/data_util.py +0 -0
  218. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/device_utils.py +0 -0
  219. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/enums.py +0 -0
  220. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/maths.py +0 -0
  221. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/types.py +0 -0
  222. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/udc_directory_provider.py +0 -0
  223. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/visit.py +0 -0
  224. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/common/watcher_utils.py +0 -0
  225. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/__init__.py +0 -0
  226. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
  227. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  228. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  229. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/aperture.py +0 -0
  230. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/aperturescatterguard.py +0 -0
  231. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/areadetector/__init__.py +0 -0
  232. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/areadetector/plugins/__init__.py +0 -0
  233. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/areadetector/plugins/cam.py +0 -0
  234. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/areadetector/plugins/mjpg.py +0 -0
  235. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/attenuator/__init__.py +0 -0
  236. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  237. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/attenuator/filter.py +0 -0
  238. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  239. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b07/__init__.py +0 -0
  240. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b07/enums.py +0 -0
  241. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b07_1/__init__.py +0 -0
  242. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
  243. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b07_1/enums.py +0 -0
  244. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b16/__init__.py +0 -0
  245. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/b16/detector.py +0 -0
  246. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/backlight.py +0 -0
  247. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/baton.py +0 -0
  248. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/beamsize/__init__.py +0 -0
  249. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/beamsize/beamsize.py +0 -0
  250. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  251. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/collimation_table.py +0 -0
  252. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/common_dcm.py +0 -0
  253. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/controllers.py +0 -0
  254. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  255. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  256. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  257. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  258. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  259. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  260. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/__init__.py +0 -0
  261. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  262. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  263. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  264. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/detector.py +0 -0
  265. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  266. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/diamond_filter.py +0 -0
  267. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/eiger_odin.py +0 -0
  268. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  269. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
  270. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
  271. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -0
  272. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
  273. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
  274. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
  275. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/energy_sources.py +0 -0
  276. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  277. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  278. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
  279. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -0
  280. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  281. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
  282. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/types.py +0 -0
  283. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  284. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  285. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
  286. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -0
  287. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  288. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
  289. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/eurotherm.py +0 -0
  290. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/fast_grid_scan.py +0 -0
  291. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/fast_shutter.py +0 -0
  292. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  293. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/flux.py +0 -0
  294. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/focusing_mirror.py +0 -0
  295. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/hutch_shutter.py +0 -0
  296. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i02_1/__init__.py +0 -0
  297. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i02_1/fast_grid_scan.py +0 -0
  298. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i02_1/sample_motors.py +0 -0
  299. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i02_2/__init__.py +0 -0
  300. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i03/__init__.py +0 -0
  301. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i03/beamsize.py +0 -0
  302. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i03/constants.py +0 -0
  303. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i03/dcm.py +0 -0
  304. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i03/undulator_dcm.py +0 -0
  305. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i04/__init__.py +0 -0
  306. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i04/beamsize.py +0 -0
  307. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i04/constants.py +0 -0
  308. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i04/murko_results.py +0 -0
  309. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i04/transfocator.py +0 -0
  310. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i05/__init__.py +0 -0
  311. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i05/enums.py +0 -0
  312. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i07/__init__.py +0 -0
  313. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i07/dcm.py +0 -0
  314. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i07/id.py +0 -0
  315. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i09/__init__.py +0 -0
  316. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i09/enums.py +0 -0
  317. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i09_1/__init__.py +0 -0
  318. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i09_1/enums.py +0 -0
  319. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i09_1_shared/hard_undulator_functions.py +0 -0
  320. {dls_dodal-1.66.0/src/dodal/devices/i10/rasor → dls_dodal-1.67.0/src/dodal/devices/i09_2_shared}/__init__.py +0 -0
  321. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/__init__.py +0 -0
  322. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/diagnostics.py +0 -0
  323. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  324. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/mirrors.py +0 -0
  325. {dls_dodal-1.66.0/src/dodal/devices/i11 → dls_dodal-1.67.0/src/dodal/devices/i10/rasor}/__init__.py +0 -0
  326. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  327. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  328. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  329. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i10/slits.py +0 -0
  330. {dls_dodal-1.66.0/src/dodal/devices/i13_1 → dls_dodal-1.67.0/src/dodal/devices/i11}/__init__.py +0 -0
  331. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
  332. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i11/diff_stages.py +0 -0
  333. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i11/mythen.py +0 -0
  334. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i11/nx100robot.py +0 -0
  335. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i11/spinner.py +0 -0
  336. {dls_dodal-1.66.0/src/dodal/devices/i15 → dls_dodal-1.67.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  337. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  338. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  339. {dls_dodal-1.66.0/src/dodal/devices/i17 → dls_dodal-1.67.0/src/dodal/devices/i15}/__init__.py +0 -0
  340. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/dcm.py +0 -0
  341. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/focussing_mirror.py +0 -0
  342. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/jack.py +0 -0
  343. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/laue.py +0 -0
  344. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/motors.py +0 -0
  345. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/multilayer_mirror.py +0 -0
  346. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i15/rail.py +0 -0
  347. {dls_dodal-1.66.0/src/dodal/devices/i18 → dls_dodal-1.67.0/src/dodal/devices/i17}/__init__.py +0 -0
  348. {dls_dodal-1.66.0/src/dodal/devices/i19 → dls_dodal-1.67.0/src/dodal/devices/i18}/__init__.py +0 -0
  349. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i18/diode.py +0 -0
  350. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i18/kb_mirror.py +0 -0
  351. {dls_dodal-1.66.0/src/dodal/devices/i19/access_controlled → dls_dodal-1.67.0/src/dodal/devices/i19}/__init__.py +0 -0
  352. {dls_dodal-1.66.0/src/dodal/devices/i20_1 → dls_dodal-1.67.0/src/dodal/devices/i19/access_controlled}/__init__.py +0 -0
  353. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/access_controlled/hutch_access.py +0 -0
  354. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/backlight.py +0 -0
  355. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/beamstop.py +0 -0
  356. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/diffractometer.py +0 -0
  357. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/mapt_configuration.py +0 -0
  358. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i19/pin_col_stages.py +0 -0
  359. {dls_dodal-1.66.0/src/dodal/devices/i22 → dls_dodal-1.67.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  360. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i21/__init__.py +0 -0
  361. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i21/enums.py +0 -0
  362. {dls_dodal-1.66.0/src/dodal/devices/i24 → dls_dodal-1.67.0/src/dodal/devices/i22}/__init__.py +0 -0
  363. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i22/dcm.py +0 -0
  364. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i22/fswitch.py +0 -0
  365. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i22/nxsas.py +0 -0
  366. {dls_dodal-1.66.0/src/dodal/devices/mx_phase1 → dls_dodal-1.67.0/src/dodal/devices/i24}/__init__.py +0 -0
  367. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/aperture.py +0 -0
  368. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/beam_center.py +0 -0
  369. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/beamstop.py +0 -0
  370. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/commissioning_jungfrau.py +0 -0
  371. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/dcm.py +0 -0
  372. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  373. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  374. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/pmac.py +0 -0
  375. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/i24/vgonio.py +0 -0
  376. {dls_dodal-1.66.0/src/dodal/devices/oav → dls_dodal-1.67.0/src/dodal/devices/insertion_device}/__init__.py +0 -0
  377. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/ipin.py +0 -0
  378. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/linkam3.py +0 -0
  379. {dls_dodal-1.66.0/src/dodal/devices/oav/snapshots → dls_dodal-1.67.0/src/dodal/devices/mx_phase1}/__init__.py +0 -0
  380. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  381. {dls_dodal-1.66.0/src/dodal/devices/p99 → dls_dodal-1.67.0/src/dodal/devices/oav}/__init__.py +0 -0
  382. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  383. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/oav_detector.py +0 -0
  384. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  385. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  386. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  387. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  388. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  389. {dls_dodal-1.66.0/src/dodal/devices/temperture_controller/lakeshore → dls_dodal-1.67.0/src/dodal/devices/oav/snapshots}/__init__.py +0 -0
  390. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  391. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  392. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  393. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  394. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/oav/utils.py +0 -0
  395. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p45.py +0 -0
  396. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p60/__init__.py +0 -0
  397. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p60/enums.py +0 -0
  398. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  399. {dls_dodal-1.66.0/src/dodal/devices/util → dls_dodal-1.67.0/src/dodal/devices/p99}/__init__.py +0 -0
  400. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  401. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  402. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/pgm.py +0 -0
  403. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/positioner.py +0 -0
  404. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  405. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/qbpm.py +0 -0
  406. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  407. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/scintillator.py +0 -0
  408. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/slits.py +0 -0
  409. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/smargon.py +0 -0
  410. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/status.py +0 -0
  411. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/synchrotron.py +0 -0
  412. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/temperture_controller/__init__.py +0 -0
  413. {dls_dodal-1.66.0/src/dodal/devices/xspress3 → dls_dodal-1.67.0/src/dodal/devices/temperture_controller/lakeshore}/__init__.py +0 -0
  414. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +0 -0
  415. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +0 -0
  416. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/tetramm.py +0 -0
  417. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/thawer.py +0 -0
  418. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/turbo_slit.py +0 -0
  419. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/undulator.py +0 -0
  420. {dls_dodal-1.66.0/src/dodal/devices/zebra → dls_dodal-1.67.0/src/dodal/devices/util}/__init__.py +0 -0
  421. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  422. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/util/epics_util.py +0 -0
  423. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  424. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/v2f.py +0 -0
  425. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  426. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/webcam.py +0 -0
  427. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  428. {dls_dodal-1.66.0/src/dodal/parameters → dls_dodal-1.67.0/src/dodal/devices/xspress3}/__init__.py +0 -0
  429. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  430. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  431. {dls_dodal-1.66.0/src/dodal/plans/preprocessors → dls_dodal-1.67.0/src/dodal/devices/zebra}/__init__.py +0 -0
  432. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zebra/zebra.py +0 -0
  433. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
  434. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  435. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zocalo/__init__.py +0 -0
  436. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  437. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  438. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/devices/zocalo/zocalo_results.py +0 -0
  439. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/log.py +0 -0
  440. {dls_dodal-1.66.0/src/dodal/testing/fixtures → dls_dodal-1.67.0/src/dodal/parameters}/__init__.py +0 -0
  441. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  442. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plan_stubs/__init__.py +0 -0
  443. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  444. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plan_stubs/data_session.py +0 -0
  445. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  446. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  447. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/bimorph.py +0 -0
  448. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/load_panda_yaml.py +0 -0
  449. {dls_dodal-1.66.0/system_tests → dls_dodal-1.67.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  450. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  451. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/save_panda.py +0 -0
  452. /dls_dodal-1.66.0/src/dodal/plans/scanspec.py → /dls_dodal-1.67.0/src/dodal/plans/spec_path.py +0 -0
  453. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
  454. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/plans/wrapped.py +0 -0
  455. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
  456. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
  457. {dls_dodal-1.66.0/tests → dls_dodal-1.67.0/src/dodal/testing/fixtures}/__init__.py +0 -0
  458. {dls_dodal-1.66.0/tests/beamlines → dls_dodal-1.67.0/src/dodal/testing/fixtures/devices}/__init__.py +0 -0
  459. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/testing/fixtures/run_engine.py +0 -0
  460. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/src/dodal/testing/fixtures/utils.py +0 -0
  461. {dls_dodal-1.66.0/tests/common → dls_dodal-1.67.0/system_tests}/__init__.py +0 -0
  462. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/system_tests/test_adsim.py +0 -0
  463. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/system_tests/test_oav_system.py +0 -0
  464. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/system_tests/test_oav_to_redis_system.py +0 -0
  465. {dls_dodal-1.66.0/tests/common/beamlines → dls_dodal-1.67.0/tests}/__init__.py +0 -0
  466. {dls_dodal-1.66.0/tests/devices → dls_dodal-1.67.0/tests/beamlines}/__init__.py +0 -0
  467. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/beamlines/test_b16.py +0 -0
  468. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/beamlines/test_i03.py +0 -0
  469. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/beamlines/test_i24.py +0 -0
  470. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/beamlines/test_mapping.py +0 -0
  471. {dls_dodal-1.66.0/tests/devices/aithre_lasershaping → dls_dodal-1.67.0/tests/common}/__init__.py +0 -0
  472. {dls_dodal-1.66.0/tests/devices/b07_1 → dls_dodal-1.67.0/tests/common/beamlines}/__init__.py +0 -0
  473. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  474. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  475. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/beamlines/test_commissioning_mode.py +0 -0
  476. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_coordination.py +0 -0
  477. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_crystal_metadata.py +0 -0
  478. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_maths.py +0 -0
  479. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_udc_directory_provider.py +0 -0
  480. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_visit.py +0 -0
  481. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/common/test_watcher_utils.py +0 -0
  482. {dls_dodal-1.66.0/tests/devices/current_amplifier → dls_dodal-1.67.0/tests/devices}/__init__.py +0 -0
  483. {dls_dodal-1.66.0/tests/devices/detector → dls_dodal-1.67.0/tests/devices/aithre_lasershaping}/__init__.py +0 -0
  484. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  485. {dls_dodal-1.66.0/tests/devices/electron_analyser → dls_dodal-1.67.0/tests/devices/b07_1}/__init__.py +0 -0
  486. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/b07_1/test_ccmc.py +0 -0
  487. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/conftest.py +0 -0
  488. {dls_dodal-1.66.0/tests/devices/electron_analyser/abstract → dls_dodal-1.67.0/tests/devices/current_amplifier}/__init__.py +0 -0
  489. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/current_amplifier/test_femto.py +0 -0
  490. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/current_amplifier/test_sr570.py +0 -0
  491. {dls_dodal-1.66.0/tests/devices/electron_analyser/specs → dls_dodal-1.67.0/tests/devices/detector}/__init__.py +0 -0
  492. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/detector/test_data/__init__.py +0 -0
  493. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
  494. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
  495. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/detector/test_det_resolution.py +0 -0
  496. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/detector/test_detector.py +0 -0
  497. {dls_dodal-1.66.0/tests/devices/electron_analyser/vgscienta → dls_dodal-1.67.0/tests/devices/electron_analyser}/__init__.py +0 -0
  498. {dls_dodal-1.66.0/tests/devices/i02_1 → dls_dodal-1.67.0/tests/devices/electron_analyser/abstract}/__init__.py +0 -0
  499. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +0 -0
  500. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +0 -0
  501. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
  502. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/conftest.py +0 -0
  503. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
  504. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
  505. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
  506. {dls_dodal-1.66.0/tests/devices/i03 → dls_dodal-1.67.0/tests/devices/electron_analyser/specs}/__init__.py +0 -0
  507. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -0
  508. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/specs/test_driver_io.py +0 -0
  509. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
  510. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
  511. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
  512. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
  513. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_detector.py +0 -0
  514. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_energy_sources.py +0 -0
  515. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/test_util.py +0 -0
  516. {dls_dodal-1.66.0/tests/devices/i04 → dls_dodal-1.67.0/tests/devices/electron_analyser/vgscienta}/__init__.py +0 -0
  517. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -0
  518. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +0 -0
  519. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
  520. {dls_dodal-1.66.0/tests/devices/i09 → dls_dodal-1.67.0/tests/devices/i02_1}/__init__.py +0 -0
  521. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i02_1/test_fast_grid_scan.py +0 -0
  522. {dls_dodal-1.66.0/tests/devices/i09_1 → dls_dodal-1.67.0/tests/devices/i03}/__init__.py +0 -0
  523. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i03/test_beamsize.py +0 -0
  524. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i03/test_dcm.py +0 -0
  525. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i03/test_undulator_dcm.py +0 -0
  526. {dls_dodal-1.66.0/tests/devices/i09_1_shared → dls_dodal-1.67.0/tests/devices/i04}/__init__.py +0 -0
  527. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i04/conftest.py +0 -0
  528. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i04/test_beamsize.py +0 -0
  529. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i04/test_murko_results.py +0 -0
  530. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i04/test_transfocator.py +0 -0
  531. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i07/IIDCalibrationTable.txt +0 -0
  532. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i07/__init__.py +0 -0
  533. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i07/test_dcm.py +0 -0
  534. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i07/test_id.py +0 -0
  535. {dls_dodal-1.66.0/tests/devices/i10 → dls_dodal-1.67.0/tests/devices/i09}/__init__.py +0 -0
  536. {dls_dodal-1.66.0/tests/devices/i11 → dls_dodal-1.67.0/tests/devices/i09_1}/__init__.py +0 -0
  537. {dls_dodal-1.66.0/tests/devices/i13_1 → dls_dodal-1.67.0/tests/devices/i09_1_shared}/__init__.py +0 -0
  538. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i09_1_shared/test_data/__init__.py +0 -0
  539. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt +0 -0
  540. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i09_1_shared/test_undulator_functions.py +0 -0
  541. {dls_dodal-1.66.0/tests/devices/i15 → dls_dodal-1.67.0/tests/devices/i09_2_shared}/__init__.py +0 -0
  542. {dls_dodal-1.66.0/tests/devices/i17 → dls_dodal-1.67.0/tests/devices/i10}/__init__.py +0 -0
  543. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
  544. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
  545. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i10/test_data/__init__.py +0 -0
  546. {dls_dodal-1.66.0/tests/devices/i18 → dls_dodal-1.67.0/tests/devices/i11}/__init__.py +0 -0
  547. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i11/test_i11devices.py +0 -0
  548. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i11/test_mythen.py +0 -0
  549. {dls_dodal-1.66.0/tests/devices/i19 → dls_dodal-1.67.0/tests/devices/i13_1}/__init__.py +0 -0
  550. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i13_1/test_merlin.py +0 -0
  551. {dls_dodal-1.66.0/tests/devices/i19/access_controlled → dls_dodal-1.67.0/tests/devices/i15}/__init__.py +0 -0
  552. {dls_dodal-1.66.0/tests/devices/i22 → dls_dodal-1.67.0/tests/devices/i17}/__init__.py +0 -0
  553. {dls_dodal-1.66.0/tests/devices/i24 → dls_dodal-1.67.0/tests/devices/i18}/__init__.py +0 -0
  554. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  555. {dls_dodal-1.66.0/tests/devices/mx_phase1 → dls_dodal-1.67.0/tests/devices/i19}/__init__.py +0 -0
  556. {dls_dodal-1.66.0/tests/devices/oav → dls_dodal-1.67.0/tests/devices/i19/access_controlled}/__init__.py +0 -0
  557. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/access_controlled/test_shutter.py +0 -0
  558. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/test_backlight.py +0 -0
  559. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/test_beamstop.py +0 -0
  560. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/test_diffractometer.py +0 -0
  561. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/test_mapt.py +0 -0
  562. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i19/test_pin_col.py +0 -0
  563. {dls_dodal-1.66.0/tests/devices/oav/image_recognition → dls_dodal-1.67.0/tests/devices/i22}/__init__.py +0 -0
  564. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i22/test_dcm.py +0 -0
  565. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i22/test_fswitch.py +0 -0
  566. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i22/test_metadataholder.py +0 -0
  567. {dls_dodal-1.66.0/tests/devices/p60 → dls_dodal-1.67.0/tests/devices/i24}/__init__.py +0 -0
  568. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i24/test_commissioning_jungfrau.py +0 -0
  569. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i24/test_dual_backlight.py +0 -0
  570. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i24/test_focus_mirrors.py +0 -0
  571. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i24/test_pmac.py +0 -0
  572. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/i24/test_vgonio.py +0 -0
  573. {dls_dodal-1.66.0/tests/devices/p99 → dls_dodal-1.67.0/tests/devices/insertion_device}/__init__.py +0 -0
  574. {dls_dodal-1.66.0/tests/devices/temperature_controller → dls_dodal-1.67.0/tests/devices/mx_phase1}/__init__.py +0 -0
  575. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/mx_phase1/test_beamstop.py +0 -0
  576. {dls_dodal-1.66.0/tests/devices/temperature_controller/lakeshore → dls_dodal-1.67.0/tests/devices/oav}/__init__.py +0 -0
  577. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/conftest.py +0 -0
  578. {dls_dodal-1.66.0/tests/devices/util → dls_dodal-1.67.0/tests/devices/oav/image_recognition}/__init__.py +0 -0
  579. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +0 -0
  580. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  581. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_data/__init__.py +0 -0
  582. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
  583. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
  584. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
  585. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_grid_overlay.py +0 -0
  586. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_oav.py +0 -0
  587. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_oav_parameters.py +0 -0
  588. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +0 -0
  589. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_oav_utils.py +0 -0
  590. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
  591. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/oav/test_snapshots.py +0 -0
  592. {dls_dodal-1.66.0/tests/fake_zocalo → dls_dodal-1.67.0/tests/devices/p60}/__init__.py +0 -0
  593. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/p60/test_lab_xray_source.py +0 -0
  594. {dls_dodal-1.66.0/tests/plan_stubs → dls_dodal-1.67.0/tests/devices/p99}/__init__.py +0 -0
  595. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/p99/test_p99_stage.py +0 -0
  596. {dls_dodal-1.66.0/tests/plans → dls_dodal-1.67.0/tests/devices/temperature_controller}/__init__.py +0 -0
  597. {dls_dodal-1.66.0/tests/plans/test_preprocessors → dls_dodal-1.67.0/tests/devices/temperature_controller/lakeshore}/__init__.py +0 -0
  598. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +0 -0
  599. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +0 -0
  600. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_aperture.py +0 -0
  601. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_aperture_scatterguard.py +0 -0
  602. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_attenuator.py +0 -0
  603. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_backlight.py +0 -0
  604. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_baton.py +0 -0
  605. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_beam_converter.py +0 -0
  606. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_bimorph_mirror.py +0 -0
  607. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_common_dcm.py +0 -0
  608. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_controllers.py +0 -0
  609. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
  610. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
  611. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
  612. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  613. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  614. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
  615. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_data/__init__.py +0 -0
  616. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  617. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
  618. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_diamond_filter.py +0 -0
  619. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_fast_shutters.py +0 -0
  620. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_focusing_mirror.py +0 -0
  621. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_gridscan.py +0 -0
  622. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_hutch_shutter.py +0 -0
  623. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_motors.py +0 -0
  624. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_odin.py +0 -0
  625. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_positioner.py +0 -0
  626. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_pressure_jump_cell.py +0 -0
  627. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_qbpm.py +0 -0
  628. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_scintillator.py +0 -0
  629. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_slits.py +0 -0
  630. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_smargon.py +0 -0
  631. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_synchrotron.py +0 -0
  632. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_tetramm.py +0 -0
  633. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_thawer.py +0 -0
  634. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_turbo_slit.py +0 -0
  635. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_undulator.py +0 -0
  636. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_utils.py +0 -0
  637. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
  638. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_webcam.py +0 -0
  639. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_xbpm_feedback.py +0 -0
  640. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_xspress3.py +0 -0
  641. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_zebra.py +0 -0
  642. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_zebra_constants_mapping.py +0 -0
  643. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_zebra_shutter.py +0 -0
  644. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_zocalo_interaction.py +0 -0
  645. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/test_zocalo_results.py +0 -0
  646. {dls_dodal-1.66.0/tests/preprocessors → dls_dodal-1.67.0/tests/devices/util}/__init__.py +0 -0
  647. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_adjuster_plans.py +0 -0
  648. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_data/__init__.py +0 -0
  649. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  650. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  651. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  652. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/devices/util/test_lookup_tables.py +0 -0
  653. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  654. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_beamline_some_devices_working.py +0 -0
  655. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_zocalo/README.rst +0 -0
  656. {dls_dodal-1.66.0/tests/testing → dls_dodal-1.67.0/tests/fake_zocalo}/__init__.py +0 -0
  657. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_zocalo/__main__.py +0 -0
  658. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  659. {dls_dodal-1.66.0/tests/testing/fixtures → dls_dodal-1.67.0/tests/plan_stubs}/__init__.py +0 -0
  660. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_data/__init__.py +0 -0
  661. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
  662. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
  663. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_data_session.py +0 -0
  664. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  665. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_topup_plan.py +0 -0
  666. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  667. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/conftest.py +0 -0
  668. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_bimorph.py +0 -0
  669. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_compliance.py +0 -0
  670. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
  671. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_load_panda_yaml.py +0 -0
  672. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  673. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_save_panda.py +0 -0
  674. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_scanspec.py +0 -0
  675. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  676. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/plans/test_wrapped.py +0 -0
  677. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  678. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/__init__.py +0 -0
  679. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/bad_beamlineParameters +0 -0
  680. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/i04_beamlineParameters +0 -0
  681. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  682. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/test_display.configuration +0 -0
  683. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
  684. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/test_log.py +0 -0
  685. {dls_dodal-1.66.0 → dls_dodal-1.67.0}/tests/testing/fixtures/test_run_engine.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.66.0
3
+ Version: 1.67.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
6
6
  License: Apache License
@@ -23,28 +23,31 @@ The following example creates a fictitious beamline ``w41``, with a simulated tw
23
23
 
24
24
  ```python
25
25
 
26
+ from functools import cache
27
+ from pathlib import Path
28
+ from ophyd_async.core import PathProvider
26
29
  from ophyd_async.epics.adaravis import AravisDetector
27
30
 
28
- from dodal.common.beamlines.beamline_utils import (
29
- device_factory,
30
- get_path_provider,
31
- set_path_provider,
32
- )
33
31
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
34
32
  from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
35
- from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
33
+ from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
34
+ from dodal.device_manager import DeviceManager
36
35
  from dodal.devices.synchrotron import Synchrotron
37
36
  from dodal.log import set_beamline as set_log_beamline
38
- from dodal.utils import BeamlinePrefix
37
+ from dodal.utils import BeamlinePrefix, get_beamline_name
39
38
 
40
39
  BL = get_beamline_name("s41") # Default used when not on a live beamline
41
40
  PREFIX = BeamlinePrefix(BL)
42
41
  set_log_beamline(BL) # Configure logging and util functions
43
42
  set_utils_beamline(BL)
44
43
 
45
- # Currently we must hard-code the visit, determining the visit is WIP.
46
- set_path_provider(
47
- StaticVisitPathProvider(
44
+ devices = DeviceManager()
45
+
46
+ @devices.fixture
47
+ @cache
48
+ def path_provider() -> PathProvider:
49
+ # Currently we must hard-code the visit, determining the visit is WIP.
50
+ return StaticVisitPathProvider(
48
51
  BL,
49
52
  # Root directory for all detectors
50
53
  Path("/dls/w41/data/YYYY/cm12345-1"),
@@ -52,7 +55,7 @@ The following example creates a fictitious beamline ``w41``, with a simulated tw
52
55
  client=RemoteDirectoryServiceClient("http://s41-control:8088/api"),
53
56
  # Else if no GDA server use a LocalDirectoryServiceClient(),
54
57
  )
55
- )
58
+
56
59
 
57
60
  """
58
61
  Define device factory functions below this point.
@@ -63,23 +66,22 @@ The following example creates a fictitious beamline ``w41``, with a simulated tw
63
66
  """
64
67
  This decorator gives extra desirable behaviour to this factory function:
65
68
  - it may be instantiated automatically, selectively on live beamline
66
- - caching and re-using the result for subsequent calls
67
69
  - it automatically names the device if no name is explicitly set
68
70
  - it may be skipped when make_all_devices is called on this module
69
71
  - it must be explicitly connected (which may be automated by tools)
70
72
  - when connected it may connect to a simulated backend
71
73
  - it may be connected concurrently (when automated by tools)
72
- """"
73
- @device_factory(skip = BL == "s41")
74
+ """
75
+ @devices.factory(skip = BL == "s41")
74
76
  def synchrotron() -> Synchrotron:
75
77
  return Synchrotron()
76
78
 
77
79
 
78
- @device_factory()
79
- def d11() -> AravisDetector:
80
+ @devices.factory()
81
+ def d11(path_provider: PathProvider) -> AravisDetector:
80
82
  return AravisDetector(
81
83
  f"{PREFIX.beamline_prefix}-DI-DCAM-01:",
82
- path_provider=get_path_provider(),
84
+ path_provider=path_provider,
83
85
  drv_suffix=CAM_SUFFIX,
84
86
  fileio_suffix=HDF5_SUFFIX,
85
87
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.66.0
3
+ Version: 1.67.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
6
6
  License: Apache License
@@ -89,6 +89,7 @@ src/dodal/__init__.py
89
89
  src/dodal/__main__.py
90
90
  src/dodal/_version.py
91
91
  src/dodal/cli.py
92
+ src/dodal/device_manager.py
92
93
  src/dodal/log.py
93
94
  src/dodal/utils.py
94
95
  src/dodal/beamline_specific_utils/__init__.py
@@ -157,7 +158,6 @@ src/dodal/common/beamlines/device_helpers.py
157
158
  src/dodal/devices/__init__.py
158
159
  src/dodal/devices/aperture.py
159
160
  src/dodal/devices/aperturescatterguard.py
160
- src/dodal/devices/apple2_undulator.py
161
161
  src/dodal/devices/backlight.py
162
162
  src/dodal/devices/baton.py
163
163
  src/dodal/devices/bimorph_mirror.py
@@ -263,6 +263,7 @@ src/dodal/devices/i03/undulator_dcm.py
263
263
  src/dodal/devices/i04/__init__.py
264
264
  src/dodal/devices/i04/beamsize.py
265
265
  src/dodal/devices/i04/constants.py
266
+ src/dodal/devices/i04/max_pixel.py
266
267
  src/dodal/devices/i04/murko_results.py
267
268
  src/dodal/devices/i04/transfocator.py
268
269
  src/dodal/devices/i05/__init__.py
@@ -275,7 +276,10 @@ src/dodal/devices/i09/enums.py
275
276
  src/dodal/devices/i09_1/__init__.py
276
277
  src/dodal/devices/i09_1/enums.py
277
278
  src/dodal/devices/i09_1_shared/__init__.py
279
+ src/dodal/devices/i09_1_shared/hard_energy.py
278
280
  src/dodal/devices/i09_1_shared/hard_undulator_functions.py
281
+ src/dodal/devices/i09_2_shared/__init__.py
282
+ src/dodal/devices/i09_2_shared/i09_apple2.py
279
283
  src/dodal/devices/i10/__init__.py
280
284
  src/dodal/devices/i10/diagnostics.py
281
285
  src/dodal/devices/i10/i10_apple2.py
@@ -315,6 +319,7 @@ src/dodal/devices/i19/diffractometer.py
315
319
  src/dodal/devices/i19/mapt_configuration.py
316
320
  src/dodal/devices/i19/pin_col_stages.py
317
321
  src/dodal/devices/i19/access_controlled/__init__.py
322
+ src/dodal/devices/i19/access_controlled/attenuator_motor_squad.py
318
323
  src/dodal/devices/i19/access_controlled/blueapi_device.py
319
324
  src/dodal/devices/i19/access_controlled/hutch_access.py
320
325
  src/dodal/devices/i19/access_controlled/shutter.py
@@ -335,6 +340,10 @@ src/dodal/devices/i24/dual_backlight.py
335
340
  src/dodal/devices/i24/focus_mirrors.py
336
341
  src/dodal/devices/i24/pmac.py
337
342
  src/dodal/devices/i24/vgonio.py
343
+ src/dodal/devices/insertion_device/__init__.py
344
+ src/dodal/devices/insertion_device/apple2_undulator.py
345
+ src/dodal/devices/insertion_device/energy_motor_lookup.py
346
+ src/dodal/devices/insertion_device/lookup_table_models.py
338
347
  src/dodal/devices/mx_phase1/__init__.py
339
348
  src/dodal/devices/mx_phase1/beamstop.py
340
349
  src/dodal/devices/oav/__init__.py
@@ -365,7 +374,6 @@ src/dodal/devices/util/__init__.py
365
374
  src/dodal/devices/util/adjuster_plans.py
366
375
  src/dodal/devices/util/epics_util.py
367
376
  src/dodal/devices/util/lookup_tables.py
368
- src/dodal/devices/util/lookup_tables_apple2.py
369
377
  src/dodal/devices/xspress3/__init__.py
370
378
  src/dodal/devices/xspress3/xspress3.py
371
379
  src/dodal/devices/xspress3/xspress3_channel.py
@@ -389,7 +397,7 @@ src/dodal/plans/bimorph.py
389
397
  src/dodal/plans/configure_arm_trigger_and_disarm_detector.py
390
398
  src/dodal/plans/load_panda_yaml.py
391
399
  src/dodal/plans/save_panda.py
392
- src/dodal/plans/scanspec.py
400
+ src/dodal/plans/spec_path.py
393
401
  src/dodal/plans/verify_undulator_gap.py
394
402
  src/dodal/plans/wrapped.py
395
403
  src/dodal/plans/preprocessors/__init__.py
@@ -399,6 +407,8 @@ src/dodal/testing/electron_analyser/device_factory.py
399
407
  src/dodal/testing/fixtures/__init__.py
400
408
  src/dodal/testing/fixtures/run_engine.py
401
409
  src/dodal/testing/fixtures/utils.py
410
+ src/dodal/testing/fixtures/devices/__init__.py
411
+ src/dodal/testing/fixtures/devices/apple2.py
402
412
  system_tests/__init__.py
403
413
  system_tests/test_adsim.py
404
414
  system_tests/test_cli.py
@@ -415,6 +425,7 @@ tests/fake_beamline_misbehaving_builtins.py
415
425
  tests/fake_beamline_some_devices_working.py
416
426
  tests/fake_device_factory_beamline.py
417
427
  tests/test_cli.py
428
+ tests/test_device_manager.py
418
429
  tests/test_log.py
419
430
  tests/test_utils.py
420
431
  tests/beamlines/__init__.py
@@ -438,7 +449,6 @@ tests/devices/__init__.py
438
449
  tests/devices/conftest.py
439
450
  tests/devices/test_aperture.py
440
451
  tests/devices/test_aperture_scatterguard.py
441
- tests/devices/test_apple2_undulator.py
442
452
  tests/devices/test_attenuator.py
443
453
  tests/devices/test_backlight.py
444
454
  tests/devices/test_bart_robot.py
@@ -521,6 +531,7 @@ tests/devices/i03/test_undulator_dcm.py
521
531
  tests/devices/i04/__init__.py
522
532
  tests/devices/i04/conftest.py
523
533
  tests/devices/i04/test_beamsize.py
534
+ tests/devices/i04/test_max_pixel.py
524
535
  tests/devices/i04/test_murko_results.py
525
536
  tests/devices/i04/test_transfocator.py
526
537
  tests/devices/i07/IIDCalibrationTable.txt
@@ -530,9 +541,17 @@ tests/devices/i07/test_id.py
530
541
  tests/devices/i09/__init__.py
531
542
  tests/devices/i09_1/__init__.py
532
543
  tests/devices/i09_1_shared/__init__.py
544
+ tests/devices/i09_1_shared/test_hard_energy.py
533
545
  tests/devices/i09_1_shared/test_undulator_functions.py
534
546
  tests/devices/i09_1_shared/test_data/__init__.py
535
547
  tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt
548
+ tests/devices/i09_2_shared/__init__.py
549
+ tests/devices/i09_2_shared/test_i09_apple2.py
550
+ tests/devices/i09_2_shared/test_data/ExpectedJIDEnergy2GapCalibrations.json
551
+ tests/devices/i09_2_shared/test_data/ExpectedJIDEnergy2PhaseCalibrations.json
552
+ tests/devices/i09_2_shared/test_data/JIDEnergy2GapCalibrations.csv
553
+ tests/devices/i09_2_shared/test_data/JIDEnergy2PhaseCalibrations.csv
554
+ tests/devices/i09_2_shared/test_data/__init__.py
536
555
  tests/devices/i10/__init__.py
537
556
  tests/devices/i10/test_i10_apple2.py
538
557
  tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv
@@ -559,6 +578,8 @@ tests/devices/i19/test_diffractometer.py
559
578
  tests/devices/i19/test_mapt.py
560
579
  tests/devices/i19/test_pin_col.py
561
580
  tests/devices/i19/access_controlled/__init__.py
581
+ tests/devices/i19/access_controlled/test_attenuator_motor_squad.py
582
+ tests/devices/i19/access_controlled/test_attenuator_position_demand.py
562
583
  tests/devices/i19/access_controlled/test_shutter.py
563
584
  tests/devices/i22/__init__.py
564
585
  tests/devices/i22/test_dcm.py
@@ -570,6 +591,12 @@ tests/devices/i24/test_dual_backlight.py
570
591
  tests/devices/i24/test_focus_mirrors.py
571
592
  tests/devices/i24/test_pmac.py
572
593
  tests/devices/i24/test_vgonio.py
594
+ tests/devices/insertion_device/__init__.py
595
+ tests/devices/insertion_device/conftest.py
596
+ tests/devices/insertion_device/test_apple2_undulator.py
597
+ tests/devices/insertion_device/test_energy_motor_lookup.py
598
+ tests/devices/insertion_device/test_lookup_tables_models.py
599
+ tests/devices/insertion_device/util.py
573
600
  tests/devices/mx_phase1/__init__.py
574
601
  tests/devices/mx_phase1/test_beamstop.py
575
602
  tests/devices/oav/__init__.py
@@ -608,7 +635,6 @@ tests/devices/test_data/test_lookup_table.txt
608
635
  tests/devices/util/__init__.py
609
636
  tests/devices/util/test_adjuster_plans.py
610
637
  tests/devices/util/test_lookup_tables.py
611
- tests/devices/util/test_lookup_tables_apple2.py
612
638
  tests/devices/util/test_data/__init__.py
613
639
  tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt
614
640
  tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.66.0'
32
- __version_tuple__ = version_tuple = (1, 66, 0)
31
+ __version__ = version = '1.67.0'
32
+ __version_tuple__ = version_tuple = (1, 67, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g400fe8430'
34
+ __commit_id__ = commit_id = 'gdfd2eada3'
@@ -0,0 +1,362 @@
1
+ from functools import cache
2
+
3
+ from ophyd_async.core import PathProvider, Reference
4
+ from ophyd_async.fastcs.eiger import EigerDetector as FastEiger
5
+ from ophyd_async.fastcs.panda import HDFPanda
6
+ from yarl import URL
7
+
8
+ from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
9
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
10
+ from dodal.common.udc_directory_provider import PandASubpathProvider
11
+ from dodal.device_manager import DeviceManager
12
+ from dodal.devices.aperturescatterguard import (
13
+ AperturePosition,
14
+ ApertureScatterguard,
15
+ load_positions_from_beamline_parameters,
16
+ )
17
+ from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
18
+ from dodal.devices.backlight import Backlight
19
+ from dodal.devices.baton import Baton
20
+ from dodal.devices.collimation_table import CollimationTable
21
+ from dodal.devices.cryostream import (
22
+ CryoStreamGantry,
23
+ OxfordCryoJet,
24
+ OxfordCryoStream,
25
+ )
26
+ from dodal.devices.detector.detector_motion import DetectorMotion
27
+ from dodal.devices.diamond_filter import DiamondFilter, I03Filters
28
+ from dodal.devices.eiger import EigerDetector
29
+ from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScanThreeD
30
+ from dodal.devices.fluorescence_detector_motion import FluorescenceDetector
31
+ from dodal.devices.flux import Flux
32
+ from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
33
+ from dodal.devices.hutch_shutter import HutchShutter
34
+ from dodal.devices.i03 import Beamstop
35
+ from dodal.devices.i03.beamsize import Beamsize
36
+ from dodal.devices.i03.dcm import DCM
37
+ from dodal.devices.i03.undulator_dcm import UndulatorDCM
38
+ from dodal.devices.ipin import IPin
39
+ from dodal.devices.motors import XYZStage
40
+ from dodal.devices.oav.oav_detector import OAVBeamCentreFile
41
+ from dodal.devices.oav.oav_parameters import OAVConfigBeamCentre
42
+ from dodal.devices.oav.pin_image_recognition import PinTipDetection
43
+ from dodal.devices.qbpm import QBPM
44
+ from dodal.devices.robot import BartRobot
45
+ from dodal.devices.s4_slit_gaps import S4SlitGaps
46
+ from dodal.devices.scintillator import Scintillator
47
+ from dodal.devices.smargon import Smargon
48
+ from dodal.devices.synchrotron import Synchrotron
49
+ from dodal.devices.thawer import Thawer
50
+ from dodal.devices.undulator import UndulatorInKeV
51
+ from dodal.devices.webcam import Webcam
52
+ from dodal.devices.xbpm_feedback import XBPMFeedback
53
+ from dodal.devices.xspress3.xspress3 import Xspress3
54
+ from dodal.devices.zebra.zebra import Zebra
55
+ from dodal.devices.zebra.zebra_constants_mapping import (
56
+ ZebraMapping,
57
+ ZebraSources,
58
+ ZebraTTLOutputs,
59
+ )
60
+ from dodal.devices.zebra.zebra_controlled_shutter import ZebraShutter
61
+ from dodal.devices.zocalo import ZocaloResults, ZocaloSource
62
+ from dodal.log import set_beamline as set_log_beamline
63
+ from dodal.utils import BeamlinePrefix, get_beamline_name
64
+
65
+ ZOOM_PARAMS_FILE = (
66
+ "/dls_sw/i03/software/gda/configurations/i03-config/xml/jCameraManZoomLevels.xml"
67
+ )
68
+ DISPLAY_CONFIG = "/dls_sw/i03/software/gda_versions/var/display.configuration"
69
+ DAQ_CONFIGURATION_PATH = "/dls_sw/i03/software/daq_configuration"
70
+
71
+ BL = get_beamline_name("i03")
72
+ set_log_beamline(BL)
73
+ set_utils_beamline(BL)
74
+
75
+ I03_ZEBRA_MAPPING = ZebraMapping(
76
+ outputs=ZebraTTLOutputs(TTL_DETECTOR=1, TTL_SHUTTER=2, TTL_XSPRESS3=3, TTL_PANDA=4),
77
+ sources=ZebraSources(),
78
+ )
79
+
80
+ PREFIX = BeamlinePrefix(BL)
81
+
82
+ devices = DeviceManager()
83
+
84
+
85
+ @devices.fixture
86
+ @cache
87
+ def path_provider() -> PathProvider:
88
+ return PandASubpathProvider()
89
+
90
+
91
+ @devices.fixture
92
+ def daq_configuration_path() -> str:
93
+ return DAQ_CONFIGURATION_PATH
94
+
95
+
96
+ @devices.factory()
97
+ def aperture_scatterguard() -> ApertureScatterguard:
98
+ params = get_beamline_parameters()
99
+ return ApertureScatterguard(
100
+ aperture_prefix=f"{PREFIX.beamline_prefix}-MO-MAPT-01:",
101
+ scatterguard_prefix=f"{PREFIX.beamline_prefix}-MO-SCAT-01:",
102
+ loaded_positions=load_positions_from_beamline_parameters(params),
103
+ tolerances=AperturePosition.tolerances_from_gda_params(params),
104
+ )
105
+
106
+
107
+ @devices.factory()
108
+ def attenuator() -> BinaryFilterAttenuator:
109
+ return BinaryFilterAttenuator(
110
+ prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
111
+ num_filters=16,
112
+ )
113
+
114
+
115
+ @devices.factory()
116
+ def beamstop() -> Beamstop:
117
+ return Beamstop(
118
+ prefix=f"{PREFIX.beamline_prefix}-MO-BS-01:",
119
+ beamline_parameters=get_beamline_parameters(),
120
+ )
121
+
122
+
123
+ @devices.factory()
124
+ def dcm() -> DCM:
125
+ return DCM(prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:")
126
+
127
+
128
+ @devices.factory()
129
+ def vfm() -> FocusingMirrorWithStripes:
130
+ return FocusingMirrorWithStripes(
131
+ prefix=f"{PREFIX.beamline_prefix}-OP-VFM-01:",
132
+ bragg_to_lat_lut_path=DAQ_CONFIGURATION_PATH
133
+ + "/lookup/BeamLineEnergy_DCM_VFM_x_converter.txt",
134
+ x_suffix="LAT",
135
+ y_suffix="VERT",
136
+ )
137
+
138
+
139
+ @devices.factory()
140
+ def mirror_voltages() -> MirrorVoltages:
141
+ return MirrorVoltages(
142
+ prefix=f"{PREFIX.beamline_prefix}-MO-PSU-01:",
143
+ daq_configuration_path=DAQ_CONFIGURATION_PATH,
144
+ )
145
+
146
+
147
+ @devices.factory()
148
+ def backlight() -> Backlight:
149
+ return Backlight(prefix=PREFIX.beamline_prefix)
150
+
151
+
152
+ @devices.factory()
153
+ def detector_motion() -> DetectorMotion:
154
+ return DetectorMotion(
155
+ device_prefix=f"{PREFIX.beamline_prefix}-MO-DET-01:",
156
+ pmac_prefix=f"{PREFIX.beamline_prefix}-MO-PMAC-02:",
157
+ )
158
+
159
+
160
+ @devices.v1_init(EigerDetector, prefix="BL03I-EA-EIGER-01:", wait=False)
161
+ def eiger(eiger: EigerDetector) -> EigerDetector:
162
+ return eiger
163
+
164
+
165
+ @devices.factory()
166
+ def fastcs_eiger(path_provider: PathProvider) -> FastEiger:
167
+ return FastEiger(
168
+ prefix=PREFIX.beamline_prefix,
169
+ path_provider=path_provider,
170
+ drv_suffix="-EA-EIGER-02:",
171
+ hdf_suffix="-EA-EIGER-01:OD:",
172
+ )
173
+
174
+
175
+ @devices.factory()
176
+ def zebra_fast_grid_scan() -> ZebraFastGridScanThreeD:
177
+ return ZebraFastGridScanThreeD(
178
+ prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:",
179
+ )
180
+
181
+
182
+ @devices.factory()
183
+ def panda_fast_grid_scan() -> PandAFastGridScan:
184
+ """This is used instead of the zebra_fast_grid_scan device when using the PandA."""
185
+ return PandAFastGridScan(prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:")
186
+
187
+
188
+ @devices.factory()
189
+ def oav(
190
+ params: OAVConfigBeamCentre | None = None,
191
+ ) -> OAVBeamCentreFile:
192
+ return OAVBeamCentreFile(
193
+ prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
194
+ config=params or OAVConfigBeamCentre(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
195
+ )
196
+
197
+
198
+ @devices.factory()
199
+ def pin_tip_detection() -> PinTipDetection:
200
+ return PinTipDetection(f"{PREFIX.beamline_prefix}-DI-OAV-01:")
201
+
202
+
203
+ @devices.factory()
204
+ def smargon() -> Smargon:
205
+ return Smargon(f"{PREFIX.beamline_prefix}-MO-SGON-01:")
206
+
207
+
208
+ @devices.factory()
209
+ def s4_slit_gaps() -> S4SlitGaps:
210
+ return S4SlitGaps(f"{PREFIX.beamline_prefix}-AL-SLITS-04:")
211
+
212
+
213
+ @devices.factory()
214
+ def synchrotron() -> Synchrotron:
215
+ return Synchrotron()
216
+
217
+
218
+ @devices.factory()
219
+ def undulator(baton: Baton, daq_configuration_path: str) -> UndulatorInKeV:
220
+ return UndulatorInKeV(
221
+ f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
222
+ id_gap_lookup_table_path=f"{daq_configuration_path}/lookup/BeamLine_Undulator_toGap.txt",
223
+ baton=baton,
224
+ )
225
+
226
+
227
+ @devices.factory()
228
+ def undulator_dcm(
229
+ undulator: UndulatorInKeV, dcm: DCM, daq_configuration_path: str
230
+ ) -> UndulatorDCM:
231
+ return UndulatorDCM(
232
+ undulator=undulator,
233
+ dcm=dcm,
234
+ daq_configuration_path=daq_configuration_path,
235
+ )
236
+
237
+
238
+ @devices.factory()
239
+ def zebra() -> Zebra:
240
+ return Zebra(
241
+ prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-01:",
242
+ mapping=I03_ZEBRA_MAPPING,
243
+ )
244
+
245
+
246
+ @devices.factory()
247
+ def xspress3mini() -> Xspress3:
248
+ return Xspress3(f"{PREFIX.beamline_prefix}-EA-XSP3-01:")
249
+
250
+
251
+ @devices.factory()
252
+ def panda(path_provider: PathProvider) -> HDFPanda:
253
+ return HDFPanda(
254
+ f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
255
+ path_provider=path_provider,
256
+ )
257
+
258
+
259
+ @devices.factory()
260
+ def sample_shutter() -> ZebraShutter:
261
+ return ZebraShutter(f"{PREFIX.beamline_prefix}-EA-SHTR-01:")
262
+
263
+
264
+ @devices.factory()
265
+ def hutch_shutter() -> HutchShutter:
266
+ return HutchShutter(f"{PREFIX.beamline_prefix}-PS-SHTR-01:")
267
+
268
+
269
+ @devices.factory()
270
+ def flux() -> Flux:
271
+ return Flux(f"{PREFIX.beamline_prefix}-MO-FLUX-01:")
272
+
273
+
274
+ @devices.factory()
275
+ def xbpm_feedback(baton: Baton) -> XBPMFeedback:
276
+ return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:", baton=baton)
277
+
278
+
279
+ @devices.factory()
280
+ def zocalo() -> ZocaloResults:
281
+ return ZocaloResults(results_source=ZocaloSource.GPU)
282
+
283
+
284
+ @devices.factory()
285
+ def robot() -> BartRobot:
286
+ return BartRobot(f"{PREFIX.beamline_prefix}-MO-ROBOT-01:")
287
+
288
+
289
+ @devices.factory()
290
+ def webcam() -> Webcam:
291
+ return Webcam(url=URL("http://i03-webcam1/axis-cgi/jpg/image.cgi"))
292
+
293
+
294
+ @devices.factory()
295
+ def thawer() -> Thawer:
296
+ return Thawer(f"{PREFIX.beamline_prefix}-EA-THAW-01")
297
+
298
+
299
+ @devices.factory()
300
+ def lower_gonio() -> XYZStage:
301
+ return XYZStage(f"{PREFIX.beamline_prefix}-MO-GONP-01:")
302
+
303
+
304
+ @devices.factory()
305
+ def cryostream() -> OxfordCryoStream:
306
+ return OxfordCryoStream(f"{PREFIX.beamline_prefix}-EA-CSTRM-01:")
307
+
308
+
309
+ @devices.factory()
310
+ def cryojet() -> OxfordCryoJet:
311
+ return OxfordCryoJet(f"{PREFIX.beamline_prefix}-EA-CJET-01:")
312
+
313
+
314
+ @devices.factory()
315
+ def cryostream_gantry() -> CryoStreamGantry:
316
+ return CryoStreamGantry(PREFIX.beamline_prefix)
317
+
318
+
319
+ @devices.factory()
320
+ def diamond_filter() -> DiamondFilter[I03Filters]:
321
+ return DiamondFilter[I03Filters](
322
+ f"{PREFIX.beamline_prefix}-MO-FLTR-01:Y", I03Filters
323
+ )
324
+
325
+
326
+ @devices.factory()
327
+ def qbpm() -> QBPM:
328
+ return QBPM(f"{PREFIX.beamline_prefix}-DI-QBPM-01:")
329
+
330
+
331
+ @devices.factory()
332
+ def baton() -> Baton:
333
+ return Baton(f"{PREFIX.beamline_prefix}-CS-BATON-01:")
334
+
335
+
336
+ @devices.factory()
337
+ def fluorescence_det_motion() -> FluorescenceDetector:
338
+ return FluorescenceDetector(f"{PREFIX.beamline_prefix}-EA-FLU-01:")
339
+
340
+
341
+ @devices.factory()
342
+ def scintillator(aperture_scatterguard: ApertureScatterguard) -> Scintillator:
343
+ return Scintillator(
344
+ f"{PREFIX.beamline_prefix}-MO-SCIN-01:",
345
+ Reference(aperture_scatterguard),
346
+ get_beamline_parameters(),
347
+ )
348
+
349
+
350
+ @devices.factory()
351
+ def collimation_table() -> CollimationTable:
352
+ return CollimationTable(prefix=f"{PREFIX.beamline_prefix}-MO-TABLE-01")
353
+
354
+
355
+ @devices.factory()
356
+ def beamsize(aperture_scatterguard: ApertureScatterguard) -> Beamsize:
357
+ return Beamsize(aperture_scatterguard)
358
+
359
+
360
+ @devices.factory()
361
+ def ipin() -> IPin:
362
+ return IPin(f"{PREFIX.beamline_prefix}-EA-PIN-01:")
@@ -13,6 +13,7 @@ from dodal.devices.aperturescatterguard import (
13
13
  )
14
14
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
15
15
  from dodal.devices.backlight import Backlight
16
+ from dodal.devices.baton import Baton
16
17
  from dodal.devices.detector import DetectorParams
17
18
  from dodal.devices.detector.detector_motion import DetectorMotion
18
19
  from dodal.devices.diamond_filter import DiamondFilter, I04Filters
@@ -22,6 +23,7 @@ from dodal.devices.flux import Flux
22
23
  from dodal.devices.i03.dcm import DCM
23
24
  from dodal.devices.i04.beamsize import Beamsize
24
25
  from dodal.devices.i04.constants import RedisConstants
26
+ from dodal.devices.i04.max_pixel import MaxPixel
25
27
  from dodal.devices.i04.murko_results import MurkoResultsDevice
26
28
  from dodal.devices.i04.transfocator import Transfocator
27
29
  from dodal.devices.ipin import IPin
@@ -142,12 +144,20 @@ def transfocator() -> Transfocator:
142
144
  return Transfocator(f"{PREFIX.beamline_prefix}-MO-FSWT-01:")
143
145
 
144
146
 
147
+ @device_factory()
148
+ def baton() -> Baton:
149
+ """Get the i04 baton device, instantiate it if it hasn't already been.
150
+ If this is called when already instantiated in i04, it will return the existing object.
151
+ """
152
+ return Baton(f"{PREFIX.beamline_prefix}-CS-BATON-01:")
153
+
154
+
145
155
  @device_factory()
146
156
  def xbpm_feedback() -> XBPMFeedback:
147
157
  """Get the i04 xbpm_feedback device, instantiate it if it hasn't already been.
148
158
  If this is called when already instantiated in i04, it will return the existing object.
149
159
  """
150
- return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:")
160
+ return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:", baton=baton())
151
161
 
152
162
 
153
163
  @device_factory()
@@ -236,6 +246,7 @@ def undulator() -> UndulatorInKeV:
236
246
  return UndulatorInKeV(
237
247
  prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
238
248
  id_gap_lookup_table_path="/dls_sw/i04/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
249
+ baton=baton(),
239
250
  )
240
251
 
241
252
 
@@ -380,6 +391,16 @@ def scintillator() -> Scintillator:
380
391
  )
381
392
 
382
393
 
394
+ @device_factory()
395
+ def max_pixel() -> MaxPixel:
396
+ """Get the i04 max pixel device, instantiate it if it hasn't already been.
397
+ If this is called when already instantiated in i04, it will return the existing object.
398
+ """
399
+ return MaxPixel(
400
+ f"{PREFIX.beamline_prefix}-DI-OAV-01:",
401
+ )
402
+
403
+
383
404
  @device_factory()
384
405
  def beamsize() -> Beamsize:
385
406
  """Get the i04 beamsize device, instantiate it if it hasn't already been.
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  device_factory,
4
4
  )
5
5
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
6
- from dodal.devices.apple2_undulator import (
6
+ from dodal.devices.insertion_device.apple2_undulator import (
7
7
  Apple2,
8
8
  UndulatorGap,
9
9
  UndulatorLockedPhaseAxes,