dls-dodal 1.62.0__tar.gz → 1.64.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 (646) hide show
  1. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_test.yml +0 -1
  2. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/PKG-INFO +3 -3
  3. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/conftest.py +5 -35
  4. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/make-release.md +1 -1
  5. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/write-tests.md +10 -10
  6. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/reference/device-standards.md +1 -1
  7. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/pyproject.toml +15 -7
  8. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/PKG-INFO +3 -3
  9. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/SOURCES.txt +32 -14
  10. dls_dodal-1.64.0/src/dls_dodal.egg-info/entry_points.txt +3 -0
  11. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/requires.txt +2 -2
  12. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/_version.py +3 -3
  13. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/__init__.py +1 -0
  14. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/adsim.py +5 -3
  15. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b21.py +3 -1
  16. dls_dodal-1.64.0/src/dodal/beamlines/i02_2.py +32 -0
  17. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i03.py +9 -0
  18. dls_dodal-1.64.0/src/dodal/beamlines/i07.py +21 -0
  19. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09.py +11 -4
  20. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09_1.py +10 -4
  21. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i09_2.py +30 -0
  22. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i10.py +7 -69
  23. dls_dodal-1.64.0/src/dodal/beamlines/i10_1.py +35 -0
  24. dls_dodal-1.64.0/src/dodal/beamlines/i10_optics.py +231 -0
  25. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i15_1.py +5 -5
  26. dls_dodal-1.64.0/src/dodal/beamlines/i17.py +96 -0
  27. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i18.py +15 -9
  28. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_1.py +3 -3
  29. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_2.py +2 -2
  30. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i19_optics.py +4 -1
  31. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i21.py +31 -1
  32. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i24.py +3 -3
  33. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/cli.py +7 -7
  34. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/visit.py +4 -4
  35. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/aperturescatterguard.py +6 -4
  36. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/apple2_undulator.py +225 -126
  37. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/filter_selections.py +6 -6
  38. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/ccmc.py +1 -1
  39. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/common_dcm.py +63 -16
  40. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/femto.py +4 -4
  41. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/sr570.py +3 -3
  42. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/fast_grid_scan.py +4 -4
  43. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/fast_shutter.py +19 -7
  44. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/dcm.py +4 -2
  45. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/undulator_dcm.py +1 -1
  46. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/murko_results.py +35 -14
  47. dls_dodal-1.64.0/src/dodal/devices/i07/dcm.py +33 -0
  48. dls_dodal-1.64.0/src/dodal/devices/i09/__init__.py +3 -0
  49. dls_dodal-1.64.0/src/dodal/devices/i09_1_shared/__init__.py +3 -0
  50. dls_dodal-1.64.0/src/dodal/devices/i09_1_shared/hard_undulator_functions.py +111 -0
  51. dls_dodal-1.64.0/src/dodal/devices/i10/__init__.py +29 -0
  52. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/diagnostics.py +37 -5
  53. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/i10_apple2.py +125 -229
  54. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/slits.py +38 -6
  55. dls_dodal-1.64.0/src/dodal/devices/i15/dcm.py +39 -0
  56. dls_dodal-1.64.0/src/dodal/devices/i17/i17_apple2.py +51 -0
  57. {dls_dodal-1.62.0/src/dodal/devices/i19 → dls_dodal-1.64.0/src/dodal/devices/i19/access_controlled}/shutter.py +7 -4
  58. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/dcm.py +3 -3
  59. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/dcm.py +2 -2
  60. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_detector.py +1 -1
  61. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_parameters.py +4 -4
  62. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +4 -4
  63. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +3 -3
  64. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +1 -1
  65. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot.py +1 -1
  66. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +12 -12
  67. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +1 -1
  68. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/utils.py +2 -2
  69. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/pgm.py +3 -3
  70. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/robot.py +5 -5
  71. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/tetramm.py +9 -5
  72. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/thawer.py +0 -4
  73. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/util/lookup_tables.py +8 -2
  74. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/v2f.py +2 -2
  75. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +2 -2
  76. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/__init__.py +4 -4
  77. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_results.py +4 -4
  78. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/log.py +9 -9
  79. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/motor_utils.py +4 -4
  80. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +2 -2
  81. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/save_panda.py +7 -7
  82. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/verify_undulator_gap.py +4 -4
  83. dls_dodal-1.64.0/src/dodal/testing/fixtures/run_engine.py +46 -0
  84. dls_dodal-1.64.0/src/dodal/testing/fixtures/utils.py +57 -0
  85. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/system_tests/test_adsim.py +9 -9
  86. dls_dodal-1.64.0/system_tests/test_cli.py +31 -0
  87. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/system_tests/test_oav_system.py +2 -2
  88. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/system_tests/test_oav_to_redis_system.py +5 -5
  89. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_beamline_parameters.py +1 -1
  90. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_commissioning_mode.py +4 -4
  91. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_device_instantiation.py +2 -2
  92. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_visit.py +2 -2
  93. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_watcher_utils.py +1 -1
  94. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/conftest.py +3 -55
  95. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/b07_1/test_ccmc.py +7 -7
  96. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/current_amplifier/test_femto.py +19 -14
  97. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/current_amplifier/test_sr570.py +25 -20
  98. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_detector.py +2 -3
  99. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_driver_io.py +8 -9
  100. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/conftest.py +19 -11
  101. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_detector.py +0 -2
  102. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_driver_io.py +13 -13
  103. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_detector.py +2 -3
  104. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_detector.py +0 -2
  105. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_driver_io.py +12 -13
  106. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i03/test_dcm.py +1 -1
  107. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i03/test_undulator_dcm.py +9 -9
  108. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i04/test_murko_results.py +90 -56
  109. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i04/test_transfocator.py +6 -2
  110. dls_dodal-1.64.0/tests/devices/i07/test_dcm.py +36 -0
  111. dls_dodal-1.64.0/tests/devices/i09_1_shared/test_data/__init__.py +9 -0
  112. dls_dodal-1.64.0/tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt +26 -0
  113. dls_dodal-1.64.0/tests/devices/i09_1_shared/test_undulator_functions.py +53 -0
  114. dls_dodal-1.62.0/tests/devices/i10/test_i10Apple2.py → dls_dodal-1.64.0/tests/devices/i10/test_i10_apple2.py +294 -161
  115. dls_dodal-1.64.0/tests/devices/i17/test_i17_apple2.py +51 -0
  116. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i18/test_kb_mirror.py +1 -1
  117. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_shutter.py +36 -16
  118. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i22/test_dcm.py +8 -7
  119. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i22/test_fswitch.py +2 -2
  120. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i24/test_dual_backlight.py +10 -10
  121. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i24/test_focus_mirrors.py +2 -2
  122. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i24/test_pmac.py +14 -14
  123. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i24/test_vgonio.py +2 -2
  124. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/mx_phase1/test_beamstop.py +11 -7
  125. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/image_recognition/test_pin_tip_detect.py +8 -6
  126. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav.py +7 -7
  127. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_to_redis_forwarder.py +4 -4
  128. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_utils.py +9 -9
  129. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_snapshots.py +8 -7
  130. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/p60/test_lab_xray_source.py +6 -6
  131. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/p99/test_p99_stage.py +9 -9
  132. dls_dodal-1.64.0/tests/devices/temperature_controller/__init__.py +0 -0
  133. dls_dodal-1.64.0/tests/devices/temperature_controller/lakeshore/__init__.py +0 -0
  134. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore.py +9 -11
  135. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/temperature_controller/lakeshore/test_lakeshore_io.py +1 -1
  136. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_aperture.py +3 -4
  137. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_aperture_scatterguard.py +9 -9
  138. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_apple2_undulator.py +79 -75
  139. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_attenuator.py +5 -5
  140. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_backlight.py +8 -8
  141. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_bart_robot.py +7 -7
  142. dls_dodal-1.64.0/tests/devices/test_common_dcm.py +46 -0
  143. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_eiger.py +11 -11
  144. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_fast_shutters.py +12 -8
  145. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_focusing_mirror.py +16 -16
  146. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_gridscan.py +12 -12
  147. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_hutch_shutter.py +4 -4
  148. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_odin.py +9 -9
  149. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_smargon.py +9 -9
  150. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_synchrotron.py +2 -2
  151. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_tetramm.py +11 -4
  152. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_thawer.py +3 -3
  153. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_utils.py +8 -8
  154. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_webcam.py +2 -5
  155. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_xbpm_feedback.py +9 -9
  156. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_xspress3.py +7 -7
  157. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_zebra_constants_mapping.py +2 -2
  158. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_zocalo_results.py +26 -24
  159. dls_dodal-1.64.0/tests/devices/util/__init__.py +0 -0
  160. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_adjuster_plans.py +4 -4
  161. dls_dodal-1.64.0/tests/fake_zocalo/__init__.py +0 -0
  162. dls_dodal-1.64.0/tests/plan_stubs/__init__.py +0 -0
  163. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data_session.py +4 -4
  164. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_motor_util_plans.py +32 -26
  165. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_topup_plan.py +19 -10
  166. dls_dodal-1.64.0/tests/plans/__init__.py +0 -0
  167. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/conftest.py +2 -2
  168. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_bimorph.py +23 -23
  169. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +2 -2
  170. dls_dodal-1.64.0/tests/plans/test_preprocessors/__init__.py +0 -0
  171. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +6 -6
  172. {dls_dodal-1.62.0/tests/devices/util → dls_dodal-1.64.0/tests/plans}/test_save_panda.py +0 -2
  173. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_scanspec.py +2 -2
  174. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_verify_undulator_gap_plan.py +5 -3
  175. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_wrapped.py +8 -8
  176. dls_dodal-1.64.0/tests/preprocessors/__init__.py +0 -0
  177. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/preprocessors/test_filesystem_metadata.py +24 -24
  178. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_cli.py +2 -2
  179. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_log.py +28 -28
  180. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_utils.py +1 -1
  181. dls_dodal-1.62.0/src/dls_dodal.egg-info/entry_points.txt +0 -3
  182. dls_dodal-1.62.0/src/dodal/beamlines/i10-1.py +0 -25
  183. dls_dodal-1.62.0/src/dodal/beamlines/i17.py +0 -37
  184. dls_dodal-1.62.0/src/dodal/devices/i09/__init__.py +0 -4
  185. dls_dodal-1.62.0/src/dodal/devices/i09/dcm.py +0 -26
  186. dls_dodal-1.62.0/src/dodal/devices/i15/dcm.py +0 -78
  187. dls_dodal-1.62.0/system_tests/test_cli.py +0 -12
  188. dls_dodal-1.62.0/tests/devices/i09/test_dcm.py +0 -52
  189. dls_dodal-1.62.0/tests/devices/i15/test_dcm.py +0 -17
  190. dls_dodal-1.62.0/tests/devices/test.png +0 -0
  191. dls_dodal-1.62.0/tests/devices/test_common_dcm.py +0 -8
  192. dls_dodal-1.62.0/tests/devices/test_status.py +0 -14
  193. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.copier-answers.yml +0 -0
  194. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.devcontainer/devcontainer.json +0 -0
  195. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/CODEOWNERS +0 -0
  196. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/CONTRIBUTING.md +0 -0
  197. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  198. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/actions/install_requirements/action.yml +0 -0
  199. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/dependabot.yml +0 -0
  200. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/pages/index.html +0 -0
  201. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/pages/make_switcher.py +0 -0
  202. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/scripts/check_test_durations.py +0 -0
  203. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_dist.yml +0 -0
  204. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_docs.yml +0 -0
  205. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_pypi.yml +0 -0
  206. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_release.yml +0 -0
  207. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/_tox.yml +0 -0
  208. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/ci.yml +0 -0
  209. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.github/workflows/periodic.yml +0 -0
  210. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.gitignore +0 -0
  211. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.pre-commit-config.yaml +0 -0
  212. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.vscode/extensions.json +0 -0
  213. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.vscode/launch.json +0 -0
  214. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.vscode/settings.json +0 -0
  215. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/.vscode/tasks.json +0 -0
  216. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/Dockerfile +0 -0
  217. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/LICENSE +0 -0
  218. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/README.md +0 -0
  219. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/catalog-info.yaml +0 -0
  220. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/_templates/autosummary/class.rst +0 -0
  221. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/_templates/autosummary/module.rst +0 -0
  222. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/_templates/custom-module-template.rst +0 -0
  223. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
  224. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/assets/zocalo.png +0 -0
  225. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/conf.py +0 -0
  226. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  227. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  228. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
  229. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
  230. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
  231. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/0006-devices-shared-between-endstations.md +0 -0
  232. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions/COPYME +0 -0
  233. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/decisions.md +0 -0
  234. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/reviews.md +0 -0
  235. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/umls/apple2_design.png +0 -0
  236. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations/umls/i10_id_design.png +0 -0
  237. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/explanations.md +0 -0
  238. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/genindex.md +0 -0
  239. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/build-docs.md +0 -0
  240. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/contribute.md +0 -0
  241. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/coverage.md +0 -0
  242. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/create-beamline.md +0 -0
  243. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/create-device.md +0 -0
  244. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/dev-install.md +0 -0
  245. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/excalidraw.md +0 -0
  246. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/external-io-devices.md +0 -0
  247. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/lint.md +0 -0
  248. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/lock-requirements.md +0 -0
  249. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/move-code.md +0 -0
  250. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/pypi.md +0 -0
  251. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/run-tests.md +0 -0
  252. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/static-analysis.md +0 -0
  253. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/update-template.md +0 -0
  254. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to/zocalo.md +0 -0
  255. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/how-to.md +0 -0
  256. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/images/dls-logo.svg +0 -0
  257. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/images/excalidraw-example.svg +0 -0
  258. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/index.md +0 -0
  259. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/reference/api.md +0 -0
  260. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/reference/standards.md +0 -0
  261. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/reference.md +0 -0
  262. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/tutorials/get_started.md +0 -0
  263. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/tutorials/installation.md +0 -0
  264. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/docs/tutorials.md +0 -0
  265. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/pull_request_template.md +0 -0
  266. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/setup.cfg +0 -0
  267. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/__init__.py +0 -0
  268. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  269. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
  270. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/__init__.py +0 -0
  271. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/__main__.py +0 -0
  272. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  273. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
  274. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
  275. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/README.md +0 -0
  276. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/aithre.py +0 -0
  277. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b01_1.py +0 -0
  278. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b07.py +0 -0
  279. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b07_1.py +0 -0
  280. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b16.py +0 -0
  281. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/b18.py +0 -0
  282. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i02_1.py +0 -0
  283. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i04.py +0 -0
  284. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i05.py +0 -0
  285. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i05_1.py +0 -0
  286. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i11.py +0 -0
  287. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i13_1.py +0 -0
  288. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i15.py +0 -0
  289. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i20_1.py +0 -0
  290. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i22.py +0 -0
  291. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/i23.py +0 -0
  292. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/k07.py +0 -0
  293. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/k11.py +0 -0
  294. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p38.py +0 -0
  295. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p45.py +0 -0
  296. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p60.py +0 -0
  297. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/p99.py +0 -0
  298. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/beamlines/training_rig.py +0 -0
  299. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/__init__.py +0 -0
  300. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/__init__.py +0 -0
  301. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  302. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  303. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/commissioning_mode.py +0 -0
  304. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
  305. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/coordination.py +0 -0
  306. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/crystal_metadata.py +0 -0
  307. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/data_util.py +0 -0
  308. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/device_utils.py +0 -0
  309. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/enums.py +0 -0
  310. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/maths.py +0 -0
  311. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/types.py +0 -0
  312. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/udc_directory_provider.py +0 -0
  313. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/common/watcher_utils.py +0 -0
  314. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/__init__.py +0 -0
  315. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
  316. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
  317. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +0 -0
  318. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/aperture.py +0 -0
  319. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/__init__.py +0 -0
  320. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/areadetector/plugins/__init__.py +0 -0
  321. /dls_dodal-1.62.0/src/dodal/devices/areadetector/plugins/CAM.py → /dls_dodal-1.64.0/src/dodal/devices/areadetector/plugins/cam.py +0 -0
  322. /dls_dodal-1.62.0/src/dodal/devices/areadetector/plugins/MJPG.py → /dls_dodal-1.64.0/src/dodal/devices/areadetector/plugins/mjpg.py +0 -0
  323. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/__init__.py +0 -0
  324. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
  325. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/attenuator/filter.py +0 -0
  326. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b07/__init__.py +0 -0
  327. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b07/enums.py +0 -0
  328. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/__init__.py +0 -0
  329. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b07_1/enums.py +0 -0
  330. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b16/__init__.py +0 -0
  331. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/b16/detector.py +0 -0
  332. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/backlight.py +0 -0
  333. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/baton.py +0 -0
  334. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/bimorph_mirror.py +0 -0
  335. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/collimation_table.py +0 -0
  336. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/controllers.py +0 -0
  337. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/cryostream.py +0 -0
  338. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
  339. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
  340. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
  341. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
  342. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/__init__.py +0 -0
  343. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  344. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  345. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/det_resolution.py +0 -0
  346. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/detector.py +0 -0
  347. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/detector/detector_motion.py +0 -0
  348. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/diamond_filter.py +0 -0
  349. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/eiger.py +0 -0
  350. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/eiger_odin.py +0 -0
  351. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/__init__.py +0 -0
  352. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -0
  353. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +0 -0
  354. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +0 -0
  355. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +0 -0
  356. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
  357. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/detector.py +0 -0
  358. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/energy_sources.py +0 -0
  359. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/enums.py +0 -0
  360. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
  361. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/detector.py +0 -0
  362. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +0 -0
  363. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
  364. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/specs/region.py +0 -0
  365. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/types.py +0 -0
  366. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/util.py +0 -0
  367. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +0 -0
  368. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +0 -0
  369. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +0 -0
  370. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -0
  371. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +0 -0
  372. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/eurotherm.py +0 -0
  373. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  374. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/flux.py +0 -0
  375. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/focusing_mirror.py +0 -0
  376. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/hutch_shutter.py +0 -0
  377. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/__init__.py +0 -0
  378. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/fast_grid_scan.py +0 -0
  379. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i02_1/sample_motors.py +0 -0
  380. {dls_dodal-1.62.0/src/dodal/devices/i10 → dls_dodal-1.64.0/src/dodal/devices/i02_2}/__init__.py +0 -0
  381. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i03/__init__.py +0 -0
  382. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/__init__.py +0 -0
  383. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/constants.py +0 -0
  384. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i04/transfocator.py +0 -0
  385. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i05/__init__.py +0 -0
  386. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i05/enums.py +0 -0
  387. {dls_dodal-1.62.0/src/dodal/devices/i10/rasor → dls_dodal-1.64.0/src/dodal/devices/i07}/__init__.py +0 -0
  388. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i09/enums.py +0 -0
  389. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i09_1/__init__.py +0 -0
  390. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i09_1/enums.py +0 -0
  391. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
  392. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/mirrors.py +0 -0
  393. {dls_dodal-1.62.0/src/dodal/devices/i11 → dls_dodal-1.64.0/src/dodal/devices/i10/rasor}/__init__.py +0 -0
  394. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
  395. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
  396. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
  397. {dls_dodal-1.62.0/src/dodal/devices/i13_1 → dls_dodal-1.64.0/src/dodal/devices/i11}/__init__.py +0 -0
  398. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/cyberstar_blower.py +0 -0
  399. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/diff_stages.py +0 -0
  400. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/mythen.py +0 -0
  401. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/nx100robot.py +0 -0
  402. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i11/spinner.py +0 -0
  403. {dls_dodal-1.62.0/src/dodal/devices/i15 → dls_dodal-1.64.0/src/dodal/devices/i13_1}/__init__.py +0 -0
  404. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i13_1/merlin.py +0 -0
  405. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i13_1/merlin_controller.py +0 -0
  406. {dls_dodal-1.62.0/src/dodal/devices/i18 → dls_dodal-1.64.0/src/dodal/devices/i15}/__init__.py +0 -0
  407. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/focussing_mirror.py +0 -0
  408. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/jack.py +0 -0
  409. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/laue.py +0 -0
  410. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/motors.py +0 -0
  411. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/multilayer_mirror.py +0 -0
  412. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i15/rail.py +0 -0
  413. {dls_dodal-1.62.0/src/dodal/devices/i19 → dls_dodal-1.64.0/src/dodal/devices/i17}/__init__.py +0 -0
  414. {dls_dodal-1.62.0/src/dodal/devices/i20_1 → dls_dodal-1.64.0/src/dodal/devices/i18}/__init__.py +0 -0
  415. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i18/diode.py +0 -0
  416. /dls_dodal-1.62.0/src/dodal/devices/i18/KBMirror.py → /dls_dodal-1.64.0/src/dodal/devices/i18/kb_mirror.py +0 -0
  417. {dls_dodal-1.62.0/src/dodal/devices/i22 → dls_dodal-1.64.0/src/dodal/devices/i19}/__init__.py +0 -0
  418. {dls_dodal-1.62.0/src/dodal/devices/i24 → dls_dodal-1.64.0/src/dodal/devices/i19/access_controlled}/__init__.py +0 -0
  419. {dls_dodal-1.62.0/src/dodal/devices/i19 → dls_dodal-1.64.0/src/dodal/devices/i19/access_controlled}/blueapi_device.py +0 -0
  420. {dls_dodal-1.62.0/src/dodal/devices/i19 → dls_dodal-1.64.0/src/dodal/devices/i19/access_controlled}/hutch_access.py +0 -0
  421. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/backlight.py +0 -0
  422. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/beamstop.py +0 -0
  423. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/diffractometer.py +0 -0
  424. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/mapt_configuration.py +0 -0
  425. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i19/pin_col_stages.py +0 -0
  426. {dls_dodal-1.62.0/src/dodal/devices/mx_phase1 → dls_dodal-1.64.0/src/dodal/devices/i20_1}/__init__.py +0 -0
  427. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i21/__init__.py +0 -0
  428. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i21/enums.py +0 -0
  429. {dls_dodal-1.62.0/src/dodal/devices/oav → dls_dodal-1.64.0/src/dodal/devices/i22}/__init__.py +0 -0
  430. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/fswitch.py +0 -0
  431. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i22/nxsas.py +0 -0
  432. {dls_dodal-1.62.0/src/dodal/devices/oav/snapshots → dls_dodal-1.64.0/src/dodal/devices/i24}/__init__.py +0 -0
  433. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/aperture.py +0 -0
  434. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/beam_center.py +0 -0
  435. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/beamstop.py +0 -0
  436. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/commissioning_jungfrau.py +0 -0
  437. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
  438. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
  439. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/pmac.py +0 -0
  440. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/i24/vgonio.py +0 -0
  441. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/ipin.py +0 -0
  442. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/linkam3.py +0 -0
  443. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/motors.py +0 -0
  444. {dls_dodal-1.62.0/src/dodal/devices/p99 → dls_dodal-1.64.0/src/dodal/devices/mx_phase1}/__init__.py +0 -0
  445. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/mx_phase1/beamstop.py +0 -0
  446. {dls_dodal-1.62.0/src/dodal/devices/temperture_controller/lakeshore → dls_dodal-1.64.0/src/dodal/devices/oav}/__init__.py +0 -0
  447. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
  448. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  449. {dls_dodal-1.62.0/src/dodal/devices/util → dls_dodal-1.64.0/src/dodal/devices/oav/snapshots}/__init__.py +0 -0
  450. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
  451. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p45.py +0 -0
  452. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/__init__.py +0 -0
  453. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/enums.py +0 -0
  454. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p60/lab_xray_source.py +0 -0
  455. {dls_dodal-1.62.0/src/dodal/devices/xspress3 → dls_dodal-1.64.0/src/dodal/devices/p99}/__init__.py +0 -0
  456. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p99/andor2_point.py +0 -0
  457. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/p99/sample_stage.py +0 -0
  458. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/positioner.py +0 -0
  459. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/pressure_jump_cell.py +0 -0
  460. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/qbpm.py +0 -0
  461. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
  462. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/scintillator.py +0 -0
  463. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/slits.py +0 -0
  464. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/smargon.py +0 -0
  465. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/status.py +0 -0
  466. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/synchrotron.py +0 -0
  467. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/__init__.py +0 -0
  468. {dls_dodal-1.62.0/src/dodal/devices/zebra → dls_dodal-1.64.0/src/dodal/devices/temperture_controller/lakeshore}/__init__.py +0 -0
  469. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore.py +0 -0
  470. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +0 -0
  471. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/turbo_slit.py +0 -0
  472. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/undulator.py +0 -0
  473. {dls_dodal-1.62.0/src/dodal/parameters → dls_dodal-1.64.0/src/dodal/devices/util}/__init__.py +0 -0
  474. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
  475. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/util/epics_util.py +0 -0
  476. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/watsonmarlow323_pump.py +0 -0
  477. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/webcam.py +0 -0
  478. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/xbpm_feedback.py +0 -0
  479. {dls_dodal-1.62.0/src/dodal/plan_stubs → dls_dodal-1.64.0/src/dodal/devices/xspress3}/__init__.py +0 -0
  480. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
  481. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  482. {dls_dodal-1.62.0/src/dodal/plans/preprocessors → dls_dodal-1.64.0/src/dodal/devices/zebra}/__init__.py +0 -0
  483. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra.py +0 -0
  484. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
  485. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
  486. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  487. {dls_dodal-1.62.0/system_tests → dls_dodal-1.64.0/src/dodal/parameters}/__init__.py +0 -0
  488. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  489. {dls_dodal-1.62.0/tests → dls_dodal-1.64.0/src/dodal/plan_stubs}/__init__.py +0 -0
  490. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/check_topup.py +0 -0
  491. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/data_session.py +0 -0
  492. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plan_stubs/wrapped.py +0 -0
  493. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/__init__.py +0 -0
  494. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/bimorph.py +0 -0
  495. {dls_dodal-1.62.0/tests/beamlines → dls_dodal-1.64.0/src/dodal/plans/preprocessors}/__init__.py +0 -0
  496. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
  497. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/scanspec.py +0 -0
  498. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/plans/wrapped.py +0 -0
  499. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/testing/__init__.py +0 -0
  500. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/testing/electron_analyser/__init__.py +0 -0
  501. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/testing/electron_analyser/device_factory.py +0 -0
  502. {dls_dodal-1.62.0/tests/common → dls_dodal-1.64.0/src/dodal/testing/fixtures}/__init__.py +0 -0
  503. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/testing/setup.py +0 -0
  504. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/src/dodal/utils.py +0 -0
  505. {dls_dodal-1.62.0/tests/common/beamlines → dls_dodal-1.64.0/system_tests}/__init__.py +0 -0
  506. {dls_dodal-1.62.0/tests/devices → dls_dodal-1.64.0/tests}/__init__.py +0 -0
  507. {dls_dodal-1.62.0/tests/devices/aithre_lasershaping → dls_dodal-1.64.0/tests/beamlines}/__init__.py +0 -0
  508. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/beamlines/test_b16.py +0 -0
  509. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/beamlines/test_i03.py +0 -0
  510. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/beamlines/test_i24.py +0 -0
  511. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/beamlines/test_mapping.py +0 -0
  512. {dls_dodal-1.62.0/tests/devices/b07_1 → dls_dodal-1.64.0/tests/common}/__init__.py +0 -0
  513. {dls_dodal-1.62.0/tests/devices/current_amplifier → dls_dodal-1.64.0/tests/common/beamlines}/__init__.py +0 -0
  514. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/beamlines/test_beamline_utils.py +0 -0
  515. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_coordination.py +0 -0
  516. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_crystal_metadata.py +0 -0
  517. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_maths.py +0 -0
  518. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/common/test_udc_directory_provider.py +0 -0
  519. {dls_dodal-1.62.0/tests/devices/detector → dls_dodal-1.64.0/tests/devices}/__init__.py +0 -0
  520. {dls_dodal-1.62.0/tests/devices/electron_analyser → dls_dodal-1.64.0/tests/devices/aithre_lasershaping}/__init__.py +0 -0
  521. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/aithre_lasershaping/test_goniometer.py +0 -0
  522. {dls_dodal-1.62.0/tests/devices/electron_analyser/abstract → dls_dodal-1.64.0/tests/devices/b07_1}/__init__.py +0 -0
  523. {dls_dodal-1.62.0/tests/devices/electron_analyser/specs → dls_dodal-1.64.0/tests/devices/current_amplifier}/__init__.py +0 -0
  524. {dls_dodal-1.62.0/tests/devices/electron_analyser/vgscienta → dls_dodal-1.64.0/tests/devices/detector}/__init__.py +0 -0
  525. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/detector/test_data/__init__.py +0 -0
  526. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/detector/test_data/test_det_dist_converter.txt +0 -0
  527. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/detector/test_det_dim_constants.py +0 -0
  528. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/detector/test_det_resolution.py +0 -0
  529. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/detector/test_detector.py +0 -0
  530. {dls_dodal-1.62.0/tests/devices/i02_1 → dls_dodal-1.64.0/tests/devices/electron_analyser}/__init__.py +0 -0
  531. {dls_dodal-1.62.0/tests/devices/i03 → dls_dodal-1.64.0/tests/devices/electron_analyser/abstract}/__init__.py +0 -0
  532. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/abstract/test_base_region.py +0 -0
  533. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/__init__.py +0 -0
  534. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/assert_func.py +0 -0
  535. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/helper_util/sequence.py +0 -0
  536. {dls_dodal-1.62.0/tests/devices/i04 → dls_dodal-1.64.0/tests/devices/electron_analyser/specs}/__init__.py +0 -0
  537. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/specs/test_region.py +0 -0
  538. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/__init__.py +0 -0
  539. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/specs_sequence.seq +0 -0
  540. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_data/vgscienta_sequence.seq +0 -0
  541. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_energy_sources.py +0 -0
  542. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/test_util.py +0 -0
  543. {dls_dodal-1.62.0/tests/devices/i09 → dls_dodal-1.64.0/tests/devices/electron_analyser/vgscienta}/__init__.py +0 -0
  544. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/electron_analyser/vgscienta/test_region.py +0 -0
  545. {dls_dodal-1.62.0/tests/devices/i10 → dls_dodal-1.64.0/tests/devices/i02_1}/__init__.py +0 -0
  546. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i02_1/test_fast_grid_scan.py +0 -0
  547. {dls_dodal-1.62.0/tests/devices/i11 → dls_dodal-1.64.0/tests/devices/i03}/__init__.py +0 -0
  548. {dls_dodal-1.62.0/tests/devices/i13_1 → dls_dodal-1.64.0/tests/devices/i04}/__init__.py +0 -0
  549. {dls_dodal-1.62.0/tests/devices/i15 → dls_dodal-1.64.0/tests/devices/i07}/__init__.py +0 -0
  550. {dls_dodal-1.62.0/tests/devices/i18 → dls_dodal-1.64.0/tests/devices/i09}/__init__.py +0 -0
  551. {dls_dodal-1.62.0/tests/devices/i19 → dls_dodal-1.64.0/tests/devices/i09_1}/__init__.py +0 -0
  552. {dls_dodal-1.62.0/tests/devices/i22 → dls_dodal-1.64.0/tests/devices/i09_1_shared}/__init__.py +0 -0
  553. {dls_dodal-1.62.0/tests/devices/i24 → dls_dodal-1.64.0/tests/devices/i10}/__init__.py +0 -0
  554. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv +0 -0
  555. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv +0 -0
  556. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/__init__.py +0 -0
  557. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  558. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  559. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  560. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  561. {dls_dodal-1.62.0/tests/devices/mx_phase1 → dls_dodal-1.64.0/tests/devices/i11}/__init__.py +0 -0
  562. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i11/test_i11devices.py +0 -0
  563. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i11/test_mythen.py +0 -0
  564. {dls_dodal-1.62.0/tests/devices/oav → dls_dodal-1.64.0/tests/devices/i13_1}/__init__.py +0 -0
  565. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i13_1/test_merlin.py +0 -0
  566. {dls_dodal-1.62.0/tests/devices/oav/image_recognition → dls_dodal-1.64.0/tests/devices/i15}/__init__.py +0 -0
  567. {dls_dodal-1.62.0/tests/devices/p60 → dls_dodal-1.64.0/tests/devices/i17}/__init__.py +0 -0
  568. {dls_dodal-1.62.0/tests/devices/p99 → dls_dodal-1.64.0/tests/devices/i18}/__init__.py +0 -0
  569. {dls_dodal-1.62.0/tests/devices/temperature_controller → dls_dodal-1.64.0/tests/devices/i19}/__init__.py +0 -0
  570. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_backlight.py +0 -0
  571. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_beamstop.py +0 -0
  572. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_diffractometer.py +0 -0
  573. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_mapt.py +0 -0
  574. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i19/test_pin_col.py +0 -0
  575. {dls_dodal-1.62.0/tests/devices/temperature_controller/lakeshore → dls_dodal-1.64.0/tests/devices/i22}/__init__.py +0 -0
  576. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i22/test_metadataholder.py +0 -0
  577. {dls_dodal-1.62.0/tests/devices/util → dls_dodal-1.64.0/tests/devices/i24}/__init__.py +0 -0
  578. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/i24/test_commissioning_jungfrau.py +0 -0
  579. {dls_dodal-1.62.0/tests/fake_zocalo → dls_dodal-1.64.0/tests/devices/mx_phase1}/__init__.py +0 -0
  580. {dls_dodal-1.62.0/tests/plan_stubs → dls_dodal-1.64.0/tests/devices/oav}/__init__.py +0 -0
  581. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/conftest.py +0 -0
  582. {dls_dodal-1.62.0/tests/plans → dls_dodal-1.64.0/tests/devices/oav/image_recognition}/__init__.py +0 -0
  583. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  584. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/__init__.py +0 -0
  585. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/oav_snapshot_expected.png +0 -0
  586. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/oav_snapshot_test.png +0 -0
  587. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_data/test_OAVCentring.json +0 -0
  588. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_grid_overlay.py +0 -0
  589. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_oav_parameters.py +0 -0
  590. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/oav/test_snapshot_image_processing.py +0 -0
  591. {dls_dodal-1.62.0/tests/plans/test_preprocessors → dls_dodal-1.64.0/tests/devices/p60}/__init__.py +0 -0
  592. {dls_dodal-1.62.0/tests/preprocessors → dls_dodal-1.64.0/tests/devices/p99}/__init__.py +0 -0
  593. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_baton.py +0 -0
  594. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_beam_converter.py +0 -0
  595. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_bimorph_mirror.py +0 -0
  596. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_controllers.py +0 -0
  597. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/__init__.py +0 -0
  598. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/domain/__init__.py +0 -0
  599. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/domain/beamlineParameters +0 -0
  600. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  601. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  602. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_daq_configuration/lookup/__init__.py +0 -0
  603. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_data/__init__.py +0 -0
  604. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_data/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  605. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_data/test_lookup_table.txt +0 -0
  606. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_diamond_filter.py +0 -0
  607. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_motors.py +0 -0
  608. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_positioner.py +0 -0
  609. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_pressure_jump_cell.py +0 -0
  610. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_qbpm.py +0 -0
  611. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_scintillator.py +0 -0
  612. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_slits.py +0 -0
  613. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_turbo_slit.py +0 -0
  614. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_undulator.py +0 -0
  615. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_watsonmarlow323_pump.py +0 -0
  616. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_zebra.py +0 -0
  617. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_zebra_shutter.py +0 -0
  618. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/test_zocalo_interaction.py +0 -0
  619. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_beamline_specific_utils.py +0 -0
  620. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/__init__.py +0 -0
  621. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  622. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  623. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  624. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/devices/util/test_lookup_tables.py +0 -0
  625. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline.py +0 -0
  626. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  627. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_broken_dependency.py +0 -0
  628. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_dependencies.py +0 -0
  629. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
  630. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  631. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_beamline_some_devices_working.py +0 -0
  632. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_device_factory_beamline.py +0 -0
  633. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_zocalo/README.rst +0 -0
  634. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_zocalo/__main__.py +0 -0
  635. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  636. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/__init__.py +0 -0
  637. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/topup_long_delay.txt +0 -0
  638. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_data/topup_short_params.txt +0 -0
  639. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plan_stubs/test_wrapped_stubs.py +0 -0
  640. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/plans/test_compliance.py +0 -0
  641. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/__init__.py +0 -0
  642. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/bad_beamlineParameters +0 -0
  643. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/i04_beamlineParameters +0 -0
  644. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/test_beamline_parameters.txt +0 -0
  645. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/test_display.configuration +0 -0
  646. {dls_dodal-1.62.0 → dls_dodal-1.64.0}/tests/test_data/test_oav_zoom_levels.xml +0 -0
@@ -62,7 +62,6 @@ jobs:
62
62
  with:
63
63
  repository: epics-containers/example-services
64
64
  path: example-services
65
- ref: '2025.8.1'
66
65
 
67
66
  - name: Run docker compose
68
67
  uses: hoverkraft-tech/compose-action@v2.3.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.62.0
3
+ Version: 1.64.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
@@ -215,7 +215,7 @@ Description-Content-Type: text/markdown
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async[ca,pva]>=0.13.2
218
+ Requires-Dist: ophyd-async[ca,pva]>=0.13.5
219
219
  Requires-Dist: bluesky>=1.14.5
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
@@ -245,7 +245,7 @@ Requires-Dist: pipdeptree; extra == "dev"
245
245
  Requires-Dist: pre-commit; extra == "dev"
246
246
  Requires-Dist: psutil; extra == "dev"
247
247
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
248
- Requires-Dist: pyright; extra == "dev"
248
+ Requires-Dist: pyright==1.1.406; extra == "dev"
249
249
  Requires-Dist: pytest; extra == "dev"
250
250
  Requires-Dist: pytest-asyncio; extra == "dev"
251
251
  Requires-Dist: pytest-cov; extra == "dev"
@@ -1,14 +1,10 @@
1
- import asyncio
2
1
  import logging
3
2
  import sys
4
- import time
5
- from collections.abc import Mapping
6
3
  from os import environ
7
4
  from pathlib import Path
8
5
  from unittest.mock import MagicMock, patch
9
6
 
10
7
  import pytest
11
- from bluesky.run_engine import RunEngine
12
8
  from ophyd.status import Status
13
9
  from ophyd_async.core import (
14
10
  PathInfo,
@@ -37,7 +33,7 @@ mock_paths = [
37
33
  ]
38
34
  mock_attributes_table = {
39
35
  "i03": mock_paths,
40
- "i10": mock_paths,
36
+ "i10_optics": mock_paths,
41
37
  "i04": mock_paths,
42
38
  "s04": mock_paths,
43
39
  "i19_1": mock_paths,
@@ -49,6 +45,10 @@ BANNED_PATHS = [Path("/dls"), Path("/dls_sw")]
49
45
  environ["DODAL_TEST_MODE"] = "true"
50
46
 
51
47
 
48
+ # Add run_engine fixtures to be used in tests
49
+ pytest_plugins = ["dodal.testing.fixtures.run_engine"]
50
+
51
+
52
52
  @pytest.fixture(autouse=True)
53
53
  def patch_open_to_prevent_dls_reads_in_tests():
54
54
  unpatched_open = open
@@ -105,37 +105,7 @@ async def static_path_provider(
105
105
  return svpp
106
106
 
107
107
 
108
- @pytest.fixture
109
- def run_engine_documents(RE: RunEngine) -> Mapping[str, list[dict]]:
110
- docs: dict[str, list[dict]] = {}
111
-
112
- def append_and_print(name, doc):
113
- if name not in docs:
114
- docs[name] = []
115
- docs[name] += [doc]
116
-
117
- RE.subscribe(append_and_print)
118
- return docs
119
-
120
-
121
108
  def failed_status(failure: Exception) -> Status:
122
109
  status = Status()
123
110
  status.set_exception(failure)
124
111
  return status
125
-
126
-
127
- @pytest.fixture(scope="session", autouse=True)
128
- async def _ensure_running_bluesky_event_loop():
129
- RE = RunEngine()
130
- # make sure the event loop is thoroughly up and running before we try to create
131
- # any ophyd_async devices which might need it
132
- timeout = time.monotonic() + 1
133
- while not RE.loop.is_running():
134
- await asyncio.sleep(0)
135
- if time.monotonic() > timeout:
136
- raise TimeoutError("This really shouldn't happen but just in case...")
137
-
138
-
139
- @pytest.fixture()
140
- async def RE():
141
- yield RunEngine()
@@ -21,7 +21,7 @@ you will not get the option to edit the release notes.
21
21
 
22
22
  A new release will be made and the wheel and sdist uploaded to PyPI.
23
23
 
24
- [release]: https://github.com/DiamondLightSource/python-copier-template/releases
24
+ [release]: https://github.com/DiamondLightSource/dodal/releases
25
25
 
26
26
  ## Deciding release numbers
27
27
 
@@ -58,9 +58,11 @@ class MyDevice(StandardReadable, Stageable):
58
58
 
59
59
  In this example, we need to test the `stage` and `unstage` methods. For more complex devices, it is also a good idea to test the `read` method to confirm that we get the expected read signals back when this method is called.
60
60
 
61
- We use [pytest](https://docs.pytest.org/en/stable/contents.html) for writing tests in dodal. A core part of this library is the use of fixtures. A fixture is a function decorated with `@pytest.fixture` that provides setup/teardown or reusable test data for your tests. It is defined once and can be reused across multiple tests. Fixtures are mainly used to define devices and then inject them into each test.
61
+ We use [pytest](https://docs.pytest.org/en/stable/contents.html) for writing tests in dodal. A core part of this library is the use of fixtures. A fixture is a function decorated with `@pytest.fixture` that provides setup/teardown or reusable test data for your tests. It is defined once and can be reused across multiple tests. Fixtures are mainly used to define devices and then inject them into each test.
62
62
 
63
- To help set up a device, they are created with the `init_devices(mock=True)` function from `ophyd_async.core`, which automatically initialises the device in mock mode. The `RunEngine` fixture is passed when creating a device to ensure there is an event loop available when connecting signals. This fixture is defined in `dodal/tests/conftest.py`, which is a special file recognised by `pytest`. It defines fixtures that are automatically available to any test in the same directory (and its subdirectories) without needing to import them. This is useful for defining common setup code once without duplicating it across test files.
63
+ Common fixtures, such as the `run_engine` used in the below tests, can also be defined in `dodal/tests/conftest.py`, which is a special file recognised by `pytest`. These fixtures are automatically available to any test in the same directory (and its subdirectories) without needing to import them. This is useful for defining common setup code once without duplicating it across test files.
64
+
65
+ Devices are set up in the fixture using the `init_devices(mock=True)` function from `ophyd_async.core`, which automatically initialises the device in mock mode.
64
66
 
65
67
  In order for `pytest` to detect something as a test, a function should begin with `test_*`. The test function should be self-descriptive about what it is testing, and it is acceptable (even encouraged) to have longer names for test functions for clarity.
66
68
 
@@ -75,29 +77,27 @@ from ophyd_async.testing import assert_reading, get_mock_put, partial_reading
75
77
  from dodal.device.my_device import MyDevice
76
78
 
77
79
 
78
- # RunEngine is needed to make sure there is an event loop when creating device.
79
80
  @pytest.fixture
80
- async def sim_my_device(RE: RunEngine) -> MyDevice:
81
+ async def sim_my_device() -> MyDevice:
81
82
  async with init_devices(mock=True):
82
83
  sim_my_device = MyDevice("TEST:")
83
84
  return sim_my_device
84
85
 
85
86
 
86
- def test_my_device_stage(sim_my_device: MyDevice, RE: RunEngine) -> None:
87
- RE(bps.stage(sim_my_device, wait=True), wait=True)
87
+ def test_my_device_stage(sim_my_device: MyDevice, run_engine: RunEngine) -> None:
88
+ run_engine(bps.stage(sim_my_device, wait=True), wait=True)
88
89
  get_mock_put(sim_my_device.signal_b).assert_called_once_with(OnOff.ON, wait=True)
89
90
 
90
91
 
91
- def test_my_device_unstage(sim_my_device: MyDevice, RE: RunEngine) -> None:
92
- RE(bps.unstage(sim_my_device, wait=True), wait=True)
92
+ def test_my_device_unstage(sim_my_device: MyDevice, run_engine: RunEngine) -> None:
93
+ run_engine(bps.unstage(sim_my_device, wait=True), wait=True)
93
94
  get_mock_put(sim_my_device.signal_b).assert_called_once_with(OnOff.OFF, wait=True)
94
-
95
95
  ```
96
96
 
97
97
  You should test the output of a device when the device has many signals read and you want to ensure the correct ones are read at the correct times, or when the `read` method of it or one of its signals (e.g. a DerivedSignal) requires testing. Functions are defined in `ophyd-async` to aid with this. `assert_reading` allows us to compare the readings generated from a `Readable` device to the expected results.
98
98
 
99
99
  ```Python
100
- async def test_my_device_read(sim_my_device: MyDevice, RE: RunEngine) -> None:
100
+ async def test_my_device_read(sim_my_device: MyDevice, run_engine: RunEngine) -> None:
101
101
  prefix = sim_my_device.name
102
102
  await assert_reading(
103
103
  sim_my_device,
@@ -112,7 +112,7 @@ Whilst it would be possible to do:
112
112
  this has potential negative side effects:
113
113
 
114
114
  * When the plan is simulated it will still set the parameter on the device
115
- * There may be external things attached to the RE that are tracking messages e.g. metrics. A set like this would be
115
+ * There may be external things attached to the RunEngine that are tracking messages e.g. metrics. A set like this would be
116
116
  lost
117
117
 
118
118
  Instead you should make a soft signal:
@@ -14,7 +14,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
14
14
  dependencies = [
15
15
  "click",
16
16
  "ophyd",
17
- "ophyd-async[ca,pva]>=0.13.2",
17
+ "ophyd-async[ca,pva]>=0.13.5",
18
18
  "bluesky>=1.14.5",
19
19
  "pyepics",
20
20
  "dataclasses-json",
@@ -23,15 +23,15 @@ dependencies = [
23
23
  "requests",
24
24
  "graypy",
25
25
  "pydantic>=2.0",
26
- "opencv-python-headless", # For pin-tip detection.
26
+ "opencv-python-headless", # For pin-tip detection.
27
27
  "numpy",
28
28
  "aiofiles",
29
29
  "aiohttp",
30
30
  "redis",
31
31
  "scanspec>=0.7.3",
32
- "pyzmq==26.3.0", # Until we can move to RHEL 8 https://github.com/DiamondLightSource/mx-bluesky/issues/1139
32
+ "pyzmq==26.3.0", # Until we can move to RHEL 8 https://github.com/DiamondLightSource/mx-bluesky/issues/1139
33
33
  "deepdiff",
34
- "daq-config-server>=v1.0.0-rc.2",# For getting Configuration settings.
34
+ "daq-config-server>=v1.0.0-rc.2", # For getting Configuration settings.
35
35
  ]
36
36
 
37
37
  dynamic = ["version"]
@@ -54,7 +54,8 @@ dev = [
54
54
  "pre-commit",
55
55
  "psutil",
56
56
  "pydata-sphinx-theme>=0.12",
57
- "pyright",
57
+ # Pin to previous pyright until https://github.com/microsoft/pyright/issues/11060 is fixed
58
+ "pyright==1.1.406",
58
59
  "pytest",
59
60
  "pytest-asyncio",
60
61
  "pytest-cov",
@@ -76,7 +77,7 @@ dev = [
76
77
 
77
78
  [project.scripts]
78
79
  dodal = "dodal.__main__:main"
79
- save-panda = "dodal.devices.util.save_panda:main"
80
+ save-panda = "dodal.plans.save_panda:main"
80
81
 
81
82
  [project.urls]
82
83
  GitHub = "https://github.com/DiamondLightSource/dodal"
@@ -136,6 +137,8 @@ testpaths = "docs src tests system_tests"
136
137
  exclude_also = [
137
138
  '^"""', # Ignore the start/end of a file-level triple quoted docstring
138
139
  ]
140
+ # Exclude pytest.fixtures from code coverage report
141
+ omit = ["*/dodal/testing/fixtures/*"]
139
142
 
140
143
  [tool.coverage.run]
141
144
  data_file = "/tmp/dodal.coverage"
@@ -182,6 +185,7 @@ lint.select = [
182
185
  "C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
183
186
  "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
184
187
  "F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
188
+ "N", # pep8-naming - https://docs.astral.sh/ruff/rules/#pep8-naming-n
185
189
  "W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
186
190
  "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
187
191
  "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
@@ -194,7 +198,7 @@ lint.select = [
194
198
  [tool.ruff.lint.per-file-ignores]
195
199
  # By default, private member access is allowed in tests
196
200
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
197
- # Remove this line to forbid private member access, walrus operators, banned api in asserts in tests
201
+ # Remove this line to forbid private member access, walrus operators, banned api in asserts in tests
198
202
  "tests/**/*" = ["SLF001", "RUF018", "TID251"]
199
203
  "system_tests/**/*" = ["SLF001", "RUF018", "TID251"]
200
204
  ".github/**/*" = ["INP001"]
@@ -203,6 +207,10 @@ lint.select = [
203
207
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
204
208
  "time.sleep".msg = "Use bps.sleep or asyncio.sleep instead. # noqa will disable this rule for that line. See https://github.com/DiamondLightSource/mx-bluesky/issues/925"
205
209
 
210
+ [tool.ruff.lint.flake8-import-conventions.extend-aliases]
211
+ # We often shorten "Annotated" to "A" for brevity
212
+ "typing.Annotated" = "A"
213
+
206
214
  [tool.importlinter]
207
215
  root_package = "dodal"
208
216
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.62.0
3
+ Version: 1.64.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
@@ -215,7 +215,7 @@ Description-Content-Type: text/markdown
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async[ca,pva]>=0.13.2
218
+ Requires-Dist: ophyd-async[ca,pva]>=0.13.5
219
219
  Requires-Dist: bluesky>=1.14.5
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
@@ -245,7 +245,7 @@ Requires-Dist: pipdeptree; extra == "dev"
245
245
  Requires-Dist: pre-commit; extra == "dev"
246
246
  Requires-Dist: psutil; extra == "dev"
247
247
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
248
- Requires-Dist: pyright; extra == "dev"
248
+ Requires-Dist: pyright==1.1.406; extra == "dev"
249
249
  Requires-Dist: pytest; extra == "dev"
250
250
  Requires-Dist: pytest-asyncio; extra == "dev"
251
251
  Requires-Dist: pytest-cov; extra == "dev"
@@ -104,15 +104,18 @@ src/dodal/beamlines/b16.py
104
104
  src/dodal/beamlines/b18.py
105
105
  src/dodal/beamlines/b21.py
106
106
  src/dodal/beamlines/i02_1.py
107
+ src/dodal/beamlines/i02_2.py
107
108
  src/dodal/beamlines/i03.py
108
109
  src/dodal/beamlines/i04.py
109
110
  src/dodal/beamlines/i05.py
110
111
  src/dodal/beamlines/i05_1.py
112
+ src/dodal/beamlines/i07.py
111
113
  src/dodal/beamlines/i09.py
112
114
  src/dodal/beamlines/i09_1.py
113
115
  src/dodal/beamlines/i09_2.py
114
- src/dodal/beamlines/i10-1.py
115
116
  src/dodal/beamlines/i10.py
117
+ src/dodal/beamlines/i10_1.py
118
+ src/dodal/beamlines/i10_optics.py
116
119
  src/dodal/beamlines/i11.py
117
120
  src/dodal/beamlines/i13_1.py
118
121
  src/dodal/beamlines/i15.py
@@ -198,9 +201,9 @@ src/dodal/devices/aithre_lasershaping/__init__.py
198
201
  src/dodal/devices/aithre_lasershaping/goniometer.py
199
202
  src/dodal/devices/aithre_lasershaping/laser_robot.py
200
203
  src/dodal/devices/areadetector/__init__.py
201
- src/dodal/devices/areadetector/plugins/CAM.py
202
- src/dodal/devices/areadetector/plugins/MJPG.py
203
204
  src/dodal/devices/areadetector/plugins/__init__.py
205
+ src/dodal/devices/areadetector/plugins/cam.py
206
+ src/dodal/devices/areadetector/plugins/mjpg.py
204
207
  src/dodal/devices/attenuator/__init__.py
205
208
  src/dodal/devices/attenuator/attenuator.py
206
209
  src/dodal/devices/attenuator/filter.py
@@ -248,6 +251,7 @@ src/dodal/devices/electron_analyser/vgscienta/region.py
248
251
  src/dodal/devices/i02_1/__init__.py
249
252
  src/dodal/devices/i02_1/fast_grid_scan.py
250
253
  src/dodal/devices/i02_1/sample_motors.py
254
+ src/dodal/devices/i02_2/__init__.py
251
255
  src/dodal/devices/i03/__init__.py
252
256
  src/dodal/devices/i03/dcm.py
253
257
  src/dodal/devices/i03/undulator_dcm.py
@@ -257,11 +261,14 @@ src/dodal/devices/i04/murko_results.py
257
261
  src/dodal/devices/i04/transfocator.py
258
262
  src/dodal/devices/i05/__init__.py
259
263
  src/dodal/devices/i05/enums.py
264
+ src/dodal/devices/i07/__init__.py
265
+ src/dodal/devices/i07/dcm.py
260
266
  src/dodal/devices/i09/__init__.py
261
- src/dodal/devices/i09/dcm.py
262
267
  src/dodal/devices/i09/enums.py
263
268
  src/dodal/devices/i09_1/__init__.py
264
269
  src/dodal/devices/i09_1/enums.py
270
+ src/dodal/devices/i09_1_shared/__init__.py
271
+ src/dodal/devices/i09_1_shared/hard_undulator_functions.py
265
272
  src/dodal/devices/i10/__init__.py
266
273
  src/dodal/devices/i10/diagnostics.py
267
274
  src/dodal/devices/i10/i10_apple2.py
@@ -289,18 +296,21 @@ src/dodal/devices/i15/laue.py
289
296
  src/dodal/devices/i15/motors.py
290
297
  src/dodal/devices/i15/multilayer_mirror.py
291
298
  src/dodal/devices/i15/rail.py
292
- src/dodal/devices/i18/KBMirror.py
299
+ src/dodal/devices/i17/__init__.py
300
+ src/dodal/devices/i17/i17_apple2.py
293
301
  src/dodal/devices/i18/__init__.py
294
302
  src/dodal/devices/i18/diode.py
303
+ src/dodal/devices/i18/kb_mirror.py
295
304
  src/dodal/devices/i19/__init__.py
296
305
  src/dodal/devices/i19/backlight.py
297
306
  src/dodal/devices/i19/beamstop.py
298
- src/dodal/devices/i19/blueapi_device.py
299
307
  src/dodal/devices/i19/diffractometer.py
300
- src/dodal/devices/i19/hutch_access.py
301
308
  src/dodal/devices/i19/mapt_configuration.py
302
309
  src/dodal/devices/i19/pin_col_stages.py
303
- src/dodal/devices/i19/shutter.py
310
+ src/dodal/devices/i19/access_controlled/__init__.py
311
+ src/dodal/devices/i19/access_controlled/blueapi_device.py
312
+ src/dodal/devices/i19/access_controlled/hutch_access.py
313
+ src/dodal/devices/i19/access_controlled/shutter.py
304
314
  src/dodal/devices/i20_1/__init__.py
305
315
  src/dodal/devices/i21/__init__.py
306
316
  src/dodal/devices/i21/enums.py
@@ -379,6 +389,9 @@ src/dodal/testing/__init__.py
379
389
  src/dodal/testing/setup.py
380
390
  src/dodal/testing/electron_analyser/__init__.py
381
391
  src/dodal/testing/electron_analyser/device_factory.py
392
+ src/dodal/testing/fixtures/__init__.py
393
+ src/dodal/testing/fixtures/run_engine.py
394
+ src/dodal/testing/fixtures/utils.py
382
395
  system_tests/__init__.py
383
396
  system_tests/test_adsim.py
384
397
  system_tests/test_cli.py
@@ -415,7 +428,6 @@ tests/common/beamlines/test_beamline_utils.py
415
428
  tests/common/beamlines/test_commissioning_mode.py
416
429
  tests/common/beamlines/test_device_instantiation.py
417
430
  tests/devices/__init__.py
418
- tests/devices/test.png
419
431
  tests/devices/test_aperture.py
420
432
  tests/devices/test_aperture_scatterguard.py
421
433
  tests/devices/test_apple2_undulator.py
@@ -441,7 +453,6 @@ tests/devices/test_qbpm.py
441
453
  tests/devices/test_scintillator.py
442
454
  tests/devices/test_slits.py
443
455
  tests/devices/test_smargon.py
444
- tests/devices/test_status.py
445
456
  tests/devices/test_synchrotron.py
446
457
  tests/devices/test_tetramm.py
447
458
  tests/devices/test_thawer.py
@@ -501,10 +512,16 @@ tests/devices/i03/test_undulator_dcm.py
501
512
  tests/devices/i04/__init__.py
502
513
  tests/devices/i04/test_murko_results.py
503
514
  tests/devices/i04/test_transfocator.py
515
+ tests/devices/i07/__init__.py
516
+ tests/devices/i07/test_dcm.py
504
517
  tests/devices/i09/__init__.py
505
- tests/devices/i09/test_dcm.py
518
+ tests/devices/i09_1/__init__.py
519
+ tests/devices/i09_1_shared/__init__.py
520
+ tests/devices/i09_1_shared/test_undulator_functions.py
521
+ tests/devices/i09_1_shared/test_data/__init__.py
522
+ tests/devices/i09_1_shared/test_data/test_lookuptable_i09_hu.txt
506
523
  tests/devices/i10/__init__.py
507
- tests/devices/i10/test_i10Apple2.py
524
+ tests/devices/i10/test_i10_apple2.py
508
525
  tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv
509
526
  tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv
510
527
  tests/devices/i10/test_data/__init__.py
@@ -518,7 +535,8 @@ tests/devices/i11/test_mythen.py
518
535
  tests/devices/i13_1/__init__.py
519
536
  tests/devices/i13_1/test_merlin.py
520
537
  tests/devices/i15/__init__.py
521
- tests/devices/i15/test_dcm.py
538
+ tests/devices/i17/__init__.py
539
+ tests/devices/i17/test_i17_apple2.py
522
540
  tests/devices/i18/__init__.py
523
541
  tests/devices/i18/test_kb_mirror.py
524
542
  tests/devices/i19/__init__.py
@@ -577,7 +595,6 @@ tests/devices/util/__init__.py
577
595
  tests/devices/util/test_adjuster_plans.py
578
596
  tests/devices/util/test_beamline_specific_utils.py
579
597
  tests/devices/util/test_lookup_tables.py
580
- tests/devices/util/test_save_panda.py
581
598
  tests/devices/util/test_data/__init__.py
582
599
  tests/devices/util/test_data/test_beamline_dcm_roll_converter.txt
583
600
  tests/devices/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt
@@ -599,6 +616,7 @@ tests/plans/conftest.py
599
616
  tests/plans/test_bimorph.py
600
617
  tests/plans/test_compliance.py
601
618
  tests/plans/test_configure_arm_trigger_and_disarm_detector.py
619
+ tests/plans/test_save_panda.py
602
620
  tests/plans/test_scanspec.py
603
621
  tests/plans/test_verify_undulator_gap_plan.py
604
622
  tests/plans/test_wrapped.py
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ dodal = dodal.__main__:main
3
+ save-panda = dodal.plans.save_panda:main
@@ -1,6 +1,6 @@
1
1
  click
2
2
  ophyd
3
- ophyd-async[ca,pva]>=0.13.2
3
+ ophyd-async[ca,pva]>=0.13.5
4
4
  bluesky>=1.14.5
5
5
  pyepics
6
6
  dataclasses-json
@@ -31,7 +31,7 @@ pipdeptree
31
31
  pre-commit
32
32
  psutil
33
33
  pydata-sphinx-theme>=0.12
34
- pyright
34
+ pyright==1.1.406
35
35
  pytest
36
36
  pytest-asyncio
37
37
  pytest-cov
@@ -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.62.0'
32
- __version_tuple__ = version_tuple = (1, 62, 0)
31
+ __version__ = version = '1.64.0'
32
+ __version_tuple__ = version_tuple = (1, 64, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g146f56508'
34
+ __commit_id__ = commit_id = 'g15623816b'
@@ -14,6 +14,7 @@ _BEAMLINE_NAME_OVERRIDES = {
14
14
  "i09-1": "i09_1",
15
15
  "i13-1": "i13_1",
16
16
  "i15-1": "i15_1",
17
+ "i10-1": "i10_1",
17
18
  "i20-1": "i20_1",
18
19
  "i19-1": "i19_1",
19
20
  "i19-2": "i19_2",
@@ -29,7 +29,9 @@ https://epics-containers.github.io/main/tutorials/launch_example.html
29
29
  And ensure that the signals are visible:
30
30
 
31
31
  ```sh
32
- export EPICS_CA_ADDR_LIST=127.0.0.1:5094
32
+ export EPICS_CA_ADDR_LIST=127.0.0.1:9064
33
+ export EPICS_CA_NAME_SERVERS=127.0.0.1:9064
34
+ export EPICS_PVA_NAME_SERVERS=127.0.0.1:9075
33
35
  ```
34
36
 
35
37
  How to use the devices in a plan:
@@ -53,10 +55,10 @@ set_path_provider(
53
55
  )
54
56
  )
55
57
 
56
- RE = RunEngine()
58
+ run_engine = RunEngine()
57
59
  d = det(connect_immediately=True)
58
60
  s = stage(connect_immediately=True)
59
- RE(count([d], num=10))
61
+ run_engine(count([d], num=10))
60
62
  ```
61
63
 
62
64
  """
@@ -55,7 +55,9 @@ def mirror() -> SimpleMirror:
55
55
 
56
56
  @device_factory()
57
57
  def it() -> QDV2F:
58
- return QDV2F(prefix=f"{PREFIX.beamline_prefix}-DI-PHDGN-07:PHD1:", I_suffix="I")
58
+ return QDV2F(
59
+ prefix=f"{PREFIX.beamline_prefix}-DI-PHDGN-07:PHD1:", intensity_suffix="I"
60
+ )
59
61
 
60
62
 
61
63
  @device_factory()
@@ -0,0 +1,32 @@
1
+ """Beamline i02-2 is also known as VMXi, or I02I"""
2
+
3
+ from dodal.common.beamlines.beamline_utils import (
4
+ device_factory,
5
+ )
6
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
7
+ from dodal.devices.motors import XYStage
8
+ from dodal.devices.synchrotron import Synchrotron
9
+ from dodal.log import set_beamline as set_log_beamline
10
+ from dodal.utils import BeamlinePrefix, get_beamline_name
11
+
12
+ BL = get_beamline_name("i02-2")
13
+ PREFIX = BeamlinePrefix(BL, suffix="I")
14
+ set_log_beamline(BL)
15
+ set_utils_beamline(BL)
16
+ DAQ_CONFIGURATION_PATH = "/dls_sw/i02-2/software/daq_configuration"
17
+
18
+
19
+ @device_factory()
20
+ def synchrotron() -> Synchrotron:
21
+ """Get the i02-2 synchrotron device, instantiate it if it hasn't already been.
22
+ If this is called when already instantiated in i02-2, it will return the existing object.
23
+ """
24
+ return Synchrotron()
25
+
26
+
27
+ @device_factory()
28
+ def sample_motors() -> XYStage:
29
+ """Get the i02-2 goniometer device, instantiate it if it hasn't already been.
30
+ If this is called when already instantiated in i02-2, it will return the existing object.
31
+ """
32
+ return XYStage(f"{PREFIX.beamline_prefix}-MO-GONIO-01:SAMPLE:")
@@ -29,6 +29,7 @@ from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScanThr
29
29
  from dodal.devices.fluorescence_detector_motion import FluorescenceDetector
30
30
  from dodal.devices.flux import Flux
31
31
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
32
+ from dodal.devices.hutch_shutter import HutchShutter
32
33
  from dodal.devices.i03 import Beamstop
33
34
  from dodal.devices.i03.dcm import DCM
34
35
  from dodal.devices.i03.undulator_dcm import UndulatorDCM
@@ -323,6 +324,14 @@ def sample_shutter() -> ZebraShutter:
323
324
  return ZebraShutter(f"{PREFIX.beamline_prefix}-EA-SHTR-01:")
324
325
 
325
326
 
327
+ @device_factory()
328
+ def hutch_shutter() -> HutchShutter:
329
+ """Get the i03 hutch shutter device, instantiate it if it hasn't already been.
330
+ If this is called when already instantiated in i03, it will return the existing object.
331
+ """
332
+ return HutchShutter(f"{PREFIX.beamline_prefix}-PS-SHTR-01:")
333
+
334
+
326
335
  @device_factory()
327
336
  def flux() -> Flux:
328
337
  """Get the i03 flux device, instantiate it if it hasn't already been.
@@ -0,0 +1,21 @@
1
+ from dodal.common.beamlines.beamline_utils import device_factory
2
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
+ from dodal.devices.i07.dcm import DCM
4
+ from dodal.log import set_beamline as set_log_beamline
5
+ from dodal.utils import BeamlinePrefix, get_beamline_name
6
+
7
+ BL = get_beamline_name("i07")
8
+ set_log_beamline(BL)
9
+ set_utils_beamline(BL)
10
+ PREFIX = BeamlinePrefix(BL)
11
+
12
+
13
+ @device_factory()
14
+ def dcm() -> DCM:
15
+ """Instantiate DCM using two PV bases"""
16
+ dcm = DCM(
17
+ f"{PREFIX.beamline_prefix}-MO-DCM-01:",
18
+ f"{PREFIX.beamline_prefix}-DI-DCM-01:",
19
+ "dcm",
20
+ )
21
+ return dcm
@@ -2,9 +2,14 @@ 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.common_dcm import (
6
+ DoubleCrystalMonochromatorWithDSpacing,
7
+ PitchAndRollCrystal,
8
+ StationaryCrystal,
9
+ )
5
10
  from dodal.devices.electron_analyser import DualEnergySource
6
11
  from dodal.devices.electron_analyser.vgscienta import VGScientaDetector
7
- from dodal.devices.i09 import DCM, Grating, LensMode, PassEnergy, PsuMode
12
+ from dodal.devices.i09 import Grating, LensMode, PassEnergy, PsuMode
8
13
  from dodal.devices.pgm import PGM
9
14
  from dodal.devices.synchrotron import Synchrotron
10
15
  from dodal.log import set_beamline as set_log_beamline
@@ -30,13 +35,15 @@ def pgm() -> PGM:
30
35
 
31
36
 
32
37
  @device_factory()
33
- def dcm() -> DCM:
34
- return DCM(prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:")
38
+ def dcm() -> DoubleCrystalMonochromatorWithDSpacing:
39
+ return DoubleCrystalMonochromatorWithDSpacing(
40
+ f"{PREFIX.beamline_prefix}-MO-DCM-01:", PitchAndRollCrystal, StationaryCrystal
41
+ )
35
42
 
36
43
 
37
44
  @device_factory()
38
45
  def energy_source() -> DualEnergySource:
39
- return DualEnergySource(dcm().energy_in_ev, pgm().energy.user_readback)
46
+ return DualEnergySource(dcm().energy_in_eV, pgm().energy.user_readback)
40
47
 
41
48
 
42
49
  # Connect will work again after this work completed