dls-dodal 1.36.2__py3-none-any.whl → 1.36.3__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.36.2
3
+ Version: 1.36.3
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.8.0a5
219
+ Requires-Dist: ophyd-async>=0.9.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -1,6 +1,6 @@
1
1
  dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
2
  dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
- dodal/_version.py,sha256=eqat9FvXyrftwP2dajRS3LWZiDD9Pay4_MD5eY1_jxU,413
3
+ dodal/_version.py,sha256=zCUFph3NXnWsNVGniqwz8NKCDOFFa-siapasQGlkWD4,413
4
4
  dodal/cli.py,sha256=NieWNUgLUxyck1rHoFAPJjX1xXLzHNdQ-s4wvxYFfps,3757
5
5
  dodal/log.py,sha256=0to7CRsbzbgVfAAfKRAMhsaUuKqF2-7CGdQc-z8Uhno,9499
6
6
  dodal/utils.py,sha256=h2sNmTlsaznfxusV1Xj_mXtNjzsWjWAgmps6I0YNA3U,18097
@@ -12,12 +12,12 @@ dodal/beamlines/adsim.py,sha256=DUAFS1ueoZ6DK2cmZkiEm3NElnaro1mUvyodv14pSmU,1839
12
12
  dodal/beamlines/b01_1.py,sha256=0gLjg0O9ttMjHzszSyJ_GT3fnoAB6u4aJ4MdAfjJbHA,1788
13
13
  dodal/beamlines/i03.py,sha256=WOMkGTcrrKqoBNeRObumMA8Nlo404uIr2ccfn8gK-zs,18063
14
14
  dodal/beamlines/i04.py,sha256=z8LUbhyfUDU08oSp85hg7hFE8FJkAyLsqPUQScs5SUA,14567
15
- dodal/beamlines/i10.py,sha256=0ZoFe1vuwNiP2AvNACxuN0OMXJ4DcQ3Oqa0L-w5Ch_M,7744
15
+ dodal/beamlines/i10.py,sha256=4VrbkRFi1HdNrXN_ItMWOROrx1BRbid-ZbtwcgMWP9w,9129
16
16
  dodal/beamlines/i13_1.py,sha256=csXHrdwUh4sXTmb4X6ZiiSS_XxRkNShsVoBMxYI6rG0,1833
17
17
  dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
18
18
  dodal/beamlines/i22.py,sha256=tzx8w86uvJHo5TuwPoIUErB7C5mGhqTzlv45qrppld0,7228
19
19
  dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
20
- dodal/beamlines/i24.py,sha256=w9xkufc7CluVj5nvQww1B7k8VN5RzNQ6AsX8bfyAi9k,8544
20
+ dodal/beamlines/i24.py,sha256=bV1OqQP0KdJDM5SLsru6TGYLSxwXSy2GExpG44Qfo0w,8539
21
21
  dodal/beamlines/p38.py,sha256=JJbclLYoRdIxcpzpW4oTj77YJ001CdEAM0bKRk7seYI,8735
22
22
  dodal/beamlines/p45.py,sha256=N4SDTIFok3uMqb37higZHMr3xRjxItsT4ib_KacKKAE,2935
23
23
  dodal/beamlines/p99.py,sha256=I6c_3NbvEPOpy2z1uwLRqwCkd83Sf15-OXEykLkn0-c,910
@@ -39,7 +39,7 @@ dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  dodal/devices/adsim.py,sha256=vCexraF4zLssHdjfPod-XuQGJE_sWoCttFdx__HDS8w,488
40
40
  dodal/devices/aperture.py,sha256=yyw2ei3gM_lmZWDQ6VTbydB58RCDTen_nqBZyoTP2IM,583
41
41
  dodal/devices/aperturescatterguard.py,sha256=PRNnGbxYKFWoa1m70Mz-6Ta4NtFG0ShUprBvv2viUeI,8993
42
- dodal/devices/apple2_undulator.py,sha256=HtjHiDX80n_nzabuFcUioH-gWH1a6VjZzw_xStq7S4w,22470
42
+ dodal/devices/apple2_undulator.py,sha256=ls_qGM_nGsZdo4I_Zs_stFjUc1oZE6zB1puWrV8-2Wg,22470
43
43
  dodal/devices/attenuator.py,sha256=SEDnnNeUpwBArJbPcwHyr5BwkHO1Jvgsrw1bpFz5u-o,2894
44
44
  dodal/devices/backlight.py,sha256=nQIr3J-I-OXnOUoWmr3ruy3nhq_q2US1KXC4NrGG_2U,1634
45
45
  dodal/devices/cryostream.py,sha256=K-ldpredpeDTzNt4qtQMg99nKJNjBYoXBbK0WJGexzw,656
@@ -53,7 +53,7 @@ dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
53
53
  dodal/devices/focusing_mirror.py,sha256=vdUPkwyCAZBSR3LQ-EojDOoxVy1ZmOaD_nevETbj7BA,6592
54
54
  dodal/devices/hutch_shutter.py,sha256=WXY9JwqAa5prbf72IP7_MTKndPDtAltCpPJlNbq-F_0,3313
55
55
  dodal/devices/ipin.py,sha256=eq5jlKw7WGQi8VLrAWpaAIsZmfiVf-5Q0td_B22H6A4,473
56
- dodal/devices/linkam3.py,sha256=O1ufCb5ce6nfGXVwiO3I1WEnZ_Jp0azWxBcrZ7PWQm4,3869
56
+ dodal/devices/linkam3.py,sha256=2sf-_heIsDg4qmqae-w9C2Py8pG8bPB3mT0TFPQIzd0,3869
57
57
  dodal/devices/logging_ophyd_device.py,sha256=dUVE-XhWA56WUXez0mrc4sf322CXY3MVLreTycO5j_A,668
58
58
  dodal/devices/motors.py,sha256=mduFm9vTZfu9rhwL93AMZpDzGd2TASdqalWzRaMoqec,1114
59
59
  dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
@@ -64,11 +64,11 @@ dodal/devices/robot.py,sha256=laLwekoO9RsZzfag_6UGf8NhcGZ5deP4JAutvHqo2KM,5336
64
64
  dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
65
65
  dodal/devices/scatterguard.py,sha256=jx03in9QgaThWxD4t1S8_Llent2kWrn_hThJ9KkUWTk,330
66
66
  dodal/devices/scintillator.py,sha256=PlD6cnJ39PTB_e7QrRspPliLYE4kL_K7ziJURzuxgdA,365
67
- dodal/devices/slits.py,sha256=uOyVmbgeygiP6e5Z9t5zMPXLuVEWFfYg9GB3ZU76Tug,600
67
+ dodal/devices/slits.py,sha256=b_7ku2sHlzhMHTvWrwiRwee6ufrbxNX9JB_Z0lvk15o,1105
68
68
  dodal/devices/smargon.py,sha256=tOHb9fjI8ZCIrboiC4OzS2j1QJDOKkAlQ2SORbBmaGo,4708
69
69
  dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
70
70
  dodal/devices/synchrotron.py,sha256=wLfClZ1lYQWA_D--UsM3NnKLG8bY8mvVsRYER6ob-Ew,2026
71
- dodal/devices/tetramm.py,sha256=460luDYab-u1QB0CPe7lPihtm9nZxdCDGtLPnXI-XGo,8447
71
+ dodal/devices/tetramm.py,sha256=17uUbwcK7G7RTZ0Q37PgQ8HOot6iMJ_dPGFO8ZblEZM,8455
72
72
  dodal/devices/thawer.py,sha256=4t4yF4VDIrT_tQ8RwjmXe_hDMwVjR8A-4rDkPx19b28,1672
73
73
  dodal/devices/turbo_slit.py,sha256=B6SPXqviMnG-U4PnUF1BdTO0LBKmTuwAUKRbxMiNJXo,1125
74
74
  dodal/devices/undulator.py,sha256=rQjDhrvgf4uXUEO17CiLopNDEagWOgkmpa02BarozDE,5295
@@ -76,7 +76,7 @@ dodal/devices/undulator_dcm.py,sha256=4Y1ZgKatBenQgg4DuZnMtKwLDOH2YvUMo1QkFE0aaX
76
76
  dodal/devices/watsonmarlow323_pump.py,sha256=rwU94YE6esgGLYdh-pe8nBo_3tvgp6brrrbPDrqp5_M,1406
77
77
  dodal/devices/webcam.py,sha256=mef075ynDbzZ4pNAjfxR_9tdTTqF_rM7hAOVEEOV-Do,2408
78
78
  dodal/devices/xbpm_feedback.py,sha256=j8MHhhE0feoe6R54zPKqS5EbQ0bEDR-nOpLHzHhnHHQ,1156
79
- dodal/devices/zebra.py,sha256=p191eIGfmwM2EE1YJn6rRgChim2kqXl2KIYbMPUSOvg,9474
79
+ dodal/devices/zebra.py,sha256=cOcohj57eDKWgd-747EsL1ypPQWrOVc68EB_9D4L8CI,9474
80
80
  dodal/devices/zebra_controlled_shutter.py,sha256=5-SH5HoXp_6P-xAtfDFJKQq6mBDwreubuCULSz78fgw,1852
81
81
  dodal/devices/areadetector/plugins/CAM.py,sha256=sZzJm5Ez3eWfXZi_EB67wluhZmMQm1UyOc2bJFfzd1U,964
82
82
  dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33KyntuLepbF0YmX0KE,3031
@@ -89,7 +89,9 @@ dodal/devices/detector/detector_motion.py,sha256=UGDQriDWRluDZOZh1mDX9w_fPjMD-_B
89
89
  dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
91
91
  dodal/devices/i10/i10_apple2.py,sha256=pEZes8wVCPHiOOcuVhEtqPvtnyphMxqbdp39mDp6xXQ,13165
92
- dodal/devices/i10/i10_setting_data.py,sha256=Pc78L9asOLot9WmKcxkxpaefB3h4FeKIolHcGO4JnOU,161
92
+ dodal/devices/i10/i10_setting_data.py,sha256=69XWgE-YNTiW7C3t67MNcTL5JDDhOo7h-X7DCTpFE5g,164
93
+ dodal/devices/i10/mirrors.py,sha256=E0M5keGI3LGaDHyXQkCCyj6xmixNY1xTSkIaaYwtnP8,794
94
+ dodal/devices/i10/slits.py,sha256=4X50bGiJhTIHxhsOrv-8DATBkQPwQgEaFMNa2OsPrFY,1201
93
95
  dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
96
  dodal/devices/i22/dcm.py,sha256=SQDh-Sj1OvplHZ9yTWblJwv8PJrUqxseDPupZOWmcLo,4701
95
97
  dodal/devices/i22/fswitch.py,sha256=LSMoo9aDkH0SLcojbUh2NxTWIpUXHZxauTqThc3XtSk,3073
@@ -99,8 +101,8 @@ dodal/devices/i24/aperture.py,sha256=XlnOyQsvdTom1dJHVUg8CUSthq3jlBlZFOUaa9b1eZ4
99
101
  dodal/devices/i24/beam_center.py,sha256=c5NRCBjhg9hMjznNMDipIq0M8-T8yM78IzhcRdpNtGw,470
100
102
  dodal/devices/i24/beamstop.py,sha256=89ncXUisia1rn1Faf5iWg3k0QW6Rm99j1vq9A8l9Xv8,1221
101
103
  dodal/devices/i24/dcm.py,sha256=Q3qqlgsiLJga2cgI8L4jczjyUgQixJh6QWg7shrFpTQ,1988
102
- dodal/devices/i24/dual_backlight.py,sha256=mhbM4CzfjWQ883ebnG4oP1PLa1I4BlR30s-Ly5nXXb0,2023
103
- dodal/devices/i24/focus_mirrors.py,sha256=Z5ZSJeKdHa8vGlUNxzZz9fe6pQ1uJUWX6JFHbfPO1JQ,1845
104
+ dodal/devices/i24/dual_backlight.py,sha256=CbQ9mYUNhhozVdNXqR5ac73tEIAWT2RnEpRwXB3EFog,2049
105
+ dodal/devices/i24/focus_mirrors.py,sha256=HO3B4yjV-HMvjkgFd2xTvXft75Qj4lN8d0RNg6HJ4Lo,1857
104
106
  dodal/devices/i24/i24_detector_motion.py,sha256=_HgdsZqFYY0tKqUgMzViHaPEUFXL3WlXXioGvDehRUw,364
105
107
  dodal/devices/i24/pilatus_metadata.py,sha256=fV8AQSBYGx1Qc91Rqj8VhcFPqPLqLCePNpDdmhcrTYM,1827
106
108
  dodal/devices/i24/pmac.py,sha256=lz9FYU_8YN8cC51ddTzdxcUA7MCVTA_ho3P0CHJ9zCo,6837
@@ -119,7 +121,7 @@ dodal/devices/oav/snapshots/grid_overlay.py,sha256=CdvCdTKMCiwMwxm2lV28KpcIUSXls
119
121
  dodal/devices/oav/snapshots/snapshot_with_beam_centre.py,sha256=J77RfE3AGTLNdWc6hvsRn2DUdupzuk_FTDGvdP0jqbU,1962
120
122
  dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=EBoCtr1NmOKye2yQHqbTBxSg-DsEKFeyBtMFmOeGPRs,2269
121
123
  dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- dodal/devices/p99/sample_stage.py,sha256=B795PAcvrtHo3AZexPyke8R7t-g-0Vr3BhO0fQz_wF8,1189
124
+ dodal/devices/p99/sample_stage.py,sha256=v2-KSvuxCmpreVUh0p2OLGj6d1MR_li56cvMBWbvF9g,1189
123
125
  dodal/devices/training_rig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
126
  dodal/devices/training_rig/sample_stage.py,sha256=jktTp837ij8wor5LidE3AajCk95L7DebJotMlO7QwTE,355
125
127
  dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -128,8 +130,8 @@ dodal/devices/util/epics_util.py,sha256=A8iNL79PnxntuxPTKA9oLGaDRKhnXaaeAVJwS6FN
128
130
  dodal/devices/util/lookup_tables.py,sha256=Bk-wZk7JO5_j_8gbot-8reirVqxvFUg9_SIqEIOVZu0,2025
129
131
  dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
130
132
  dodal/devices/util/save_panda.py,sha256=PHFlkerBhkkU0-o5dNEdi2P95_jD9Lk8yYgaqn9R97o,2538
131
- dodal/devices/util/test_utils.py,sha256=VrSFFGLNKOcCAsWFMZOxwhng3wGR5kV8NqqnKfj8Vuw,562
132
- dodal/devices/xspress3/xspress3.py,sha256=pD46vyjbblrzE3xhP2ZGcStmN06cp41gSOLuff_bQTs,4636
133
+ dodal/devices/util/test_utils.py,sha256=x0QVKVeST4T-wpsVSSm-169MyNRXlmybVWnPTefv1as,565
134
+ dodal/devices/xspress3/xspress3.py,sha256=75RdPuHpES4Xi-Lcywz0XUhaN2G3vZSoc-dzgcxfNvs,4636
133
135
  dodal/devices/xspress3/xspress3_channel.py,sha256=w8tAx2lz5kJ_LeJ_eb_4o--Dtt8MRijsYNgDG6oEIVg,1626
134
136
  dodal/devices/zocalo/__init__.py,sha256=dRAZ9o7B9TACqyE7aanT3yzvqWtt019YgV5ZJY7Ylso,517
135
137
  dodal/devices/zocalo/zocalo_constants.py,sha256=vu7Xjz7UNEpBUWEEBxDvP4bVFkZIN6NLGfQDpWbCjH8,98
@@ -144,9 +146,9 @@ dodal/plan_stubs/wrapped.py,sha256=nriHKX4BF010CmrhdoUhY3-txClW5W8TPLz64kE_AXU,4
144
146
  dodal/plans/__init__.py,sha256=nH1jNxw3DzDMg9O8Uda0kqKIalRVEWBrq07OLY6Ey38,93
145
147
  dodal/plans/scanspec.py,sha256=Q0AcvTKRT401iGMRDSqK-D523UX5_ofiVMZ_rNXKOx8,2074
146
148
  dodal/plans/wrapped.py,sha256=Cr2iOpQCuk2ORKo5CZOh-zbQXAjoTfaLrfm7r1--GhU,2098
147
- dls_dodal-1.36.2.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
148
- dls_dodal-1.36.2.dist-info/METADATA,sha256=CWBsjskEIuoboOXY_f3RJ4xuoDWdR5c9RhDjsuqNL3w,16655
149
- dls_dodal-1.36.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
150
- dls_dodal-1.36.2.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
151
- dls_dodal-1.36.2.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
152
- dls_dodal-1.36.2.dist-info/RECORD,,
149
+ dls_dodal-1.36.3.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
150
+ dls_dodal-1.36.3.dist-info/METADATA,sha256=kxGKgtp3OTCkpiOdg7edQ8FCV9G8Hw4klZobJMmibSA,16655
151
+ dls_dodal-1.36.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
152
+ dls_dodal-1.36.3.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
153
+ dls_dodal-1.36.3.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
154
+ dls_dodal-1.36.3.dist-info/RECORD,,
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.36.2'
16
- __version_tuple__ = version_tuple = (1, 36, 2)
15
+ __version__ = version = '1.36.3'
16
+ __version_tuple__ = version_tuple = (1, 36, 3)
dodal/beamlines/i10.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
- from dodal.common.beamlines.beamline_utils import device_instantiation
3
+ from dodal.common.beamlines.beamline_utils import device_factory, device_instantiation
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.apple2_undulator import (
6
6
  UndulatorGap,
@@ -14,13 +14,18 @@ from dodal.devices.i10.i10_apple2 import (
14
14
  LinearArbitraryAngle,
15
15
  )
16
16
  from dodal.devices.i10.i10_setting_data import I10Grating
17
+ from dodal.devices.i10.mirrors import PiezoMirror
18
+ from dodal.devices.i10.slits import I10PrimarySlits, I10Slits
17
19
  from dodal.devices.pgm import PGM
20
+ from dodal.devices.slits import MinimalSlits
18
21
  from dodal.log import set_beamline as set_log_beamline
19
22
  from dodal.utils import BeamlinePrefix, get_beamline_name
20
23
 
21
24
  BL = get_beamline_name("i10")
22
25
  set_log_beamline(BL)
23
26
  set_utils_beamline(BL)
27
+ PREFIX = BeamlinePrefix(BL)
28
+
24
29
 
25
30
  LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
26
31
  """
@@ -39,7 +44,7 @@ def idd_gap(
39
44
  return device_instantiation(
40
45
  device_factory=UndulatorGap,
41
46
  name="idd_gap",
42
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
47
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
43
48
  wait=wait_for_connection,
44
49
  fake=fake_with_ophyd_sim,
45
50
  bl_prefix=False,
@@ -52,7 +57,7 @@ def idd_phase_axes(
52
57
  return device_instantiation(
53
58
  device_factory=UndulatorPhaseAxes,
54
59
  name="idd_phase_axes",
55
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
60
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
56
61
  top_outer="RPQ1",
57
62
  top_inner="RPQ2",
58
63
  btm_inner="RPQ3",
@@ -69,7 +74,7 @@ def idd_jaw(
69
74
  return device_instantiation(
70
75
  device_factory=UndulatorJawPhase,
71
76
  name="idd_jaw",
72
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
77
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
73
78
  move_pv="RPQ1",
74
79
  wait=wait_for_connection,
75
80
  fake=fake_with_ophyd_sim,
@@ -83,7 +88,7 @@ def idu_gap(
83
88
  return device_instantiation(
84
89
  device_factory=UndulatorGap,
85
90
  name="idu_gap",
86
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
91
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
87
92
  wait=wait_for_connection,
88
93
  fake=fake_with_ophyd_sim,
89
94
  bl_prefix=False,
@@ -96,7 +101,7 @@ def idu_phase_axes(
96
101
  return device_instantiation(
97
102
  device_factory=UndulatorPhaseAxes,
98
103
  name="idu_phase_axes",
99
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
104
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
100
105
  top_outer="RPQ1",
101
106
  top_inner="RPQ2",
102
107
  btm_inner="RPQ3",
@@ -113,7 +118,7 @@ def idu_jaw(
113
118
  return device_instantiation(
114
119
  device_factory=UndulatorJawPhase,
115
120
  name="idu_jaw",
116
- prefix=f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-21:",
121
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
117
122
  move_pv="RPQ1",
118
123
  wait=wait_for_connection,
119
124
  fake=fake_with_ophyd_sim,
@@ -255,3 +260,65 @@ def idd_la_angle(
255
260
  wait=wait_for_connection,
256
261
  fake=fake_with_ophyd_sim,
257
262
  )
263
+
264
+
265
+ @device_factory()
266
+ def first_mirror() -> PiezoMirror:
267
+ return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:")
268
+
269
+
270
+ @device_factory()
271
+ def switching_mirror() -> PiezoMirror:
272
+ return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:")
273
+
274
+
275
+ @device_factory()
276
+ def slit_1() -> I10PrimarySlits:
277
+ return I10PrimarySlits(
278
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
279
+ )
280
+
281
+
282
+ @device_factory()
283
+ def slit_2() -> I10Slits:
284
+ return I10Slits(
285
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
286
+ )
287
+
288
+
289
+ @device_factory()
290
+ def slit_3() -> I10Slits:
291
+ return I10Slits(
292
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:",
293
+ )
294
+
295
+
296
+ """Rasor devices"""
297
+
298
+
299
+ @device_factory()
300
+ def focusing_mirror() -> PiezoMirror:
301
+ return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:")
302
+
303
+
304
+ @device_factory()
305
+ def slit_4() -> MinimalSlits:
306
+ return MinimalSlits(
307
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
308
+ x_gap="XSIZE",
309
+ y_gap="YSIZE",
310
+ )
311
+
312
+
313
+ @device_factory()
314
+ def slit_5() -> I10Slits:
315
+ return I10Slits(
316
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
317
+ )
318
+
319
+
320
+ @device_factory()
321
+ def slit_6() -> I10Slits:
322
+ return I10Slits(
323
+ prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:",
324
+ )
dodal/beamlines/i24.py CHANGED
@@ -21,7 +21,7 @@ from dodal.log import set_beamline as set_log_beamline
21
21
  from dodal.utils import get_beamline_name, skip_device
22
22
 
23
23
  ZOOM_PARAMS_FILE = (
24
- "/dls_sw/i24/software/gda_versions/gda_9_34/config/xml/jCameraManZoomLevels.xml"
24
+ "/dls_sw/i24/software/gda_versions/gda/config/xml/jCameraManZoomLevels.xml"
25
25
  )
26
26
  DISPLAY_CONFIG = "/dls_sw/i24/software/gda_versions/var/display.configuration"
27
27
 
@@ -21,8 +21,8 @@ from dodal.log import LOGGER
21
21
 
22
22
 
23
23
  class UndulatorGateStatus(StrictEnum):
24
- open = "Open"
25
- close = "Closed"
24
+ OPEN = "Open"
25
+ CLOSE = "Closed"
26
26
 
27
27
 
28
28
  @dataclass
@@ -146,7 +146,7 @@ class UndulatorGap(StandardReadable, Movable):
146
146
  timeout = await self._cal_timeout()
147
147
  LOGGER.info(f"Moving {self.name} to {value} with timeout = {timeout}")
148
148
  await self.set_move.set(value=1, timeout=timeout)
149
- await wait_for_value(self.gate, UndulatorGateStatus.close, timeout=timeout)
149
+ await wait_for_value(self.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
150
150
 
151
151
  async def _cal_timeout(self) -> float:
152
152
  vel = await self.velocity.get_value()
@@ -157,7 +157,7 @@ class UndulatorGap(StandardReadable, Movable):
157
157
  async def check_id_status(self) -> None:
158
158
  if await self.fault.get_value() != 0:
159
159
  raise RuntimeError(f"{self.name} is in fault state")
160
- if await self.gate.get_value() == UndulatorGateStatus.open:
160
+ if await self.gate.get_value() == UndulatorGateStatus.OPEN:
161
161
  raise RuntimeError(f"{self.name} is already in motion.")
162
162
 
163
163
  async def get_timeout(self) -> float:
@@ -251,7 +251,7 @@ class UndulatorPhaseAxes(StandardReadable, Movable):
251
251
  )
252
252
  timeout = await self._cal_timeout()
253
253
  await self.set_move.set(value=1, timeout=timeout)
254
- await wait_for_value(self.gate, UndulatorGateStatus.close, timeout=timeout)
254
+ await wait_for_value(self.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
255
255
 
256
256
  async def _cal_timeout(self) -> float:
257
257
  """
@@ -283,7 +283,7 @@ class UndulatorPhaseAxes(StandardReadable, Movable):
283
283
  async def check_id_status(self) -> None:
284
284
  if await self.fault.get_value() != 0:
285
285
  raise RuntimeError(f"{self.name} is in fault state")
286
- if await self.gate.get_value() == UndulatorGateStatus.open:
286
+ if await self.gate.get_value() == UndulatorGateStatus.OPEN:
287
287
  raise RuntimeError(f"{self.name} is already in motion.")
288
288
 
289
289
  async def get_timeout(self) -> float:
@@ -325,7 +325,7 @@ class UndulatorJawPhase(StandardReadable, Movable):
325
325
  )
326
326
  timeout = await self._cal_timeout()
327
327
  await self.set_move.set(value=1, timeout=timeout)
328
- await wait_for_value(self.gate, UndulatorGateStatus.close, timeout=timeout)
328
+ await wait_for_value(self.gate, UndulatorGateStatus.CLOSE, timeout=timeout)
329
329
 
330
330
  async def _cal_timeout(self) -> float:
331
331
  """
@@ -345,7 +345,7 @@ class UndulatorJawPhase(StandardReadable, Movable):
345
345
  async def check_id_status(self) -> None:
346
346
  if await self.fault.get_value() != 0:
347
347
  raise RuntimeError(f"{self.name} is in fault state")
348
- if await self.gate.get_value() == UndulatorGateStatus.open:
348
+ if await self.gate.get_value() == UndulatorGateStatus.OPEN:
349
349
  raise RuntimeError(f"{self.name} is already in motion.")
350
350
 
351
351
  async def get_timeout(self) -> float:
@@ -458,7 +458,7 @@ class Apple2(StandardReadable, Movable):
458
458
  self.phase().set_move.set(value=1, timeout=timeout),
459
459
  )
460
460
  await wait_for_value(
461
- self.gap().gate, UndulatorGateStatus.close, timeout=timeout
461
+ self.gap().gate, UndulatorGateStatus.CLOSE, timeout=timeout
462
462
  )
463
463
  self._energy_set(energy) # Update energy for after move for readback.
464
464
 
@@ -2,6 +2,6 @@ from ophyd_async.core import StrictEnum
2
2
 
3
3
 
4
4
  class I10Grating(StrictEnum):
5
- Au400 = "400 line/mm Au"
6
- Si400 = "400 line/mm Si"
7
- Au1200 = "1200 line/mm Au"
5
+ AU_400 = "400 line/mm Au"
6
+ SI_400 = "400 line/mm Si"
7
+ AU_1200 = "1200 line/mm Au"
@@ -0,0 +1,24 @@
1
+ from ophyd_async.core import StandardReadable
2
+ from ophyd_async.epics.core import epics_signal_rw
3
+ from ophyd_async.epics.motor import Motor
4
+
5
+
6
+ class PiezoMirror(StandardReadable):
7
+ def __init__(
8
+ self,
9
+ prefix: str,
10
+ name: str = "",
11
+ ):
12
+ with self.add_children_as_readables():
13
+ self.x = Motor(prefix + "X")
14
+ self.y = Motor(prefix + "Y")
15
+ self.z = Motor(prefix + "Z")
16
+ self.yaw = Motor(prefix + "YAW")
17
+ self.pitch = Motor(prefix + "PITCH")
18
+ self.roll = Motor(prefix + "ROLL")
19
+ self.fine_pitch = epics_signal_rw(
20
+ float,
21
+ read_pv=prefix + "FPITCH:RBV:AI",
22
+ write_pv=prefix + "FPITCH:DMD:AO",
23
+ )
24
+ super().__init__(name=name)
@@ -0,0 +1,37 @@
1
+ from ophyd_async.epics.motor import Motor
2
+
3
+ from dodal.devices.slits import Slits
4
+
5
+
6
+ class I10Slits(Slits):
7
+ def __init__(self, prefix: str, name: str = "") -> None:
8
+ with self.add_children_as_readables():
9
+ self.x_ring_blade = Motor(prefix + "XRING")
10
+ self.x_hall_blade = Motor(prefix + "XHALL")
11
+ self.y_top_blade = Motor(prefix + "YPLUS")
12
+ self.y_bot_blade = Motor(prefix + "YMINUS")
13
+ super().__init__(
14
+ prefix=prefix,
15
+ x_gap="XSIZE",
16
+ x_centre="XCENTRE",
17
+ y_gap="YSIZE",
18
+ y_centre="YCENTRE",
19
+ name=name,
20
+ )
21
+
22
+
23
+ class I10PrimarySlits(Slits):
24
+ def __init__(self, prefix: str, name: str = "") -> None:
25
+ with self.add_children_as_readables():
26
+ self.x_aptr_1 = Motor(prefix + "APTR1:X")
27
+ self.x_aptr_2 = Motor(prefix + "APTR2:X")
28
+ self.y_aptr_1 = Motor(prefix + "APTR1:Y")
29
+ self.y_aptr_1 = Motor(prefix + "APTR2:Y")
30
+ super().__init__(
31
+ prefix=prefix,
32
+ x_gap="XSIZE",
33
+ x_centre="XCENTRE",
34
+ y_gap="YSIZE",
35
+ y_centre="YCENTRE",
36
+ name=name,
37
+ )
@@ -8,6 +8,7 @@ class BacklightPositions(StrictEnum):
8
8
  LOAD_CHECK = "LoadCheck"
9
9
  OAV2 = "OAV2"
10
10
  DIODE = "Diode"
11
+ WHITE_IN = "White In"
11
12
 
12
13
 
13
14
  class LEDStatus(StrictEnum):
@@ -5,21 +5,21 @@ from dodal.common.signal_utils import create_hardware_backed_soft_signal
5
5
 
6
6
 
7
7
  class HFocusMode(StrictEnum):
8
- focus10 = "HMFMfocus10"
9
- focus20d = "HMFMfocus20d"
10
- focus30d = "HMFMfocus30d"
11
- focus50d = "HMFMfocus50d"
12
- focus1050d = "HMFMfocus1030d"
13
- focus3010d = "HMFMfocus3010d"
8
+ FOCUS_10 = "HMFMfocus10"
9
+ FOCUS_20D = "HMFMfocus20d"
10
+ FOCUS_30D = "HMFMfocus30d"
11
+ FOCUS_50D = "HMFMfocus50d"
12
+ FOCUS_1050D = "HMFMfocus1030d"
13
+ FOCUS_3010D = "HMFMfocus3010d"
14
14
 
15
15
 
16
16
  class VFocusMode(StrictEnum):
17
- focus10 = "VMFMfocus10"
18
- focus20d = "VMFMfocus20d"
19
- focus30d = "VMFMfocus30d"
20
- focus50d = "VMFMfocus50d"
21
- focus1030d = "VMFMfocus1030d"
22
- focus3010d = "VMFMfocus3010d"
17
+ FOCUS_10 = "VMFMfocus10"
18
+ FOCUS_20D = "VMFMfocus20d"
19
+ FOCUS_30D = "VMFMfocus30d"
20
+ FOCUS_50D = "VMFMfocus50d"
21
+ FOCUS_1030D = "VMFMfocus1030d"
22
+ FOCUS_3010D = "VMFMfocus3010d"
23
23
 
24
24
 
25
25
  BEAM_SIZES = {
dodal/devices/linkam3.py CHANGED
@@ -14,8 +14,8 @@ from ophyd_async.epics.core import epics_signal_r, epics_signal_rw
14
14
 
15
15
 
16
16
  class PumpControl(StrictEnum):
17
- Manual = "Manual"
18
- Auto = "Auto"
17
+ MANUAL = "Manual"
18
+ AUTO = "Auto"
19
19
 
20
20
 
21
21
  class Linkam3(StandardReadable):
@@ -12,22 +12,22 @@ class SampleAngleStage(StandardReadable):
12
12
 
13
13
 
14
14
  class p99StageSelections(SubsetEnum):
15
- Empty = "Empty"
16
- Mn5um = "Mn 5um"
17
- Fe = "Fe (empty)"
18
- Co5um = "Co 5um"
19
- Ni5um = "Ni 5um"
20
- Cu5um = "Cu 5um"
21
- Zn5um = "Zn 5um"
22
- Zr = "Zr (empty)"
23
- Mo = "Mo (empty)"
24
- Rh = "Rh (empty)"
25
- Pd = "Pd (empty)"
26
- Ag = "Ag (empty)"
27
- Cd25um = "Cd 25um"
15
+ EMPTY = "Empty"
16
+ MN5UM = "Mn 5um"
17
+ FE = "Fe (empty)"
18
+ CO5UM = "Co 5um"
19
+ NI5UM = "Ni 5um"
20
+ CU5UM = "Cu 5um"
21
+ ZN5UM = "Zn 5um"
22
+ ZR = "Zr (empty)"
23
+ MO = "Mo (empty)"
24
+ RH = "Rh (empty)"
25
+ PD = "Pd (empty)"
26
+ AG = "Ag (empty)"
27
+ CD25UM = "Cd 25um"
28
28
  W = "W (empty)"
29
- Pt = "Pt (empty)"
30
- User = "User"
29
+ PT = "Pt (empty)"
30
+ USER = "User"
31
31
 
32
32
 
33
33
  class FilterMotor(StandardReadable):
dodal/devices/slits.py CHANGED
@@ -2,16 +2,38 @@ from ophyd_async.core import StandardReadable
2
2
  from ophyd_async.epics.motor import Motor
3
3
 
4
4
 
5
- class Slits(StandardReadable):
5
+ class MinimalSlits(StandardReadable):
6
+ """Gap only X Y slits."""
7
+
8
+ def __init__(
9
+ self,
10
+ prefix: str,
11
+ x_gap: str = "X:SIZE",
12
+ y_gap: str = "Y:SIZE",
13
+ name: str = "",
14
+ ) -> None:
15
+ with self.add_children_as_readables():
16
+ self.x_gap = Motor(prefix + x_gap)
17
+ self.y_gap = Motor(prefix + y_gap)
18
+ super().__init__(name=name)
19
+
20
+
21
+ class Slits(MinimalSlits):
6
22
  """
7
23
  Representation of a 4-blade set of slits. Allows control/readout of the gap
8
24
  between each pair of blades.
9
25
  """
10
26
 
11
- def __init__(self, prefix: str, name: str = "") -> None:
27
+ def __init__(
28
+ self,
29
+ prefix: str,
30
+ x_gap: str = "X:SIZE",
31
+ y_gap: str = "Y:SIZE",
32
+ x_centre: str = "X:CENTRE",
33
+ y_centre: str = "Y:CENTRE",
34
+ name: str = "",
35
+ ) -> None:
12
36
  with self.add_children_as_readables():
13
- self.x_gap = Motor(prefix + "X:SIZE")
14
- self.y_gap = Motor(prefix + "Y:SIZE")
15
- self.x_centre = Motor(prefix + "X:CENTRE")
16
- self.y_centre = Motor(prefix + "Y:CENTRE")
17
- super().__init__(name)
37
+ self.x_centre = Motor(prefix + x_centre)
38
+ self.y_centre = Motor(prefix + y_centre)
39
+ super().__init__(prefix=prefix, x_gap=x_gap, y_gap=y_gap, name=name)
dodal/devices/tetramm.py CHANGED
@@ -22,31 +22,31 @@ from ophyd_async.epics.core import (
22
22
 
23
23
 
24
24
  class TetrammRange(StrictEnum):
25
- uA = "+- 120 uA"
26
- nA = "+- 120 nA"
25
+ UA = "+- 120 uA"
26
+ NA = "+- 120 nA"
27
27
 
28
28
 
29
29
  class TetrammTrigger(StrictEnum):
30
- FreeRun = "Free run"
31
- ExtTrigger = "Ext. trig."
32
- ExtBulb = "Ext. bulb"
33
- ExtGate = "Ext. gate"
30
+ FREE_RUN = "Free run"
31
+ EXT_TRIGGER = "Ext. trig."
32
+ EXT_BULB = "Ext. bulb"
33
+ EXT_GATE = "Ext. gate"
34
34
 
35
35
 
36
36
  class TetrammChannels(StrictEnum):
37
- One = "1"
38
- Two = "2"
39
- Four = "4"
37
+ ONE = "1"
38
+ TWO = "2"
39
+ FOUR = "4"
40
40
 
41
41
 
42
42
  class TetrammResolution(StrictEnum):
43
- SixteenBits = "16 bits"
44
- TwentyFourBits = "24 bits"
43
+ SIXTEEN_BITS = "16 bits"
44
+ TWENTY_FOUR_BITS = "24 bits"
45
45
 
46
46
 
47
47
  class TetrammGeometry(StrictEnum):
48
- Diamond = "Diamond"
49
- Square = "Square"
48
+ DIAMOND = "Diamond"
49
+ SQUARE = "Square"
50
50
 
51
51
 
52
52
  class TetrammDriver(Device):
@@ -118,7 +118,7 @@ class TetrammController(DetectorController):
118
118
  assert trigger_info.livetime is not None
119
119
 
120
120
  # trigger mode must be set first and on its own!
121
- await self._drv.trigger_mode.set(TetrammTrigger.ExtTrigger)
121
+ await self._drv.trigger_mode.set(TetrammTrigger.EXT_TRIGGER)
122
122
 
123
123
  await asyncio.gather(
124
124
  self._drv.averaging_time.set(trigger_info.livetime),
@@ -134,8 +134,8 @@ class TetrammController(DetectorController):
134
134
 
135
135
  def _validate_trigger(self, trigger: DetectorTrigger) -> None:
136
136
  supported_trigger_types = {
137
- DetectorTrigger.edge_trigger,
138
- DetectorTrigger.constant_gate,
137
+ DetectorTrigger.EDGE_TRIGGER,
138
+ DetectorTrigger.CONSTANT_GATE,
139
139
  }
140
140
 
141
141
  if trigger not in supported_trigger_types:
@@ -1,8 +1,8 @@
1
- from ophyd_async.core import (
1
+ from ophyd_async.epics.motor import Motor
2
+ from ophyd_async.testing import (
2
3
  callback_on_mock_put,
3
4
  set_mock_value,
4
5
  )
5
- from ophyd_async.epics.motor import Motor
6
6
 
7
7
 
8
8
  def patch_motor(motor: Motor, initial_position=0):
@@ -26,12 +26,12 @@ class TriggerMode(StrictEnum):
26
26
  SOFTWARE = "Software"
27
27
  HARDWARE = "Hardware"
28
28
  BURST = "Burst"
29
- TTL_Veto_Only = "TTL Veto Only"
29
+ TTL_VETO_ONLY = "TTL Veto Only"
30
30
  IDC = "IDC"
31
31
  SOTWARE_START_STOP = "Software Start/Stop"
32
32
  TTL_BOTH = "TTL Both"
33
33
  LVDS_VETO_ONLY = "LVDS Veto Only"
34
- LVDS_both = "LVDS Both"
34
+ LVDS_BOTH = "LVDS Both"
35
35
 
36
36
 
37
37
  class UpdateRBV(StrictEnum):
@@ -49,7 +49,7 @@ class DetectorState(StrictEnum):
49
49
  ACQUIRE = "Acquire"
50
50
  READOUT = "Readout"
51
51
  CORRECT = "Correct"
52
- Saving = "Saving"
52
+ SAVING = "Saving"
53
53
  ABORTING = "Aborting"
54
54
  ERROR = "Error"
55
55
  WAITING = "Waiting"
dodal/devices/zebra.py CHANGED
@@ -59,25 +59,25 @@ class TrigSource(StrictEnum):
59
59
 
60
60
 
61
61
  class EncEnum(StrictEnum):
62
- Enc1 = "Enc1"
63
- Enc2 = "Enc2"
64
- Enc3 = "Enc3"
65
- Enc4 = "Enc4"
66
- Enc1_4Av = "Enc1-4Av"
62
+ ENC1 = "Enc1"
63
+ ENC2 = "Enc2"
64
+ ENC3 = "Enc3"
65
+ ENC4 = "Enc4"
66
+ ENC1_4AV = "Enc1-4Av"
67
67
 
68
68
 
69
69
  class I03Axes:
70
- SMARGON_X1 = EncEnum.Enc1
71
- SMARGON_Y = EncEnum.Enc2
72
- SMARGON_Z = EncEnum.Enc3
73
- OMEGA = EncEnum.Enc4
70
+ SMARGON_X1 = EncEnum.ENC1
71
+ SMARGON_Y = EncEnum.ENC2
72
+ SMARGON_Z = EncEnum.ENC3
73
+ OMEGA = EncEnum.ENC4
74
74
 
75
75
 
76
76
  class I24Axes:
77
- VGON_Z = EncEnum.Enc1
78
- OMEGA = EncEnum.Enc2
79
- VGON_X = EncEnum.Enc3
80
- VGON_YH = EncEnum.Enc4
77
+ VGON_Z = EncEnum.ENC1
78
+ OMEGA = EncEnum.ENC2
79
+ VGON_X = EncEnum.ENC3
80
+ VGON_YH = EncEnum.ENC4
81
81
 
82
82
 
83
83
  class RotationDirection(StrictEnum):