dls-dodal 1.69.0__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (282) hide show
  1. {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/METADATA +1 -1
  2. dls_dodal-2.0.0.dist-info/RECORD +354 -0
  3. {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/WHEEL +1 -1
  4. dodal/_version.py +2 -2
  5. dodal/beamlines/__init__.py +10 -17
  6. dodal/beamlines/adsim.py +17 -17
  7. dodal/beamlines/b01_1.py +11 -0
  8. dodal/beamlines/b07.py +17 -21
  9. dodal/beamlines/b07_1.py +20 -22
  10. dodal/beamlines/b07_shared.py +12 -0
  11. dodal/beamlines/b16.py +1 -1
  12. dodal/beamlines/b21.py +15 -6
  13. dodal/beamlines/i02_1.py +3 -3
  14. dodal/beamlines/i02_2.py +1 -1
  15. dodal/beamlines/i03.py +4 -4
  16. dodal/beamlines/i04.py +16 -8
  17. dodal/beamlines/i05.py +7 -45
  18. dodal/beamlines/i05_1.py +4 -13
  19. dodal/beamlines/i05_shared.py +51 -0
  20. dodal/beamlines/i06_1.py +7 -5
  21. dodal/beamlines/{i06.py → i06_shared.py} +25 -14
  22. dodal/beamlines/i07.py +14 -16
  23. dodal/beamlines/i09.py +54 -51
  24. dodal/beamlines/i09_1.py +25 -64
  25. dodal/beamlines/i09_1_shared.py +61 -0
  26. dodal/beamlines/i09_2.py +6 -100
  27. dodal/beamlines/i09_2_shared.py +110 -0
  28. dodal/beamlines/i10.py +60 -54
  29. dodal/beamlines/i10_1.py +99 -10
  30. dodal/beamlines/{i10_optics.py → i10_shared.py} +80 -66
  31. dodal/beamlines/i11.py +31 -18
  32. dodal/beamlines/i13_1.py +1 -1
  33. dodal/beamlines/i15.py +6 -6
  34. dodal/beamlines/i15_1.py +6 -6
  35. dodal/beamlines/i17.py +37 -28
  36. dodal/beamlines/i18.py +3 -4
  37. dodal/beamlines/i19_1.py +95 -34
  38. dodal/beamlines/i19_2.py +68 -52
  39. dodal/beamlines/i19_optics.py +26 -13
  40. dodal/beamlines/i20_1.py +6 -14
  41. dodal/beamlines/i21.py +35 -28
  42. dodal/beamlines/i22.py +19 -4
  43. dodal/beamlines/i23.py +1 -2
  44. dodal/beamlines/i24.py +11 -10
  45. dodal/beamlines/k07.py +99 -5
  46. dodal/beamlines/p38.py +3 -3
  47. dodal/beamlines/p60.py +28 -17
  48. dodal/beamlines/p99.py +16 -15
  49. dodal/beamlines/training_rig.py +20 -12
  50. dodal/cli.py +36 -2
  51. dodal/common/beamlines/beamline_parameters.py +2 -1
  52. dodal/common/beamlines/beamline_utils.py +11 -9
  53. dodal/common/beamlines/commissioning_mode.py +6 -3
  54. dodal/common/coordination.py +12 -14
  55. dodal/common/crystal_metadata.py +5 -8
  56. dodal/common/device_utils.py +4 -3
  57. dodal/common/maths.py +28 -40
  58. dodal/common/udc_directory_provider.py +13 -8
  59. dodal/common/visit.py +18 -21
  60. dodal/common/watcher_utils.py +13 -12
  61. dodal/device_manager.py +94 -54
  62. dodal/devices/aperturescatterguard.py +26 -27
  63. dodal/devices/areadetector/plugins/cam.py +1 -3
  64. dodal/devices/areadetector/plugins/mjpg.py +6 -5
  65. dodal/devices/attenuator/attenuator.py +12 -11
  66. dodal/devices/beamlines/b07/__init__.py +3 -0
  67. dodal/devices/{b07_1 → beamlines/b07_1}/__init__.py +2 -2
  68. dodal/devices/{b07_1 → beamlines/b07_1}/ccmc.py +5 -10
  69. dodal/devices/{b16 → beamlines/b16}/detector.py +2 -3
  70. dodal/devices/{i02_1 → beamlines/i02_1}/fast_grid_scan.py +2 -3
  71. dodal/devices/{i02_1 → beamlines/i02_1}/sample_motors.py +1 -1
  72. dodal/devices/{i03 → beamlines/i03}/beamsize.py +11 -7
  73. dodal/devices/{i03 → beamlines/i03}/dcm.py +1 -2
  74. dodal/devices/{i03 → beamlines/i03}/undulator_dcm.py +4 -5
  75. dodal/devices/beamlines/i04/beam_centre.py +151 -0
  76. dodal/devices/{i04 → beamlines/i04}/beamsize.py +11 -7
  77. dodal/devices/{i04 → beamlines/i04}/murko_results.py +5 -5
  78. dodal/devices/{i04 → beamlines/i04}/transfocator.py +10 -15
  79. dodal/devices/beamlines/i05/__init__.py +3 -0
  80. dodal/devices/beamlines/i06_shared/__init__.py +3 -0
  81. dodal/devices/beamlines/i06_shared/i06_enum.py +7 -0
  82. dodal/devices/{i07 → beamlines/i07}/dcm.py +2 -3
  83. dodal/devices/{i07 → beamlines/i07}/id.py +8 -9
  84. dodal/devices/beamlines/i09/__init__.py +3 -0
  85. dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_energy.py +5 -6
  86. dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_undulator_functions.py +19 -16
  87. dodal/devices/{i10 → beamlines/i10}/diagnostics.py +4 -3
  88. dodal/devices/{i10 → beamlines/i10}/i10_apple2.py +31 -45
  89. dodal/devices/{i10 → beamlines/i10}/rasor/rasor_current_amp.py +1 -24
  90. dodal/devices/{i10 → beamlines/i10}/rasor/rasor_motors.py +2 -2
  91. dodal/devices/{i10 → beamlines/i10}/slits.py +5 -3
  92. dodal/devices/beamlines/i10_1/__init__.py +9 -0
  93. dodal/devices/beamlines/i10_1/electromagnet/magnet.py +16 -0
  94. dodal/devices/beamlines/i10_1/electromagnet/stages.py +14 -0
  95. dodal/devices/beamlines/i10_1/scaler_cards.py +13 -0
  96. dodal/devices/{i11 → beamlines/i11}/cyberstar_blower.py +1 -1
  97. dodal/devices/{i11 → beamlines/i11}/diff_stages.py +4 -6
  98. dodal/devices/{i11 → beamlines/i11}/mythen.py +3 -4
  99. dodal/devices/{i11 → beamlines/i11}/nx100robot.py +6 -6
  100. dodal/devices/{i11 → beamlines/i11}/spinner.py +1 -1
  101. dodal/devices/{i13_1 → beamlines/i13_1}/merlin.py +1 -1
  102. dodal/devices/{i15 → beamlines/i15}/dcm.py +1 -2
  103. dodal/devices/{i15 → beamlines/i15}/focussing_mirror.py +5 -5
  104. dodal/devices/{i15 → beamlines/i15}/jack.py +2 -2
  105. dodal/devices/{i15 → beamlines/i15}/multilayer_mirror.py +1 -1
  106. dodal/devices/{i17 → beamlines/i17}/i17_apple2.py +10 -16
  107. dodal/devices/{i18 → beamlines/i18}/diode.py +1 -1
  108. dodal/devices/{i19 → beamlines/i19}/access_controlled/attenuator_motor_squad.py +12 -8
  109. dodal/devices/{i19 → beamlines/i19}/access_controlled/blueapi_device.py +16 -15
  110. dodal/devices/beamlines/i19/access_controlled/piezo_control.py +72 -0
  111. dodal/devices/{i19 → beamlines/i19}/access_controlled/shutter.py +11 -9
  112. dodal/devices/{i19 → beamlines/i19}/backlight.py +3 -1
  113. dodal/devices/{i19 → beamlines/i19}/mapt_configuration.py +2 -1
  114. dodal/devices/{i19 → beamlines/i19}/pin_col_stages.py +11 -8
  115. dodal/devices/beamlines/i19/pin_tip.py +32 -0
  116. dodal/devices/beamlines/i21/__init__.py +3 -0
  117. dodal/devices/{i22 → beamlines/i22}/dcm.py +1 -2
  118. dodal/devices/{i22 → beamlines/i22}/fswitch.py +1 -3
  119. dodal/devices/{i22 → beamlines/i22}/nxsas.py +5 -4
  120. dodal/devices/{i24 → beamlines/i24}/beam_center.py +1 -1
  121. dodal/devices/{i24 → beamlines/i24}/beamstop.py +2 -2
  122. dodal/devices/{i24 → beamlines/i24}/commissioning_jungfrau.py +3 -2
  123. dodal/devices/{i24 → beamlines/i24}/dcm.py +1 -3
  124. dodal/devices/{i24 → beamlines/i24}/dual_backlight.py +3 -3
  125. dodal/devices/{i24 → beamlines/i24}/pmac.py +9 -7
  126. dodal/devices/{p60 → beamlines/p60}/lab_xray_source.py +1 -1
  127. dodal/devices/beamlines/p99/__init__.py +0 -0
  128. dodal/devices/{p99 → beamlines/p99}/andor2_point.py +11 -15
  129. dodal/devices/bimorph_mirror.py +22 -20
  130. dodal/devices/collimation_table.py +3 -2
  131. dodal/devices/common_dcm.py +30 -20
  132. dodal/devices/controllers.py +2 -2
  133. dodal/devices/cryostream.py +8 -0
  134. dodal/devices/current_amplifiers/current_amplifier.py +16 -18
  135. dodal/devices/current_amplifiers/current_amplifier_detector.py +9 -10
  136. dodal/devices/current_amplifiers/femto.py +8 -9
  137. dodal/devices/current_amplifiers/sr570.py +16 -16
  138. dodal/devices/current_amplifiers/struck_scaler_counter.py +5 -5
  139. dodal/devices/detector/det_resolution.py +9 -8
  140. dodal/devices/detector/detector.py +4 -2
  141. dodal/devices/diamond_filter.py +3 -4
  142. dodal/devices/eiger.py +3 -3
  143. dodal/devices/eiger_odin.py +1 -1
  144. dodal/devices/electron_analyser/base/base_controller.py +13 -13
  145. dodal/devices/electron_analyser/base/base_detector.py +15 -20
  146. dodal/devices/electron_analyser/base/base_driver_io.py +39 -46
  147. dodal/devices/electron_analyser/base/base_region.py +27 -30
  148. dodal/devices/electron_analyser/base/base_util.py +18 -16
  149. dodal/devices/electron_analyser/base/energy_sources.py +13 -19
  150. dodal/devices/eurotherm.py +3 -2
  151. dodal/devices/fast_grid_scan.py +31 -34
  152. dodal/devices/fast_shutter.py +24 -21
  153. dodal/devices/flux.py +1 -1
  154. dodal/devices/focusing_mirror.py +29 -11
  155. dodal/devices/hutch_shutter.py +6 -6
  156. dodal/devices/insertion_device/__init__.py +8 -0
  157. dodal/devices/insertion_device/apple2_controller.py +51 -60
  158. dodal/devices/insertion_device/apple2_undulator.py +40 -64
  159. dodal/devices/insertion_device/apple_knot_controller.py +222 -0
  160. dodal/devices/insertion_device/energy.py +100 -27
  161. dodal/devices/insertion_device/energy_motor_lookup.py +20 -27
  162. dodal/devices/insertion_device/lookup_table_models.py +45 -50
  163. dodal/devices/insertion_device/polarisation.py +1 -1
  164. dodal/devices/ipin.py +1 -1
  165. dodal/devices/linkam3.py +7 -5
  166. dodal/devices/motors.py +107 -19
  167. dodal/devices/mx_phase1/beamstop.py +2 -4
  168. dodal/devices/oav/oav_calculations.py +20 -13
  169. dodal/devices/oav/oav_detector.py +28 -23
  170. dodal/devices/oav/oav_parameters.py +4 -9
  171. dodal/devices/oav/oav_to_redis_forwarder.py +22 -18
  172. dodal/devices/oav/pin_image_recognition/__init__.py +4 -6
  173. dodal/devices/oav/pin_image_recognition/manual_test.py +1 -2
  174. dodal/devices/oav/pin_image_recognition/utils.py +30 -32
  175. dodal/devices/oav/snapshots/grid_overlay.py +10 -9
  176. dodal/devices/oav/snapshots/snapshot_image_processing.py +15 -13
  177. dodal/devices/oav/utils.py +9 -12
  178. dodal/devices/p45.py +3 -9
  179. dodal/devices/pgm.py +8 -14
  180. dodal/devices/pressure_jump_cell.py +93 -32
  181. dodal/devices/qbpm.py +1 -3
  182. dodal/devices/robot.py +12 -4
  183. dodal/devices/s4_slit_gaps.py +1 -1
  184. dodal/devices/selectable_source.py +5 -2
  185. dodal/devices/slits.py +2 -5
  186. dodal/devices/smargon.py +2 -3
  187. dodal/devices/temperture_controller/lakeshore/lakeshore.py +38 -64
  188. dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +21 -35
  189. dodal/devices/tetramm.py +7 -7
  190. dodal/devices/turbo_slit.py +8 -7
  191. dodal/devices/undulator.py +42 -56
  192. dodal/devices/util/adjuster_plans.py +2 -3
  193. dodal/devices/util/epics_util.py +10 -10
  194. dodal/devices/util/lookup_tables.py +17 -18
  195. dodal/devices/v2f.py +2 -3
  196. dodal/devices/watsonmarlow323_pump.py +1 -1
  197. dodal/devices/xbpm_feedback.py +3 -2
  198. dodal/devices/xspress3/xspress3.py +8 -11
  199. dodal/devices/xspress3/xspress3_channel.py +3 -6
  200. dodal/devices/zebra/zebra.py +6 -7
  201. dodal/devices/zebra/zebra_constants_mapping.py +11 -7
  202. dodal/devices/zebra/zebra_controlled_shutter.py +2 -1
  203. dodal/devices/zocalo/zocalo_interaction.py +14 -14
  204. dodal/devices/zocalo/zocalo_results.py +33 -33
  205. dodal/log.py +23 -20
  206. dodal/plan_stubs/check_topup.py +15 -15
  207. dodal/plan_stubs/data_session.py +6 -6
  208. dodal/plan_stubs/motor_utils.py +22 -18
  209. dodal/plan_stubs/pressure_jump_cell.py +18 -0
  210. dodal/plan_stubs/wrapped.py +40 -55
  211. dodal/plans/bimorph.py +63 -52
  212. dodal/plans/device_setup_plans/__init__.py +5 -0
  213. dodal/plans/device_setup_plans/setup_pin_tip_params.py +63 -0
  214. dodal/plans/preprocessors/verify_undulator_gap.py +10 -8
  215. dodal/plans/spec_path.py +3 -5
  216. dodal/plans/verify_undulator_gap.py +1 -2
  217. dodal/plans/wrapped.py +4 -3
  218. dodal/testing/electron_analyser/device_factory.py +5 -7
  219. dodal/testing/fixtures/devices/apple2.py +38 -0
  220. dodal/testing/fixtures/run_engine.py +3 -7
  221. dodal/testing/fixtures/utils.py +1 -2
  222. dodal/utils.py +60 -58
  223. dls_dodal-1.69.0.dist-info/RECORD +0 -338
  224. dodal/beamline_specific_utils/i05_shared.py +0 -14
  225. dodal/devices/b07/__init__.py +0 -3
  226. dodal/devices/i04/beam_centre.py +0 -84
  227. dodal/devices/i05/__init__.py +0 -3
  228. dodal/devices/i09/__init__.py +0 -3
  229. dodal/devices/i21/__init__.py +0 -5
  230. {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/entry_points.txt +0 -0
  231. {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/licenses/LICENSE +0 -0
  232. {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/top_level.txt +0 -0
  233. /dodal/{beamline_specific_utils → devices/beamlines}/__init__.py +0 -0
  234. /dodal/devices/{b07 → beamlines/b07}/enums.py +0 -0
  235. /dodal/devices/{b07_1 → beamlines/b07_1}/enums.py +0 -0
  236. /dodal/devices/{b16 → beamlines/b16}/__init__.py +0 -0
  237. /dodal/devices/{i02_1 → beamlines/i02_1}/__init__.py +0 -0
  238. /dodal/devices/{i02_2 → beamlines/i02_2}/__init__.py +0 -0
  239. /dodal/devices/{i03 → beamlines/i03}/__init__.py +0 -0
  240. /dodal/devices/{i03 → beamlines/i03}/constants.py +0 -0
  241. /dodal/devices/{i04 → beamlines/i04}/__init__.py +0 -0
  242. /dodal/devices/{i04 → beamlines/i04}/constants.py +0 -0
  243. /dodal/devices/{i04 → beamlines/i04}/max_pixel.py +0 -0
  244. /dodal/devices/{i05 → beamlines/i05}/enums.py +0 -0
  245. /dodal/devices/{i07 → beamlines/i07}/__init__.py +0 -0
  246. /dodal/devices/{i09 → beamlines/i09}/enums.py +0 -0
  247. /dodal/devices/{i09_1 → beamlines/i09_1}/__init__.py +0 -0
  248. /dodal/devices/{i09_1 → beamlines/i09_1}/enums.py +0 -0
  249. /dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/__init__.py +0 -0
  250. /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/__init__.py +0 -0
  251. /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/i09_apple2.py +0 -0
  252. /dodal/devices/{i10 → beamlines/i10}/__init__.py +0 -0
  253. /dodal/devices/{i10 → beamlines/i10}/i10_setting_data.py +0 -0
  254. /dodal/devices/{i10 → beamlines/i10}/mirrors.py +0 -0
  255. /dodal/devices/{i10 → beamlines/i10}/rasor/__init__.py +0 -0
  256. /dodal/devices/{i10 → beamlines/i10}/rasor/rasor_scaler_cards.py +0 -0
  257. /dodal/devices/{i11 → beamlines/i10_1/electromagnet}/__init__.py +0 -0
  258. /dodal/devices/{i13_1 → beamlines/i11}/__init__.py +0 -0
  259. /dodal/devices/{i15 → beamlines/i13_1}/__init__.py +0 -0
  260. /dodal/devices/{i13_1 → beamlines/i13_1}/merlin_controller.py +0 -0
  261. /dodal/devices/{i17 → beamlines/i15}/__init__.py +0 -0
  262. /dodal/devices/{i15 → beamlines/i15}/laue.py +0 -0
  263. /dodal/devices/{i15 → beamlines/i15}/motors.py +0 -0
  264. /dodal/devices/{i15 → beamlines/i15}/rail.py +0 -0
  265. /dodal/devices/{i18 → beamlines/i17}/__init__.py +0 -0
  266. /dodal/devices/{i19 → beamlines/i18}/__init__.py +0 -0
  267. /dodal/devices/{i18 → beamlines/i18}/kb_mirror.py +0 -0
  268. /dodal/devices/{i19/access_controlled → beamlines/i19}/__init__.py +0 -0
  269. /dodal/devices/{i20_1 → beamlines/i19/access_controlled}/__init__.py +0 -0
  270. /dodal/devices/{i19 → beamlines/i19}/access_controlled/hutch_access.py +0 -0
  271. /dodal/devices/{i19 → beamlines/i19}/beamstop.py +0 -0
  272. /dodal/devices/{i19 → beamlines/i19}/diffractometer.py +0 -0
  273. /dodal/devices/{i22 → beamlines/i20_1}/__init__.py +0 -0
  274. /dodal/devices/{i21 → beamlines/i21}/enums.py +0 -0
  275. /dodal/devices/{i24 → beamlines/i22}/__init__.py +0 -0
  276. /dodal/devices/{p99 → beamlines/i24}/__init__.py +0 -0
  277. /dodal/devices/{i24 → beamlines/i24}/aperture.py +0 -0
  278. /dodal/devices/{i24 → beamlines/i24}/focus_mirrors.py +0 -0
  279. /dodal/devices/{i24 → beamlines/i24}/vgonio.py +0 -0
  280. /dodal/devices/{p60 → beamlines/p60}/__init__.py +0 -0
  281. /dodal/devices/{p60 → beamlines/p60}/enums.py +0 -0
  282. /dodal/devices/{p99 → beamlines/p99}/sample_stage.py +0 -0
dodal/beamlines/b07_1.py CHANGED
@@ -1,7 +1,8 @@
1
- from dodal.common.beamlines.beamline_utils import device_factory
1
+ from dodal.beamlines.b07_shared import devices as b07_shared_devices
2
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
- from dodal.devices.b07 import PsuMode
4
- from dodal.devices.b07_1 import (
3
+ from dodal.device_manager import DeviceManager
4
+ from dodal.devices.beamlines.b07 import PsuMode
5
+ from dodal.devices.beamlines.b07_1 import (
5
6
  ChannelCutMonochromator,
6
7
  Grating,
7
8
  LensMode,
@@ -9,46 +10,43 @@ from dodal.devices.b07_1 import (
9
10
  from dodal.devices.electron_analyser.base import EnergySource
10
11
  from dodal.devices.electron_analyser.specs import SpecsDetector
11
12
  from dodal.devices.pgm import PlaneGratingMonochromator
12
- from dodal.devices.synchrotron import Synchrotron
13
13
  from dodal.log import set_beamline as set_log_beamline
14
14
  from dodal.utils import BeamlinePrefix, get_beamline_name
15
15
 
16
16
  BL = get_beamline_name("b07-1")
17
- PREFIX = BeamlinePrefix(BL, suffix="C")
17
+ C_PREFIX = BeamlinePrefix(BL, suffix="C")
18
18
  set_log_beamline(BL)
19
19
  set_utils_beamline(BL)
20
20
 
21
+ devices = DeviceManager()
22
+ devices.include(b07_shared_devices)
21
23
 
22
- @device_factory()
23
- def synchrotron() -> Synchrotron:
24
- return Synchrotron()
25
24
 
26
-
27
- @device_factory()
25
+ @devices.factory()
28
26
  def pgm() -> PlaneGratingMonochromator:
29
27
  return PlaneGratingMonochromator(
30
- prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
28
+ prefix=f"{C_PREFIX.beamline_prefix}-OP-PGM-01:",
31
29
  grating=Grating,
32
30
  )
33
31
 
34
32
 
35
- # Connect will work again after this work completed
36
- # https://jira.diamond.ac.uk/browse/B07-1104
37
- @device_factory()
33
+ @devices.factory()
38
34
  def ccmc() -> ChannelCutMonochromator:
39
- return ChannelCutMonochromator(prefix=f"{PREFIX.beamline_prefix}-OP-CCM-01:")
35
+ return ChannelCutMonochromator(prefix=f"{C_PREFIX.beamline_prefix}-OP-CCM-01:")
40
36
 
41
37
 
42
- @device_factory()
43
- def energy_source() -> EnergySource:
44
- return EnergySource(pgm().energy.user_readback)
38
+ @devices.factory()
39
+ def energy_source(pgm: PlaneGratingMonochromator) -> EnergySource:
40
+ return EnergySource(pgm.energy.user_readback)
45
41
 
46
42
 
47
- @device_factory()
48
- def analyser() -> SpecsDetector[LensMode, PsuMode]:
43
+ # CAM:IMAGE will fail to connect outside the beamline network,
44
+ # see https://github.com/DiamondLightSource/dodal/issues/1852
45
+ @devices.factory()
46
+ def analyser(energy_source: EnergySource) -> SpecsDetector[LensMode, PsuMode]:
49
47
  return SpecsDetector[LensMode, PsuMode](
50
- prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
48
+ prefix=f"{C_PREFIX.beamline_prefix}-EA-DET-01:CAM:",
51
49
  lens_mode_type=LensMode,
52
50
  psu_mode_type=PsuMode,
53
- energy_source=energy_source(),
51
+ energy_source=energy_source,
54
52
  )
@@ -0,0 +1,12 @@
1
+ from dodal.device_manager import DeviceManager
2
+ from dodal.devices.synchrotron import Synchrotron
3
+ from dodal.utils import get_beamline_name
4
+
5
+ BL = get_beamline_name("b07-shared")
6
+
7
+ devices = DeviceManager()
8
+
9
+
10
+ @devices.factory()
11
+ def synchrotron() -> Synchrotron:
12
+ return Synchrotron()
dodal/beamlines/b16.py CHANGED
@@ -11,7 +11,7 @@ from dodal.common.beamlines.beamline_utils import (
11
11
  )
12
12
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
13
13
  from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
14
- from dodal.devices.b16.detector import (
14
+ from dodal.devices.beamlines.b16.detector import (
15
15
  software_triggered_tiff_area_detector,
16
16
  )
17
17
  from dodal.devices.motors import XYZStage
dodal/beamlines/b21.py CHANGED
@@ -1,3 +1,6 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.core import StaticPathProvider, UUIDFilenameProvider
1
4
  from ophyd_async.epics.adaravis import AravisDetector
2
5
  from ophyd_async.fastcs.eiger import EigerDetector
3
6
  from ophyd_async.fastcs.panda import HDFPanda
@@ -5,11 +8,12 @@ from ophyd_async.fastcs.panda import HDFPanda
5
8
  from dodal.common.beamlines.beamline_utils import (
6
9
  device_factory,
7
10
  get_path_provider,
11
+ set_path_provider,
8
12
  )
9
13
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
10
14
  from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
15
+ from dodal.devices.beamlines.i22.nxsas import NXSasMetadataHolder, NXSasOAV
11
16
  from dodal.devices.focusing_mirror import SimpleMirror
12
- from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV
13
17
  from dodal.devices.linkam3 import Linkam3
14
18
  from dodal.devices.motors import XYStage
15
19
  from dodal.devices.slits import Slits
@@ -23,6 +27,13 @@ PREFIX = BeamlinePrefix(BL)
23
27
  set_log_beamline(BL)
24
28
  set_utils_beamline(BL)
25
29
 
30
+ # This should be removed when the DeviceManager is adopted
31
+ try:
32
+ get_path_provider()
33
+ except NameError:
34
+ # If one hasn't already been set, use a default to stop things crashing
35
+ set_path_provider(StaticPathProvider(UUIDFilenameProvider(), Path("/tmp")))
36
+
26
37
 
27
38
  @device_factory()
28
39
  def saxs() -> EigerDetector:
@@ -95,9 +106,8 @@ def slits_3() -> Slits:
95
106
  return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:")
96
107
 
97
108
 
98
- """
99
- Slits 4 was removed from B21 after the camera length was fixed, it is not used anymore.
100
- """
109
+ """Slits 4 was removed from B21 after the camera length was fixed, it is not used
110
+ anymore."""
101
111
 
102
112
 
103
113
  @device_factory()
@@ -112,8 +122,7 @@ def slits_6() -> Slits:
112
122
 
113
123
  @device_factory()
114
124
  def slits_7() -> Slits:
115
- """
116
- Compact JJ slits device is used for B21 slits 7. PV's operate in same way
125
+ """Compact JJ slits device is used for B21 slits 7. PV's operate in same way
117
126
  but physically different to other slits, and uses X:GAP nomenclature.
118
127
  """
119
128
  return Slits(
dodal/beamlines/i02_1.py CHANGED
@@ -1,4 +1,4 @@
1
- """Beamline i02-1 is also known as VMXm, or I02J"""
1
+ """Beamline i02-1 is also known as VMXm, or I02J."""
2
2
 
3
3
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
4
4
  from dodal.device_manager import DeviceManager
@@ -9,9 +9,9 @@ from dodal.devices.attenuator.filter_selections import (
9
9
  I02_1FilterThreeSelections,
10
10
  I02_1FilterTwoSelections,
11
11
  )
12
+ from dodal.devices.beamlines.i02_1.fast_grid_scan import ZebraFastGridScanTwoD
13
+ from dodal.devices.beamlines.i02_1.sample_motors import SampleMotors
12
14
  from dodal.devices.eiger import EigerDetector
13
- from dodal.devices.i02_1.fast_grid_scan import ZebraFastGridScanTwoD
14
- from dodal.devices.i02_1.sample_motors import SampleMotors
15
15
  from dodal.devices.synchrotron import Synchrotron
16
16
  from dodal.devices.zebra.zebra import Zebra
17
17
  from dodal.devices.zebra.zebra_constants_mapping import (
dodal/beamlines/i02_2.py CHANGED
@@ -1,4 +1,4 @@
1
- """Beamline i02-2 is also known as VMXi, or I02I"""
1
+ """Beamline i02-2 is also known as VMXi, or I02I."""
2
2
 
3
3
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
4
4
  from dodal.device_manager import DeviceManager
dodal/beamlines/i03.py CHANGED
@@ -17,6 +17,10 @@ from dodal.devices.aperturescatterguard import (
17
17
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
18
18
  from dodal.devices.backlight import Backlight
19
19
  from dodal.devices.baton import Baton
20
+ from dodal.devices.beamlines.i03 import Beamstop
21
+ from dodal.devices.beamlines.i03.beamsize import Beamsize
22
+ from dodal.devices.beamlines.i03.dcm import DCM
23
+ from dodal.devices.beamlines.i03.undulator_dcm import UndulatorDCM
20
24
  from dodal.devices.collimation_table import CollimationTable
21
25
  from dodal.devices.cryostream import (
22
26
  CryoStreamGantry,
@@ -31,10 +35,6 @@ from dodal.devices.fluorescence_detector_motion import FluorescenceDetector
31
35
  from dodal.devices.flux import Flux
32
36
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
33
37
  from dodal.devices.hutch_shutter import HutchShutter
34
- from dodal.devices.i03 import Beamstop
35
- from dodal.devices.i03.beamsize import Beamsize
36
- from dodal.devices.i03.dcm import DCM
37
- from dodal.devices.i03.undulator_dcm import UndulatorDCM
38
38
  from dodal.devices.ipin import IPin
39
39
  from dodal.devices.motors import XYZStage
40
40
  from dodal.devices.oav.oav_detector import OAVBeamCentreFile
dodal/beamlines/i04.py CHANGED
@@ -11,23 +11,24 @@ from dodal.devices.aperturescatterguard import (
11
11
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
12
12
  from dodal.devices.backlight import Backlight
13
13
  from dodal.devices.baton import Baton
14
+ from dodal.devices.beamlines.i03.dcm import DCM
15
+ from dodal.devices.beamlines.i04.beam_centre import CentreEllipseMethod
16
+ from dodal.devices.beamlines.i04.beamsize import Beamsize
17
+ from dodal.devices.beamlines.i04.constants import RedisConstants
18
+ from dodal.devices.beamlines.i04.max_pixel import MaxPixel
19
+ from dodal.devices.beamlines.i04.murko_results import MurkoResultsDevice
20
+ from dodal.devices.beamlines.i04.transfocator import Transfocator
14
21
  from dodal.devices.detector.detector_motion import DetectorMotion
15
22
  from dodal.devices.diamond_filter import DiamondFilter, I04Filters
16
23
  from dodal.devices.eiger import EigerDetector
17
24
  from dodal.devices.fast_grid_scan import ZebraFastGridScanThreeD
18
25
  from dodal.devices.flux import Flux
19
- from dodal.devices.i03.dcm import DCM
20
- from dodal.devices.i04.beam_centre import CentreEllipseMethod
21
- from dodal.devices.i04.beamsize import Beamsize
22
- from dodal.devices.i04.constants import RedisConstants
23
- from dodal.devices.i04.max_pixel import MaxPixel
24
- from dodal.devices.i04.murko_results import MurkoResultsDevice
25
- from dodal.devices.i04.transfocator import Transfocator
26
26
  from dodal.devices.ipin import IPin
27
27
  from dodal.devices.motors import XYZStage
28
28
  from dodal.devices.mx_phase1.beamstop import Beamstop
29
29
  from dodal.devices.oav.oav_detector import (
30
30
  OAVBeamCentrePV,
31
+ ZoomControllerWithBeamCentres,
31
32
  )
32
33
  from dodal.devices.oav.oav_parameters import OAVConfig
33
34
  from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
@@ -66,7 +67,6 @@ I04_ZEBRA_MAPPING = ZebraMapping(
66
67
  outputs=(ZebraTTLOutputs(TTL_DETECTOR=1, TTL_FAST_SHUTTER=2, TTL_XSPRESS3=3)),
67
68
  sources=ZebraSources(),
68
69
  )
69
-
70
70
  PREFIX = BeamlinePrefix(BL)
71
71
 
72
72
  devices = DeviceManager()
@@ -305,3 +305,11 @@ def beam_centre() -> CentreEllipseMethod:
305
305
  return CentreEllipseMethod(
306
306
  f"{PREFIX.beamline_prefix}-DI-OAV-01:",
307
307
  )
308
+
309
+
310
+ @devices.factory()
311
+ def zoom_controller() -> ZoomControllerWithBeamCentres:
312
+ """Get the i04 zoom controller, instantiate it if it hasn't already been.
313
+ If this is called when already instantiated in i04, it will return the existing object.
314
+ """
315
+ return ZoomControllerWithBeamCentres(f"{PREFIX.beamline_prefix}-EA-OAV-01:FZOOM:")
dodal/beamlines/i05.py CHANGED
@@ -1,57 +1,19 @@
1
- from dodal.beamline_specific_utils.i05_shared import pgm as i05_pgm
2
- from dodal.common.beamlines.beamline_utils import (
3
- device_factory,
4
- )
1
+ from dodal.beamlines.i05_shared import devices as i05_shared_devices
5
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
6
- from dodal.devices.insertion_device import (
7
- Apple2,
8
- UndulatorGap,
9
- UndulatorLockedPhaseAxes,
10
- )
11
- from dodal.devices.pgm import PlaneGratingMonochromator
12
- from dodal.devices.synchrotron import Synchrotron
13
- from dodal.devices.temperture_controller import (
14
- Lakeshore336,
15
- )
3
+ from dodal.device_manager import DeviceManager
4
+ from dodal.devices.temperture_controller import Lakeshore336
16
5
  from dodal.log import set_beamline as set_log_beamline
17
6
  from dodal.utils import BeamlinePrefix, get_beamline_name
18
7
 
8
+ devices = DeviceManager()
9
+ devices.include(i05_shared_devices)
10
+
19
11
  BL = get_beamline_name("i05")
20
12
  PREFIX = BeamlinePrefix(BL)
21
13
  set_log_beamline(BL)
22
14
  set_utils_beamline(BL)
23
15
 
24
16
 
25
- @device_factory()
26
- def synchrotron() -> Synchrotron:
27
- return Synchrotron()
28
-
29
-
30
- @device_factory()
31
- def pgm() -> PlaneGratingMonochromator:
32
- return i05_pgm()
33
-
34
-
35
- @device_factory()
36
- def id_gap() -> UndulatorGap:
37
- return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
38
-
39
-
40
- @device_factory()
41
- def id_phase() -> UndulatorLockedPhaseAxes:
42
- return UndulatorLockedPhaseAxes(
43
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
44
- top_outer="PL",
45
- btm_inner="PU",
46
- )
47
-
48
-
49
- @device_factory()
50
- def id() -> Apple2:
51
- """i05 insertion device."""
52
- return Apple2(id_gap=id_gap(), id_phase=id_phase())
53
-
54
-
55
- @device_factory()
17
+ @devices.factory()
56
18
  def sample_temperature_controller() -> Lakeshore336:
57
19
  return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-02:")
dodal/beamlines/i05_1.py CHANGED
@@ -1,8 +1,6 @@
1
- from dodal.beamline_specific_utils.i05_shared import pgm as i05_pgm
2
- from dodal.common.beamlines.beamline_utils import device_factory
1
+ from dodal.beamlines.i05_shared import devices as i05_shared_devices
3
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
4
- from dodal.devices.pgm import PlaneGratingMonochromator
5
- from dodal.devices.synchrotron import Synchrotron
3
+ from dodal.device_manager import DeviceManager
6
4
  from dodal.log import set_beamline as set_log_beamline
7
5
  from dodal.utils import BeamlinePrefix, get_beamline_name
8
6
 
@@ -11,12 +9,5 @@ PREFIX = BeamlinePrefix(BL, suffix="J")
11
9
  set_log_beamline(BL)
12
10
  set_utils_beamline(BL)
13
11
 
14
-
15
- @device_factory()
16
- def pgm() -> PlaneGratingMonochromator:
17
- return i05_pgm()
18
-
19
-
20
- @device_factory()
21
- def synchrotron() -> Synchrotron:
22
- return Synchrotron()
12
+ devices = DeviceManager()
13
+ devices.include(i05_shared_devices)
@@ -0,0 +1,51 @@
1
+ from dodal.device_manager import DeviceManager
2
+ from dodal.devices.beamlines.i05.enums import Grating
3
+ from dodal.devices.insertion_device import (
4
+ Apple2,
5
+ UndulatorGap,
6
+ UndulatorLockedPhaseAxes,
7
+ )
8
+ from dodal.devices.pgm import PlaneGratingMonochromator
9
+ from dodal.devices.synchrotron import Synchrotron
10
+ from dodal.utils import BeamlinePrefix, get_beamline_name
11
+
12
+ BL = get_beamline_name("i05-shared")
13
+ PREFIX = BeamlinePrefix("i05-shared", "I")
14
+
15
+ devices = DeviceManager()
16
+
17
+
18
+ @devices.factory()
19
+ def synchrotron() -> Synchrotron:
20
+ return Synchrotron()
21
+
22
+
23
+ @devices.factory()
24
+ def pgm() -> PlaneGratingMonochromator:
25
+ return PlaneGratingMonochromator(
26
+ prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
27
+ grating=Grating,
28
+ )
29
+
30
+
31
+ @devices.factory()
32
+ def id_gap() -> UndulatorGap:
33
+ return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
34
+
35
+
36
+ @devices.factory()
37
+ def id_phase() -> UndulatorLockedPhaseAxes:
38
+ return UndulatorLockedPhaseAxes(
39
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
40
+ top_outer="PL",
41
+ btm_inner="PU",
42
+ )
43
+
44
+
45
+ @devices.factory()
46
+ def id(
47
+ id_gap: UndulatorGap,
48
+ id_phase: UndulatorLockedPhaseAxes,
49
+ ) -> Apple2[UndulatorLockedPhaseAxes]:
50
+ """i05 insertion device."""
51
+ return Apple2[UndulatorLockedPhaseAxes](id_gap=id_gap, id_phase=id_phase)
dodal/beamlines/i06_1.py CHANGED
@@ -1,7 +1,6 @@
1
- from dodal.common.beamlines.beamline_utils import (
2
- device_factory,
3
- )
1
+ from dodal.beamlines.i06_shared import devices as i06_shared_devices
4
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
+ from dodal.device_manager import DeviceManager
5
4
  from dodal.devices.temperture_controller import (
6
5
  Lakeshore336,
7
6
  )
@@ -13,12 +12,15 @@ PREFIX = BeamlinePrefix(BL, suffix="J")
13
12
  set_log_beamline(BL)
14
13
  set_utils_beamline(BL)
15
14
 
15
+ devices = DeviceManager()
16
+ devices.include(i06_shared_devices)
17
+
16
18
 
17
- @device_factory()
19
+ @devices.factory()
18
20
  def diff_cooling_temperature_controller() -> Lakeshore336:
19
21
  return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-02:")
20
22
 
21
23
 
22
- @device_factory()
24
+ @devices.factory()
23
25
  def diff_heating_temperature_controller() -> Lakeshore336:
24
26
  return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-03:")
@@ -1,12 +1,12 @@
1
- from dodal.common.beamlines.beamline_utils import (
2
- device_factory,
3
- )
4
1
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
2
+ from dodal.device_manager import DeviceManager
3
+ from dodal.devices.beamlines.i06_shared import I06Grating
5
4
  from dodal.devices.insertion_device import (
6
5
  Apple2,
7
6
  UndulatorGap,
8
7
  UndulatorLockedPhaseAxes,
9
8
  )
9
+ from dodal.devices.pgm import PlaneGratingMonochromator
10
10
  from dodal.devices.synchrotron import Synchrotron
11
11
  from dodal.log import set_beamline as set_log_beamline
12
12
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -16,18 +16,20 @@ PREFIX = BeamlinePrefix(BL)
16
16
  set_log_beamline(BL)
17
17
  set_utils_beamline(BL)
18
18
 
19
+ devices = DeviceManager()
20
+
19
21
 
20
- @device_factory()
22
+ @devices.factory()
21
23
  def synchrotron() -> Synchrotron:
22
24
  return Synchrotron()
23
25
 
24
26
 
25
- @device_factory()
27
+ @devices.factory()
26
28
  def idd_gap() -> UndulatorGap:
27
29
  return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
28
30
 
29
31
 
30
- @device_factory()
32
+ @devices.factory()
31
33
  def idd_phase() -> UndulatorLockedPhaseAxes:
32
34
  return UndulatorLockedPhaseAxes(
33
35
  prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
@@ -36,18 +38,18 @@ def idd_phase() -> UndulatorLockedPhaseAxes:
36
38
  )
37
39
 
38
40
 
39
- @device_factory()
40
- def idd() -> Apple2:
41
+ @devices.factory()
42
+ def idd(idd_gap: UndulatorGap, idd_phase: UndulatorLockedPhaseAxes) -> Apple2:
41
43
  """i06 downstream insertion device."""
42
- return Apple2(id_gap=idd_gap(), id_phase=idd_phase())
44
+ return Apple2(id_gap=idd_gap, id_phase=idd_phase)
43
45
 
44
46
 
45
- @device_factory()
47
+ @devices.factory()
46
48
  def idu_gap() -> UndulatorGap:
47
49
  return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:")
48
50
 
49
51
 
50
- @device_factory()
52
+ @devices.factory()
51
53
  def idu_phase() -> UndulatorLockedPhaseAxes:
52
54
  return UndulatorLockedPhaseAxes(
53
55
  prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
@@ -56,7 +58,16 @@ def idu_phase() -> UndulatorLockedPhaseAxes:
56
58
  )
57
59
 
58
60
 
59
- @device_factory()
60
- def idu() -> Apple2:
61
+ @devices.factory()
62
+ def idu(idu_gap: UndulatorGap, idu_phase: UndulatorLockedPhaseAxes) -> Apple2:
61
63
  """i06 upstream insertion device."""
62
- return Apple2(id_gap=idd_gap(), id_phase=idd_phase())
64
+ return Apple2(id_gap=idu_gap, id_phase=idu_phase)
65
+
66
+
67
+ @devices.factory()
68
+ def pgm() -> PlaneGratingMonochromator:
69
+ return PlaneGratingMonochromator(
70
+ prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
71
+ grating=I06Grating,
72
+ grating_pv="NLINES2",
73
+ )
dodal/beamlines/i07.py CHANGED
@@ -1,7 +1,7 @@
1
- from dodal.common.beamlines.beamline_utils import device_factory
2
1
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
- from dodal.devices.i07.dcm import DCM
4
- from dodal.devices.i07.id import InsertionDevice
2
+ from dodal.device_manager import DeviceManager
3
+ from dodal.devices.beamlines.i07.dcm import DCM
4
+ from dodal.devices.beamlines.i07.id import InsertionDevice
5
5
  from dodal.devices.undulator import UndulatorOrder
6
6
  from dodal.log import set_beamline as set_log_beamline
7
7
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -11,31 +11,29 @@ set_log_beamline(BL)
11
11
  set_utils_beamline(BL)
12
12
  PREFIX = BeamlinePrefix(BL)
13
13
 
14
+ devices = DeviceManager()
14
15
 
15
- @device_factory()
16
+
17
+ @devices.factory()
16
18
  def dcm() -> DCM:
17
- """Instantiate DCM using two PV bases"""
18
- dcm = DCM(
19
- f"{PREFIX.beamline_prefix}-MO-DCM-01:",
20
- f"{PREFIX.beamline_prefix}-DI-DCM-01:",
21
- "dcm",
19
+ """Instantiate DCM using two PV bases."""
20
+ return DCM(
21
+ f"{PREFIX.beamline_prefix}-MO-DCM-01:", f"{PREFIX.beamline_prefix}-DI-DCM-01:"
22
22
  )
23
- return dcm
24
23
 
25
24
 
26
- @device_factory()
25
+ @devices.factory()
27
26
  def harmonic() -> UndulatorOrder:
28
- return UndulatorOrder("harmonic")
27
+ return UndulatorOrder()
29
28
 
30
29
 
31
- @device_factory()
32
- def id() -> InsertionDevice:
30
+ @devices.factory()
31
+ def id(harmonic: UndulatorOrder) -> InsertionDevice:
33
32
  """Get the i07 undulator device, instantiate it if it hasn't already been.
34
33
  If this is called when already instantiated it will return the existing object.
35
34
  """
36
35
  return InsertionDevice(
37
- "id",
38
36
  f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
39
- harmonic(),
37
+ harmonic,
40
38
  id_gap_lookup_table_path="/dls_sw/i07/software/gda/config/lookupTables/IIDCalibrationTable.txt",
41
39
  )