dls-dodal 1.33.0__py3-none-any.whl → 1.35.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 (89) hide show
  1. {dls_dodal-1.33.0.dist-info → dls_dodal-1.35.0.dist-info}/METADATA +3 -3
  2. dls_dodal-1.35.0.dist-info/RECORD +147 -0
  3. {dls_dodal-1.33.0.dist-info → dls_dodal-1.35.0.dist-info}/WHEEL +1 -1
  4. dodal/__init__.py +8 -0
  5. dodal/_version.py +2 -2
  6. dodal/beamline_specific_utils/i03.py +6 -2
  7. dodal/beamlines/__init__.py +2 -3
  8. dodal/beamlines/i03.py +41 -9
  9. dodal/beamlines/i04.py +26 -4
  10. dodal/beamlines/i10.py +257 -0
  11. dodal/beamlines/i22.py +25 -13
  12. dodal/beamlines/i24.py +11 -11
  13. dodal/beamlines/p38.py +24 -13
  14. dodal/common/beamlines/beamline_utils.py +1 -2
  15. dodal/common/crystal_metadata.py +61 -0
  16. dodal/common/signal_utils.py +10 -14
  17. dodal/common/types.py +2 -7
  18. dodal/devices/CTAB.py +1 -1
  19. dodal/devices/aperture.py +1 -1
  20. dodal/devices/aperturescatterguard.py +20 -8
  21. dodal/devices/apple2_undulator.py +603 -0
  22. dodal/devices/areadetector/plugins/CAM.py +29 -0
  23. dodal/devices/areadetector/plugins/MJPG.py +51 -106
  24. dodal/devices/attenuator.py +1 -1
  25. dodal/devices/backlight.py +11 -11
  26. dodal/devices/cryostream.py +3 -5
  27. dodal/devices/dcm.py +26 -2
  28. dodal/devices/detector/detector_motion.py +3 -5
  29. dodal/devices/diamond_filter.py +46 -0
  30. dodal/devices/eiger.py +6 -2
  31. dodal/devices/eiger_odin.py +48 -39
  32. dodal/devices/fast_grid_scan.py +1 -1
  33. dodal/devices/fluorescence_detector_motion.py +5 -7
  34. dodal/devices/focusing_mirror.py +26 -19
  35. dodal/devices/hutch_shutter.py +4 -5
  36. dodal/devices/i10/i10_apple2.py +399 -0
  37. dodal/devices/i10/i10_setting_data.py +7 -0
  38. dodal/devices/i22/dcm.py +50 -83
  39. dodal/devices/i22/fswitch.py +5 -5
  40. dodal/devices/i24/aperture.py +3 -5
  41. dodal/devices/i24/beamstop.py +3 -5
  42. dodal/devices/i24/dcm.py +1 -1
  43. dodal/devices/i24/dual_backlight.py +9 -11
  44. dodal/devices/i24/pmac.py +35 -46
  45. dodal/devices/i24/vgonio.py +16 -0
  46. dodal/devices/ipin.py +5 -3
  47. dodal/devices/linkam3.py +7 -7
  48. dodal/devices/oav/oav_calculations.py +22 -0
  49. dodal/devices/oav/oav_detector.py +118 -83
  50. dodal/devices/oav/oav_parameters.py +50 -104
  51. dodal/devices/oav/oav_to_redis_forwarder.py +77 -35
  52. dodal/devices/oav/pin_image_recognition/__init__.py +9 -7
  53. dodal/devices/oav/{grid_overlay.py → snapshots/grid_overlay.py} +16 -59
  54. dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +64 -0
  55. dodal/devices/oav/snapshots/snapshot_with_grid.py +57 -0
  56. dodal/devices/oav/utils.py +28 -27
  57. dodal/devices/p99/sample_stage.py +3 -5
  58. dodal/devices/pgm.py +40 -0
  59. dodal/devices/qbpm.py +18 -0
  60. dodal/devices/robot.py +5 -5
  61. dodal/devices/smargon.py +3 -3
  62. dodal/devices/synchrotron.py +9 -4
  63. dodal/devices/tetramm.py +9 -9
  64. dodal/devices/thawer.py +13 -7
  65. dodal/devices/undulator.py +7 -6
  66. dodal/devices/util/adjuster_plans.py +1 -1
  67. dodal/devices/util/epics_util.py +1 -1
  68. dodal/devices/util/lookup_tables.py +4 -5
  69. dodal/devices/watsonmarlow323_pump.py +45 -0
  70. dodal/devices/webcam.py +9 -2
  71. dodal/devices/xbpm_feedback.py +3 -5
  72. dodal/devices/xspress3/xspress3.py +8 -9
  73. dodal/devices/xspress3/xspress3_channel.py +3 -5
  74. dodal/devices/zebra.py +12 -8
  75. dodal/devices/zebra_controlled_shutter.py +5 -6
  76. dodal/devices/zocalo/__init__.py +2 -2
  77. dodal/devices/zocalo/zocalo_constants.py +3 -0
  78. dodal/devices/zocalo/zocalo_interaction.py +2 -1
  79. dodal/devices/zocalo/zocalo_results.py +105 -89
  80. dodal/plans/data_session_metadata.py +2 -2
  81. dodal/plans/motor_util_plans.py +11 -9
  82. dodal/utils.py +11 -0
  83. dls_dodal-1.33.0.dist-info/RECORD +0 -136
  84. dodal/beamlines/i04_1.py +0 -140
  85. dodal/devices/i24/i24_vgonio.py +0 -17
  86. dodal/devices/oav/oav_errors.py +0 -35
  87. {dls_dodal-1.33.0.dist-info → dls_dodal-1.35.0.dist-info}/LICENSE +0 -0
  88. {dls_dodal-1.33.0.dist-info → dls_dodal-1.35.0.dist-info}/entry_points.txt +0 -0
  89. {dls_dodal-1.33.0.dist-info → dls_dodal-1.35.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.33.0
3
+ Version: 1.35.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async <0.7,>=0.6
219
+ Requires-Dist: ophyd-async ==0.8.0a4
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -263,7 +263,7 @@ Requires-Dist: types-aiofiles ; extra == 'dev'
263
263
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
264
264
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
265
265
  [![PyPI](https://img.shields.io/pypi/v/dls-dodal.svg)](https://pypi.org/project/dls-dodal)
266
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
266
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
267
267
 
268
268
  # dodal
269
269
 
@@ -0,0 +1,147 @@
1
+ dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
+ dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
+ dodal/_version.py,sha256=q-2n6ovtbk-r5sMORN2VAFD8HDD5aIS9gRmqA5SXG40,413
4
+ dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
5
+ dodal/cli.py,sha256=_crmaHchxphSW8eEJB58_XZIeK82aiUv9bV7tpz-LpA,2122
6
+ dodal/log.py,sha256=0to7CRsbzbgVfAAfKRAMhsaUuKqF2-7CGdQc-z8Uhno,9499
7
+ dodal/utils.py,sha256=DIlAnz5gqaqqTB9NvAwl9Mk-em6idE7Rd29mBkAmvXc,12048
8
+ dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ dodal/beamline_specific_utils/i03.py,sha256=P6Ls4FoVtcacH0RJM3v6ZwwGx27oMppcBdW0la-ohTY,377
10
+ dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
11
+ dodal/beamlines/__init__.py,sha256=WWXqkXkufRUNFSC_b0PoHSkyKo7Tn8wNmnQCr9klh2o,3054
12
+ dodal/beamlines/b01_1.py,sha256=nH1CzeGXc9kAZBxISsuQF33On9FuWkwFriGKfU8Qs5g,2176
13
+ dodal/beamlines/i03.py,sha256=WOMkGTcrrKqoBNeRObumMA8Nlo404uIr2ccfn8gK-zs,18063
14
+ dodal/beamlines/i04.py,sha256=z8LUbhyfUDU08oSp85hg7hFE8FJkAyLsqPUQScs5SUA,14567
15
+ dodal/beamlines/i10.py,sha256=0ZoFe1vuwNiP2AvNACxuN0OMXJ4DcQ3Oqa0L-w5Ch_M,7744
16
+ dodal/beamlines/i13_1.py,sha256=csXHrdwUh4sXTmb4X6ZiiSS_XxRkNShsVoBMxYI6rG0,1833
17
+ dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
18
+ dodal/beamlines/i22.py,sha256=0_-Q1teOnty76-fHLI_ZudziRAq3DIkH8KeK7Db1KZ4,10246
19
+ dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
20
+ dodal/beamlines/i24.py,sha256=UBuxiql4JQRYddr1Mp017Edzz0HSMwi4ghJ9HdBNluk,6467
21
+ dodal/beamlines/p38.py,sha256=EeJJxfw7uMy6jPA_D7ug0ubAhTBCndPwjvcvR1T1lfw,8238
22
+ dodal/beamlines/p45.py,sha256=N4SDTIFok3uMqb37higZHMr3xRjxItsT4ib_KacKKAE,2935
23
+ dodal/beamlines/p99.py,sha256=mHMYi1M_jgSB9SrOPadxvPuMrxG8LmJOYtU0Iw6fnIQ,1708
24
+ dodal/beamlines/training_rig.py,sha256=yagMEQruA1iTOeQCNpux-6xOtkBuB-hhGvAJwQ5c9bg,1846
25
+ dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
26
+ dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
27
+ dodal/common/crystal_metadata.py,sha256=IKhe_nCbsuIV2W5OvPzIQ-FXfusQ2d7VJ-xH899dZIc,1924
28
+ dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
29
+ dodal/common/signal_utils.py,sha256=-p4h7xtGPp13t6HTjgFGcs5nN22kVArlkfCPVjpLuRU,1728
30
+ dodal/common/types.py,sha256=fkL7UOwDbe3v2_VJ5f1W5RxR98Wx-Ra-LxUZWkNDtls,486
31
+ dodal/common/udc_directory_provider.py,sha256=H-9f6uSVGuA8jyiErPi8ikCw1JDrhRAJv-qPpN-HwJk,2379
32
+ dodal/common/visit.py,sha256=2UbbCmgOjZWSCxFzE9RYiTJhA_IoVOegma-Jv-PJqps,5787
33
+ dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ dodal/common/beamlines/beamline_parameters.py,sha256=oIPHooqu5vTAwfqZutsKbzwdi9nvFF8568Mz7jrK5rI,3618
35
+ dodal/common/beamlines/beamline_utils.py,sha256=6RCOnjVcrocfOyKDb2gBlvu2EymS9tUgvQexKrUjUV4,4335
36
+ dodal/common/beamlines/device_helpers.py,sha256=s79js7no9k8JMfG7NvdmFomSP5m5VDQ6th_Hsbx1znA,939
37
+ dodal/devices/CTAB.py,sha256=5_261Ox6NG2cJIzzwnjWz289BG0nZoE0wKOaI5V5jqM,1998
38
+ dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ dodal/devices/adsim.py,sha256=dMU0TKIuiODHYFHQOH4_5UvB8iJtaJEtjqaEDGjcU-w,311
40
+ dodal/devices/aperture.py,sha256=yyw2ei3gM_lmZWDQ6VTbydB58RCDTen_nqBZyoTP2IM,583
41
+ dodal/devices/aperturescatterguard.py,sha256=PRNnGbxYKFWoa1m70Mz-6Ta4NtFG0ShUprBvv2viUeI,8993
42
+ dodal/devices/apple2_undulator.py,sha256=HtjHiDX80n_nzabuFcUioH-gWH1a6VjZzw_xStq7S4w,22470
43
+ dodal/devices/attenuator.py,sha256=6IAPr8XmLxUOHC8g7Zt8MR1trMEDOxO5JkLphd6LbRg,2582
44
+ dodal/devices/backlight.py,sha256=nQIr3J-I-OXnOUoWmr3ruy3nhq_q2US1KXC4NrGG_2U,1634
45
+ dodal/devices/cryostream.py,sha256=K-ldpredpeDTzNt4qtQMg99nKJNjBYoXBbK0WJGexzw,656
46
+ dodal/devices/dcm.py,sha256=cc531sQbed1yX6pWhizUvszLhQczWatMYMZ3cEp3FHA,2559
47
+ dodal/devices/diamond_filter.py,sha256=A--RHd7WuH-IBhvCyENcRCTP4K-mm_Kqpa0pojpHZow,1098
48
+ dodal/devices/eiger.py,sha256=2ZT2oQiZFLprg3CjsHRkXfxt9kSf8z8uUKH1Z5n3Hzo,14107
49
+ dodal/devices/eiger_odin.py,sha256=oZl16K-Qb2yL6tK1fyDQvqbbhhvYMSVcf_e2CjlqMa4,7409
50
+ dodal/devices/fast_grid_scan.py,sha256=DfO4w8ivQJACurYO_OEoXYTAMa2qUc5P-bxYCkjRKkQ,11967
51
+ dodal/devices/fluorescence_detector_motion.py,sha256=-1qCSvW0PdT0m6BcoLxrtc0OJ5UDIBsEe11EOLr-gFw,501
52
+ dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
53
+ dodal/devices/focusing_mirror.py,sha256=Jgw-06PyYkyRsue3K9yJmFwjLhdOgOHZX9yilUOG1oQ,6163
54
+ dodal/devices/hutch_shutter.py,sha256=WXY9JwqAa5prbf72IP7_MTKndPDtAltCpPJlNbq-F_0,3313
55
+ dodal/devices/ipin.py,sha256=eq5jlKw7WGQi8VLrAWpaAIsZmfiVf-5Q0td_B22H6A4,473
56
+ dodal/devices/linkam3.py,sha256=fRcTxXF772f6lZIB0L7vhy5i-YzDGth0rQEuC-GH64M,3864
57
+ dodal/devices/logging_ophyd_device.py,sha256=dUVE-XhWA56WUXez0mrc4sf322CXY3MVLreTycO5j_A,668
58
+ dodal/devices/motors.py,sha256=dYa9T6FDMTbr8GvTb-lXtk3v4QEqAWRuGmHIO20fazQ,1039
59
+ dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
60
+ dodal/devices/pgm.py,sha256=am-AST9iTqma1PkGOKLozqAokZWbJUbM3TNcqXzB-6A,1132
61
+ dodal/devices/qbpm.py,sha256=FfrWWAHHtYv3fGRT1qljyPpAwoHJYfbooT9CfKg-oXI,465
62
+ dodal/devices/robot.py,sha256=2f6PqqzcnWs2hFDUs08EUUoU-a4zJy6xaSwv1VQdEEw,5332
63
+ dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
64
+ dodal/devices/scatterguard.py,sha256=jx03in9QgaThWxD4t1S8_Llent2kWrn_hThJ9KkUWTk,330
65
+ dodal/devices/scintillator.py,sha256=PlD6cnJ39PTB_e7QrRspPliLYE4kL_K7ziJURzuxgdA,365
66
+ dodal/devices/slits.py,sha256=uOyVmbgeygiP6e5Z9t5zMPXLuVEWFfYg9GB3ZU76Tug,600
67
+ dodal/devices/smargon.py,sha256=tOHb9fjI8ZCIrboiC4OzS2j1QJDOKkAlQ2SORbBmaGo,4708
68
+ dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
69
+ dodal/devices/synchrotron.py,sha256=wLfClZ1lYQWA_D--UsM3NnKLG8bY8mvVsRYER6ob-Ew,2026
70
+ dodal/devices/tetramm.py,sha256=E4cSTz8BCr80IiKwmqr3iNoGxMb3d7_kn9_Zxqq3P_U,8442
71
+ dodal/devices/thawer.py,sha256=4t4yF4VDIrT_tQ8RwjmXe_hDMwVjR8A-4rDkPx19b28,1672
72
+ dodal/devices/turbo_slit.py,sha256=B6SPXqviMnG-U4PnUF1BdTO0LBKmTuwAUKRbxMiNJXo,1125
73
+ dodal/devices/undulator.py,sha256=BxYGDDvbdhA6yixL0fsS4bZMY2pmaMk-bvFpEGKA1pY,5210
74
+ dodal/devices/undulator_dcm.py,sha256=5hn3UZeu4CYXmfUVSdIxjrcIpStgeA1S744p0iIFp4I,2725
75
+ dodal/devices/watsonmarlow323_pump.py,sha256=rwU94YE6esgGLYdh-pe8nBo_3tvgp6brrrbPDrqp5_M,1406
76
+ dodal/devices/webcam.py,sha256=mef075ynDbzZ4pNAjfxR_9tdTTqF_rM7hAOVEEOV-Do,2408
77
+ dodal/devices/xbpm_feedback.py,sha256=j8MHhhE0feoe6R54zPKqS5EbQ0bEDR-nOpLHzHhnHHQ,1156
78
+ dodal/devices/zebra.py,sha256=p191eIGfmwM2EE1YJn6rRgChim2kqXl2KIYbMPUSOvg,9474
79
+ dodal/devices/zebra_controlled_shutter.py,sha256=5-SH5HoXp_6P-xAtfDFJKQq6mBDwreubuCULSz78fgw,1852
80
+ dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
81
+ dodal/devices/areadetector/adaravis.py,sha256=Cqw_Mzrp_zODFxQ2LZBJzHp_DsZ6_dAITkZz8gYz_0w,3797
82
+ dodal/devices/areadetector/adsim.py,sha256=cIc9PRbKnftBk7Ut8d8CU_TVrin8EwcKHObP2n9VxWM,1876
83
+ dodal/devices/areadetector/adutils.py,sha256=4axFR3wtn-K-sjMVJyfTcu-8g35odf2cY8mTKv1gS-o,3093
84
+ dodal/devices/areadetector/plugins/CAM.py,sha256=sZzJm5Ez3eWfXZi_EB67wluhZmMQm1UyOc2bJFfzd1U,964
85
+ dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33KyntuLepbF0YmX0KE,3031
86
+ dodal/devices/detector/__init__.py,sha256=-RdACL3tzc3lLArWOoGNje48UUlv2fElOmGOz9yOuO0,317
87
+ dodal/devices/detector/det_dim_constants.py,sha256=LNrVMd0DbFEcnyNFmXosCP-VYaZ71Ajuv6inwo4Mg3U,2299
88
+ dodal/devices/detector/det_dist_to_beam_converter.py,sha256=7keoqZYfvgayePVx97lHYpcFRTJnQOfAk_PYP4EZTZQ,1951
89
+ dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
90
+ dodal/devices/detector/detector.py,sha256=syzkl52kGaMINXCXEviFuYPbgNatm5tioVPDmjgro8s,4768
91
+ dodal/devices/detector/detector_motion.py,sha256=UGDQriDWRluDZOZh1mDX9w_fPjMD-_BGe11kA36Kezs,1616
92
+ dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
94
+ dodal/devices/i10/i10_apple2.py,sha256=pEZes8wVCPHiOOcuVhEtqPvtnyphMxqbdp39mDp6xXQ,13165
95
+ dodal/devices/i10/i10_setting_data.py,sha256=Pc78L9asOLot9WmKcxkxpaefB3h4FeKIolHcGO4JnOU,161
96
+ dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
+ dodal/devices/i22/dcm.py,sha256=SQDh-Sj1OvplHZ9yTWblJwv8PJrUqxseDPupZOWmcLo,4701
98
+ dodal/devices/i22/fswitch.py,sha256=LSMoo9aDkH0SLcojbUh2NxTWIpUXHZxauTqThc3XtSk,3073
99
+ dodal/devices/i22/nxsas.py,sha256=a8oJXl5uhkh9zcb9rSZmVooU-SplzzO3EsAaHJZRfrQ,6086
100
+ dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ dodal/devices/i24/aperture.py,sha256=XlnOyQsvdTom1dJHVUg8CUSthq3jlBlZFOUaa9b1eZ4,837
102
+ dodal/devices/i24/beamstop.py,sha256=89ncXUisia1rn1Faf5iWg3k0QW6Rm99j1vq9A8l9Xv8,1221
103
+ dodal/devices/i24/dcm.py,sha256=Q3qqlgsiLJga2cgI8L4jczjyUgQixJh6QWg7shrFpTQ,1988
104
+ dodal/devices/i24/dual_backlight.py,sha256=mhbM4CzfjWQ883ebnG4oP1PLa1I4BlR30s-Ly5nXXb0,2023
105
+ dodal/devices/i24/i24_detector_motion.py,sha256=_HgdsZqFYY0tKqUgMzViHaPEUFXL3WlXXioGvDehRUw,364
106
+ dodal/devices/i24/pmac.py,sha256=lz9FYU_8YN8cC51ddTzdxcUA7MCVTA_ho3P0CHJ9zCo,6837
107
+ dodal/devices/i24/vgonio.py,sha256=sxSmcYZayVJPJz_D_91j9PmNor7Tbl1RGQFRrdtESlw,533
108
+ dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
+ dodal/devices/oav/microns_for_zoom_levels.json,sha256=kJTkbu2v6_Ccc_cDy7FRTX-gRhXxfYskjVqwBCZIqCQ,1209
110
+ dodal/devices/oav/oav_calculations.py,sha256=tr3Z2pFT7v_enAiNuSZV0esPsiHfRGrj7t0-g_Ix5Do,2363
111
+ dodal/devices/oav/oav_detector.py,sha256=9IXSSdgvZZyPtnhICEw9cHtf55vIrz1T_oBCr_sT7e4,4831
112
+ dodal/devices/oav/oav_parameters.py,sha256=gGN73TQGUiRzlIO5YKiqCRkjpTKsV6LFGo7Eu4Vs82g,6074
113
+ dodal/devices/oav/oav_to_redis_forwarder.py,sha256=pfhaW6Uo_1wDNfywyPkS5UTrY8yhkerhjgJfRMqrJRA,6259
114
+ dodal/devices/oav/utils.py,sha256=iSsl-PZLLwjgQ1M5JqcP5YGDCpfKQZv_GoJksnL-T3I,3130
115
+ dodal/devices/oav/pin_image_recognition/__init__.py,sha256=oFPGpRVokv7u6_JbERodtRzkU6wBF4F-HeQxbP96TWI,6597
116
+ dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
117
+ dodal/devices/oav/pin_image_recognition/utils.py,sha256=L9ypluYqeOFoS7gQuws-vTNc8LqaKl2ZIDNeQ2JaNpg,8592
118
+ dodal/devices/oav/snapshots/grid_overlay.py,sha256=CdvCdTKMCiwMwxm2lV28KpcIUSXlscZmWxb73_KKmiI,3694
119
+ dodal/devices/oav/snapshots/snapshot_with_beam_centre.py,sha256=J77RfE3AGTLNdWc6hvsRn2DUdupzuk_FTDGvdP0jqbU,1962
120
+ dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=EBoCtr1NmOKye2yQHqbTBxSg-DsEKFeyBtMFmOeGPRs,2269
121
+ dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ dodal/devices/p99/sample_stage.py,sha256=dX6KlzZlwYViGiPSvdSrQQmgh_OLbHlnX1BJgcuu7j0,1128
123
+ dodal/devices/training_rig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
+ dodal/devices/training_rig/sample_stage.py,sha256=jktTp837ij8wor5LidE3AajCk95L7DebJotMlO7QwTE,355
125
+ dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ dodal/devices/util/adjuster_plans.py,sha256=XpJ1YJKoOCFzj2sonkZYJAdewi3jRaok_2gOmNsfeS0,956
127
+ dodal/devices/util/epics_util.py,sha256=A8iNL79PnxntuxPTKA9oLGaDRKhnXaaeAVJwS6FNAWA,4687
128
+ dodal/devices/util/lookup_tables.py,sha256=Bk-wZk7JO5_j_8gbot-8reirVqxvFUg9_SIqEIOVZu0,2025
129
+ dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
130
+ dodal/devices/util/save_panda.py,sha256=PHFlkerBhkkU0-o5dNEdi2P95_jD9Lk8yYgaqn9R97o,2538
131
+ dodal/devices/util/test_utils.py,sha256=VrSFFGLNKOcCAsWFMZOxwhng3wGR5kV8NqqnKfj8Vuw,562
132
+ dodal/devices/xspress3/xspress3.py,sha256=pD46vyjbblrzE3xhP2ZGcStmN06cp41gSOLuff_bQTs,4636
133
+ dodal/devices/xspress3/xspress3_channel.py,sha256=w8tAx2lz5kJ_LeJ_eb_4o--Dtt8MRijsYNgDG6oEIVg,1626
134
+ dodal/devices/zocalo/__init__.py,sha256=dRAZ9o7B9TACqyE7aanT3yzvqWtt019YgV5ZJY7Ylso,517
135
+ dodal/devices/zocalo/zocalo_constants.py,sha256=vu7Xjz7UNEpBUWEEBxDvP4bVFkZIN6NLGfQDpWbCjH8,98
136
+ dodal/devices/zocalo/zocalo_interaction.py,sha256=8V9rAHYgdrFlPURnsxl5pLheEZemsm8cqMpv0E2fOS8,3555
137
+ dodal/devices/zocalo/zocalo_results.py,sha256=DJWCWKUhMXguUcjb2fU8a86OLp8SnJS9jqbe6EHau-8,15293
138
+ dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
139
+ dodal/plans/check_topup.py,sha256=3gyLHfHNQBCgEWuAg4QE-ONx7y2Do1vVv5HP8ss0Z1I,5371
140
+ dodal/plans/data_session_metadata.py,sha256=GjR4E2s3ZwYkvkBnW6TcL6OLdmyxrmkoSSI242sEPFA,1567
141
+ dodal/plans/motor_util_plans.py,sha256=1s02s_Yn7vusv8o64n5p4yiibmQ5ETv8t59CD27h8gw,4655
142
+ dls_dodal-1.35.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
143
+ dls_dodal-1.35.0.dist-info/METADATA,sha256=Ddaa6HHHR3d-IxRoiQS_uiniR2ONfL62B2LVy8b46ns,16574
144
+ dls_dodal-1.35.0.dist-info/WHEEL,sha256=a7TGlA-5DaHMRrarXjVbQagU3Man_dCnGIWMJr5kRWo,91
145
+ dls_dodal-1.35.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
146
+ dls_dodal-1.35.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
147
+ dls_dodal-1.35.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
dodal/__init__.py CHANGED
@@ -1,3 +1,11 @@
1
+ """Top level API.
2
+
3
+ .. data:: __version__
4
+ :type: str
5
+
6
+ Version number as calculated by https://github.com/pypa/setuptools_scm
7
+ """
8
+
1
9
  from ._version import __version__
2
10
 
3
11
  __all__ = ["__version__"]
dodal/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.33.0'
16
- __version_tuple__ = version_tuple = (1, 33, 0)
15
+ __version__ = version = '1.35.0'
16
+ __version_tuple__ = version_tuple = (1, 35, 0)
@@ -1,6 +1,7 @@
1
1
  from dataclasses import dataclass
2
2
 
3
- I03_BEAM_HEIGHT_UM = 20
3
+ I03_BEAM_HEIGHT_UM = 20.0
4
+ I03_BEAM_WIDTH_UM = 80.0
4
5
 
5
6
 
6
7
  @dataclass
@@ -10,4 +11,7 @@ class BeamSize:
10
11
 
11
12
 
12
13
  def beam_size_from_aperture(aperture_size: float | None):
13
- return BeamSize(aperture_size, I03_BEAM_HEIGHT_UM if aperture_size else None)
14
+ return BeamSize(
15
+ min(aperture_size, I03_BEAM_WIDTH_UM) if aperture_size else None,
16
+ I03_BEAM_HEIGHT_UM if aperture_size else None,
17
+ )
@@ -5,11 +5,10 @@ from pathlib import Path
5
5
 
6
6
  # Where beamline names (per the ${BEAMLINE} environment variable don't always
7
7
  # match up, we have to map between them bidirectionally). The most common use case is
8
- # beamlines with a "-"" in the name such as "i04-1", which is not valid in a Python
8
+ # beamlines with a "-"" in the name such as "i20-1", which is not valid in a Python
9
9
  # module name. Add any new beamlines whose name differs from their module name to this
10
10
  # dictionary, which maps ${BEAMLINE} to dodal.beamlines.<MODULE NAME>
11
11
  _BEAMLINE_NAME_OVERRIDES = {
12
- "i04-1": "i04_1",
13
12
  "i13-1": "i13_1",
14
13
  "i20-1": "i20_1",
15
14
  "s03": "i03",
@@ -79,7 +78,7 @@ def _module_name_overrides() -> Mapping[str, set[str]]:
79
78
  def module_name_for_beamline(beamline: str) -> str:
80
79
  """
81
80
  Get the module name for a particular beamline, it may differ from the beamline
82
- name e.g. i04-1 -> i04_1
81
+ name e.g. i20-1 -> i20_1
83
82
 
84
83
  Args:
85
84
  beamline: The beamline name as per the ${BEAMLINE} environment variable
dodal/beamlines/i03.py CHANGED
@@ -19,13 +19,16 @@ from dodal.devices.cryostream import CryoStream
19
19
  from dodal.devices.dcm import DCM
20
20
  from dodal.devices.detector import DetectorParams
21
21
  from dodal.devices.detector.detector_motion import DetectorMotion
22
+ from dodal.devices.diamond_filter import DiamondFilter, I03Filters
22
23
  from dodal.devices.eiger import EigerDetector
23
24
  from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
24
25
  from dodal.devices.flux import Flux
25
- from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, VFMMirrorVoltages
26
+ from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
26
27
  from dodal.devices.motors import XYZPositioner
27
- from dodal.devices.oav.oav_detector import OAV, OAVConfigParams
28
+ from dodal.devices.oav.oav_detector import OAV
29
+ from dodal.devices.oav.oav_parameters import OAVConfig
28
30
  from dodal.devices.oav.pin_image_recognition import PinTipDetection
31
+ from dodal.devices.qbpm import QBPM
29
32
  from dodal.devices.robot import BartRobot
30
33
  from dodal.devices.s4_slit_gaps import S4SlitGaps
31
34
  from dodal.devices.smargon import Smargon
@@ -121,12 +124,12 @@ def vfm(
121
124
 
122
125
 
123
126
  @skip_device(lambda: BL == "s03")
124
- def vfm_mirror_voltages(
127
+ def mirror_voltages(
125
128
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
126
- ) -> VFMMirrorVoltages:
129
+ ) -> MirrorVoltages:
127
130
  return device_instantiation(
128
- device_factory=VFMMirrorVoltages,
129
- name="vfm_mirror_voltages",
131
+ device_factory=MirrorVoltages,
132
+ name="mirror_voltages",
130
133
  prefix="-MO-PSU-01:",
131
134
  wait=wait_for_connection,
132
135
  fake=fake_with_ophyd_sim,
@@ -225,7 +228,7 @@ def panda_fast_grid_scan(
225
228
  def oav(
226
229
  wait_for_connection: bool = True,
227
230
  fake_with_ophyd_sim: bool = False,
228
- params: OAVConfigParams | None = None,
231
+ params: OAVConfig | None = None,
229
232
  ) -> OAV:
230
233
  """Get the i03 OAV device, instantiate it if it hasn't already been.
231
234
  If this is called when already instantiated in i03, it will return the existing object.
@@ -233,10 +236,10 @@ def oav(
233
236
  return device_instantiation(
234
237
  OAV,
235
238
  "oav",
236
- "",
239
+ "-DI-OAV-01:",
237
240
  wait_for_connection,
238
241
  fake_with_ophyd_sim,
239
- params=params or OAVConfigParams(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
242
+ config=params or OAVConfig(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
240
243
  )
241
244
 
242
245
 
@@ -516,3 +519,32 @@ def cryo_stream(
516
519
  wait_for_connection,
517
520
  fake_with_ophyd_sim,
518
521
  )
522
+
523
+
524
+ def diamond_filter(
525
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
526
+ ) -> DiamondFilter[I03Filters]:
527
+ """Get the i03 diamond filter device, instantiate it if it hasn't already been.
528
+ If this is called when already instantiated in i03, it will return the existing object.
529
+ """
530
+ return device_instantiation(
531
+ DiamondFilter[I03Filters],
532
+ "diamond_filter",
533
+ "-MO-FLTR-01:",
534
+ wait_for_connection,
535
+ fake_with_ophyd_sim,
536
+ data_type=I03Filters,
537
+ )
538
+
539
+
540
+ def qbpm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> QBPM:
541
+ """Get the i03 qbpm device, instantiate it if it hasn't already been.
542
+ If this is called when already instantiated in i03, it will return the existing object.
543
+ """
544
+ return device_instantiation(
545
+ QBPM,
546
+ "qbpm",
547
+ "-DI-QBPM-01:",
548
+ wait_for_connection,
549
+ fake_with_ophyd_sim,
550
+ )
dodal/beamlines/i04.py CHANGED
@@ -11,13 +11,15 @@ from dodal.devices.backlight import Backlight
11
11
  from dodal.devices.dcm import DCM
12
12
  from dodal.devices.detector import DetectorParams
13
13
  from dodal.devices.detector.detector_motion import DetectorMotion
14
+ from dodal.devices.diamond_filter import DiamondFilter, I04Filters
14
15
  from dodal.devices.eiger import EigerDetector
15
16
  from dodal.devices.fast_grid_scan import ZebraFastGridScan
16
17
  from dodal.devices.flux import Flux
17
18
  from dodal.devices.i04.transfocator import Transfocator
18
19
  from dodal.devices.ipin import IPin
19
20
  from dodal.devices.motors import XYZPositioner
20
- from dodal.devices.oav.oav_detector import OAV, OAVConfigParams
21
+ from dodal.devices.oav.oav_detector import OAV
22
+ from dodal.devices.oav.oav_parameters import OAVConfig
21
23
  from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
22
24
  from dodal.devices.robot import BartRobot
23
25
  from dodal.devices.s4_slit_gaps import S4SlitGaps
@@ -343,17 +345,21 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
343
345
 
344
346
 
345
347
  @skip_device(lambda: BL == "s04")
346
- def oav(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> OAV:
348
+ def oav(
349
+ wait_for_connection: bool = True,
350
+ fake_with_ophyd_sim: bool = False,
351
+ params: OAVConfig | None = None,
352
+ ) -> OAV:
347
353
  """Get the i04 OAV device, instantiate it if it hasn't already been.
348
354
  If this is called when already instantiated in i04, it will return the existing object.
349
355
  """
350
356
  return device_instantiation(
351
357
  OAV,
352
358
  "oav",
353
- "",
359
+ "-DI-OAV-01:",
354
360
  wait_for_connection,
355
361
  fake_with_ophyd_sim,
356
- params=OAVConfigParams(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
362
+ config=params or OAVConfig(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
357
363
  )
358
364
 
359
365
 
@@ -419,3 +425,19 @@ def oav_to_redis_forwarder(
419
425
  redis_password=REDIS_PASSWORD,
420
426
  redis_db=7,
421
427
  )
428
+
429
+
430
+ def diamond_filter(
431
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
432
+ ) -> DiamondFilter[I04Filters]:
433
+ """Get the i04 diamond filter device, instantiate it if it hasn't already been.
434
+ If this is called when already instantiated in i03, it will return the existing object.
435
+ """
436
+ return device_instantiation(
437
+ DiamondFilter[I04Filters],
438
+ "diamond_filter",
439
+ "-MO-FLTR-01:",
440
+ wait_for_connection,
441
+ fake_with_ophyd_sim,
442
+ data_type=I04Filters,
443
+ )
dodal/beamlines/i10.py ADDED
@@ -0,0 +1,257 @@
1
+ from pathlib import Path
2
+
3
+ from dodal.common.beamlines.beamline_utils import device_instantiation
4
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
+ from dodal.devices.apple2_undulator import (
6
+ UndulatorGap,
7
+ UndulatorJawPhase,
8
+ UndulatorPhaseAxes,
9
+ )
10
+ from dodal.devices.i10.i10_apple2 import (
11
+ I10Apple2,
12
+ I10Apple2PGM,
13
+ I10Apple2Pol,
14
+ LinearArbitraryAngle,
15
+ )
16
+ from dodal.devices.i10.i10_setting_data import I10Grating
17
+ from dodal.devices.pgm import PGM
18
+ from dodal.log import set_beamline as set_log_beamline
19
+ from dodal.utils import BeamlinePrefix, get_beamline_name
20
+
21
+ BL = get_beamline_name("i10")
22
+ set_log_beamline(BL)
23
+ set_utils_beamline(BL)
24
+
25
+ LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
26
+ """
27
+ I10 has two insertion devices one up(idu) and one down stream(idd).
28
+ It is worth noting that the down stream device is slightly longer,
29
+ so it can reach Mn edge for linear arbitrary.
30
+ idd == id1
31
+ and
32
+ idu == id2.
33
+ """
34
+
35
+
36
+ def idd_gap(
37
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
38
+ ) -> UndulatorGap:
39
+ return device_instantiation(
40
+ device_factory=UndulatorGap,
41
+ name="idd_gap",
42
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
43
+ wait=wait_for_connection,
44
+ fake=fake_with_ophyd_sim,
45
+ bl_prefix=False,
46
+ )
47
+
48
+
49
+ def idd_phase_axes(
50
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
51
+ ) -> UndulatorPhaseAxes:
52
+ return device_instantiation(
53
+ device_factory=UndulatorPhaseAxes,
54
+ name="idd_phase_axes",
55
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
56
+ top_outer="RPQ1",
57
+ top_inner="RPQ2",
58
+ btm_inner="RPQ3",
59
+ btm_outer="RPQ4",
60
+ wait=wait_for_connection,
61
+ fake=fake_with_ophyd_sim,
62
+ bl_prefix=False,
63
+ )
64
+
65
+
66
+ def idd_jaw(
67
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
68
+ ) -> UndulatorJawPhase:
69
+ return device_instantiation(
70
+ device_factory=UndulatorJawPhase,
71
+ name="idd_jaw",
72
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
73
+ move_pv="RPQ1",
74
+ wait=wait_for_connection,
75
+ fake=fake_with_ophyd_sim,
76
+ bl_prefix=False,
77
+ )
78
+
79
+
80
+ def idu_gap(
81
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
82
+ ) -> UndulatorGap:
83
+ return device_instantiation(
84
+ device_factory=UndulatorGap,
85
+ name="idu_gap",
86
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
87
+ wait=wait_for_connection,
88
+ fake=fake_with_ophyd_sim,
89
+ bl_prefix=False,
90
+ )
91
+
92
+
93
+ def idu_phase_axes(
94
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
95
+ ) -> UndulatorPhaseAxes:
96
+ return device_instantiation(
97
+ device_factory=UndulatorPhaseAxes,
98
+ name="idu_phase_axes",
99
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
100
+ top_outer="RPQ1",
101
+ top_inner="RPQ2",
102
+ btm_inner="RPQ3",
103
+ btm_outer="RPQ4",
104
+ wait=wait_for_connection,
105
+ fake=fake_with_ophyd_sim,
106
+ bl_prefix=False,
107
+ )
108
+
109
+
110
+ def idu_jaw(
111
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
112
+ ) -> UndulatorJawPhase:
113
+ return device_instantiation(
114
+ device_factory=UndulatorJawPhase,
115
+ name="idu_jaw",
116
+ prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
117
+ move_pv="RPQ1",
118
+ wait=wait_for_connection,
119
+ fake=fake_with_ophyd_sim,
120
+ bl_prefix=False,
121
+ )
122
+
123
+
124
+ def pgm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> PGM:
125
+ return device_instantiation(
126
+ device_factory=PGM,
127
+ name="pgm",
128
+ prefix="-OP-PGM-01:",
129
+ grating=I10Grating,
130
+ gratingPv="NLINES2",
131
+ wait=wait_for_connection,
132
+ fake=fake_with_ophyd_sim,
133
+ )
134
+
135
+
136
+ def idu_gap_phase(
137
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
138
+ ) -> I10Apple2:
139
+ return device_instantiation(
140
+ device_factory=I10Apple2,
141
+ id_gap=idu_gap(wait_for_connection, fake_with_ophyd_sim),
142
+ id_phase=idu_phase_axes(wait_for_connection, fake_with_ophyd_sim),
143
+ id_jaw_phase=idu_jaw(wait_for_connection, fake_with_ophyd_sim),
144
+ energy_gap_table_path=Path(
145
+ LOOK_UPTABLE_DIR + "IDEnergy2GapCalibrations.csv",
146
+ ),
147
+ energy_phase_table_path=Path(
148
+ LOOK_UPTABLE_DIR + "IDEnergy2PhaseCalibrations.csv",
149
+ ),
150
+ source=("Source", "idu"),
151
+ name="idu_gap_phase",
152
+ prefix="",
153
+ wait=wait_for_connection,
154
+ fake=fake_with_ophyd_sim,
155
+ )
156
+
157
+
158
+ def idd_gap_phase(
159
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
160
+ ) -> I10Apple2:
161
+ return device_instantiation(
162
+ device_factory=I10Apple2,
163
+ id_gap=idd_gap(wait_for_connection, fake_with_ophyd_sim),
164
+ id_phase=idd_phase_axes(wait_for_connection, fake_with_ophyd_sim),
165
+ id_jaw_phase=idd_jaw(wait_for_connection, fake_with_ophyd_sim),
166
+ energy_gap_table_path=Path(
167
+ LOOK_UPTABLE_DIR + "IDEnergy2GapCalibrations.csv",
168
+ ),
169
+ energy_phase_table_path=Path(
170
+ LOOK_UPTABLE_DIR + "IDEnergy2PhaseCalibrations.csv",
171
+ ),
172
+ source=("Source", "idd"),
173
+ name="idd_gap_phase",
174
+ prefix="",
175
+ wait=wait_for_connection,
176
+ fake=fake_with_ophyd_sim,
177
+ )
178
+
179
+
180
+ def idu_pol(
181
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
182
+ ) -> I10Apple2Pol:
183
+ return device_instantiation(
184
+ device_factory=I10Apple2Pol,
185
+ prefix="",
186
+ id=idu_gap_phase(wait_for_connection, fake_with_ophyd_sim),
187
+ name="idu_pol",
188
+ wait=wait_for_connection,
189
+ fake=fake_with_ophyd_sim,
190
+ )
191
+
192
+
193
+ def idd_pol(
194
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
195
+ ) -> I10Apple2Pol:
196
+ return device_instantiation(
197
+ device_factory=I10Apple2Pol,
198
+ prefix="",
199
+ id=idd_gap_phase(wait_for_connection, fake_with_ophyd_sim),
200
+ name="idd_pol",
201
+ wait=wait_for_connection,
202
+ fake=fake_with_ophyd_sim,
203
+ )
204
+
205
+
206
+ def idu(
207
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
208
+ ) -> I10Apple2PGM:
209
+ return device_instantiation(
210
+ device_factory=I10Apple2PGM,
211
+ prefix="",
212
+ id=idu_gap_phase(wait_for_connection, fake_with_ophyd_sim),
213
+ pgm=pgm(wait_for_connection, fake_with_ophyd_sim),
214
+ name="idu",
215
+ wait=wait_for_connection,
216
+ fake=fake_with_ophyd_sim,
217
+ )
218
+
219
+
220
+ def idd(
221
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
222
+ ) -> I10Apple2PGM:
223
+ return device_instantiation(
224
+ device_factory=I10Apple2PGM,
225
+ prefix="",
226
+ id=idd_gap_phase(wait_for_connection, fake_with_ophyd_sim),
227
+ pgm=pgm(wait_for_connection, fake_with_ophyd_sim),
228
+ name="idd",
229
+ wait=wait_for_connection,
230
+ fake=fake_with_ophyd_sim,
231
+ )
232
+
233
+
234
+ def idu_la_angle(
235
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
236
+ ) -> LinearArbitraryAngle:
237
+ return device_instantiation(
238
+ device_factory=LinearArbitraryAngle,
239
+ prefix="",
240
+ id=idu(wait_for_connection, fake_with_ophyd_sim),
241
+ name="idu_la_angle",
242
+ wait=wait_for_connection,
243
+ fake=fake_with_ophyd_sim,
244
+ )
245
+
246
+
247
+ def idd_la_angle(
248
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
249
+ ) -> LinearArbitraryAngle:
250
+ return device_instantiation(
251
+ device_factory=LinearArbitraryAngle,
252
+ prefix="",
253
+ id=idu(wait_for_connection, fake_with_ophyd_sim),
254
+ name="idd_la_angle",
255
+ wait=wait_for_connection,
256
+ fake=fake_with_ophyd_sim,
257
+ )