dls-dodal 1.32.0__py3-none-any.whl → 1.34.1__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 (55) hide show
  1. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.dist-info}/METADATA +3 -3
  2. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.dist-info}/RECORD +53 -43
  3. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.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/b01_1.py +77 -0
  9. dodal/beamlines/i03.py +41 -9
  10. dodal/beamlines/i04.py +26 -4
  11. dodal/beamlines/i10.py +257 -0
  12. dodal/beamlines/i22.py +1 -2
  13. dodal/beamlines/i24.py +7 -7
  14. dodal/beamlines/p38.py +1 -2
  15. dodal/common/signal_utils.py +53 -0
  16. dodal/common/types.py +2 -7
  17. dodal/devices/aperturescatterguard.py +12 -15
  18. dodal/devices/apple2_undulator.py +602 -0
  19. dodal/devices/areadetector/plugins/CAM.py +31 -0
  20. dodal/devices/areadetector/plugins/MJPG.py +51 -106
  21. dodal/devices/backlight.py +7 -6
  22. dodal/devices/diamond_filter.py +47 -0
  23. dodal/devices/eiger.py +6 -2
  24. dodal/devices/eiger_odin.py +48 -39
  25. dodal/devices/focusing_mirror.py +14 -8
  26. dodal/devices/i10/i10_apple2.py +398 -0
  27. dodal/devices/i10/i10_setting_data.py +7 -0
  28. dodal/devices/i22/dcm.py +7 -8
  29. dodal/devices/i24/dual_backlight.py +5 -5
  30. dodal/devices/oav/oav_calculations.py +22 -0
  31. dodal/devices/oav/oav_detector.py +118 -97
  32. dodal/devices/oav/oav_parameters.py +50 -104
  33. dodal/devices/oav/oav_to_redis_forwarder.py +75 -34
  34. dodal/devices/oav/{grid_overlay.py → snapshots/grid_overlay.py} +0 -43
  35. dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +64 -0
  36. dodal/devices/oav/snapshots/snapshot_with_grid.py +57 -0
  37. dodal/devices/oav/utils.py +26 -25
  38. dodal/devices/pgm.py +41 -0
  39. dodal/devices/qbpm.py +18 -0
  40. dodal/devices/robot.py +2 -2
  41. dodal/devices/smargon.py +2 -2
  42. dodal/devices/tetramm.py +2 -2
  43. dodal/devices/undulator.py +2 -1
  44. dodal/devices/util/adjuster_plans.py +1 -1
  45. dodal/devices/util/lookup_tables.py +4 -5
  46. dodal/devices/zebra.py +5 -2
  47. dodal/devices/zocalo/zocalo_results.py +13 -10
  48. dodal/plans/data_session_metadata.py +2 -2
  49. dodal/plans/motor_util_plans.py +11 -9
  50. dodal/utils.py +7 -0
  51. dodal/beamlines/i04_1.py +0 -140
  52. dodal/devices/oav/oav_errors.py +0 -35
  53. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.dist-info}/LICENSE +0 -0
  54. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.dist-info}/entry_points.txt +0 -0
  55. {dls_dodal-1.32.0.dist-info → dls_dodal-1.34.1.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.32.0
3
+ Version: 1.34.1
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,>=0.7.0a1
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
 
@@ -1,30 +1,32 @@
1
- dodal/__init__.py,sha256=v-rRiDOgZ3sQSMQKq0vgUQZvpeOkoHFXissAx6Ktg84,61
1
+ dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
2
  dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
- dodal/_version.py,sha256=DJRUo3ZQOOrgoMbrpGNhypFaRgQ4TvlEoMxoldzMF6Y,413
3
+ dodal/_version.py,sha256=i_NrncMW1U_TZOADuz4SSDOQ3OJYu6niE4QzoDFQrM0,413
4
4
  dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
5
5
  dodal/cli.py,sha256=_crmaHchxphSW8eEJB58_XZIeK82aiUv9bV7tpz-LpA,2122
6
6
  dodal/log.py,sha256=0to7CRsbzbgVfAAfKRAMhsaUuKqF2-7CGdQc-z8Uhno,9499
7
- dodal/utils.py,sha256=zlHPQjJOYeEvdC-UHPRvuTZaLt4hG6o9x2Vm4eHFBDU,11851
7
+ dodal/utils.py,sha256=1dJTm77jOxD2B3flC6Xbvl7_r5L4vbGkvBSBoOhUrGY,11966
8
8
  dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- dodal/beamline_specific_utils/i03.py,sha256=eM6ZWZzpL0JYNBff8LhOnwFoZTJ5PDCY2XWI7ZKdtFY,276
9
+ dodal/beamline_specific_utils/i03.py,sha256=P6Ls4FoVtcacH0RJM3v6ZwwGx27oMppcBdW0la-ohTY,377
10
10
  dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
11
- dodal/beamlines/__init__.py,sha256=CD0Dz2H1adLsqY4H3-_QxTdODPZD6mquMfsep5W5s0Q,3076
12
- dodal/beamlines/i03.py,sha256=8Lra4u1kLjWUoboxuSx6Po92OymRaKaJjM9ERr9zeUI,17004
13
- dodal/beamlines/i04.py,sha256=pRVNIBaUn3oIgbxInCgBUwLqHtPirxf0fKfTfx4RcJ8,13877
14
- dodal/beamlines/i04_1.py,sha256=KDxSUQNhIs_NFiRaLY-Jiory0DeN7Y0ErvGuoTrwCDU,4731
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
15
16
  dodal/beamlines/i13_1.py,sha256=csXHrdwUh4sXTmb4X6ZiiSS_XxRkNShsVoBMxYI6rG0,1833
16
17
  dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
17
- dodal/beamlines/i22.py,sha256=YWTz2PjOMTEO7n3QRfrCerIEUMHd6JTHsd2dYe_4F7c,9915
18
+ dodal/beamlines/i22.py,sha256=FcsRk90qTCLqrS6csXZEb8Vu9P1es2ivm3WWig2PN7U,9889
18
19
  dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
19
- dodal/beamlines/i24.py,sha256=1XVCNWbzowQB6CWpJGSLp9Ih0zypktIzHxb64h-Xj6Y,6583
20
- dodal/beamlines/p38.py,sha256=mCDjRVpY6AIFIAAYCWe-jGABHadFwfJB7poa-dGMU6s,7940
20
+ dodal/beamlines/i24.py,sha256=Eq8GZ6WVZuzGXdxBe2f5ZGsd0n2Vr8XEYFFMgpoSFzg,6422
21
+ dodal/beamlines/p38.py,sha256=36DAoKO9ziCIhRQmAwLBaWKYfTykgW1KEXlqifhHaEY,7914
21
22
  dodal/beamlines/p45.py,sha256=N4SDTIFok3uMqb37higZHMr3xRjxItsT4ib_KacKKAE,2935
22
23
  dodal/beamlines/p99.py,sha256=mHMYi1M_jgSB9SrOPadxvPuMrxG8LmJOYtU0Iw6fnIQ,1708
23
24
  dodal/beamlines/training_rig.py,sha256=yagMEQruA1iTOeQCNpux-6xOtkBuB-hhGvAJwQ5c9bg,1846
24
25
  dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
25
26
  dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
26
27
  dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
27
- dodal/common/types.py,sha256=r7Oxcw4lIGi-mvBWc1TF4LDB45q7N4IawNgOMhPohK8,621
28
+ dodal/common/signal_utils.py,sha256=OsVJFntyTOHVEjhw27ZSp1e8SpKR2BhqdY1kzG6sago,1774
29
+ dodal/common/types.py,sha256=fkL7UOwDbe3v2_VJ5f1W5RxR98Wx-Ra-LxUZWkNDtls,486
28
30
  dodal/common/udc_directory_provider.py,sha256=H-9f6uSVGuA8jyiErPi8ikCw1JDrhRAJv-qPpN-HwJk,2379
29
31
  dodal/common/visit.py,sha256=2UbbCmgOjZWSCxFzE9RYiTJhA_IoVOegma-Jv-PJqps,5787
30
32
  dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,45 +37,50 @@ dodal/devices/CTAB.py,sha256=MoExneblYUHg9Va8vAVx_p_Vw_HnqbhkzxxrX7Ic_wo,2000
35
37
  dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
38
  dodal/devices/adsim.py,sha256=dMU0TKIuiODHYFHQOH4_5UvB8iJtaJEtjqaEDGjcU-w,311
37
39
  dodal/devices/aperture.py,sha256=BLaroQ3n8yd7uZyacJ3KvDWZH8yhA_sJc8b49QMKg9o,585
38
- dodal/devices/aperturescatterguard.py,sha256=fOdwQl_qZLaUo1cI1-wz1t2OqncMoUm_uqeZNWyHn3M,8459
40
+ dodal/devices/aperturescatterguard.py,sha256=KW4ERvfMpUadixJlzCVU6oRvLqLm6pFvsldruplAHc4,8404
41
+ dodal/devices/apple2_undulator.py,sha256=ydcr5TuoT7jEHHIkfJywUIiHYvYXsdzgU2OJ2kZtyus,22389
39
42
  dodal/devices/attenuator.py,sha256=viK1iccNekX6ZvR_ZmSwj5JdM1j2B8pcTg8qWDdmzhQ,2584
40
- dodal/devices/backlight.py,sha256=mOnptopsVOsT8JUIX_siDRgJ73CQPz_bm0Eb7oA81wc,1607
43
+ dodal/devices/backlight.py,sha256=jerjGOWuBk7TPNA3NkFRlA4DmgfVoVGAZSQ0qAyANcw,1644
41
44
  dodal/devices/cryostream.py,sha256=CpNA2HGhN_PXkL9eqH_yAPsDxyOLIiehlUxEoNmXJVg,668
42
45
  dodal/devices/dcm.py,sha256=eZNMGjLM56Ll0siU14XomB77W_grLIdxIrMOQNmYFG8,1609
43
- dodal/devices/eiger.py,sha256=sR-Fr97Y0lzzq57fFOUTwUZw5E7asoj36A1JR1QUkLI,13985
44
- dodal/devices/eiger_odin.py,sha256=tDpEhOUY02YManYAMRI3TwSDDa3uITBxI0JHevaK7Rk,7010
46
+ dodal/devices/diamond_filter.py,sha256=hLnfMrHg-EZ1YhN_4GTX1iQDk48zFJBBp03IVGy22cw,1109
47
+ dodal/devices/eiger.py,sha256=2ZT2oQiZFLprg3CjsHRkXfxt9kSf8z8uUKH1Z5n3Hzo,14107
48
+ dodal/devices/eiger_odin.py,sha256=oZl16K-Qb2yL6tK1fyDQvqbbhhvYMSVcf_e2CjlqMa4,7409
45
49
  dodal/devices/fast_grid_scan.py,sha256=WQGeKR-82fbnY4zUD_MQBsQyJgyIiuRpJK5nn_mfR1E,11969
46
50
  dodal/devices/fluorescence_detector_motion.py,sha256=5IcyaVHXa9TXLFlLB0tfpQ1_ThgIRJNaFNw_uj6ahCA,501
47
51
  dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
48
- dodal/devices/focusing_mirror.py,sha256=-jq2uqBfDjSgRVrV3-sqswPAND72cagBUQVvzd04diw,5901
52
+ dodal/devices/focusing_mirror.py,sha256=SHRYOYTX50BI5RBB3KJFTEMOg5E-BYR8khk3IyuWcak,6096
49
53
  dodal/devices/hutch_shutter.py,sha256=_-hR3SJHM05YHV_fEtc0VYOLamYnpVGDE56AwJGJS48,3320
50
54
  dodal/devices/ipin.py,sha256=qsf8E3xrJYNDwzsacNLCCp3gaqsadqmN1b-Fvou8y8k,420
51
55
  dodal/devices/linkam3.py,sha256=3oYwPtaKSPvLKEat8m7tuhE4Wizz8mg8HMrEWPCYxn0,3820
52
56
  dodal/devices/logging_ophyd_device.py,sha256=dUVE-XhWA56WUXez0mrc4sf322CXY3MVLreTycO5j_A,668
53
57
  dodal/devices/motors.py,sha256=dYa9T6FDMTbr8GvTb-lXtk3v4QEqAWRuGmHIO20fazQ,1039
54
58
  dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
55
- dodal/devices/robot.py,sha256=yzRq-77fVrlhxaIqeORJLGkDHzGgLrHsFYTxmkG-b0w,5343
59
+ dodal/devices/pgm.py,sha256=X9JL7gDq_EUaDpPMSGeeg6S9tfU2ic7fdC2LwPRzpoU,1101
60
+ dodal/devices/qbpm.py,sha256=IxL8TisUiFvdeYYch9Dru6MDwrCzMylkFnBec839cY0,467
61
+ dodal/devices/robot.py,sha256=H60UOH5XSnHLoLSNgBuLZ8veeYNyy-fSvc8Hf06y6Q4,5339
56
62
  dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
57
63
  dodal/devices/scatterguard.py,sha256=jx03in9QgaThWxD4t1S8_Llent2kWrn_hThJ9KkUWTk,330
58
64
  dodal/devices/scintillator.py,sha256=PlD6cnJ39PTB_e7QrRspPliLYE4kL_K7ziJURzuxgdA,365
59
65
  dodal/devices/slits.py,sha256=uOyVmbgeygiP6e5Z9t5zMPXLuVEWFfYg9GB3ZU76Tug,600
60
- dodal/devices/smargon.py,sha256=hX-tCftKumxk67eS5-_gQRmYOrjSyQ4s3mMJsTRuvCk,4706
66
+ dodal/devices/smargon.py,sha256=ijvz7k5a-gbZJv3rfX8uVpDWiHCkZnXcFZqarQvfPGY,4710
61
67
  dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
62
68
  dodal/devices/synchrotron.py,sha256=QtTufJA_fCaBawHougSc7nxwu240oX46_y0P-4qIW8o,1960
63
- dodal/devices/tetramm.py,sha256=EgtaExJBZWZC6lWgUEg0RcWQYmSKwRm20KjTZyhCjBk,8439
69
+ dodal/devices/tetramm.py,sha256=a48aPSPoHYCTNtVhq0YH2UNjGtJuMStjQRw7LjL98ds,8445
64
70
  dodal/devices/thawer.py,sha256=Gq-3f__KJUM6_Ds9OVxpZ5jC447HywJxQGXen6L33Lk,1616
65
71
  dodal/devices/turbo_slit.py,sha256=B6SPXqviMnG-U4PnUF1BdTO0LBKmTuwAUKRbxMiNJXo,1125
66
- dodal/devices/undulator.py,sha256=udwAodxYM9XgtsQGH2PDBA6ehtel5dAFkjsK13nKp6Q,5160
72
+ dodal/devices/undulator.py,sha256=FIjzboayAvD0EFyp6qSlzfWA_WvEFd72SbLCE03OoxE,5183
67
73
  dodal/devices/undulator_dcm.py,sha256=5hn3UZeu4CYXmfUVSdIxjrcIpStgeA1S744p0iIFp4I,2725
68
74
  dodal/devices/webcam.py,sha256=EqdzUBov5wMCULzzkfnCfD-5TQMZFQLp-2nlDHezmPs,2332
69
75
  dodal/devices/xbpm_feedback.py,sha256=-1wbnahJ_oSljQR0Sjiwn3mytVP-VwsAy0a_YPjPM0Y,1168
70
- dodal/devices/zebra.py,sha256=iTHkKv8EP-gkr0Cl2gR9yxt2qTHT2Q4etS67Rshf83k,9327
76
+ dodal/devices/zebra.py,sha256=0eK23zIGm-vLVvLMwR8xnjBtIBQFUqHcl0ndbfUKNBE,9455
71
77
  dodal/devices/zebra_controlled_shutter.py,sha256=w2ISASJ_sb3dbQGi63Yuj3ymTkjX73aSl_ZTYs8TyaI,1860
72
78
  dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
73
79
  dodal/devices/areadetector/adaravis.py,sha256=Cqw_Mzrp_zODFxQ2LZBJzHp_DsZ6_dAITkZz8gYz_0w,3797
74
80
  dodal/devices/areadetector/adsim.py,sha256=cIc9PRbKnftBk7Ut8d8CU_TVrin8EwcKHObP2n9VxWM,1876
75
81
  dodal/devices/areadetector/adutils.py,sha256=4axFR3wtn-K-sjMVJyfTcu-8g35odf2cY8mTKv1gS-o,3093
76
- dodal/devices/areadetector/plugins/MJPG.py,sha256=XztHFB1e7qHeZORYxvPgHfDMfkpXGKvfQYmej_hGVVc,4934
82
+ dodal/devices/areadetector/plugins/CAM.py,sha256=fQkZNnnq80q2sloo1XTZH0wUwiY6q-9bECmMhMFwhjQ,976
83
+ dodal/devices/areadetector/plugins/MJPG.py,sha256=H_v92l8GrGS2AfpxUH8UbZG5RzFSUB7J7YPp2Ci4Ih8,3033
77
84
  dodal/devices/detector/__init__.py,sha256=-RdACL3tzc3lLArWOoGNje48UUlv2fElOmGOz9yOuO0,317
78
85
  dodal/devices/detector/det_dim_constants.py,sha256=LNrVMd0DbFEcnyNFmXosCP-VYaZ71Ajuv6inwo4Mg3U,2299
79
86
  dodal/devices/detector/det_dist_to_beam_converter.py,sha256=7keoqZYfvgayePVx97lHYpcFRTJnQOfAk_PYP4EZTZQ,1951
@@ -82,38 +89,41 @@ dodal/devices/detector/detector.py,sha256=syzkl52kGaMINXCXEviFuYPbgNatm5tioVPDmj
82
89
  dodal/devices/detector/detector_motion.py,sha256=LjHNi9FcDSZoriQYrFde8fEmwCGccFgSHPtcxivix4g,1628
83
90
  dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
91
  dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
92
+ dodal/devices/i10/i10_apple2.py,sha256=v2C7S5BhPPdZcVt4HGjBYYcFoqGz4kurvA6eCG624qk,13017
93
+ dodal/devices/i10/i10_setting_data.py,sha256=pvQ1S2j3WrbGvJLyUm78JIfYMIOtw4JvtyfdcoLsMjY,142
85
94
  dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- dodal/devices/i22/dcm.py,sha256=YXf4iH4-dNTfm0NPUgrbn1iLP24id4pR8xLsvLc_iWg,6290
95
+ dodal/devices/i22/dcm.py,sha256=3tf9fWkFvlxJipZCzjPo1H2beXwxbGxsDQ9YCOGbP_4,6213
87
96
  dodal/devices/i22/fswitch.py,sha256=AlyZ_RdbXoMHrG2-sddNOUyLl3vkBdduXVnFL_rMgLo,3046
88
97
  dodal/devices/i22/nxsas.py,sha256=a8oJXl5uhkh9zcb9rSZmVooU-SplzzO3EsAaHJZRfrQ,6086
89
98
  dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
99
  dodal/devices/i24/aperture.py,sha256=bbT4ts5jfrjrOxG199RGDxIYmzVyv1k0ZlZcmS6kEzU,849
91
100
  dodal/devices/i24/beamstop.py,sha256=GpqSaHlyZfcUfaCgvQRjhDgNdGsrOwV_NqG9JLfcusY,1233
92
101
  dodal/devices/i24/dcm.py,sha256=nP2qymTy5TrOu078XOY7h1TEwVfcgli5lTyxmwsG4O8,1990
93
- dodal/devices/i24/dual_backlight.py,sha256=Th-RKr28aFxE8LCT_mdN9KkRIVw0BHLGKkI0ienfRZU,2049
102
+ dodal/devices/i24/dual_backlight.py,sha256=7QnVj75GtfN2Ickkna4-JM1fTaioj37TnArBeiUbJPY,2034
94
103
  dodal/devices/i24/i24_detector_motion.py,sha256=_HgdsZqFYY0tKqUgMzViHaPEUFXL3WlXXioGvDehRUw,364
95
104
  dodal/devices/i24/i24_vgonio.py,sha256=Igqs7687z6lyhGVeJEDtDmPachYxU48MUH2BF0RpK9Q,461
96
105
  dodal/devices/i24/pmac.py,sha256=qug40tz00vjvmQox3W6GrEcorriEeGkNyP5m4u5CVHo,7201
97
106
  dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- dodal/devices/oav/grid_overlay.py,sha256=kYs4sCvmo7yG75HQtptuI8jPzM7dR4fSqnOGL0D5j6g,5338
99
107
  dodal/devices/oav/microns_for_zoom_levels.json,sha256=kJTkbu2v6_Ccc_cDy7FRTX-gRhXxfYskjVqwBCZIqCQ,1209
100
- dodal/devices/oav/oav_calculations.py,sha256=wt71vFcyQrr98FvX8oyUM2n5vmKi3K7PyOTuWp0gq5w,1665
101
- dodal/devices/oav/oav_detector.py,sha256=NpIs6gcMrwe39M1y42M2ZtUhjrbl2LuMmNuUjjc13vg,3785
102
- dodal/devices/oav/oav_errors.py,sha256=cc4mGnaTiAc5WIlOt_BIYOc7CRSkrCdnBaavfAJ0pXY,754
103
- dodal/devices/oav/oav_parameters.py,sha256=rI0kRl8B-N2mw91yYf1lEQVn0hkBQCPU7jvljr5ZNpk,8235
104
- dodal/devices/oav/oav_to_redis_forwarder.py,sha256=3I8Vk1Qx04aVftXb7VVkHUVHweGGUyuLFdmaasmb_Qk,4606
105
- dodal/devices/oav/utils.py,sha256=OyE4h4eq_jg9bEq5DfcjCU-wfSJifO2-PIsrDbsa0NE,3020
108
+ dodal/devices/oav/oav_calculations.py,sha256=tr3Z2pFT7v_enAiNuSZV0esPsiHfRGrj7t0-g_Ix5Do,2363
109
+ dodal/devices/oav/oav_detector.py,sha256=aStDk40tJ63aJoAtzm621HFqkZjkinJ9EgY5VvCSRTw,4812
110
+ dodal/devices/oav/oav_parameters.py,sha256=gGN73TQGUiRzlIO5YKiqCRkjpTKsV6LFGo7Eu4Vs82g,6074
111
+ dodal/devices/oav/oav_to_redis_forwarder.py,sha256=pjBm80ZmsRdF7KqG30dlj_Tzk7_r3m8QT5AvdSFOg2c,6238
112
+ dodal/devices/oav/utils.py,sha256=tzBEgATtn2yfhUhhhbSfYkew7BMbk7iTHVhlxfGLe94,3105
106
113
  dodal/devices/oav/pin_image_recognition/__init__.py,sha256=l5IsWMDZDw3-jk0DkGpiw_BzqyfVYRonlfX6Je1ZPR0,6446
107
114
  dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
108
115
  dodal/devices/oav/pin_image_recognition/utils.py,sha256=L9ypluYqeOFoS7gQuws-vTNc8LqaKl2ZIDNeQ2JaNpg,8592
116
+ dodal/devices/oav/snapshots/grid_overlay.py,sha256=E1KviiM6TeDzjbB16_ecrtIm4cC74nme2Lc7ZQIKCTI,3626
117
+ dodal/devices/oav/snapshots/snapshot_with_beam_centre.py,sha256=HzgwaOwBeXFRA0DyXaffvlDe6qw5kuxmFnn8_zn8KMQ,1905
118
+ dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=-fqfChbVQTK3S18TKewnhobkaDoV0ULhcRO_dWwcmSc,2243
109
119
  dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
120
  dodal/devices/p99/sample_stage.py,sha256=kvwKCDUmXqcoXfIbAENtqm3Hi2cHP7dZIPQgQT6hsXw,1140
111
121
  dodal/devices/training_rig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
122
  dodal/devices/training_rig/sample_stage.py,sha256=jktTp837ij8wor5LidE3AajCk95L7DebJotMlO7QwTE,355
113
123
  dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- dodal/devices/util/adjuster_plans.py,sha256=g4HTpji3XhIhpWvyDLyCYYLGOSE7uNpDeQHfh8259hE,878
124
+ dodal/devices/util/adjuster_plans.py,sha256=XpJ1YJKoOCFzj2sonkZYJAdewi3jRaok_2gOmNsfeS0,956
115
125
  dodal/devices/util/epics_util.py,sha256=R0_I9HEZ2l19BZaTpevPqT3p3kp5GZCfmNNmnXGfdsc,4689
116
- dodal/devices/util/lookup_tables.py,sha256=FxT2fiIjDJNOqUf_pcW0fKJmwhOUZiF8UGTFz6hWf5g,2132
126
+ dodal/devices/util/lookup_tables.py,sha256=Bk-wZk7JO5_j_8gbot-8reirVqxvFUg9_SIqEIOVZu0,2025
117
127
  dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
118
128
  dodal/devices/util/save_panda.py,sha256=PHFlkerBhkkU0-o5dNEdi2P95_jD9Lk8yYgaqn9R97o,2538
119
129
  dodal/devices/util/test_utils.py,sha256=VrSFFGLNKOcCAsWFMZOxwhng3wGR5kV8NqqnKfj8Vuw,562
@@ -121,14 +131,14 @@ dodal/devices/xspress3/xspress3.py,sha256=JTx3ppAc8GwV9K-Gfqo81iGYH_L-ONyFWiPRs9
121
131
  dodal/devices/xspress3/xspress3_channel.py,sha256=yJRwseLmtkW2Vv6GB8sLdOFuBn3e4c9Q8fgPacMgl5w,1638
122
132
  dodal/devices/zocalo/__init__.py,sha256=oPhjFB39yf2NWkGD-MMcPFnnOVZ_RtdyBt2OLYn-Xa4,505
123
133
  dodal/devices/zocalo/zocalo_interaction.py,sha256=y8YKMaVwfsRPBofHGGLYmYsd4QwMvm7JIPEo6wrN_Xo,3493
124
- dodal/devices/zocalo/zocalo_results.py,sha256=MStx8iK--ITff-rT3AQu_RHnqKqNGLJDVyV3ewBwaKE,14316
134
+ dodal/devices/zocalo/zocalo_results.py,sha256=WgNGgu4sXIlhL5-G444uxhKbWc9HOYIOTwd2NuV8-0o,14511
125
135
  dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
126
136
  dodal/plans/check_topup.py,sha256=3gyLHfHNQBCgEWuAg4QE-ONx7y2Do1vVv5HP8ss0Z1I,5371
127
- dodal/plans/data_session_metadata.py,sha256=urexZ3mA0K6VWxVW3MlrcsB1Tyi09tFvpKBlaVil7TQ,1567
128
- dodal/plans/motor_util_plans.py,sha256=JT1K4DBB66MrzNqimxFgiL6mRsj11fF7xZXOz0udEeo,4522
129
- dls_dodal-1.32.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
130
- dls_dodal-1.32.0.dist-info/METADATA,sha256=Y7XXnR4vFkIsqoZ6vXh9STdoUyc9cbudVRqzP30rHUM,16574
131
- dls_dodal-1.32.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
132
- dls_dodal-1.32.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
133
- dls_dodal-1.32.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
134
- dls_dodal-1.32.0.dist-info/RECORD,,
137
+ dodal/plans/data_session_metadata.py,sha256=GjR4E2s3ZwYkvkBnW6TcL6OLdmyxrmkoSSI242sEPFA,1567
138
+ dodal/plans/motor_util_plans.py,sha256=1s02s_Yn7vusv8o64n5p4yiibmQ5ETv8t59CD27h8gw,4655
139
+ dls_dodal-1.34.1.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
140
+ dls_dodal-1.34.1.dist-info/METADATA,sha256=y8nPhARI53GhOTWacruJ4nJ0lTCHOMLBID0_XRjNDec,16579
141
+ dls_dodal-1.34.1.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
142
+ dls_dodal-1.34.1.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
143
+ dls_dodal-1.34.1.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
144
+ dls_dodal-1.34.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.3.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.32.0'
16
- __version_tuple__ = version_tuple = (1, 32, 0)
15
+ __version__ = version = '1.34.1'
16
+ __version_tuple__ = version_tuple = (1, 34, 1)
@@ -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
@@ -0,0 +1,77 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adaravis import AravisDetector
4
+ from ophyd_async.fastcs.panda import HDFPanda
5
+
6
+ from dodal.common.beamlines.beamline_utils import (
7
+ device_instantiation,
8
+ get_path_provider,
9
+ set_path_provider,
10
+ )
11
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
+ from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
13
+ from dodal.devices.synchrotron import Synchrotron
14
+ from dodal.log import set_beamline as set_log_beamline
15
+
16
+ BL = "c01"
17
+ set_log_beamline(BL)
18
+ set_utils_beamline(BL)
19
+
20
+ set_path_provider(
21
+ StaticVisitPathProvider(
22
+ BL,
23
+ Path("/dls/b01-1/data/"),
24
+ client=LocalDirectoryServiceClient(),
25
+ )
26
+ )
27
+
28
+ """
29
+ NOTE: Due to ArgoCD and the k8s cluster configuration those PVs are not available remotely.
30
+ You need to be on the beamline-local network to access them.
31
+ The simplest way to do this is to `ssh b01-1-ws001` and run `dodal connect b01_1` from there.
32
+ remember about the underscore in the beamline name.
33
+
34
+ See the IOC status here:
35
+ https://argocd.diamond.ac.uk/applications?showFavorites=false&proj=&sync=&autoSync=&health=&namespace=&cluster=&labels=
36
+ """
37
+
38
+
39
+ def panda(
40
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
41
+ ) -> HDFPanda:
42
+ return device_instantiation(
43
+ device_factory=HDFPanda,
44
+ name="panda",
45
+ prefix="-EA-PANDA-01:",
46
+ wait=wait_for_connection,
47
+ fake=fake_with_ophyd_sim,
48
+ path_provider=get_path_provider(),
49
+ )
50
+
51
+
52
+ def synchrotron(
53
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
54
+ ) -> Synchrotron:
55
+ return device_instantiation(
56
+ Synchrotron,
57
+ "synchrotron",
58
+ "",
59
+ wait_for_connection,
60
+ fake_with_ophyd_sim,
61
+ bl_prefix=False,
62
+ )
63
+
64
+
65
+ def manta(
66
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
67
+ ) -> AravisDetector:
68
+ return device_instantiation(
69
+ AravisDetector,
70
+ "manta",
71
+ "-DI-DCAM-02:",
72
+ wait_for_connection,
73
+ fake_with_ophyd_sim,
74
+ path_provider=get_path_provider(),
75
+ drv_suffix="CAM:",
76
+ hdf_suffix="HDF5:",
77
+ )
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
+ )