dls-dodal 1.45.0__tar.gz → 1.47.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 (503) hide show
  1. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/PKG-INFO +2 -2
  2. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/conftest.py +1 -12
  3. dls_dodal-1.45.0/docs/explanations/decisions/0003-make-devices-factory.md → dls_dodal-1.47.0/docs/explanations/decisions/0004-make-devices-factory.md +1 -1
  4. dls_dodal-1.47.0/docs/how-to/external-io-devices.md +27 -0
  5. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/reference/device-standards.rst +3 -4
  6. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/pyproject.toml +8 -8
  7. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
  8. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/SOURCES.txt +43 -32
  9. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/requires.txt +1 -1
  10. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/_version.py +2 -2
  11. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/__init__.py +0 -1
  12. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/b07.py +2 -6
  13. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/b07_1.py +1 -3
  14. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i03.py +16 -19
  15. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i04.py +49 -17
  16. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i09.py +1 -3
  17. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i09_1.py +1 -3
  18. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i18.py +7 -4
  19. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i22.py +3 -3
  20. dls_dodal-1.47.0/src/dodal/beamlines/i23.py +111 -0
  21. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/p38.py +4 -4
  22. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/p60.py +2 -6
  23. dls_dodal-1.47.0/src/dodal/beamlines/p99.py +78 -0
  24. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/beamlines/beamline_parameters.py +1 -2
  25. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/beamlines/beamline_utils.py +5 -0
  26. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/data_util.py +4 -0
  27. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/aperturescatterguard.py +47 -47
  28. dls_dodal-1.47.0/src/dodal/devices/common_dcm.py +77 -0
  29. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +1 -1
  30. dls_dodal-1.47.0/src/dodal/devices/diamond_filter.py +34 -0
  31. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/eiger.py +1 -1
  32. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/__init__.py +8 -0
  33. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/__init__.py +28 -0
  34. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/base_detector.py +210 -0
  35. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +121 -0
  36. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/abstract_region.py → dls_dodal-1.47.0/src/dodal/devices/electron_analyser/abstract/base_region.py +2 -9
  37. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/specs/__init__.py +11 -0
  38. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/specs/detector.py +29 -0
  39. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/specs/driver_io.py +64 -0
  40. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/specs_region.py → dls_dodal-1.47.0/src/dodal/devices/electron_analyser/specs/region.py +1 -1
  41. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/types.py +6 -0
  42. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/util.py +13 -0
  43. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/vgscienta/__init__.py +12 -0
  44. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/vgscienta/detector.py +36 -0
  45. dls_dodal-1.47.0/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +39 -0
  46. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/vgscienta_region.py → dls_dodal-1.47.0/src/dodal/devices/electron_analyser/vgscienta/region.py +1 -1
  47. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/fast_grid_scan.py +7 -9
  48. dls_dodal-1.47.0/src/dodal/devices/i03/__init__.py +3 -0
  49. {dls_dodal-1.45.0/src/dodal/devices → dls_dodal-1.47.0/src/dodal/devices/i03}/dcm.py +8 -12
  50. {dls_dodal-1.45.0/src/dodal/devices → dls_dodal-1.47.0/src/dodal/devices/i03}/undulator_dcm.py +6 -4
  51. dls_dodal-1.47.0/src/dodal/devices/i04/__init__.py +3 -0
  52. dls_dodal-1.47.0/src/dodal/devices/i04/constants.py +9 -0
  53. dls_dodal-1.47.0/src/dodal/devices/i04/murko_results.py +195 -0
  54. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/diagnostics.py +9 -61
  55. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i13_1/merlin.py +3 -4
  56. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i13_1/merlin_controller.py +1 -1
  57. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i22/dcm.py +10 -12
  58. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/dcm.py +8 -17
  59. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/focus_mirrors.py +9 -13
  60. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/pilatus_metadata.py +9 -9
  61. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/pmac.py +19 -14
  62. {dls_dodal-1.45.0/src/dodal/devices/i03 → dls_dodal-1.47.0/src/dodal/devices/mx_phase1}/beamstop.py +6 -12
  63. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/oav_calculations.py +2 -2
  64. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/oav_detector.py +32 -22
  65. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/utils.py +2 -2
  66. dls_dodal-1.47.0/src/dodal/devices/p99/andor2_point.py +41 -0
  67. dls_dodal-1.47.0/src/dodal/devices/positioner.py +49 -0
  68. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/tetramm.py +8 -6
  69. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/turbo_slit.py +2 -2
  70. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/util/adjuster_plans.py +1 -1
  71. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zebra/zebra.py +4 -0
  72. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +1 -1
  73. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zocalo/__init__.py +0 -3
  74. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zocalo/zocalo_results.py +6 -32
  75. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/log.py +14 -14
  76. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plan_stubs/data_session.py +10 -1
  77. dls_dodal-1.47.0/src/dodal/plan_stubs/electron_analyser/__init__.py +3 -0
  78. dls_dodal-1.45.0/src/dodal/plan_stubs/electron_analyser/configure_controller.py → dls_dodal-1.47.0/src/dodal/plan_stubs/electron_analyser/configure_driver.py +30 -18
  79. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/verify_undulator_gap.py +2 -2
  80. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/system_tests/test_adsim.py +7 -4
  81. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/system_tests/test_oav_system.py +8 -8
  82. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/system_tests/test_oav_to_redis_system.py +6 -3
  83. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/beamlines/unit_tests/test_mapping.py +0 -2
  84. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/beamlines/test_beamline_parameters.py +9 -0
  85. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/beamlines/test_beamline_utils.py +5 -18
  86. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/conftest.py +11 -16
  87. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i03/test_beamstop.py +1 -1
  88. dls_dodal-1.47.0/tests/devices/i04/test_murko_results.py +361 -0
  89. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i13_1/test_merlin.py +3 -4
  90. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i22/test_dcm.py +21 -16
  91. dls_dodal-1.47.0/tests/devices/test_common_dcm.py +8 -0
  92. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/test_diamond_filter.py +7 -10
  93. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py +77 -0
  94. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py +180 -0
  95. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/electron_analyser/conftest.py +24 -33
  96. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/specs/test_detector.py +41 -0
  97. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py +141 -0
  98. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_specs_region.py → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/specs/test_region.py +6 -12
  99. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/test_util.py +85 -0
  100. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py +34 -0
  101. dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py +143 -0
  102. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/vgscienta/test_region.py +9 -14
  103. {dls_dodal-1.45.0/tests/devices/unit_tests → dls_dodal-1.47.0/tests/devices/unit_tests/i03}/test_dcm.py +2 -2
  104. {dls_dodal-1.45.0/tests/devices/unit_tests → dls_dodal-1.47.0/tests/devices/unit_tests/i03}/test_undulator_dcm.py +3 -3
  105. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +1 -2
  106. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/i24/test_pmac.py +41 -5
  107. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_oav_utils.py +22 -10
  108. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +14 -10
  109. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_backlight.py +4 -4
  110. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_eiger.py +2 -2
  111. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_gridscan.py +13 -1
  112. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -2
  113. dls_dodal-1.47.0/tests/devices/unit_tests/test_positioner.py +36 -0
  114. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_tetramm.py +19 -19
  115. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_undulator.py +1 -1
  116. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_webcam.py +5 -5
  117. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_zocalo_results.py +3 -44
  118. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plan_stubs/test_data_session.py +14 -0
  119. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plan_stubs/test_topup_plan.py +6 -4
  120. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/conftest.py +3 -2
  121. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/electron_analyser/vgscienta_sequence.seq +2 -2
  122. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_utils.py +7 -1
  123. dls_dodal-1.47.0/tests/unit_tests/__init__.py +0 -0
  124. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/unit_tests/test_cli.py +2 -1
  125. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/unit_tests/test_log.py +9 -7
  126. dls_dodal-1.45.0/src/dodal/beamlines/i23.py +0 -40
  127. dls_dodal-1.45.0/src/dodal/beamlines/p99.py +0 -34
  128. dls_dodal-1.45.0/src/dodal/common/signal_utils.py +0 -88
  129. dls_dodal-1.45.0/src/dodal/devices/diamond_filter.py +0 -46
  130. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/abstract_analyser_io.py +0 -47
  131. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/specs_analyser_io.py +0 -19
  132. dls_dodal-1.45.0/src/dodal/devices/electron_analyser/vgscienta_analyser_io.py +0 -26
  133. dls_dodal-1.45.0/src/dodal/devices/logging_ophyd_device.py +0 -17
  134. dls_dodal-1.45.0/system_tests/test_aperturescatterguard_system.py +0 -165
  135. dls_dodal-1.45.0/system_tests/test_eiger_system.py +0 -45
  136. dls_dodal-1.45.0/system_tests/test_gridscan_system.py +0 -43
  137. dls_dodal-1.45.0/system_tests/test_slit_gaps_system.py +0 -10
  138. dls_dodal-1.45.0/system_tests/test_smargon_system.py +0 -14
  139. dls_dodal-1.45.0/system_tests/test_synchrotron_system.py +0 -14
  140. dls_dodal-1.45.0/system_tests/test_undulator_system.py +0 -16
  141. dls_dodal-1.45.0/system_tests/test_zebra_system.py +0 -28
  142. dls_dodal-1.45.0/system_tests/test_zocalo_results.py +0 -140
  143. dls_dodal-1.45.0/tests/common/test_signal_utils.py +0 -84
  144. dls_dodal-1.45.0/tests/devices/i10/test_diagnostic.py +0 -27
  145. dls_dodal-1.45.0/tests/devices/unit_tests/conftest.py +0 -18
  146. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_base_analayser_io.py +0 -149
  147. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_specs_analyser_io.py +0 -78
  148. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_util.py +0 -41
  149. dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser/test_vgscienta_analyser_io.py +0 -119
  150. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.copier-answers.yml +0 -0
  151. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.devcontainer/devcontainer.json +0 -0
  152. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/CODEOWNERS +0 -0
  153. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/CONTRIBUTING.md +0 -0
  154. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  155. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/actions/install_requirements/action.yml +0 -0
  156. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/dependabot.yml +0 -0
  157. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/pages/index.html +0 -0
  158. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/pages/make_switcher.py +0 -0
  159. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/scripts/check_test_durations.py +0 -0
  160. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_check.yml +0 -0
  161. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_dist.yml +0 -0
  162. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_docs.yml +0 -0
  163. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_pypi.yml +0 -0
  164. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_release.yml +0 -0
  165. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_test.yml +0 -0
  166. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/_tox.yml +0 -0
  167. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/ci.yml +0 -0
  168. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.github/workflows/periodic.yml +0 -0
  169. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.gitignore +0 -0
  170. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.pre-commit-config.yaml +0 -0
  171. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.vscode/extensions.json +0 -0
  172. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.vscode/launch.json +0 -0
  173. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.vscode/settings.json +0 -0
  174. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/.vscode/tasks.json +0 -0
  175. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/Dockerfile +0 -0
  176. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/LICENSE +0 -0
  177. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/README.md +0 -0
  178. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/catalog-info.yaml +0 -0
  179. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/_templates/autosummary/class.rst +0 -0
  180. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/_templates/autosummary/module.rst +0 -0
  181. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/_templates/custom-module-template.rst +0 -0
  182. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/assets/zocalo.png +0 -0
  183. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/conf.py +0 -0
  184. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  185. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  186. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  187. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/decisions/COPYME +0 -0
  188. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/decisions.md +0 -0
  189. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations/reviews.md +0 -0
  190. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/explanations.md +0 -0
  191. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/genindex.md +0 -0
  192. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/build-docs.md +0 -0
  193. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/contribute.md +0 -0
  194. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/coverage.md +0 -0
  195. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/create-beamline.rst +0 -0
  196. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/dev-install.md +0 -0
  197. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/excalidraw.md +0 -0
  198. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/lint.md +0 -0
  199. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/lock-requirements.md +0 -0
  200. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  201. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/make-release.md +0 -0
  202. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/move-code.rst +0 -0
  203. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/pypi.md +0 -0
  204. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/run-tests.md +0 -0
  205. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/static-analysis.md +0 -0
  206. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/update-template.md +0 -0
  207. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/write-tests.md +0 -0
  208. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to/zocalo.rst +0 -0
  209. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/how-to.md +0 -0
  210. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/images/dls-logo.svg +0 -0
  211. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/images/excalidraw-example.svg +0 -0
  212. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/index.md +0 -0
  213. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/reference/api.md +0 -0
  214. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/reference/standards.rst +0 -0
  215. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/reference.md +0 -0
  216. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/tutorials/get_started.rst +0 -0
  217. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/tutorials/installation.md +0 -0
  218. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/docs/tutorials.md +0 -0
  219. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/pull_request_template.md +0 -0
  220. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/setup.cfg +0 -0
  221. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/__init__.py +0 -0
  222. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  223. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  224. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  225. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/__init__.py +0 -0
  226. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/__main__.py +0 -0
  227. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  228. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  229. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/README.md +0 -0
  230. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/adsim.py +0 -0
  231. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/aithre.py +0 -0
  232. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/b01_1.py +0 -0
  233. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i02_1.py +0 -0
  234. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i10.py +0 -0
  235. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i13_1.py +0 -0
  236. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i19_1.py +0 -0
  237. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i19_2.py +0 -0
  238. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i19_optics.py +0 -0
  239. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i20_1.py +0 -0
  240. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/i24.py +0 -0
  241. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/p45.py +0 -0
  242. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/beamlines/training_rig.py +0 -0
  243. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/cli.py +0 -0
  244. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/__init__.py +0 -0
  245. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/beamlines/__init__.py +0 -0
  246. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  247. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/coordination.py +0 -0
  248. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/crystal_metadata.py +0 -0
  249. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/maths.py +0 -0
  250. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/types.py +0 -0
  251. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/udc_directory_provider.py +0 -0
  252. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/common/visit.py +0 -0
  253. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/CTAB.py +0 -0
  254. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/__init__.py +0 -0
  255. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/adsim.py +0 -0
  256. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  257. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/aperture.py +0 -0
  258. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/apple2_undulator.py +0 -0
  259. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
  260. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
  261. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  262. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/attenuator/filter.py +0 -0
  263. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
  264. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/backlight.py +0 -0
  265. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/baton.py +0 -0
  266. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  267. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/cryostream.py +0 -0
  268. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  269. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  270. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  271. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/femto.py +0 -0
  272. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
  273. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/__init__.py +0 -0
  274. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  275. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  276. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  277. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/detector.py +0 -0
  278. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  279. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/eiger_odin.py +0 -0
  280. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  281. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/flux.py +0 -0
  282. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/focusing_mirror.py +0 -0
  283. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/hutch_shutter.py +0 -0
  284. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i04/transfocator.py +0 -0
  285. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/i10_apple2.py +0 -0
  286. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  287. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/mirrors.py +0 -0
  288. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  289. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  290. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  291. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i10/slits.py +0 -0
  292. {dls_dodal-1.45.0/src/dodal/devices/electron_analyser → dls_dodal-1.47.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  293. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i18/KBMirror.py +0 -0
  294. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i18/diode.py +0 -0
  295. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i18/table.py +0 -0
  296. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i18/thor_labs_stage.py +0 -0
  297. {dls_dodal-1.45.0/src/dodal/devices/i03 → dls_dodal-1.47.0/src/dodal/devices/i19}/__init__.py +0 -0
  298. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i19/beamstop.py +0 -0
  299. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
  300. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i19/hutch_access.py +0 -0
  301. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i19/shutter.py +0 -0
  302. {dls_dodal-1.45.0/src/dodal/devices/i13_1 → dls_dodal-1.47.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  303. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i22/fswitch.py +0 -0
  304. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i22/nxsas.py +0 -0
  305. {dls_dodal-1.45.0/src/dodal/devices/i19 → dls_dodal-1.47.0/src/dodal/devices/i24}/__init__.py +0 -0
  306. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/aperture.py +0 -0
  307. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/beam_center.py +0 -0
  308. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/beamstop.py +0 -0
  309. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  310. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  311. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/i24/vgonio.py +0 -0
  312. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/ipin.py +0 -0
  313. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/linkam3.py +0 -0
  314. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/motors.py +0 -0
  315. {dls_dodal-1.45.0/src/dodal/devices/i20_1 → dls_dodal-1.47.0/src/dodal/devices/oav}/__init__.py +0 -0
  316. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
  317. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
  318. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  319. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  320. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  321. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  322. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
  323. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
  324. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
  325. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/p45.py +0 -0
  326. {dls_dodal-1.45.0/src/dodal/devices/i24 → dls_dodal-1.47.0/src/dodal/devices/p99}/__init__.py +0 -0
  327. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  328. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/pgm.py +0 -0
  329. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  330. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/qbpm.py +0 -0
  331. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/robot.py +0 -0
  332. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  333. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/scatterguard.py +0 -0
  334. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/scintillator.py +0 -0
  335. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/slits.py +0 -0
  336. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/smargon.py +0 -0
  337. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/status.py +0 -0
  338. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/synchrotron.py +0 -0
  339. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/thawer.py +0 -0
  340. {dls_dodal-1.45.0/src/dodal/devices/oav → dls_dodal-1.47.0/src/dodal/devices/training_rig}/__init__.py +0 -0
  341. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  342. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/undulator.py +0 -0
  343. {dls_dodal-1.45.0/src/dodal/devices/p99 → dls_dodal-1.47.0/src/dodal/devices/util}/__init__.py +0 -0
  344. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/util/epics_util.py +0 -0
  345. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/util/lookup_tables.py +0 -0
  346. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/util/test_utils.py +0 -0
  347. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  348. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/webcam.py +0 -0
  349. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  350. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  351. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  352. {dls_dodal-1.45.0/src/dodal/devices/training_rig → dls_dodal-1.47.0/src/dodal/devices/zebra}/__init__.py +0 -0
  353. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  354. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  355. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  356. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  357. {dls_dodal-1.45.0/src/dodal/devices/util → dls_dodal-1.47.0/src/dodal/plan_stubs}/__init__.py +0 -0
  358. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  359. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
  360. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  361. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/__init__.py +0 -0
  362. {dls_dodal-1.45.0/src/dodal/devices/zebra → dls_dodal-1.47.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  363. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  364. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/save_panda.py +0 -0
  365. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/scanspec.py +0 -0
  366. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/plans/wrapped.py +0 -0
  367. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/src/dodal/utils.py +0 -0
  368. {dls_dodal-1.45.0/src/dodal/plan_stubs → dls_dodal-1.47.0/system_tests}/__init__.py +0 -0
  369. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/system_tests/test_cli.py +0 -0
  370. {dls_dodal-1.45.0/src/dodal/plan_stubs/electron_analyser → dls_dodal-1.47.0/tests}/__init__.py +0 -0
  371. {dls_dodal-1.45.0/src/dodal/plans/preprocessors → dls_dodal-1.47.0/tests/beamlines}/__init__.py +0 -0
  372. {dls_dodal-1.45.0/system_tests → dls_dodal-1.47.0/tests/beamlines/unit_tests}/__init__.py +0 -0
  373. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
  374. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
  375. {dls_dodal-1.45.0/tests → dls_dodal-1.47.0/tests/common}/__init__.py +0 -0
  376. {dls_dodal-1.45.0/tests → dls_dodal-1.47.0/tests/common}/beamlines/__init__.py +0 -0
  377. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/beamlines/test_device_helpers.py +0 -0
  378. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/beamlines/test_device_instantiation.py +0 -0
  379. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/test_coordination.py +0 -0
  380. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/test_crystal_metadata.py +0 -0
  381. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/test_maths.py +0 -0
  382. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/test_udc_directory_provider.py +0 -0
  383. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/common/test_visit.py +0 -0
  384. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/constants.py +0 -0
  385. {dls_dodal-1.45.0/tests/beamlines/unit_tests → dls_dodal-1.47.0/tests/devices}/__init__.py +0 -0
  386. {dls_dodal-1.45.0/tests/common → dls_dodal-1.47.0/tests/devices/i03}/__init__.py +0 -0
  387. {dls_dodal-1.45.0/tests/common/beamlines → dls_dodal-1.47.0/tests/devices/i04}/__init__.py +0 -0
  388. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i04/test_transfocator.py +0 -0
  389. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +0 -0
  390. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +0 -0
  391. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  392. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  393. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  394. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  395. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i10/test_i10Apple2.py +0 -0
  396. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i18/test_kb_mirror.py +0 -0
  397. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i18/test_table.py +0 -0
  398. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i18/test_thor_labs_stage.py +0 -0
  399. {dls_dodal-1.45.0/tests/devices → dls_dodal-1.47.0/tests/devices/i19}/__init__.py +0 -0
  400. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i19/test_beamstop.py +0 -0
  401. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i19/test_shutter.py +0 -0
  402. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i22/test_fswitch.py +0 -0
  403. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/i22/test_metadataholder.py +0 -0
  404. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/training_rig/test_sample_stage.py +0 -0
  405. {dls_dodal-1.45.0/tests/devices/i03 → dls_dodal-1.47.0/tests/devices/unit_tests}/__init__.py +0 -0
  406. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
  407. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
  408. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  409. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  410. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  411. {dls_dodal-1.45.0/tests/devices/i04 → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser}/__init__.py +0 -0
  412. {dls_dodal-1.45.0/tests/devices/i19 → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/abstract}/__init__.py +0 -0
  413. {dls_dodal-1.45.0/tests/devices/unit_tests → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/specs}/__init__.py +0 -0
  414. {dls_dodal-1.45.0/tests/devices/unit_tests/electron_analyser → dls_dodal-1.47.0/tests/devices/unit_tests/electron_analyser/vgscienta}/__init__.py +0 -0
  415. {dls_dodal-1.45.0/tests/devices/unit_tests/i24 → dls_dodal-1.47.0/tests/devices/unit_tests/i03}/__init__.py +0 -0
  416. {dls_dodal-1.45.0/tests/devices/unit_tests/oav → dls_dodal-1.47.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
  417. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +0 -0
  418. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +0 -0
  419. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/i24/test_vgonio.py +0 -0
  420. {dls_dodal-1.45.0/tests/devices/unit_tests/util → dls_dodal-1.47.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
  421. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/conftest.py +0 -0
  422. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  423. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  424. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
  425. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
  426. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -0
  427. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -0
  428. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +0 -0
  429. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/oav/test_snapshots.py +0 -0
  430. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  431. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  432. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_aperture.py +0 -0
  433. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_apple2_undulator.py +0 -0
  434. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
  435. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  436. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_baton.py +0 -0
  437. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  438. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  439. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_bimorph_mirror.py +0 -0
  440. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  441. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  442. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  443. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_display.configuration +0 -0
  444. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_focusing_mirror.py +0 -0
  445. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  446. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
  447. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  448. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  449. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_motors.py +0 -0
  450. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_odin.py +0 -0
  451. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +0 -0
  452. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
  453. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_slits.py +0 -0
  454. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_smargon.py +0 -0
  455. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_status.py +0 -0
  456. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  457. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_thawer.py +0 -0
  458. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_turbo_slit.py +0 -0
  459. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_utils.py +0 -0
  460. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
  461. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  462. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
  463. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_zebra.py +0 -0
  464. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
  465. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
  466. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  467. {dls_dodal-1.45.0/tests/fake_zocalo → dls_dodal-1.47.0/tests/devices/unit_tests/util}/__init__.py +0 -0
  468. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  469. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
  470. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
  471. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
  472. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline.py +0 -0
  473. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  474. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_broken_dependency.py +0 -0
  475. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_dependencies.py +0 -0
  476. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  477. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  478. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_beamline_some_devices_working.py +0 -0
  479. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_device_factory_beamline.py +0 -0
  480. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_zocalo/README.rst +0 -0
  481. {dls_dodal-1.45.0/tests/unit_tests → dls_dodal-1.47.0/tests/fake_zocalo}/__init__.py +0 -0
  482. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_zocalo/__main__.py +0 -0
  483. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  484. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plan_stubs/test_motor_util_plans.py +0 -0
  485. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  486. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/test_compliance.py +0 -0
  487. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
  488. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/test_scanspec.py +0 -0
  489. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
  490. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/plans/test_wrapped.py +0 -0
  491. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
  492. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/bad_beamlineParameters +0 -0
  493. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/electron_analyser/specs_sequence.seq +0 -0
  494. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/i04_beamlineParameters +0 -0
  495. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  496. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  497. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  498. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  499. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_det_dist_converter.txt +0 -0
  500. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  501. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  502. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/topup_long_delay.txt +0 -0
  503. {dls_dodal-1.45.0 → dls_dodal-1.47.0}/tests/test_data/topup_short_params.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.45.0
3
+ Version: 1.47.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -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.10.0a1
219
+ Requires-Dist: ophyd-async>=0.10.0a3
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -4,7 +4,7 @@ import os
4
4
  import sys
5
5
  import time
6
6
  from collections.abc import Mapping
7
- from os import environ, getenv
7
+ from os import environ
8
8
  from pathlib import Path
9
9
  from typing import Any
10
10
  from unittest.mock import MagicMock, patch
@@ -35,7 +35,6 @@ mock_paths = [
35
35
  mock_attributes_table = {
36
36
  "i03": mock_paths,
37
37
  "i10": mock_paths,
38
- "s03": mock_paths,
39
38
  "i04": mock_paths,
40
39
  "s04": mock_paths,
41
40
  "i19_1": mock_paths,
@@ -98,16 +97,6 @@ def pytest_runtest_teardown():
98
97
  sys.modules["dodal.beamlines.beamline_utils"].clear_devices()
99
98
 
100
99
 
101
- s03_epics_server_port = getenv("S03_EPICS_CA_SERVER_PORT")
102
- s03_epics_repeater_port = getenv("S03_EPICS_CA_REPEATER_PORT")
103
-
104
- if s03_epics_server_port is not None:
105
- environ["EPICS_CA_SERVER_PORT"] = s03_epics_server_port
106
- print(f"[EPICS_CA_SERVER_PORT] = {s03_epics_server_port}")
107
- if s03_epics_repeater_port is not None:
108
- environ["EPICS_CA_REPEATER_PORT"] = s03_epics_repeater_port
109
- print(f"[EPICS_CA_REPEATER_PORT] = {s03_epics_repeater_port}")
110
-
111
100
  PATH_INFO_FOR_TESTING: PathInfo = PathInfo(
112
101
  directory_path=Path("/does/not/exist"),
113
102
  filename="on_this_filesystem",
@@ -1,4 +1,4 @@
1
- # 3. Add device factory decorator with lazy connect support
1
+ # 4. Add device factory decorator with lazy connect support
2
2
 
3
3
  Date: 2024-04-26
4
4
 
@@ -0,0 +1,27 @@
1
+ # How to Write External IO Devices
2
+
3
+ ## Motivation and Overview
4
+
5
+ At Diamond Dodal devices primarily refer to python classes referencing EPICS channels, with some internal logic.
6
+ There are instances when input-output operations are desired that do not work with EPICS.
7
+ For example, many GDA-compatible features need disk IO as GDA relies heavily on XML files to define various variables.
8
+ One may need a bluesky calibration plan to start with cached values - those could be in the filesystem or a key value store like Redis.
9
+
10
+ Direct IO inside plans is not allowed when inside the RunEngine context.
11
+
12
+ As far as is possible, we want our devices to only talk to EPICS PVs. The [config server](https://github.com/DiamondLightSource/daq-config-server) should fulfil the majority of use cases. Where we can't do that, it is possible to make ophyd-async devices, but heavily discouraged and that would be a temporary solution until the config server supports that IO.
13
+ It's not recommended to read from the filesystem going forward and instead development effort will be put into the config server.
14
+
15
+ ## Extant examples
16
+
17
+ - [aperturescatterguard](../../src/dodal/devices/aperturescatterguard.py) - reads a set of valid positions from a file.
18
+ - [oav_to_redis_forwarder](../../src/dodal/devices/oav/oav_to_redis_forwarder.py) - pushes data into redis
19
+ - [OAV_detector](../../src/dodal/devices/oav/oav_detector.py) - detector configuration is based on a file on disk
20
+
21
+ ## Existing patterns
22
+
23
+ Those three devices have been mostly at the MX beamlines. To see a more up to date list, narrow down the search to the [beamlines folder](../../src/dodal/beamlines/) and search for a `dls` string. You will see `Path` calls that are about data writing, but also some ALL_CAPS constants such as `DISPLAY_CONFIG`.
24
+ There are two cases, either the IO operation we're looking into is just on device start, or it's an ongoing thing. If it's just in the start as a config, the established pattern is to provide a Class for that object, and make a standlone function in the device file to load it from the filesystem, taking path as a parameter.
25
+ Then inside the specific file in the beamlines folder, the device takes the product of calling the function with a beamline-specific path. The fact the device just takes an object makes it easier to write mocks for testing.
26
+
27
+ Conversely if the IO is ongoing throughout the lifetime of the device object, AsyncStatus logic must be implemented, as in the oav_to_redis_forwarder, mentioned earlier.
@@ -150,10 +150,9 @@ based on this and so this has the issues listed above. Instead you should make s
150
150
  def __init__(self):
151
151
  self.underlying_motor = Motor("MOTOR")
152
152
  with self.add_children_as_readables():
153
- self.in_out = create_r_hardware_backed_soft_signal(InOut, self._get_in_out_from_hardware)
153
+ self.in_out = derived_signal_r(self._get_in_out_from_hardware, current_position= self.underlying_motor)
154
154
 
155
- async def _get_in_out_from_hardware(self):
156
- current_position = await self.underlying_motor.get_value()
155
+ def _get_in_out_from_hardware(self, current_position:float)->InOut:
157
156
  if isclose(current_position, 0):
158
157
  return InOut.IN
159
158
  elif isclose(current_position, 100):
@@ -169,6 +168,6 @@ based on this and so this has the issues listed above. Instead you should make s
169
168
  else:
170
169
  await self.underlying_motor.set(0)
171
170
 
172
- This will be simplified by https://github.com/bluesky/ophyd-async/issues/525
171
+ For detail on how to use derived signal see `ophyd-async how to guide. <https://blueskyproject.io/ophyd-async/main/how-to/derive-one-signal-from-others.html>`__
173
172
 
174
173
  .. _flowchart: https://blueskyproject.io/ophyd-async/main/how-to/choose-interfaces-for-devices.html
@@ -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.10.0a1",
18
+ "ophyd-async>=0.10.0a3",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -24,9 +24,9 @@ dependencies = [
24
24
  "requests",
25
25
  "graypy",
26
26
  "pydantic>=2.0",
27
- "opencv-python-headless", # For pin-tip detection.
28
- "aioca", # Required for CA support with ophyd-async.
29
- "p4p", # Required for PVA support with ophyd-async.
27
+ "opencv-python-headless", # For pin-tip detection.
28
+ "aioca", # Required for CA support with ophyd-async.
29
+ "p4p", # Required for PVA support with ophyd-async.
30
30
  "numpy",
31
31
  "aiofiles",
32
32
  "aiohttp",
@@ -103,9 +103,9 @@ reportMissingImports = false # Ignore missing stubs in imported modules
103
103
  # Run pytest with all our checkers, and don't spam us with massive tracebacks on error
104
104
  asyncio_mode = "auto"
105
105
  markers = [
106
- "s03: marks tests as requiring the s03 simulator running (deselect with '-m \"not s03\"')",
107
106
  "adsim: marks tests as requiring the containerised AreaDetector simulator running (deselect with '-m \"not adsim\"')",
108
107
  "skip_in_pycharm: marks test as not working in pycharm testrunner",
108
+ "system_test: marks test as other system test that requires infrastructure"
109
109
  ]
110
110
  addopts = """
111
111
  --cov=dodal --cov-report term --cov-report xml:cov.xml
@@ -154,12 +154,12 @@ allowlist_externals =
154
154
  sphinx-build
155
155
  sphinx-autobuild
156
156
  commands =
157
- tests: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:cov.xml {posargs}
157
+ tests: pytest -m 'not (adsim)' --cov=dodal --cov-report term --cov-report xml:cov.xml {posargs}
158
158
  type-checking: pyright src tests {posargs}
159
159
  pre-commit: pre-commit run --all-files --show-diff-on-failure {posargs}
160
160
  docs: sphinx-{posargs:build -E} -T docs build/html
161
- unit-report: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:unit_cov.xml --json-report --json-report-file=unit-report.json tests {posargs}
162
- system-report: pytest -m 'not (s03 or adsim)' --cov=dodal --cov-report term --cov-report xml:system_cov.xml --json-report --json-report-file=system-report.json system_tests {posargs}
161
+ unit-report: pytest -m 'not (adsim)' --cov=dodal --cov-report term --cov-report xml:unit_cov.xml --json-report --json-report-file=unit-report.json tests {posargs}
162
+ system-report: pytest -m 'not (adsim or system_test)' --cov=dodal --cov-report term --cov-report xml:system_cov.xml --json-report --json-report-file=system-report.json system_tests {posargs}
163
163
  """
164
164
 
165
165
  [tool.ruff]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.45.0
3
+ Version: 1.47.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -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.10.0a1
219
+ Requires-Dist: ophyd-async>=0.10.0a3
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -46,7 +46,7 @@ docs/explanations/reviews.md
46
46
  docs/explanations/decisions/0001-record-architecture-decisions.md
47
47
  docs/explanations/decisions/0002-switched-to-python-copier-template.md
48
48
  docs/explanations/decisions/0003-codeowners.md
49
- docs/explanations/decisions/0003-make-devices-factory.md
49
+ docs/explanations/decisions/0004-make-devices-factory.md
50
50
  docs/explanations/decisions/COPYME
51
51
  docs/how-to/build-docs.md
52
52
  docs/how-to/contribute.md
@@ -54,6 +54,7 @@ docs/how-to/coverage.md
54
54
  docs/how-to/create-beamline.rst
55
55
  docs/how-to/dev-install.md
56
56
  docs/how-to/excalidraw.md
57
+ docs/how-to/external-io-devices.md
57
58
  docs/how-to/lint.md
58
59
  docs/how-to/lock-requirements.md
59
60
  docs/how-to/make-new-ophyd-async-device.rst
@@ -119,7 +120,6 @@ src/dodal/common/coordination.py
119
120
  src/dodal/common/crystal_metadata.py
120
121
  src/dodal/common/data_util.py
121
122
  src/dodal/common/maths.py
122
- src/dodal/common/signal_utils.py
123
123
  src/dodal/common/types.py
124
124
  src/dodal/common/udc_directory_provider.py
125
125
  src/dodal/common/visit.py
@@ -136,8 +136,8 @@ src/dodal/devices/apple2_undulator.py
136
136
  src/dodal/devices/backlight.py
137
137
  src/dodal/devices/baton.py
138
138
  src/dodal/devices/bimorph_mirror.py
139
+ src/dodal/devices/common_dcm.py
139
140
  src/dodal/devices/cryostream.py
140
- src/dodal/devices/dcm.py
141
141
  src/dodal/devices/diamond_filter.py
142
142
  src/dodal/devices/eiger.py
143
143
  src/dodal/devices/eiger_odin.py
@@ -148,10 +148,10 @@ src/dodal/devices/focusing_mirror.py
148
148
  src/dodal/devices/hutch_shutter.py
149
149
  src/dodal/devices/ipin.py
150
150
  src/dodal/devices/linkam3.py
151
- src/dodal/devices/logging_ophyd_device.py
152
151
  src/dodal/devices/motors.py
153
152
  src/dodal/devices/p45.py
154
153
  src/dodal/devices/pgm.py
154
+ src/dodal/devices/positioner.py
155
155
  src/dodal/devices/pressure_jump_cell.py
156
156
  src/dodal/devices/qbpm.py
157
157
  src/dodal/devices/robot.py
@@ -166,7 +166,6 @@ src/dodal/devices/tetramm.py
166
166
  src/dodal/devices/thawer.py
167
167
  src/dodal/devices/turbo_slit.py
168
168
  src/dodal/devices/undulator.py
169
- src/dodal/devices/undulator_dcm.py
170
169
  src/dodal/devices/watsonmarlow323_pump.py
171
170
  src/dodal/devices/webcam.py
172
171
  src/dodal/devices/xbpm_feedback.py
@@ -189,14 +188,26 @@ src/dodal/devices/detector/det_resolution.py
189
188
  src/dodal/devices/detector/detector.py
190
189
  src/dodal/devices/detector/detector_motion.py
191
190
  src/dodal/devices/electron_analyser/__init__.py
192
- src/dodal/devices/electron_analyser/abstract_analyser_io.py
193
- src/dodal/devices/electron_analyser/abstract_region.py
194
- src/dodal/devices/electron_analyser/specs_analyser_io.py
195
- src/dodal/devices/electron_analyser/specs_region.py
196
- src/dodal/devices/electron_analyser/vgscienta_analyser_io.py
197
- src/dodal/devices/electron_analyser/vgscienta_region.py
191
+ src/dodal/devices/electron_analyser/types.py
192
+ src/dodal/devices/electron_analyser/util.py
193
+ src/dodal/devices/electron_analyser/abstract/__init__.py
194
+ src/dodal/devices/electron_analyser/abstract/base_detector.py
195
+ src/dodal/devices/electron_analyser/abstract/base_driver_io.py
196
+ src/dodal/devices/electron_analyser/abstract/base_region.py
197
+ src/dodal/devices/electron_analyser/specs/__init__.py
198
+ src/dodal/devices/electron_analyser/specs/detector.py
199
+ src/dodal/devices/electron_analyser/specs/driver_io.py
200
+ src/dodal/devices/electron_analyser/specs/region.py
201
+ src/dodal/devices/electron_analyser/vgscienta/__init__.py
202
+ src/dodal/devices/electron_analyser/vgscienta/detector.py
203
+ src/dodal/devices/electron_analyser/vgscienta/driver_io.py
204
+ src/dodal/devices/electron_analyser/vgscienta/region.py
198
205
  src/dodal/devices/i03/__init__.py
199
- src/dodal/devices/i03/beamstop.py
206
+ src/dodal/devices/i03/dcm.py
207
+ src/dodal/devices/i03/undulator_dcm.py
208
+ src/dodal/devices/i04/__init__.py
209
+ src/dodal/devices/i04/constants.py
210
+ src/dodal/devices/i04/murko_results.py
200
211
  src/dodal/devices/i04/transfocator.py
201
212
  src/dodal/devices/i10/diagnostics.py
202
213
  src/dodal/devices/i10/i10_apple2.py
@@ -233,6 +244,7 @@ src/dodal/devices/i24/i24_detector_motion.py
233
244
  src/dodal/devices/i24/pilatus_metadata.py
234
245
  src/dodal/devices/i24/pmac.py
235
246
  src/dodal/devices/i24/vgonio.py
247
+ src/dodal/devices/mx_phase1/beamstop.py
236
248
  src/dodal/devices/oav/__init__.py
237
249
  src/dodal/devices/oav/oav_calculations.py
238
250
  src/dodal/devices/oav/oav_detector.py
@@ -247,6 +259,7 @@ src/dodal/devices/oav/snapshots/snapshot.py
247
259
  src/dodal/devices/oav/snapshots/snapshot_image_processing.py
248
260
  src/dodal/devices/oav/snapshots/snapshot_with_grid.py
249
261
  src/dodal/devices/p99/__init__.py
262
+ src/dodal/devices/p99/andor2_point.py
250
263
  src/dodal/devices/p99/sample_stage.py
251
264
  src/dodal/devices/training_rig/__init__.py
252
265
  src/dodal/devices/training_rig/sample_stage.py
@@ -272,7 +285,7 @@ src/dodal/plan_stubs/data_session.py
272
285
  src/dodal/plan_stubs/motor_utils.py
273
286
  src/dodal/plan_stubs/wrapped.py
274
287
  src/dodal/plan_stubs/electron_analyser/__init__.py
275
- src/dodal/plan_stubs/electron_analyser/configure_controller.py
288
+ src/dodal/plan_stubs/electron_analyser/configure_driver.py
276
289
  src/dodal/plans/__init__.py
277
290
  src/dodal/plans/save_panda.py
278
291
  src/dodal/plans/scanspec.py
@@ -282,18 +295,9 @@ src/dodal/plans/preprocessors/__init__.py
282
295
  src/dodal/plans/preprocessors/verify_undulator_gap.py
283
296
  system_tests/__init__.py
284
297
  system_tests/test_adsim.py
285
- system_tests/test_aperturescatterguard_system.py
286
298
  system_tests/test_cli.py
287
- system_tests/test_eiger_system.py
288
- system_tests/test_gridscan_system.py
289
299
  system_tests/test_oav_system.py
290
300
  system_tests/test_oav_to_redis_system.py
291
- system_tests/test_slit_gaps_system.py
292
- system_tests/test_smargon_system.py
293
- system_tests/test_synchrotron_system.py
294
- system_tests/test_undulator_system.py
295
- system_tests/test_zebra_system.py
296
- system_tests/test_zocalo_results.py
297
301
  tests/__init__.py
298
302
  tests/conftest.py
299
303
  tests/constants.py
@@ -315,7 +319,6 @@ tests/common/__init__.py
315
319
  tests/common/test_coordination.py
316
320
  tests/common/test_crystal_metadata.py
317
321
  tests/common/test_maths.py
318
- tests/common/test_signal_utils.py
319
322
  tests/common/test_udc_directory_provider.py
320
323
  tests/common/test_visit.py
321
324
  tests/common/beamlines/__init__.py
@@ -324,12 +327,13 @@ tests/common/beamlines/test_beamline_utils.py
324
327
  tests/common/beamlines/test_device_helpers.py
325
328
  tests/common/beamlines/test_device_instantiation.py
326
329
  tests/devices/__init__.py
330
+ tests/devices/test_common_dcm.py
327
331
  tests/devices/test_diamond_filter.py
328
332
  tests/devices/i03/__init__.py
329
333
  tests/devices/i03/test_beamstop.py
330
334
  tests/devices/i04/__init__.py
335
+ tests/devices/i04/test_murko_results.py
331
336
  tests/devices/i04/test_transfocator.py
332
- tests/devices/i10/test_diagnostic.py
333
337
  tests/devices/i10/test_i10Apple2.py
334
338
  tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv
335
339
  tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv
@@ -349,7 +353,6 @@ tests/devices/i22/test_fswitch.py
349
353
  tests/devices/i22/test_metadataholder.py
350
354
  tests/devices/training_rig/test_sample_stage.py
351
355
  tests/devices/unit_tests/__init__.py
352
- tests/devices/unit_tests/conftest.py
353
356
  tests/devices/unit_tests/test_OAVCentring.json
354
357
  tests/devices/unit_tests/test_aperture.py
355
358
  tests/devices/unit_tests/test_aperture_scatterguard.py
@@ -361,7 +364,6 @@ tests/devices/unit_tests/test_baton.py
361
364
  tests/devices/unit_tests/test_beam_converter.py
362
365
  tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
363
366
  tests/devices/unit_tests/test_bimorph_mirror.py
364
- tests/devices/unit_tests/test_dcm.py
365
367
  tests/devices/unit_tests/test_display.configuration
366
368
  tests/devices/unit_tests/test_eiger.py
367
369
  tests/devices/unit_tests/test_focusing_mirror.py
@@ -373,6 +375,7 @@ tests/devices/unit_tests/test_lookup_table.txt
373
375
  tests/devices/unit_tests/test_lookup_table_2.txt
374
376
  tests/devices/unit_tests/test_motors.py
375
377
  tests/devices/unit_tests/test_odin.py
378
+ tests/devices/unit_tests/test_positioner.py
376
379
  tests/devices/unit_tests/test_pressure_jump_cell.py
377
380
  tests/devices/unit_tests/test_qbpm.py
378
381
  tests/devices/unit_tests/test_slits.py
@@ -383,7 +386,6 @@ tests/devices/unit_tests/test_tetramm.py
383
386
  tests/devices/unit_tests/test_thawer.py
384
387
  tests/devices/unit_tests/test_turbo_slit.py
385
388
  tests/devices/unit_tests/test_undulator.py
386
- tests/devices/unit_tests/test_undulator_dcm.py
387
389
  tests/devices/unit_tests/test_utils.py
388
390
  tests/devices/unit_tests/test_watsonmarlow323_pump.py
389
391
  tests/devices/unit_tests/test_webcam.py
@@ -401,12 +403,21 @@ tests/devices/unit_tests/detector/test_det_resolution.py
401
403
  tests/devices/unit_tests/detector/test_detector.py
402
404
  tests/devices/unit_tests/electron_analyser/__init__.py
403
405
  tests/devices/unit_tests/electron_analyser/conftest.py
404
- tests/devices/unit_tests/electron_analyser/test_base_analayser_io.py
405
- tests/devices/unit_tests/electron_analyser/test_specs_analyser_io.py
406
- tests/devices/unit_tests/electron_analyser/test_specs_region.py
407
406
  tests/devices/unit_tests/electron_analyser/test_util.py
408
- tests/devices/unit_tests/electron_analyser/test_vgscienta_analyser_io.py
409
- tests/devices/unit_tests/electron_analyser/test_vgscienta_region.py
407
+ tests/devices/unit_tests/electron_analyser/abstract/__init__.py
408
+ tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py
409
+ tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py
410
+ tests/devices/unit_tests/electron_analyser/specs/__init__.py
411
+ tests/devices/unit_tests/electron_analyser/specs/test_detector.py
412
+ tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py
413
+ tests/devices/unit_tests/electron_analyser/specs/test_region.py
414
+ tests/devices/unit_tests/electron_analyser/vgscienta/__init__.py
415
+ tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py
416
+ tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py
417
+ tests/devices/unit_tests/electron_analyser/vgscienta/test_region.py
418
+ tests/devices/unit_tests/i03/__init__.py
419
+ tests/devices/unit_tests/i03/test_dcm.py
420
+ tests/devices/unit_tests/i03/test_undulator_dcm.py
410
421
  tests/devices/unit_tests/i24/__init__.py
411
422
  tests/devices/unit_tests/i24/test_dual_backlight.py
412
423
  tests/devices/unit_tests/i24/test_focus_mirrors.py
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async>=0.10.0a1
3
+ ophyd-async>=0.10.0a3
4
4
  bluesky
5
5
  pyepics
6
6
  dataclasses-json
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.45.0'
21
- __version_tuple__ = version_tuple = (1, 45, 0)
20
+ __version__ = version = '1.47.0'
21
+ __version_tuple__ = version_tuple = (1, 47, 0)
@@ -16,7 +16,6 @@ _BEAMLINE_NAME_OVERRIDES = {
16
16
  "i19-1": "i19_1",
17
17
  "i19-2": "i19_2",
18
18
  "i19-optics": "i19_optics",
19
- "s03": "i03",
20
19
  "p46": "training_rig",
21
20
  "p47": "training_rig",
22
21
  "p48": "training_rig",
@@ -2,9 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.electron_analyser.specs_analyser_io import (
6
- SpecsAnalyserDriverIO,
7
- )
5
+ from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
8
6
  from dodal.devices.synchrotron import Synchrotron
9
7
  from dodal.log import set_beamline as set_log_beamline
10
8
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -22,6 +20,4 @@ def synchrotron() -> Synchrotron:
22
20
 
23
21
  @device_factory()
24
22
  def analyser_driver() -> SpecsAnalyserDriverIO:
25
- return SpecsAnalyserDriverIO(
26
- name="analyser_driver", prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:"
27
- )
23
+ return SpecsAnalyserDriverIO(prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:")
@@ -2,9 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.electron_analyser.specs_analyser_io import (
6
- SpecsAnalyserDriverIO,
7
- )
5
+ from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
8
6
  from dodal.devices.synchrotron import Synchrotron
9
7
  from dodal.log import set_beamline as set_log_beamline
10
8
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -18,14 +18,15 @@ from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
18
18
  from dodal.devices.backlight import Backlight
19
19
  from dodal.devices.baton import Baton
20
20
  from dodal.devices.cryostream import CryoStream
21
- from dodal.devices.dcm import DCM
22
21
  from dodal.devices.detector.detector_motion import DetectorMotion
23
22
  from dodal.devices.diamond_filter import DiamondFilter, I03Filters
24
23
  from dodal.devices.eiger import EigerDetector
25
24
  from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
26
25
  from dodal.devices.flux import Flux
27
26
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
28
- from dodal.devices.i03.beamstop import Beamstop
27
+ from dodal.devices.i03 import Beamstop
28
+ from dodal.devices.i03.dcm import DCM
29
+ from dodal.devices.i03.undulator_dcm import UndulatorDCM
29
30
  from dodal.devices.motors import XYZPositioner
30
31
  from dodal.devices.oav.oav_detector import OAV
31
32
  from dodal.devices.oav.oav_parameters import OAVConfig
@@ -37,7 +38,6 @@ from dodal.devices.smargon import Smargon
37
38
  from dodal.devices.synchrotron import Synchrotron
38
39
  from dodal.devices.thawer import Thawer
39
40
  from dodal.devices.undulator import Undulator
40
- from dodal.devices.undulator_dcm import UndulatorDCM
41
41
  from dodal.devices.webcam import Webcam
42
42
  from dodal.devices.xbpm_feedback import XBPMFeedback
43
43
  from dodal.devices.xspress3.xspress3 import Xspress3
@@ -58,7 +58,7 @@ ZOOM_PARAMS_FILE = (
58
58
  DISPLAY_CONFIG = "/dls_sw/i03/software/gda_versions/var/display.configuration"
59
59
  DAQ_CONFIGURATION_PATH = "/dls_sw/i03/software/daq_configuration"
60
60
 
61
- BL = get_beamline_name("s03")
61
+ BL = get_beamline_name("i03")
62
62
  set_log_beamline(BL)
63
63
  set_utils_beamline(BL)
64
64
 
@@ -67,7 +67,6 @@ set_path_provider(PandASubpathProvider())
67
67
  I03_ZEBRA_MAPPING = ZebraMapping(
68
68
  outputs=ZebraTTLOutputs(TTL_DETECTOR=1, TTL_SHUTTER=2, TTL_XSPRESS3=3, TTL_PANDA=4),
69
69
  sources=ZebraSources(),
70
- AND_GATE_FOR_AUTO_SHUTTER=2,
71
70
  )
72
71
 
73
72
  PREFIX = BeamlinePrefix(BL)
@@ -113,12 +112,12 @@ def dcm() -> DCM:
113
112
  If this is called when already instantiated in i03, it will return the existing object.
114
113
  """
115
114
  return DCM(
116
- f"{PREFIX.beamline_prefix}-MO-DCM-01:",
117
- "dcm",
115
+ prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
116
+ name="dcm",
118
117
  )
119
118
 
120
119
 
121
- @device_factory(skip=BL == "s03")
120
+ @device_factory()
122
121
  def vfm() -> FocusingMirrorWithStripes:
123
122
  return FocusingMirrorWithStripes(
124
123
  prefix=f"{PREFIX.beamline_prefix}-OP-VFM-01:",
@@ -130,7 +129,7 @@ def vfm() -> FocusingMirrorWithStripes:
130
129
  )
131
130
 
132
131
 
133
- @device_factory(skip=BL == "s03")
132
+ @device_factory()
134
133
  def mirror_voltages() -> MirrorVoltages:
135
134
  return MirrorVoltages(
136
135
  name="mirror_voltages",
@@ -147,7 +146,7 @@ def backlight() -> Backlight:
147
146
  return Backlight(prefix=PREFIX.beamline_prefix, name="backlight")
148
147
 
149
148
 
150
- @device_factory(skip=BL == "s03")
149
+ @device_factory()
151
150
  def detector_motion() -> DetectorMotion:
152
151
  """Get the i03 detector motion device, instantiate it if it hasn't already been.
153
152
  If this is called when already instantiated in i03, it will return the existing object.
@@ -158,7 +157,7 @@ def detector_motion() -> DetectorMotion:
158
157
  )
159
158
 
160
159
 
161
- @device_factory(skip=BL == "s03")
160
+ @device_factory()
162
161
  def eiger(mock: bool = False) -> EigerDetector:
163
162
  """Get the i03 Eiger device, instantiate it if it hasn't already been.
164
163
  If this is called when already instantiated in i03, it will return the existing object.
@@ -196,7 +195,7 @@ def panda_fast_grid_scan() -> PandAFastGridScan:
196
195
  )
197
196
 
198
197
 
199
- @device_factory(skip=BL == "s03")
198
+ @device_factory()
200
199
  def oav(
201
200
  params: OAVConfig | None = None,
202
201
  ) -> OAV:
@@ -210,7 +209,7 @@ def oav(
210
209
  )
211
210
 
212
211
 
213
- @device_factory(skip=BL == "s03")
212
+ @device_factory()
214
213
  def pin_tip_detection() -> PinTipDetection:
215
214
  """Get the i03 pin tip detection device, instantiate it if it hasn't already been.
216
215
  If this is called when already instantiated in i03, it will return the existing object.
@@ -240,7 +239,7 @@ def s4_slit_gaps() -> S4SlitGaps:
240
239
  )
241
240
 
242
241
 
243
- @device_factory(skip=BL == "s03")
242
+ @device_factory()
244
243
  def synchrotron() -> Synchrotron:
245
244
  """Get the i03 synchrotron device, instantiate it if it hasn't already been.
246
245
  If this is called when already instantiated in i03, it will return the existing object.
@@ -316,7 +315,7 @@ def panda() -> HDFPanda:
316
315
  )
317
316
 
318
317
 
319
- @device_factory(skip=BL == "s03")
318
+ @device_factory()
320
319
  def sample_shutter() -> ZebraShutter:
321
320
  """Get the i03 sample shutter device, instantiate it if it hasn't already been.
322
321
  If this is called when already instantiated in i03, it will return the existing object.
@@ -327,7 +326,7 @@ def sample_shutter() -> ZebraShutter:
327
326
  )
328
327
 
329
328
 
330
- @device_factory(skip=BL == "s03")
329
+ @device_factory()
331
330
  def flux() -> Flux:
332
331
  """Get the i03 flux device, instantiate it if it hasn't already been.
333
332
  If this is called when already instantiated in i03, it will return the existing object.
@@ -422,9 +421,7 @@ def diamond_filter() -> DiamondFilter[I03Filters]:
422
421
  If this is called when already instantiated in i03, it will return the existing object.
423
422
  """
424
423
  return DiamondFilter[I03Filters](
425
- prefix=f"{PREFIX.beamline_prefix}-MO-FLTR-01:",
426
- name="diamond_filter",
427
- data_type=I03Filters,
424
+ f"{PREFIX.beamline_prefix}-MO-FLTR-01:Y", I03Filters
428
425
  )
429
426
 
430
427