dls-dodal 1.51.0__py3-none-any.whl → 1.52.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 (48) hide show
  1. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/METADATA +3 -2
  2. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/RECORD +45 -41
  3. dodal/_version.py +2 -2
  4. dodal/beamlines/b07.py +7 -6
  5. dodal/beamlines/b07_1.py +7 -6
  6. dodal/beamlines/i03.py +4 -1
  7. dodal/beamlines/i04.py +2 -2
  8. dodal/beamlines/i09.py +7 -5
  9. dodal/beamlines/i09_1.py +6 -3
  10. dodal/beamlines/i09_2.py +2 -2
  11. dodal/beamlines/i22.py +11 -0
  12. dodal/beamlines/i24.py +2 -2
  13. dodal/beamlines/p60.py +6 -4
  14. dodal/beamlines/p99.py +14 -0
  15. dodal/common/device_utils.py +45 -0
  16. dodal/devices/attenuator/attenuator.py +5 -3
  17. dodal/devices/b07/__init__.py +2 -2
  18. dodal/devices/b07/enums.py +24 -0
  19. dodal/devices/b07_1/__init__.py +2 -2
  20. dodal/devices/b07_1/enums.py +18 -0
  21. dodal/devices/electron_analyser/abstract/__init__.py +4 -0
  22. dodal/devices/electron_analyser/abstract/base_driver_io.py +21 -4
  23. dodal/devices/electron_analyser/abstract/base_region.py +20 -7
  24. dodal/devices/electron_analyser/detector.py +1 -1
  25. dodal/devices/electron_analyser/specs/detector.py +18 -4
  26. dodal/devices/electron_analyser/specs/driver_io.py +17 -5
  27. dodal/devices/electron_analyser/specs/region.py +9 -5
  28. dodal/devices/electron_analyser/types.py +21 -5
  29. dodal/devices/electron_analyser/vgscienta/detector.py +16 -7
  30. dodal/devices/electron_analyser/vgscienta/driver_io.py +13 -4
  31. dodal/devices/electron_analyser/vgscienta/region.py +11 -5
  32. dodal/devices/i09/__init__.py +2 -2
  33. dodal/devices/i09/enums.py +15 -0
  34. dodal/devices/i09_1/__init__.py +3 -0
  35. dodal/devices/i09_1/enums.py +19 -0
  36. dodal/devices/linkam3.py +25 -81
  37. dodal/devices/oav/pin_image_recognition/__init__.py +11 -14
  38. dodal/devices/p60/__init__.py +3 -2
  39. dodal/devices/p60/enums.py +10 -0
  40. dodal/devices/tetramm.py +134 -150
  41. dodal/devices/xbpm_feedback.py +6 -3
  42. dodal/devices/b07/grating.py +0 -9
  43. dodal/devices/b07_1/grating.py +0 -10
  44. dodal/devices/i09/grating.py +0 -7
  45. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/WHEEL +0 -0
  46. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/entry_points.txt +0 -0
  47. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/licenses/LICENSE +0 -0
  48. {dls_dodal-1.51.0.dist-info → dls_dodal-1.52.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.51.0
3
+ Version: 1.52.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
@@ -215,7 +215,8 @@ 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>=0.10.0a4
218
+ Requires-Dist: ophyd-async>=0.11
219
+ Requires-Dist: epicscorelibs<=7.0.7.99.1.2a1
219
220
  Requires-Dist: bluesky
220
221
  Requires-Dist: pyepics
221
222
  Requires-Dist: dataclasses-json
@@ -1,7 +1,7 @@
1
- dls_dodal-1.51.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1
+ dls_dodal-1.52.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
2
2
  dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
3
3
  dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
4
- dodal/_version.py,sha256=bIKVhfeJkgHBQ02QO68CDP3rWX1qe-o1xnMH5rP7lM0,513
4
+ dodal/_version.py,sha256=k4ECe4x0D1aLuvOAsB7afSDtXyH_iU-6kRlLtdcNd8M,513
5
5
  dodal/cli.py,sha256=NieWNUgLUxyck1rHoFAPJjX1xXLzHNdQ-s4wvxYFfps,3757
6
6
  dodal/log.py,sha256=Rt5O3hFZfMnJvQueZvgagQuXnPqHrFxhponOvVkpfrk,9871
7
7
  dodal/utils.py,sha256=rqQNalufZPxUPSD2SYuUgWSCpefb8FnqvR6N0t-YcEY,19675
@@ -12,17 +12,17 @@ dodal/beamlines/__init__.py,sha256=lueGFb7cW1kDB_LfFavhrgYdjqGErCwAOk5XoU3BY00,3
12
12
  dodal/beamlines/adsim.py,sha256=1RfxzvLkMWCoRnpFQNxnlvoWWGthuJvfHu-IsXv3GeE,1986
13
13
  dodal/beamlines/aithre.py,sha256=QpNIT9RVtlyamJoshAa87Cw5U0QfBNwMBcZVvMlD25s,1037
14
14
  dodal/beamlines/b01_1.py,sha256=ru5a2FJar2rUdA2PDEXpQ1fRZwyzEd5Uf76J5qZMVhY,2922
15
- dodal/beamlines/b07.py,sha256=rD0tczn94eDpuSdDTUWP1KQvTPi6Vtk6rGMIOC6ObV0,994
16
- dodal/beamlines/b07_1.py,sha256=soR_nF5aBbL0-WtYSoGVpEZcql7pH9vHKYycmVItu2U,998
15
+ dodal/beamlines/b07.py,sha256=YHqApRUu7yYZTWS9Y7YJpXRBLauMhhil_Rj4he7lLLI,1071
16
+ dodal/beamlines/b07_1.py,sha256=j_ChSI8PhB0MInU5HfLyC8aXtZqij_4zDspszmTAn7k,1075
17
17
  dodal/beamlines/b16.py,sha256=36VibkYciQL-K2G4PsDPVp2r460GTQlQPbSJ5vzLUVo,1724
18
18
  dodal/beamlines/b18.py,sha256=ryxrGtcCdwoFgZ8ljWYgr1g9gKvoA7nxkARVxl1IE78,1189
19
19
  dodal/beamlines/b21.py,sha256=hpPDPrRlgI3AAsZ2voymGynLlI8G4Oj0r0MOfaoQceM,4244
20
20
  dodal/beamlines/i02_1.py,sha256=d2IyqFMgeaSEyZYm7GMSjTKr7_02SakyC_oARx-XwnY,1204
21
- dodal/beamlines/i03.py,sha256=OYftBHUkKYUpcrs0KzzSkpjBI4gaA4YmMungixLkemA,15481
22
- dodal/beamlines/i04.py,sha256=ceL-GCalkKivPkrpZ0lBe4-khhrutodRlMacvemNrIw,13698
23
- dodal/beamlines/i09.py,sha256=NBdolMK26rkrM6nO1a9DydYCk_-MlfSzt40fRxzPvjY,1229
24
- dodal/beamlines/i09_1.py,sha256=6k2aQysaXm3VPHE79vhqJDbnUxii_L3oLbEBZ0wHwNA,920
25
- dodal/beamlines/i09_2.py,sha256=Bi7ty8dOTTQ_va_EsEbj7QUwlPgsUoXvL1VleaS4se8,721
21
+ dodal/beamlines/i03.py,sha256=Fvg2Ap1vfvHWK9TqsNvAWKoOvQl87NYskOu8i7794GU,15527
22
+ dodal/beamlines/i04.py,sha256=Eyq--oompg2hgT5LSjFaYza9O4ccJY43PKPfpGA7fGU,13707
23
+ dodal/beamlines/i09.py,sha256=Pc6LBZUdVqQROW1yX-J37ctXSzX4Xggb4iON2JwOctc,1317
24
+ dodal/beamlines/i09_1.py,sha256=yd0X62PtWIuBriH5y2oURaC23ot_13hX3_kFLerVczU,1045
25
+ dodal/beamlines/i09_2.py,sha256=lyYO1rOaIsXNuVOL39Psh-8jQjkhQBXEQMpbXa-Zcw0,713
26
26
  dodal/beamlines/i10.py,sha256=0rSWOlIihkDtq7ZZaJ5O2jkMBrteRYjl4Hhqe8EP1Yc,5697
27
27
  dodal/beamlines/i13_1.py,sha256=7GzkEM1wT5pKsAPNSVd6tSnCBEE-FSOEBQrP-pCpU10,1625
28
28
  dodal/beamlines/i18.py,sha256=FuU8G-q1piu6BRou-Shj3BQEbNtsF7CUsSIqqkvCKZc,3615
@@ -30,19 +30,20 @@ dodal/beamlines/i19_1.py,sha256=RsHXje1S2OLwuPnaqkRva02aAIq5Ya1FvPbHEQKo0Uc,2925
30
30
  dodal/beamlines/i19_2.py,sha256=zairZIPj1mrs9-dG19CjdMEFeqztGmlyeBmIxj7Kl5I,2329
31
31
  dodal/beamlines/i19_optics.py,sha256=RztOdru0lvPXpaIXSUfzSsPVIuwAMKZsEA8vJFU4_Mk,1184
32
32
  dodal/beamlines/i20_1.py,sha256=Xp6XXofjXh3Yibrg5wSHet-pXikprJ9oprEhJg19OkI,1825
33
- dodal/beamlines/i22.py,sha256=GMJiZRdtqxHZJVKVo3JNdRPmqcKnNjQj-kO6JPKDMHw,7759
33
+ dodal/beamlines/i22.py,sha256=4dm6vOJtXlr_Cu7kldw9okhic-di28yO1H6ce9tzBmE,8114
34
34
  dodal/beamlines/i23.py,sha256=pf3KmzLZYDVqUB4LkLcNJk6z9H4qkFpTdVB8_0MYehs,3066
35
- dodal/beamlines/i24.py,sha256=bDrszseW490WiReHkXIdsDj8m_HqMberHjDKuhEXQjk,7120
35
+ dodal/beamlines/i24.py,sha256=dfzf2ofVg1nu6Efy5zggVgHeYaYBqSVwYqgkbgb1wOQ,7104
36
36
  dodal/beamlines/k11.py,sha256=sBOl-MLk7FMo10KFykuK5aLqH1zyW4FnI0XXmtQhUfg,978
37
37
  dodal/beamlines/p38.py,sha256=bka6zsZfFiBAD-rrLSmIIVAOAw0FvupSkhOHGEG77xo,5708
38
38
  dodal/beamlines/p45.py,sha256=tQ7EkWfr7o2okK7Prw1C7DNGYdKPU2ofqjm98wu_-G0,2158
39
- dodal/beamlines/p60.py,sha256=KepKbrgMwwRRdIUmcgKgGtWaaZ-4Zp4_kdzH4zZW6E8,1086
40
- dodal/beamlines/p99.py,sha256=8AaUZPlqhwzgKHYMD2wT8x-8KNFwB9seuSwla59jlQE,2292
39
+ dodal/beamlines/p60.py,sha256=3M_ipMO4NzrNP89VjBc-nHfz-Eb5y45rohos1nHTrvI,1180
40
+ dodal/beamlines/p99.py,sha256=Rbi9OvmrGIblctOnZxFG_tqqhALLZ9O3ht4mBcb5vU8,2754
41
41
  dodal/beamlines/training_rig.py,sha256=0HeZYy4LkI1yU8joz40f241owLGB26CeCk7s8TW98zw,1902
42
42
  dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
43
43
  dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
44
44
  dodal/common/crystal_metadata.py,sha256=XGr-X81G9SZvPx5b4nBCH4FOnywyX_zYVy6zwDxIMVM,1926
45
45
  dodal/common/data_util.py,sha256=Z2DgxQl3AzTB940e_qYVDIHuu_9vWzpbycjKb62SFus,555
46
+ dodal/common/device_utils.py,sha256=3hWgLmESiF88fho9bCweZpZH6b5fbbuSZGuSEYXxl4E,1345
46
47
  dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
47
48
  dodal/common/types.py,sha256=fkL7UOwDbe3v2_VJ5f1W5RxR98Wx-Ra-LxUZWkNDtls,486
48
49
  dodal/common/udc_directory_provider.py,sha256=v5OBaCUwjtQZAsRQUw6LlVL58UvwwDO1l2MKlilXjdk,2403
@@ -70,7 +71,7 @@ dodal/devices/flux.py,sha256=1CDsq9yU2-ho8MfYBl50Tl9ABZwpUBHnV486PQXKNoQ,462
70
71
  dodal/devices/focusing_mirror.py,sha256=vdUPkwyCAZBSR3LQ-EojDOoxVy1ZmOaD_nevETbj7BA,6592
71
72
  dodal/devices/hutch_shutter.py,sha256=iY3qWxDr8mDlAvN_BYe2gqpXRM1hlfV3ewdwkwh0_v0,3889
72
73
  dodal/devices/ipin.py,sha256=eq5jlKw7WGQi8VLrAWpaAIsZmfiVf-5Q0td_B22H6A4,473
73
- dodal/devices/linkam3.py,sha256=2sf-_heIsDg4qmqae-w9C2Py8pG8bPB3mT0TFPQIzd0,3869
74
+ dodal/devices/linkam3.py,sha256=Lkw7c05XyHEEA83djfVFqz_8HN4kROCRqZwLwvHwRdA,2054
74
75
  dodal/devices/motors.py,sha256=-gNBsKQHqlYCEeq9cNmnSTdyLLaFX-AmPwfQlmUxdQA,3356
75
76
  dodal/devices/p45.py,sha256=CImflt7ifaOkV20Uip3S8_fde_GlIIhD16y-54ODfHE,1390
76
77
  dodal/devices/pgm.py,sha256=92yfr3i4fC92g-HPbbUBrazGs4b9n6CjmJfKxmUrMUY,1157
@@ -84,24 +85,24 @@ dodal/devices/slits.py,sha256=b_7ku2sHlzhMHTvWrwiRwee6ufrbxNX9JB_Z0lvk15o,1105
84
85
  dodal/devices/smargon.py,sha256=uTO01FNToL_4FL6XIcH9WxGZmQB-SP4ujkZU6ChS-3U,5823
85
86
  dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
86
87
  dodal/devices/synchrotron.py,sha256=wLfClZ1lYQWA_D--UsM3NnKLG8bY8mvVsRYER6ob-Ew,2026
87
- dodal/devices/tetramm.py,sha256=cvlXiKwrvVgYNb3Kt2b_YyRMT5-fqMoKJrOGFNNR150,8643
88
+ dodal/devices/tetramm.py,sha256=EDAEqGp7TT291_-kDUnJxucLJmSa5NpJLCa961zl9B8,8401
88
89
  dodal/devices/thawer.py,sha256=mYrO9klUPYcSbpoUuJ4ZuZZEPcHWWaZ2px5jh8XNQ9Y,1675
89
90
  dodal/devices/turbo_slit.py,sha256=xhcnhfbdcTYSYozogw6Li4fF4ofoPsc350rEyrRdaNE,1460
90
91
  dodal/devices/undulator.py,sha256=ZCdMQ8PKnW7mFV1BmrprOt0aSBCZMSKAH-2yyVH5Ihk,5316
91
92
  dodal/devices/watsonmarlow323_pump.py,sha256=rwU94YE6esgGLYdh-pe8nBo_3tvgp6brrrbPDrqp5_M,1406
92
93
  dodal/devices/webcam.py,sha256=mef075ynDbzZ4pNAjfxR_9tdTTqF_rM7hAOVEEOV-Do,2408
93
- dodal/devices/xbpm_feedback.py,sha256=j8MHhhE0feoe6R54zPKqS5EbQ0bEDR-nOpLHzHhnHHQ,1156
94
+ dodal/devices/xbpm_feedback.py,sha256=TBvT_H8vUjM1mpxQujuuAanzQ__JhRaS_6hFSqFt4fc,1283
94
95
  dodal/devices/aithre_lasershaping/goniometer.py,sha256=a3MMFs7ZBSa0eAEXOtlLX5uVbS99MZoDNENQdR84Rn0,1746
95
96
  dodal/devices/aithre_lasershaping/laser_robot.py,sha256=BPAHHRa9cYYSR4iv05CQEqRBjt1VKp0INSoVDg0ImRQ,763
96
97
  dodal/devices/areadetector/plugins/CAM.py,sha256=sZzJm5Ez3eWfXZi_EB67wluhZmMQm1UyOc2bJFfzd1U,964
97
98
  dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33KyntuLepbF0YmX0KE,3031
98
- dodal/devices/attenuator/attenuator.py,sha256=Vq9Zsyf56S5fePHGeluImTUtxdwEqttBa2YBIdU5tJU,3993
99
+ dodal/devices/attenuator/attenuator.py,sha256=XHdRMvq9t0DKJVDxkz-oXMAS3Dt4mbfO_H-x8fGmk_4,4071
99
100
  dodal/devices/attenuator/filter.py,sha256=ZoPsTWXjllyMtKBdSIFLB7Cbc88rGof5k3ymL13VczE,422
100
101
  dodal/devices/attenuator/filter_selections.py,sha256=lcmTprCXgSggp2L6uQ6YU0xLMljXvbspAug-WWKCXks,1410
101
- dodal/devices/b07/__init__.py,sha256=VZfYvg9YkIRC47uqQwe0OpnQT1mLoCHnaej5LIY7nXc,77
102
- dodal/devices/b07/grating.py,sha256=AY3LZUQaNTohT93M0Qam0H1OYOkwziUUXYb2VsqXy6A,217
103
- dodal/devices/b07_1/__init__.py,sha256=xBXYQrDNjeGDHlGjacgopo1cQX-LRcy9UfXLZik7Qls,79
104
- dodal/devices/b07_1/grating.py,sha256=8fAvh6psQ9YQs5tdQ203KIa8pyZld3ZmfmGtTUl-P44,242
102
+ dodal/devices/b07/__init__.py,sha256=guVqpxADiFcNmCwTVRu8MV0rXqpd1MMm5VY47G3DUNU,89
103
+ dodal/devices/b07/enums.py,sha256=ieqwv3XBQknSZ9rCZHIU03-MDOb-zwSq1sGmVIzxkak,770
104
+ dodal/devices/b07_1/__init__.py,sha256=VtOz6qLTEig66rC8L53vZf9V_TpcVAtoZUADqKskH88,91
105
+ dodal/devices/b07_1/enums.py,sha256=ASdDLDZ1fHfO6-yTBhbQWeBKoyotI2o0g9BPWf6WDV8,480
105
106
  dodal/devices/b16/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
107
  dodal/devices/b16/detector.py,sha256=nj0Xl8uleGtD_sk6tN-h7ipAtfz-e-c-DKWVwk_xXuY,1067
107
108
  dodal/devices/current_amplifiers/__init__.py,sha256=-MhT-t-GJ83rrvTDBCoWub_NKYkRtu4sEj8-y5XZBP0,782
@@ -117,24 +118,24 @@ dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32Hdr
117
118
  dodal/devices/detector/detector.py,sha256=DqQvlgdjIdKErrZqgM9IH7drc-r6N8nhkFk7KwlgYAk,4815
118
119
  dodal/devices/detector/detector_motion.py,sha256=Y14WORa6KaUHkm3u6Y7brH_WwH9UoutThKaxiDTaSnQ,1545
119
120
  dodal/devices/electron_analyser/__init__.py,sha256=xbOqt6b0J89UkZx6PAqEjPchfY_CMb3xgX3NAMEPf6A,793
120
- dodal/devices/electron_analyser/detector.py,sha256=0Hh6sSvBS26977oVHbUq2SeSJtjAtCcyhgJZeqVh_10,4207
121
+ dodal/devices/electron_analyser/detector.py,sha256=4pXBhhBnGSO-2Xb30f8NiqZ_6dQaJTbWZ1OgHH6ASQA,4213
121
122
  dodal/devices/electron_analyser/enums.py,sha256=2QObyZln7pvWyLgixabGGWvfs3aIF98gVSz2B4NS1OM,120
122
- dodal/devices/electron_analyser/types.py,sha256=k_uRDdHzx3sZQ11KB5PNTDQjxuGL91B3-l6sRuKdHHo,1026
123
+ dodal/devices/electron_analyser/types.py,sha256=48hJN994YmIC1y-8L4aCK22NbWsVbK7SNGbH3ffG2tE,1586
123
124
  dodal/devices/electron_analyser/util.py,sha256=iUFvnYm-Y-0mBHR8oBLofZMKKuDhYYgGkOmvX6y1s1o,437
124
- dodal/devices/electron_analyser/abstract/__init__.py,sha256=OJ8rm_23azSe-MHmiyQZEUztqDnew4bRTdC2eVaiHT4,572
125
+ dodal/devices/electron_analyser/abstract/__init__.py,sha256=iwDxHN4yViS05679-aB6RwM2ZINgXrpebdfDgqoLxfI,650
125
126
  dodal/devices/electron_analyser/abstract/base_detector.py,sha256=Tcx-lrqHr7dkGmOPMSVibZypefddRauQU_1cZTIwaVU,2979
126
- dodal/devices/electron_analyser/abstract/base_driver_io.py,sha256=L2ToXCohnDnIpB8fZQS9ILIF8lo9W4SVBVy3n3rZPgQ,8665
127
- dodal/devices/electron_analyser/abstract/base_region.py,sha256=KI4Nk1w9V_1p71wdqLS7IMoal54QPejghDUO4FEdWuw,3648
127
+ dodal/devices/electron_analyser/abstract/base_driver_io.py,sha256=hOUyZxEzNhorCt03i2WJAkCdgHvSrjQJgO4AiFyXON8,9458
128
+ dodal/devices/electron_analyser/abstract/base_region.py,sha256=TqCUJLtJGH3jvTMYmUJfwhRyCPJIfndIfrz2QQmP3Hs,3991
128
129
  dodal/devices/electron_analyser/specs/__init__.py,sha256=qN57kY6ERUGdrAWhU5m8CBrc0KaqiOGwPL6h2BNm3i0,291
129
- dodal/devices/electron_analyser/specs/detector.py,sha256=zYu7e5Ob0f8L3cHr-hjv78q2V1_15dwWJ78523Nnrzc,664
130
- dodal/devices/electron_analyser/specs/driver_io.py,sha256=rIBfnTXxZZGlMArUDxxo_MCr84pfXNszTZbef8WBXak,3449
130
+ dodal/devices/electron_analyser/specs/detector.py,sha256=1Pk_-hup-gtpK1SqvTh0y32_rOL_Wjl2zj6Ux7yjrB4,1007
131
+ dodal/devices/electron_analyser/specs/driver_io.py,sha256=oZuVDMJnZx4ywFpx8-vv76TPDRNOWcgOVPkXjdfehvY,3836
131
132
  dodal/devices/electron_analyser/specs/enums.py,sha256=cXPcbIGEN5ZJJt1KeiNJEtZkkcjQ-fz7dBfsU283zYQ,235
132
- dodal/devices/electron_analyser/specs/region.py,sha256=hBxrMUJrzOoJGInULEbAdnhBL74fFe7R6-c7nde8nPE,977
133
+ dodal/devices/electron_analyser/specs/region.py,sha256=5zmSxnilFxlsfu165hhj84eqC2C7dwQ4x49OL6umVSw,1171
133
134
  dodal/devices/electron_analyser/vgscienta/__init__.py,sha256=Iq0d2BBp0TJh4uG9twiiL-gJiSVI8zNUEbkg1UF5k6U,395
134
- dodal/devices/electron_analyser/vgscienta/detector.py,sha256=3hD8dPMW6Oz76ZpRUwYSVCwGzuOw8qhaSdPF3B5Z3fE,754
135
- dodal/devices/electron_analyser/vgscienta/driver_io.py,sha256=pThghZHEive80hqY7Gv_QBYcXv4OKOnn4M56uHSRze8,2720
135
+ dodal/devices/electron_analyser/vgscienta/detector.py,sha256=k4qXrew9MMoDjSRYXEzqqoC_Ep2RU4xHPvJDD4c31Fw,1052
136
+ dodal/devices/electron_analyser/vgscienta/driver_io.py,sha256=Qs0ccWkpa8xp7VbFXKEscWzi6z1ZCHhZ-oxu-Kemn9k,2974
136
137
  dodal/devices/electron_analyser/vgscienta/enums.py,sha256=apJZgIaE1aMQPBwIL1tQvV0WJ5trbk3j6iFmc1OqLsw,353
137
- dodal/devices/electron_analyser/vgscienta/region.py,sha256=URXuHIkKQW-heejweTodoG-tM1XwWj9tPJwTWxpm-DY,2242
138
+ dodal/devices/electron_analyser/vgscienta/region.py,sha256=ES4fRVQnacsrbO0Yyt9Nm3mRXnZ1dEK4sYGgnVdM1M4,2372
138
139
  dodal/devices/i03/__init__.py,sha256=Kvukapy4a5lUQ20qaCqYCJzKNaqJn2DfXP5nKZ_Pec8,118
139
140
  dodal/devices/i03/dcm.py,sha256=zDcgxOdMRVOQZBGDsLaIlr7o4UJIK2vehPWHxAxt6VA,2268
140
141
  dodal/devices/i03/undulator_dcm.py,sha256=c5H-17Dpt3pIMAlU9fHCnU59lYDnmgKk3qE2qR9gg44,2594
@@ -142,9 +143,11 @@ dodal/devices/i04/__init__.py,sha256=Kvukapy4a5lUQ20qaCqYCJzKNaqJn2DfXP5nKZ_Pec8
142
143
  dodal/devices/i04/constants.py,sha256=_Dw28NeXldwRYH-h6YP6OHnyj7h0z4NQs_-RysNby5Q,281
143
144
  dodal/devices/i04/murko_results.py,sha256=1vVQKQdBGYAwcX22oQzWYheelIppoTQk5_git563y10,7055
144
145
  dodal/devices/i04/transfocator.py,sha256=sVI4Bgv-2-DH4-F1nIXMp5Aktevrm3agZnCA-WgjmW8,3780
145
- dodal/devices/i09/__init__.py,sha256=dBGF2yRW78BJc03VSSjgv0SsiKVaLmO48xS9Ht_bfYA,120
146
+ dodal/devices/i09/__init__.py,sha256=hx3z7IQHPljjnVJaBkyaQgLnUjH3oGlDSFMYf_rImsw,134
146
147
  dodal/devices/i09/dcm.py,sha256=u0OgfZUE-eFQc-ix7iIfXERZhymAMXHP-Eifu2xWhYA,996
147
- dodal/devices/i09/grating.py,sha256=i17tUlgXGKc2Ynclj7N6hpmPR9wDIw8w8m95SwzkouM,153
148
+ dodal/devices/i09/enums.py,sha256=74X4ulgqGaEtX6qeftHXPk6E0jU_5FTbFYYZJHgFoK8,332
149
+ dodal/devices/i09_1/__init__.py,sha256=dHSHXpFiPV499ndzxy-VSi7eTuYtwzfMThj_VxS0lYA,52
150
+ dodal/devices/i09_1/enums.py,sha256=hxDclEbSgqWyqtIbvfFYHgDfTmkmdm4m6di7rjccPDk,708
148
151
  dodal/devices/i10/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
152
  dodal/devices/i10/diagnostics.py,sha256=5nnf1oFKtUJZa9Pewh1VxXpFecLscqTR2VakHKr_PaQ,5432
150
153
  dodal/devices/i10/i10_apple2.py,sha256=RbavLeqwmmcqAkGJw9-0AmLrWSiP91tAxwJLnXXCY-4,15271
@@ -185,14 +188,15 @@ dodal/devices/oav/oav_detector.py,sha256=DzRm1d1jC52wl7JawvMWiFCaFYdnjO7HT690NzD
185
188
  dodal/devices/oav/oav_parameters.py,sha256=nnlTwrX5F6eMVK6wUz_MU39aLfV_P-_EyklfTQFAjZ4,6856
186
189
  dodal/devices/oav/oav_to_redis_forwarder.py,sha256=Nz_fOBK9NIsFTVO-G67JB-0qzDybWb_HS7RCkqrHfd8,6265
187
190
  dodal/devices/oav/utils.py,sha256=T-xg7J38ritzXwRrKjsWZ7daC_qR7aNhlbkXx75nJ8Q,3188
188
- dodal/devices/oav/pin_image_recognition/__init__.py,sha256=_eCq-rEtGNXVfrpahfKMLu53lEr49q5rtVqg0GhiODQ,6534
191
+ dodal/devices/oav/pin_image_recognition/__init__.py,sha256=fpUZYUHgp6pOSt0UzmQvGdUrSwxH0knA0mP8eAlYMCw,6398
189
192
  dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
190
193
  dodal/devices/oav/pin_image_recognition/utils.py,sha256=L9ypluYqeOFoS7gQuws-vTNc8LqaKl2ZIDNeQ2JaNpg,8592
191
194
  dodal/devices/oav/snapshots/grid_overlay.py,sha256=CdvCdTKMCiwMwxm2lV28KpcIUSXlscZmWxb73_KKmiI,3694
192
195
  dodal/devices/oav/snapshots/snapshot.py,sha256=VDHYxko97sATMKvD5wClgvN7WQUtUAjcXXSyoQAL8q8,499
193
196
  dodal/devices/oav/snapshots/snapshot_image_processing.py,sha256=wDxH9WPmB0nsotr49PUpw2Ke4l4RFxirrbpPzOUF9s4,2318
194
197
  dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=KAM7KjF0BzhGxx-MXd4Zc16IBbi1BF8S_VT8T84_2OY,2309
195
- dodal/devices/p60/__init__.py,sha256=XsrXi-4D-zlgKzwCcrTM0UL6H51NYVn-78ETQsjcPv0,137
198
+ dodal/devices/p60/__init__.py,sha256=2d2CN4ssnsmjwQO_XjFFltq_q_ouFIpKMDM0xG2zmxE,160
199
+ dodal/devices/p60/enums.py,sha256=wsgbBI7JamTQ29d_U_F4FR-nmqktdjsG1GjMl1p-7t8,286
196
200
  dodal/devices/p60/lab_xray_source.py,sha256=4rruJ4yCT8c7QFDqkd6szsrJhLGOauAOh6Y25K-Vz-E,595
197
201
  dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
202
  dodal/devices/p99/andor2_point.py,sha256=zBoIou7VVzs-tAq3M29XL2xYV8aYZRKPYCGKRLk7MA0,1417
@@ -227,8 +231,8 @@ dodal/plans/verify_undulator_gap.py,sha256=OcDN09-eCoMzsmhKGxvzsH5EapG2zYz0yGCqU
227
231
  dodal/plans/wrapped.py,sha256=BPMw__RcWvk9v5XnhMsi9_k4KsDEbmXogzD2n1ecbUg,2098
228
232
  dodal/plans/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
233
  dodal/plans/preprocessors/verify_undulator_gap.py,sha256=cBZEGq8TW1jrXFXB00iClQVXSEaE_jP_rHMY9WTgYyY,1813
230
- dls_dodal-1.51.0.dist-info/METADATA,sha256=1MFj5q0Et6Ayr7fvZf7Jc_baoKQzrrNQAoi_r1PhBHQ,16793
231
- dls_dodal-1.51.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
232
- dls_dodal-1.51.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
233
- dls_dodal-1.51.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
234
- dls_dodal-1.51.0.dist-info/RECORD,,
234
+ dls_dodal-1.52.0.dist-info/METADATA,sha256=vs_ZKznKwlZf-Jqw5-D72xP7PWzHnUInwAiLTImGIQs,16834
235
+ dls_dodal-1.52.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
236
+ dls_dodal-1.52.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
237
+ dls_dodal-1.52.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
238
+ dls_dodal-1.52.0.dist-info/RECORD,,
dodal/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.51.0'
21
- __version_tuple__ = version_tuple = (1, 51, 0)
20
+ __version__ = version = '1.52.0'
21
+ __version_tuple__ = version_tuple = (1, 52, 0)
dodal/beamlines/b07.py CHANGED
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.b07 import B07BGrating
5
+ from dodal.devices.b07 import Grating, LensMode
6
6
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
@@ -22,12 +22,13 @@ def synchrotron() -> Synchrotron:
22
22
 
23
23
  @device_factory()
24
24
  def pgm() -> PGM:
25
- return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=B07BGrating)
25
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=Grating)
26
26
 
27
27
 
28
28
  @device_factory()
29
- def analyser_driver() -> SpecsAnalyserDriverIO:
30
- return SpecsAnalyserDriverIO(
31
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
- {"source1": pgm().energy.user_readback},
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": pgm().energy.user_readback},
33
34
  )
dodal/beamlines/b07_1.py CHANGED
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.b07_1 import B07CGrating
5
+ from dodal.devices.b07_1 import Grating, LensMode
6
6
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
@@ -22,12 +22,13 @@ def synchrotron() -> Synchrotron:
22
22
 
23
23
  @device_factory()
24
24
  def pgm() -> PGM:
25
- return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=B07CGrating)
25
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", grating=Grating)
26
26
 
27
27
 
28
28
  @device_factory()
29
- def analyser_driver() -> SpecsAnalyserDriverIO:
30
- return SpecsAnalyserDriverIO(
31
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
- {"source1": pgm().energy.user_readback},
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": pgm().energy.user_readback},
33
34
  )
dodal/beamlines/i03.py CHANGED
@@ -92,7 +92,10 @@ def attenuator() -> BinaryFilterAttenuator:
92
92
  """Get the i03 attenuator device, instantiate it if it hasn't already been.
93
93
  If this is called when already instantiated in i03, it will return the existing object.
94
94
  """
95
- return BinaryFilterAttenuator(f"{PREFIX.beamline_prefix}-EA-ATTN-01:")
95
+ return BinaryFilterAttenuator(
96
+ prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
97
+ num_filters=16,
98
+ )
96
99
 
97
100
 
98
101
  @device_factory()
dodal/beamlines/i04.py CHANGED
@@ -137,8 +137,8 @@ def attenuator() -> BinaryFilterAttenuator:
137
137
  If this is called when already instantiated in i04, it will return the existing object.
138
138
  """
139
139
  return BinaryFilterAttenuator(
140
- f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
141
- "attenuator",
140
+ prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
141
+ num_filters=16,
142
142
  )
143
143
 
144
144
 
dodal/beamlines/i09.py CHANGED
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.vgscienta import VGScientaAnalyserDriverIO
6
- from dodal.devices.i09 import DCM, I09Grating
6
+ from dodal.devices.i09 import DCM, Grating, LensMode
7
7
  from dodal.devices.pgm import PGM
8
8
  from dodal.devices.synchrotron import Synchrotron
9
9
  from dodal.log import set_beamline as set_log_beamline
@@ -24,7 +24,7 @@ def synchrotron() -> Synchrotron:
24
24
  def pgm() -> PGM:
25
25
  return PGM(
26
26
  prefix=f"{BeamlinePrefix(BL, suffix='J').beamline_prefix}-MO-PGM-01:",
27
- grating=I09Grating,
27
+ grating=Grating,
28
28
  )
29
29
 
30
30
 
@@ -34,11 +34,13 @@ def dcm() -> DCM:
34
34
 
35
35
 
36
36
  @device_factory()
37
- def analyser_driver() -> VGScientaAnalyserDriverIO:
37
+ def analyser_driver() -> VGScientaAnalyserDriverIO[LensMode]:
38
38
  energy_sources = {
39
39
  "source1": pgm().energy.user_readback,
40
40
  "source2": dcm().energy_in_ev,
41
41
  }
42
- return VGScientaAnalyserDriverIO(
43
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:", energy_sources
42
+ return VGScientaAnalyserDriverIO[LensMode](
43
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
44
+ lens_mode_type=LensMode,
45
+ energy_sources=energy_sources,
44
46
  )
dodal/beamlines/i09_1.py CHANGED
@@ -4,6 +4,7 @@ from dodal.common.beamlines.beamline_utils import (
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
6
6
  from dodal.devices.i09.dcm import DCM
7
+ from dodal.devices.i09_1 import LensMode
7
8
  from dodal.devices.synchrotron import Synchrotron
8
9
  from dodal.log import set_beamline as set_log_beamline
9
10
  from dodal.utils import BeamlinePrefix, get_beamline_name
@@ -25,7 +26,9 @@ def dcm() -> DCM:
25
26
 
26
27
 
27
28
  @device_factory()
28
- def analyser_driver() -> SpecsAnalyserDriverIO:
29
- return SpecsAnalyserDriverIO(
30
- f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:", {"source1": dcm().energy_in_ev}
29
+ def analyser_driver() -> SpecsAnalyserDriverIO[LensMode]:
30
+ return SpecsAnalyserDriverIO[LensMode](
31
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:",
32
+ lens_mode_type=LensMode,
33
+ energy_sources={"source1": dcm().energy_in_ev},
31
34
  )
dodal/beamlines/i09_2.py CHANGED
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.i09.grating import I09Grating
5
+ from dodal.devices.i09.enums import Grating
6
6
  from dodal.devices.pgm import PGM
7
7
  from dodal.devices.synchrotron import Synchrotron
8
8
  from dodal.log import set_beamline as set_log_beamline
@@ -21,4 +21,4 @@ def synchrotron() -> Synchrotron:
21
21
 
22
22
  @device_factory()
23
23
  def pgm() -> PGM:
24
- return PGM(prefix=f"{PREFIX.beamline_prefix}-MO-PGM-01:", grating=I09Grating)
24
+ return PGM(prefix=f"{PREFIX.beamline_prefix}-MO-PGM-01:", grating=Grating)
dodal/beamlines/i22.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from pathlib import Path
2
2
 
3
3
  from ophyd_async.epics.adaravis import AravisDetector
4
+ from ophyd_async.epics.adcore import NDPluginStatsIO
4
5
  from ophyd_async.epics.adpilatus import PilatusDetector
5
6
  from ophyd_async.fastcs.panda import HDFPanda
6
7
 
@@ -101,6 +102,11 @@ def i0() -> TetrammDetector:
101
102
  prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:",
102
103
  path_provider=get_path_provider(),
103
104
  type="Cividec Diamond XBPM",
105
+ plugins={
106
+ "stats": NDPluginStatsIO(
107
+ prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:SumAll:"
108
+ )
109
+ },
104
110
  )
105
111
 
106
112
 
@@ -110,6 +116,11 @@ def it() -> TetrammDetector:
110
116
  prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:",
111
117
  path_provider=get_path_provider(),
112
118
  type="PIN Diode",
119
+ plugins={
120
+ "stats": NDPluginStatsIO(
121
+ prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:SumAll:"
122
+ )
123
+ },
113
124
  )
114
125
 
115
126
 
dodal/beamlines/i24.py CHANGED
@@ -32,7 +32,7 @@ ZOOM_PARAMS_FILE = (
32
32
  DISPLAY_CONFIG = "/dls_sw/i24/software/gda_versions/var/display.configuration"
33
33
 
34
34
 
35
- BL = get_beamline_name("s24")
35
+ BL = get_beamline_name("i24")
36
36
  set_log_beamline(BL)
37
37
  set_utils_beamline(BL)
38
38
 
@@ -149,7 +149,7 @@ def pmac() -> PMAC:
149
149
  )
150
150
 
151
151
 
152
- @device_factory(skip=BL == "s24")
152
+ @device_factory()
153
153
  def oav() -> OAVBeamCentreFile:
154
154
  return OAVBeamCentreFile(
155
155
  prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
dodal/beamlines/p60.py CHANGED
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.electron_analyser.vgscienta import VGScientaAnalyserDriverIO
6
- from dodal.devices.p60 import LabXraySource, LabXraySourceReadable
6
+ from dodal.devices.p60 import LabXraySource, LabXraySourceReadable, LensMode
7
7
  from dodal.log import set_beamline as set_log_beamline
8
8
  from dodal.utils import BeamlinePrefix, get_beamline_name
9
9
 
@@ -24,11 +24,13 @@ def mg_kalpha_source() -> LabXraySourceReadable:
24
24
 
25
25
 
26
26
  @device_factory()
27
- def analyser_driver() -> VGScientaAnalyserDriverIO:
27
+ def analyser_driver() -> VGScientaAnalyserDriverIO[LensMode]:
28
28
  energy_sources = {
29
29
  "source1": al_kalpha_source().energy_ev,
30
30
  "source2": mg_kalpha_source().energy_ev,
31
31
  }
32
- return VGScientaAnalyserDriverIO(
33
- f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:", energy_sources
32
+ return VGScientaAnalyserDriverIO[LensMode](
33
+ prefix=f"{PREFIX.beamline_prefix}-EA-DET-01:CAM:",
34
+ lens_mode_type=LensMode,
35
+ energy_sources=energy_sources,
34
36
  )
dodal/beamlines/p99.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from pathlib import Path
2
2
 
3
3
  from ophyd_async.epics.adandor import Andor2Detector
4
+ from ophyd_async.fastcs.panda import HDFPanda
4
5
 
5
6
  from dodal.common.beamlines.beamline_utils import (
6
7
  device_factory,
@@ -76,3 +77,16 @@ def andor2_point() -> Andor2Point:
76
77
  drv_suffix=CAM_SUFFIX,
77
78
  read_uncached={"mean": "STAT:MeanValue_RBV", "total": "STAT:Total_RBV"},
78
79
  )
80
+
81
+
82
+ @device_factory()
83
+ def panda() -> HDFPanda:
84
+ """
85
+ The Panda device is connected to two PMAC motors for position comparison under
86
+ the pcomp[1] and pcomp[2] blocks, which handle positive and negative directions.
87
+ This setup is used for triggering detectors during a flyscan.
88
+ """
89
+ return HDFPanda(
90
+ f"{PREFIX.beamline_prefix}-MO-PANDA-01:",
91
+ path_provider=get_path_provider(),
92
+ )
@@ -0,0 +1,45 @@
1
+ from asyncio import CancelledError, create_task, sleep
2
+ from contextlib import asynccontextmanager
3
+
4
+ from dodal.log import LOGGER
5
+
6
+
7
+ @asynccontextmanager
8
+ async def periodic_reminder(
9
+ message: str = "Waiting",
10
+ schedule: tuple[tuple[int | float, int | None], ...] = ( # seconds, frequency
11
+ (1, 3),
12
+ (5, 3),
13
+ (60, 5),
14
+ (300, 5),
15
+ (1800, 5),
16
+ (3600, None),
17
+ ),
18
+ ):
19
+ """Periodically logs a message according to a schedule with increasing delays.
20
+
21
+ Args:
22
+ message: The message the user wants to output through logging.
23
+ schedule: A tuple list of tuples consisting of (int|float, int|None).
24
+ A sequence of (delay_seconds, count) pairs defining the logging intervals.
25
+ - delay_seconds is the number of seconds to wait between logs.
26
+ - count is how many times to log at this interval. If count is None, it logs indefinitely at that delay.
27
+ """
28
+
29
+ async def _log_loop():
30
+ for delay, count in schedule:
31
+ n = 0
32
+ while count is None or n < count:
33
+ LOGGER.info(message)
34
+ await sleep(delay)
35
+ n += 1
36
+
37
+ task = create_task(_log_loop())
38
+ try:
39
+ yield
40
+ finally:
41
+ task.cancel()
42
+ try:
43
+ await task
44
+ except CancelledError:
45
+ pass
@@ -39,10 +39,12 @@ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
39
39
  Where desired_transmission is fraction e.g. 0-1. When the actual_transmission is
40
40
  read from the device it is also fractional"""
41
41
 
42
- def __init__(self, prefix: str, name: str = ""):
42
+ def __init__(self, prefix: str, num_filters: int, name: str = ""):
43
43
  self._calculated_filter_states: DeviceVector[SignalR[int]] = DeviceVector(
44
44
  {
45
- int(digit, 16): epics_signal_r(int, f"{prefix}DEC_TO_BIN.B{digit}")
45
+ int(digit, num_filters): epics_signal_r(
46
+ int, f"{prefix}DEC_TO_BIN.B{digit}"
47
+ )
46
48
  for digit in string.hexdigits
47
49
  if not digit.islower()
48
50
  }
@@ -50,7 +52,7 @@ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
50
52
  self._filters_in_position: DeviceVector[SignalR[bool]] = DeviceVector(
51
53
  {
52
54
  i - 1: epics_signal_r(bool, f"{prefix}FILTER{i}:INLIM")
53
- for i in range(1, 17)
55
+ for i in range(1, num_filters + 1)
54
56
  }
55
57
  )
56
58
 
@@ -1,3 +1,3 @@
1
- from dodal.devices.b07.grating import B07BGrating
1
+ from dodal.devices.b07.enums import Grating, LensMode
2
2
 
3
- __all__ = ["B07BGrating"]
3
+ __all__ = ["Grating", "LensMode"]
@@ -0,0 +1,24 @@
1
+ from ophyd_async.core import StrictEnum, SupersetEnum
2
+
3
+
4
+ class Grating(StrictEnum):
5
+ NI_400 = "400 l/mm Ni"
6
+ NI_1000 = "1000 l/mm Ni"
7
+ PT_600 = "BAD 600 l/mm Pt"
8
+ AU_600 = "600 l/mm Au"
9
+ NO_GRATING = "No Grating"
10
+
11
+
12
+ class LensMode(SupersetEnum):
13
+ LARGE_AREA = "LargeArea"
14
+ HIGH_MAGNIFICATION = "HighMagnification"
15
+ MEDIUM_MAGNIFICATION = "MediumMagnification"
16
+ LOW_MAGNIFICATION = "LowMagnification"
17
+ MEDIUM_ANGULAR_DISPERSION = "MediumAngularDispersion"
18
+ LOW_ANGULAR_DISPERSION = "LowAngularDispersion"
19
+ HIGH_ANGULAR_DISPERSION = "HighAngularDispersion"
20
+ WIDE_ANGLE_MODE = "WideAngleMode"
21
+ MEDIUM_AREA = "MediumArea"
22
+ SMALL_AREA = "SmallArea"
23
+ HIGH_MAGNIFICATION2 = "HighMagnification2"
24
+ NOT_CONNECTED = "Not connected"
@@ -1,3 +1,3 @@
1
- from dodal.devices.b07_1.grating import B07CGrating
1
+ from dodal.devices.b07_1.enums import Grating, LensMode
2
2
 
3
- __all__ = ["B07CGrating"]
3
+ __all__ = ["Grating", "LensMode"]
@@ -0,0 +1,18 @@
1
+ from ophyd_async.core import StrictEnum, SupersetEnum
2
+
3
+
4
+ class Grating(StrictEnum):
5
+ AU_400 = "400 l/mm Au"
6
+ AU_600 = "600 l/mm Au"
7
+ PT_600 = "600 l/mm Pt"
8
+ AU_1200 = "1200 l/mm Au"
9
+ ML_1200 = "1200 l/mm ML"
10
+ NO_GRATING = "No Grating"
11
+
12
+
13
+ class LensMode(SupersetEnum):
14
+ SMALL_AREA = "SmallArea"
15
+ ANGLE_RESOLVED_MODE_22 = "AngleResolvedMode22"
16
+ ANGLE_RESOLVED_MODE_30 = "AngleResolvedMode30"
17
+ LARGE_AREA = "LargeArea"
18
+ NOT_CONNECTED = "Not connected"
@@ -8,6 +8,8 @@ from .base_region import (
8
8
  AbstractBaseSequence,
9
9
  TAbstractBaseRegion,
10
10
  TAbstractBaseSequence,
11
+ TAcquisitionMode,
12
+ TLensMode,
11
13
  )
12
14
 
13
15
  __all__ = [
@@ -15,6 +17,8 @@ __all__ = [
15
17
  "AbstractBaseSequence",
16
18
  "TAbstractBaseRegion",
17
19
  "TAbstractBaseSequence",
20
+ "TAcquisitionMode",
21
+ "TLensMode",
18
22
  "AbstractAnalyserDriverIO",
19
23
  "AbstractElectronAnalyserDetector",
20
24
  "AbstractAnalyserDriverIO",