dls-dodal 1.27.0__py3-none-any.whl → 1.29.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.27.0
3
+ Version: 1.29.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,7 @@ Description-Content-Type: text/x-rst
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async >=0.3a5
218
+ Requires-Dist: ophyd-async >=0.3.1
219
219
  Requires-Dist: bluesky
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
@@ -227,7 +227,7 @@ Requires-Dist: pydantic
227
227
  Requires-Dist: opencv-python-headless
228
228
  Requires-Dist: aioca
229
229
  Requires-Dist: p4p
230
- Requires-Dist: numpy
230
+ Requires-Dist: numpy <2.0
231
231
  Requires-Dist: aiofiles
232
232
  Requires-Dist: aiohttp
233
233
  Provides-Extra: dev
@@ -1,6 +1,6 @@
1
1
  dodal/__init__.py,sha256=y-VRpfiX-Lm5nchB9N0VfMy_6dwFqVxpSn5SiAQql9I,114
2
2
  dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
- dodal/_version.py,sha256=XlqTK6aXcDzaFgsrMUHCuU_TY8zt9cjwfCWklVgy2Hg,413
3
+ dodal/_version.py,sha256=IpRR4M6LqazbEQMvyYdrRT7AijfNAsCfLKuNjjsDX4s,413
4
4
  dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
5
5
  dodal/cli.py,sha256=z0UBESrNrq6Kq4rttp4uHcwS1fnOnRkKBRDHSriPpGY,2058
6
6
  dodal/log.py,sha256=grK5-c-V6UjMERwDqYPdKbc_BpycrNb8hP0uteLOVCY,8296
@@ -9,14 +9,14 @@ dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
9
9
  dodal/beamline_specific_utils/i03.py,sha256=Ixe1anFQl-kwRJubmQx28TIW4Zw8qDxpElNNNapWQHI,396
10
10
  dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
11
11
  dodal/beamlines/__init__.py,sha256=U0dQYFEUloCdQOs24zyfpPTncJXOO4cDcfHSevVOAw4,2890
12
- dodal/beamlines/i03.py,sha256=nOWm9iUYOwqUDAkBXC4UkYmN2GGD1MbTgyCCMO_YXBw,16394
12
+ dodal/beamlines/i03.py,sha256=J-4GawTxAhrYDQZh87n11L9ehTgObEQ1Lz2PueXCWbc,16892
13
13
  dodal/beamlines/i04.py,sha256=JOyNcUnC3wva4no2MHKp6b8gOKAcQXL_c4cBo7oneVs,13034
14
14
  dodal/beamlines/i04_1.py,sha256=KDxSUQNhIs_NFiRaLY-Jiory0DeN7Y0ErvGuoTrwCDU,4731
15
- dodal/beamlines/i20_1.py,sha256=XJpey1-XZnCVpjK6-tODRYeBofqV44BL8lK5OSdQgiI,746
16
- dodal/beamlines/i22.py,sha256=TlXgAuRYM4JS733tyZyLMYDyC7ajwg85_XzYI5qh46U,7574
15
+ dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
16
+ dodal/beamlines/i22.py,sha256=toBwXJiAFbie_puNJzrV1gSUD1FRO2KT9RastqhPNMw,9836
17
17
  dodal/beamlines/i23.py,sha256=iEFkrA4sPQsRLGAmeD263jPMX4u2SF1NK4_KYqnVwow,1402
18
18
  dodal/beamlines/i24.py,sha256=LIe8tu_ZJsoeQH7tYRZHSvqQ9C9zBGOXO6rb1DPCYjQ,4595
19
- dodal/beamlines/p38.py,sha256=0uRL4GVs1sGobr0BZpDDbtStNJcipT6o4FvoA_OWLaE,7120
19
+ dodal/beamlines/p38.py,sha256=TC78u4GwEnj6X0r5cnHhqNdBbbDRnh8lY8pEucBZjEU,8006
20
20
  dodal/beamlines/p45.py,sha256=TNIkC-SBfj0ayZtlLLXW9xCSi5CzJkO8XpAMIo8fjao,2957
21
21
  dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
22
22
  dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
@@ -40,56 +40,57 @@ dodal/devices/cryostream.py,sha256=6MU4rXIOL33C-8F3DVfAtv0ZnwiysTtawjkeePd5IrQ,3
40
40
  dodal/devices/dcm.py,sha256=vfyGYDzfSwTiNqlzkfNjkrL-Q1hNVSgJddvJ5Un_lvg,1610
41
41
  dodal/devices/eiger.py,sha256=NE4tHdqgUZpUxJLQbd5lLUIHZcpeotppexJGlDNByzM,13868
42
42
  dodal/devices/eiger_odin.py,sha256=U5Byb7uNwDdNscBRp7yBYQrsjKrKXl2l5WdSpL09lAw,6980
43
- dodal/devices/fast_grid_scan.py,sha256=_jsiUxpMO2rAGDhTFPN8J35e6E0oreLpKYi6W8wQGzs,12798
43
+ dodal/devices/fast_grid_scan.py,sha256=qp0jdzhTjkDtaf7ngdPcegcFLlp1EmWUDbU_knCBDpc,13438
44
44
  dodal/devices/fluorescence_detector_motion.py,sha256=RrXfPmJzWnAjcjp9u0AnJEfjvWPMKburVTySB2hxYbw,181
45
45
  dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
46
46
  dodal/devices/focusing_mirror.py,sha256=aRqBkE3OgaXpH6lP3v1VbSYgHsMMbSsPPXzeyAGf_Pg,6435
47
47
  dodal/devices/ipin.py,sha256=OGMXwAE4KDDonZRPFkUmR9Vsk6X4Ox-hEvPT5drP-mQ,208
48
48
  dodal/devices/linkam3.py,sha256=TPhiQ1D9i_HIlKHAlfnVfX7H6aPOAeXPEJLdmvwdKWQ,3776
49
49
  dodal/devices/logging_ophyd_device.py,sha256=xw4lbyqq5_ehESGterVEfubJsBiJTWvBp5b9k62gSkg,666
50
- dodal/devices/lower_gonio_stages.py,sha256=oJ_Xeuqs5E8AWAoZX52jD1qV6pCSjCOjdwnXFKz_xjw,229
51
- dodal/devices/motors.py,sha256=aKtMv5q_4b1eFhzyuk2-D6zDsY_6cqAmG59y5LWUz1s,1328
50
+ dodal/devices/motors.py,sha256=T0wKGpRKhgduAQj3jE8CGmxy3cWMAFl9_glyjVZwjnA,1473
52
51
  dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
53
52
  dodal/devices/qbpm1.py,sha256=OY7-WbdxMiLGUK8Z57ezwqSXbHxoPP-y3GvBgj9kgMA,220
54
- dodal/devices/robot.py,sha256=V5Gk-e1ZczU7y8SqU4_1YXYQJ6knoVFtXLZmIDY9MI4,2530
53
+ dodal/devices/robot.py,sha256=RcSqBPMMUpWyP7LoyifatII5GWup-vFYZutniM60m_k,4231
55
54
  dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
56
55
  dodal/devices/scatterguard.py,sha256=0qnvhoo3RjLsrxVgIoDJpryqunlgMVgaTsoyKRC2g4Y,331
57
56
  dodal/devices/scintillator.py,sha256=4Dej1a6HRom9GRwTDsaTKGfvloP20POUqIeHqsI8-R8,184
58
57
  dodal/devices/slits.py,sha256=URru9VN2N19KqeUPDZaBmyKYn0_JJiE0Vko4sZpfsl8,601
59
58
  dodal/devices/smargon.py,sha256=ml96h7E1C31qPo8jocAepSouIVXgpIR0vuMF99nZjqM,2964
60
59
  dodal/devices/status.py,sha256=TuUGidZ4Ar-WCRc_sX0wn58DmL6brj1pMr8rNF5Z6VU,1198
61
- dodal/devices/synchrotron.py,sha256=E5vcSum-zoD5vIZxa2Xcl0gAkeRqY6a-AfZQICCwLHg,1947
62
- dodal/devices/tetramm.py,sha256=dHA15KkJhBHwtmbivDua_aVqFbvK47TVQG7KXmn8jQ8,8041
60
+ dodal/devices/synchrotron.py,sha256=QtTufJA_fCaBawHougSc7nxwu240oX46_y0P-4qIW8o,1960
61
+ dodal/devices/tetramm.py,sha256=XriN-zBFVnHxhnTbphSPIZcxEbdWBTbw2g_ulUBl4bw,8538
63
62
  dodal/devices/thawer.py,sha256=L5OYSdzGvx6dIkGgcTbITAbFAm0OKEVVqYBb4MPstOg,382
64
63
  dodal/devices/turbo_slit.py,sha256=W3ZRIqDhq4iMhr5GcIiWvl2U1GaPtGanqkL7upQOZTY,1132
65
64
  dodal/devices/undulator.py,sha256=kn84MQpuBHtQj7H7HeBoAYKXu5buGKvTgs3tf2gdEdw,2074
66
65
  dodal/devices/undulator_dcm.py,sha256=TC9fO55r1YIG_88PPbGGtzfjcRJcaoC2ny51JiDOEX4,5199
67
- dodal/devices/webcam.py,sha256=dvNWJ6hHQR7BUsMRC9TH4XiCCofVhlgZ8HYfVCvd2og,1367
68
- dodal/devices/xbpm_feedback.py,sha256=a4evzdoMANbwoboQCbdMkcrxRogXLnHs966SZJsywYQ,1521
66
+ dodal/devices/webcam.py,sha256=FXYcxQdOOCRIMAf8jMWlDVAhSEs4ycGCnoODvHb-apM,1554
67
+ dodal/devices/xbpm_feedback.py,sha256=8QHYKHo9ksZo30olbFM-tHpCHcJRFozgHKVJijv3Gck,1986
69
68
  dodal/devices/zebra.py,sha256=XE2oEm6kLkXd86ev4dYP8bh3tI9Fesb1SmU61RSMHBA,9082
70
69
  dodal/devices/zebra_controlled_shutter.py,sha256=MqX4KE6w0FliZRDBltswcLCNSsp6vQrD_iBY640IljI,1094
71
70
  dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
72
71
  dodal/devices/areadetector/adaravis.py,sha256=pwbmmnakarjhD59XoyAIXJdakS-nqDG09Xmwq17AVw4,3787
73
72
  dodal/devices/areadetector/adsim.py,sha256=3U7kS93RM3Xeh-XWKjeuw5jXbIGWAbrs59LfxtvB7OU,1907
74
73
  dodal/devices/areadetector/adutils.py,sha256=JIx1_sYlehpLtEXcwOEuzVoMplsLdKVW7OWv5eiJqgE,2576
75
- dodal/devices/areadetector/plugins/MJPG.py,sha256=2ISGUg9JxJYzEH640WUIsvFwKolSTywkTyPy9wz6f_k,4064
74
+ dodal/devices/areadetector/plugins/MJPG.py,sha256=pLuEZiRGgCwJM1ONA5jdetGLo6O0OVhvmcVkkYtPeR8,4159
76
75
  dodal/devices/detector/__init__.py,sha256=XEwjopgTtBq93RRuFthVVVI9DT1jUvpOJzWOHantJpU,104
77
76
  dodal/devices/detector/det_dim_constants.py,sha256=MZ4w2nsTKzj4eN7yGsSs1pqKWIuU4vc6UzcSll02uWg,2305
78
77
  dodal/devices/detector/det_dist_to_beam_converter.py,sha256=f6JFp-eEB2v8NzZg27UrN0VDP5CMjRnaPU6BTA7_n_s,1937
79
78
  dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
80
- dodal/devices/detector/detector.py,sha256=UDw_hLbhfUo_ECasGQ_Ud8bVQzE9D8uaAMagVAa_R4g,4647
79
+ dodal/devices/detector/detector.py,sha256=arP27DbrgOjYZhE6Ibp9kDBglfmqZpPBk53S5ItsrvE,4756
81
80
  dodal/devices/detector/detector_motion.py,sha256=REREva2kyPcIzOZmahN9rT0jDSuUbV0qUDl4IcBnutA,1221
82
81
  dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
82
  dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
84
83
  dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ dodal/devices/i22/dcm.py,sha256=Kzyd_qFg8KVhRsgfTQVOpghESE8yIOgACKa0Fv9NaZI,6270
85
85
  dodal/devices/i22/fswitch.py,sha256=AdYtnkCBuhivyJGZqelg_7sjB2pHN7vl1JTtlO4vHo4,3061
86
+ dodal/devices/i22/nxsas.py,sha256=ky7v9UZ1UQFsm5hI0wD9OXG-fTKFLj2wJjB7wADxKpw,5655
86
87
  dodal/devices/i23/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
88
  dodal/devices/i23/gonio.py,sha256=cxqD2Kd578c4-K4h2sHdJjoap2gPGC46Qr4SPudHLTs,864
88
89
  dodal/devices/i24/I24_detector_motion.py,sha256=bKbb44Qs24oguwJ780N4e5XGNtka_3ZZCGGq6BQu99Y,229
89
90
  dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
91
  dodal/devices/i24/dual_backlight.py,sha256=5Xkkt4VqS-G1QLDmBJNHs-LNVYJ_aTso_ev8QNDJiis,1367
91
92
  dodal/devices/i24/i24_vgonio.py,sha256=Igqs7687z6lyhGVeJEDtDmPachYxU48MUH2BF0RpK9Q,461
92
- dodal/devices/i24/pmac.py,sha256=EFLclXWMh7eMk4YNutXeSdLyyqFSBpLe5O6HEWC8OQc,405
93
+ dodal/devices/i24/pmac.py,sha256=CdNLzRiOz2jFoZ80WQTdlHiYoDJeQWdqdKDkSKkCEkI,3872
93
94
  dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
95
  dodal/devices/oav/grid_overlay.py,sha256=FRtjcFd420XY8MEQ9sWedL0i4pK-KUJOSxh2C5zM3PA,5232
95
96
  dodal/devices/oav/microns_for_zoom_levels.json,sha256=5PA71RzldFTp0eTUGPmov0MjxHe583mzvfor5f3thXI,1208
@@ -97,7 +98,7 @@ dodal/devices/oav/oav_calculations.py,sha256=wt71vFcyQrr98FvX8oyUM2n5vmKi3K7PyOT
97
98
  dodal/devices/oav/oav_detector.py,sha256=JtzRdFQVXUdVK4Qyd9knDhsfkK6tsXoD_rIWDpLdpD4,3654
98
99
  dodal/devices/oav/oav_errors.py,sha256=cc4mGnaTiAc5WIlOt_BIYOc7CRSkrCdnBaavfAJ0pXY,754
99
100
  dodal/devices/oav/oav_parameters.py,sha256=4XybkhKeG7IEjPRfx0PVM9KNenuyN0rAGWBZG7H3zvQ,7941
100
- dodal/devices/oav/utils.py,sha256=KBvwlacwxt0KVV6ybc0nb6wPbxeAF3NfAMKWeJ5XtcU,999
101
+ dodal/devices/oav/utils.py,sha256=zbUDvNETDoCtclj5jNzxz1XBt5mQlWBbxUrhRP7pZrU,3663
101
102
  dodal/devices/oav/pin_image_recognition/__init__.py,sha256=qEX3BRnrcP1BLZD-f_smHiMMPLJPkWQZQbIWTbW25JA,6499
102
103
  dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
103
104
  dodal/devices/oav/pin_image_recognition/utils.py,sha256=-7-Zs-331UVTq_AZrfdF-zwZdmMn7eitTkBSqnBrxnk,8620
@@ -106,17 +107,17 @@ dodal/devices/util/adjuster_plans.py,sha256=2AYaywQP_LbA2KJ6Op3cok8GoRtj696utrSS
106
107
  dodal/devices/util/epics_util.py,sha256=FSiTgBhm4id1nILM3UUD7V3eDjJM4DEMIG_wEwzM8Tk,4441
107
108
  dodal/devices/util/lookup_tables.py,sha256=Up-0BlARt79TIEM76SkDyn9LtTFLxPUcaEPZv6D6bws,2141
108
109
  dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
109
- dodal/devices/xspress3_mini/xspress3_mini.py,sha256=gBLr_sdt4HmGLAJUimZ4MlPu_0B6gVmjUmYYQYCSTAc,2858
110
- dodal/devices/xspress3_mini/xspress3_mini_channel.py,sha256=eKmsgf4AFaVOwpB2o-5B7EOr9xn4d0A_0gGPuQv3ohk,810
110
+ dodal/devices/xspress3/xspress3.py,sha256=29elzI3JtceryKeMWXhcP9nWl0tlSdnTZhltCitet6A,4668
111
+ dodal/devices/xspress3/xspress3_channel.py,sha256=yJRwseLmtkW2Vv6GB8sLdOFuBn3e4c9Q8fgPacMgl5w,1638
111
112
  dodal/devices/zocalo/__init__.py,sha256=oPhjFB39yf2NWkGD-MMcPFnnOVZ_RtdyBt2OLYn-Xa4,505
112
113
  dodal/devices/zocalo/zocalo_interaction.py,sha256=B6TBTDwUlluksLTwC4TiEEgfFzWLOmwgG8xM5Xd4Wik,3132
113
114
  dodal/devices/zocalo/zocalo_results.py,sha256=U4Vk4OF-eL8w0BR-fbw3k4jyRo6G3Ywaf8NMAkjr4Hs,9658
114
115
  dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
115
- dodal/plans/check_topup.py,sha256=VOkHak88_r-pdTsSnwAJnbvlK2_UhKnO5I36pJmWKvQ,2985
116
+ dodal/plans/check_topup.py,sha256=Pj6Eu8fa6nvoW4awrMxvzE_ftpLfYz8bN0QDLRw0Yuk,2989
116
117
  dodal/plans/data_session_metadata.py,sha256=QNx9rb1EfGBHb21eFekIi7KjNhC0PL-SVKBCggDuNeg,1650
117
- dls_dodal-1.27.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
118
- dls_dodal-1.27.0.dist-info/METADATA,sha256=mkrOjI4F9mwAZOTOLTSPRfNZu5W1wqlqDo3FOOWn6qs,16837
119
- dls_dodal-1.27.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
120
- dls_dodal-1.27.0.dist-info/entry_points.txt,sha256=wpzz9FsTiYxI8OBwLKX9V9ResLwThBSmtRMcPwII0FA,46
121
- dls_dodal-1.27.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
122
- dls_dodal-1.27.0.dist-info/RECORD,,
118
+ dls_dodal-1.29.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
119
+ dls_dodal-1.29.0.dist-info/METADATA,sha256=ydEXpqy3OYgQ-oGOFOzOFk_D4Xhr9N7zUQfvWp51Evo,16842
120
+ dls_dodal-1.29.0.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
121
+ dls_dodal-1.29.0.dist-info/entry_points.txt,sha256=wpzz9FsTiYxI8OBwLKX9V9ResLwThBSmtRMcPwII0FA,46
122
+ dls_dodal-1.29.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
123
+ dls_dodal-1.29.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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.27.0'
16
- __version_tuple__ = version_tuple = (1, 27, 0)
15
+ __version__ = version = '1.29.0'
16
+ __version_tuple__ = version_tuple = (1, 29, 0)
dodal/beamlines/i03.py CHANGED
@@ -17,6 +17,7 @@ from dodal.devices.eiger import EigerDetector
17
17
  from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
18
18
  from dodal.devices.flux import Flux
19
19
  from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, VFMMirrorVoltages
20
+ from dodal.devices.motors import XYZPositioner
20
21
  from dodal.devices.oav.oav_detector import OAV, OAVConfigParams
21
22
  from dodal.devices.oav.pin_image_recognition import PinTipDetection
22
23
  from dodal.devices.qbpm1 import QBPM1
@@ -29,7 +30,7 @@ from dodal.devices.undulator import Undulator
29
30
  from dodal.devices.undulator_dcm import UndulatorDCM
30
31
  from dodal.devices.webcam import Webcam
31
32
  from dodal.devices.xbpm_feedback import XBPMFeedback
32
- from dodal.devices.xspress3_mini.xspress3_mini import Xspress3Mini
33
+ from dodal.devices.xspress3.xspress3 import Xspress3
33
34
  from dodal.devices.zebra import Zebra
34
35
  from dodal.devices.zebra_controlled_shutter import ZebraShutter
35
36
  from dodal.devices.zocalo import ZocaloResults
@@ -208,7 +209,7 @@ def zebra_fast_grid_scan(
208
209
  return device_instantiation(
209
210
  device_factory=ZebraFastGridScan,
210
211
  name="zebra_fast_grid_scan",
211
- prefix="-MO-SGON-01:FGS:",
212
+ prefix="-MO-SGON-01:",
212
213
  wait=wait_for_connection,
213
214
  fake=fake_with_ophyd_sim,
214
215
  )
@@ -224,7 +225,7 @@ def panda_fast_grid_scan(
224
225
  return device_instantiation(
225
226
  device_factory=PandAFastGridScan,
226
227
  name="panda_fast_grid_scan",
227
- prefix="-MO-SGON-01:PGS:",
228
+ prefix="-MO-SGON-01:",
228
229
  wait=wait_for_connection,
229
230
  fake=fake_with_ophyd_sim,
230
231
  )
@@ -362,12 +363,12 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
362
363
 
363
364
  def xspress3mini(
364
365
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
365
- ) -> Xspress3Mini:
366
+ ) -> Xspress3:
366
367
  """Get the i03 Xspress3Mini device, instantiate it if it hasn't already been.
367
368
  If this is called when already instantiated in i03, it will return the existing object.
368
369
  """
369
370
  return device_instantiation(
370
- Xspress3Mini,
371
+ Xspress3,
371
372
  "xspress3mini",
372
373
  "-EA-XSP3-01:",
373
374
  wait_for_connection,
@@ -495,3 +496,18 @@ def thawer(
495
496
  wait_for_connection,
496
497
  fake_with_ophyd_sim,
497
498
  )
499
+
500
+
501
+ def lower_gonio_positioner(
502
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
503
+ ) -> XYZPositioner:
504
+ """Get the i03 lower gonio device, instantiate it if it hasn't already been.
505
+ If this is called when already instantiated in i03, it will return the existing object.
506
+ """
507
+ return device_instantiation(
508
+ XYZPositioner,
509
+ "lower_gonio_positioner",
510
+ "-MO-GONP-01:",
511
+ wait_for_connection,
512
+ fake_with_ophyd_sim,
513
+ )
dodal/beamlines/i20_1.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from dodal.common.beamlines.beamline_utils import device_instantiation
2
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
3
  from dodal.devices.turbo_slit import TurboSlit
4
+ from dodal.devices.xspress3.xspress3 import Xspress3
4
5
  from dodal.log import set_beamline as set_log_beamline
5
6
  from dodal.utils import get_beamline_name
6
7
 
@@ -23,3 +24,20 @@ def turbo_slit(
23
24
  wait=wait_for_connection,
24
25
  fake=fake_with_ophyd_sim,
25
26
  )
27
+
28
+
29
+ def xspress3(
30
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
31
+ ) -> Xspress3:
32
+ """
33
+ 16 channels Xspress3 detector
34
+ """
35
+
36
+ return device_instantiation(
37
+ Xspress3,
38
+ prefix="-EA-DET-03:",
39
+ name="Xspress3",
40
+ num_channels=16,
41
+ wait=wait_for_connection,
42
+ fake=fake_with_ophyd_sim,
43
+ )
dodal/beamlines/i22.py CHANGED
@@ -10,11 +10,14 @@ from dodal.common.beamlines.beamline_utils import (
10
10
  )
11
11
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
12
  from dodal.common.beamlines.device_helpers import numbered_slits
13
- from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitDirectoryProvider
13
+ from dodal.common.visit import DirectoryServiceClient, StaticVisitDirectoryProvider
14
14
  from dodal.devices.focusing_mirror import FocusingMirror
15
+ from dodal.devices.i22.dcm import CrystalMetadata, DoubleCrystalMonochromator
15
16
  from dodal.devices.i22.fswitch import FSwitch
17
+ from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV, NXSasPilatus
16
18
  from dodal.devices.linkam3 import Linkam3
17
19
  from dodal.devices.slits import Slits
20
+ from dodal.devices.synchrotron import Synchrotron
18
21
  from dodal.devices.tetramm import TetrammDetector
19
22
  from dodal.devices.undulator import Undulator
20
23
  from dodal.log import set_beamline as set_log_beamline
@@ -33,7 +36,7 @@ set_directory_provider(
33
36
  StaticVisitDirectoryProvider(
34
37
  BL,
35
38
  Path("/dls/i22/data/2024/cm37271-2/bluesky"),
36
- client=LocalDirectoryServiceClient(),
39
+ client=DirectoryServiceClient("http://i22-control:8088/api"),
37
40
  )
38
41
  )
39
42
 
@@ -42,28 +45,58 @@ def saxs(
42
45
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
43
46
  ) -> PilatusDetector:
44
47
  return device_instantiation(
45
- PilatusDetector,
48
+ NXSasPilatus,
46
49
  "saxs",
47
50
  "-EA-PILAT-01:",
48
51
  wait_for_connection,
49
52
  fake_with_ophyd_sim,
50
53
  drv_suffix="CAM:",
51
54
  hdf_suffix="HDF5:",
55
+ metadata_holder=NXSasMetadataHolder(
56
+ x_pixel_size=(1.72e-1, "mm"),
57
+ y_pixel_size=(1.72e-1, "mm"),
58
+ description="Dectris Pilatus3 2M",
59
+ type="Photon Counting Hybrid Pixel",
60
+ sensor_material="silicon",
61
+ sensor_thickness=(0.45, "mm"),
62
+ distance=(4711.833684146172, "mm"),
63
+ ),
52
64
  directory_provider=get_directory_provider(),
53
65
  )
54
66
 
55
67
 
68
+ def synchrotron(
69
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
70
+ ) -> Synchrotron:
71
+ return device_instantiation(
72
+ Synchrotron,
73
+ "synchrotron",
74
+ "",
75
+ wait_for_connection,
76
+ fake_with_ophyd_sim,
77
+ )
78
+
79
+
56
80
  def waxs(
57
81
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
58
82
  ) -> PilatusDetector:
59
83
  return device_instantiation(
60
- PilatusDetector,
84
+ NXSasPilatus,
61
85
  "waxs",
62
86
  "-EA-PILAT-03:",
63
87
  wait_for_connection,
64
88
  fake_with_ophyd_sim,
65
89
  drv_suffix="CAM:",
66
90
  hdf_suffix="HDF5:",
91
+ metadata_holder=NXSasMetadataHolder(
92
+ x_pixel_size=(1.72e-1, "mm"),
93
+ y_pixel_size=(1.72e-1, "mm"),
94
+ description="Dectris Pilatus3 2M",
95
+ type="Photon Counting Hybrid Pixel",
96
+ sensor_material="silicon",
97
+ sensor_thickness=(0.45, "mm"),
98
+ distance=(175.4199417092314, "mm"),
99
+ ),
67
100
  directory_provider=get_directory_provider(),
68
101
  )
69
102
 
@@ -78,6 +111,7 @@ def i0(
78
111
  "-EA-XBPM-02:",
79
112
  wait_for_connection,
80
113
  fake_with_ophyd_sim,
114
+ type="Cividec Diamond XBPM",
81
115
  directory_provider=get_directory_provider(),
82
116
  )
83
117
 
@@ -92,6 +126,7 @@ def it(
92
126
  "-EA-TTRM-02:",
93
127
  wait_for_connection,
94
128
  fake_with_ophyd_sim,
129
+ type="PIN Diode",
95
130
  directory_provider=get_directory_provider(),
96
131
  )
97
132
 
@@ -122,6 +157,34 @@ def hfm(
122
157
  )
123
158
 
124
159
 
160
+ def dcm(
161
+ wait_for_connection: bool = True,
162
+ fake_with_ophyd_sim: bool = False,
163
+ ) -> DoubleCrystalMonochromator:
164
+ return device_instantiation(
165
+ DoubleCrystalMonochromator,
166
+ "dcm",
167
+ "",
168
+ wait_for_connection,
169
+ fake_with_ophyd_sim,
170
+ bl_prefix=False,
171
+ motion_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-MO-DCM-01:",
172
+ temperature_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-DI-DCM-01:",
173
+ crystal_1_metadata=CrystalMetadata(
174
+ usage="Bragg",
175
+ type="silicon",
176
+ reflection=(1, 1, 1),
177
+ d_spacing=(3.13475, "nm"),
178
+ ),
179
+ crystal_2_metadata=CrystalMetadata(
180
+ usage="Bragg",
181
+ type="silicon",
182
+ reflection=(1, 1, 1),
183
+ d_spacing=(3.13475, "nm"),
184
+ ),
185
+ )
186
+
187
+
125
188
  def undulator(
126
189
  wait_for_connection: bool = True,
127
190
  fake_with_ophyd_sim: bool = False,
@@ -221,7 +284,6 @@ def fswitch(
221
284
  )
222
285
 
223
286
 
224
- # Must find which PandA IOC(s) are compatible
225
287
  # Must document what PandAs are physically connected to
226
288
  # See: https://github.com/bluesky/ophyd-async/issues/284
227
289
  def panda1(
@@ -287,13 +349,18 @@ def oav(
287
349
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
288
350
  ) -> AravisDetector:
289
351
  return device_instantiation(
290
- AravisDetector,
352
+ NXSasOAV,
291
353
  "oav",
292
354
  "-DI-OAV-01:",
293
355
  wait_for_connection,
294
356
  fake_with_ophyd_sim,
295
357
  drv_suffix="DET:",
296
358
  hdf_suffix="HDF5:",
359
+ metadata_holder=NXSasMetadataHolder(
360
+ x_pixel_size=(3.45e-3, "mm"), # Double check this figure
361
+ y_pixel_size=(3.45e-3, "mm"),
362
+ description="AVT Mako G-507B",
363
+ ),
297
364
  directory_provider=get_directory_provider(),
298
365
  )
299
366
 
dodal/beamlines/p38.py CHANGED
@@ -12,6 +12,7 @@ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beam
12
12
  from dodal.common.beamlines.device_helpers import numbered_slits
13
13
  from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitDirectoryProvider
14
14
  from dodal.devices.focusing_mirror import FocusingMirror
15
+ from dodal.devices.i22.dcm import CrystalMetadata, DoubleCrystalMonochromator
15
16
  from dodal.devices.i22.fswitch import FSwitch
16
17
  from dodal.devices.linkam3 import Linkam3
17
18
  from dodal.devices.slits import Slits
@@ -214,6 +215,34 @@ def hfm(
214
215
  )
215
216
 
216
217
 
218
+ def dcm(
219
+ wait_for_connection: bool = True,
220
+ fake_with_ophyd_sim: bool = True,
221
+ ) -> DoubleCrystalMonochromator:
222
+ return device_instantiation(
223
+ DoubleCrystalMonochromator,
224
+ "dcm",
225
+ "",
226
+ wait_for_connection,
227
+ fake_with_ophyd_sim,
228
+ bl_prefix=False,
229
+ motion_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-MO-DCM-01:",
230
+ temperature_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-DI-DCM-01:",
231
+ crystal_1_metadata=CrystalMetadata(
232
+ usage="Bragg",
233
+ type="silicon",
234
+ reflection=(1, 1, 1),
235
+ d_spacing=3.13475,
236
+ ),
237
+ crystal_2_metadata=CrystalMetadata(
238
+ usage="Bragg",
239
+ type="silicon",
240
+ reflection=(1, 1, 1),
241
+ d_spacing=3.13475,
242
+ ),
243
+ )
244
+
245
+
217
246
  def undulator(
218
247
  wait_for_connection: bool = True,
219
248
  fake_with_ophyd_sim: bool = True,
@@ -8,6 +8,7 @@ from ophyd import Component, Device, DeviceStatus, EpicsSignal, EpicsSignalRO, S
8
8
  from PIL import Image, ImageDraw
9
9
 
10
10
  from dodal.devices.oav.oav_parameters import OAVConfigParams
11
+ from dodal.devices.oav.utils import save_thumbnail
11
12
  from dodal.log import LOGGER
12
13
 
13
14
 
@@ -49,6 +50,9 @@ class MJPG(Device, ABC):
49
50
 
50
51
  LOGGER.info(f"Saving image to {path}")
51
52
  image.save(path)
53
+
54
+ save_thumbnail(Path(path), image)
55
+
52
56
  self.last_saved_path.put(path)
53
57
 
54
58
  def trigger(self):
@@ -67,7 +67,11 @@ class DetectorParams(BaseModel):
67
67
  def _parse_detector_size_constants(
68
68
  cls, det_type: str, values: dict[str, Any]
69
69
  ) -> DetectorSizeConstants:
70
- return constants_from_type(det_type)
70
+ return (
71
+ det_type
72
+ if isinstance(det_type, DetectorSizeConstants)
73
+ else constants_from_type(det_type)
74
+ )
71
75
 
72
76
  @validator("directory", pre=True)
73
77
  def _parse_directory(cls, directory: str, values: dict[str, Any]) -> str: