dls-dodal 1.48.0__py3-none-any.whl → 1.50.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 (41) hide show
  1. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.0.dist-info}/METADATA +2 -1
  2. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.0.dist-info}/RECORD +41 -30
  3. dodal/_version.py +2 -2
  4. dodal/beamlines/aithre.py +15 -0
  5. dodal/beamlines/b16.py +65 -0
  6. dodal/beamlines/b18.py +38 -0
  7. dodal/beamlines/i10.py +41 -233
  8. dodal/beamlines/k11.py +35 -0
  9. dodal/common/beamlines/device_helpers.py +1 -0
  10. dodal/devices/apple2_undulator.py +257 -136
  11. dodal/devices/b16/__init__.py +0 -0
  12. dodal/devices/b16/detector.py +34 -0
  13. dodal/devices/bimorph_mirror.py +29 -36
  14. dodal/devices/electron_analyser/__init__.py +12 -2
  15. dodal/devices/electron_analyser/abstract/base_detector.py +3 -128
  16. dodal/devices/electron_analyser/abstract/base_driver_io.py +8 -3
  17. dodal/devices/electron_analyser/abstract/base_region.py +6 -3
  18. dodal/devices/electron_analyser/detector.py +141 -0
  19. dodal/devices/electron_analyser/enums.py +6 -0
  20. dodal/devices/electron_analyser/specs/__init__.py +2 -0
  21. dodal/devices/electron_analyser/specs/detector.py +1 -1
  22. dodal/devices/electron_analyser/specs/driver_io.py +4 -5
  23. dodal/devices/electron_analyser/specs/enums.py +8 -0
  24. dodal/devices/electron_analyser/specs/region.py +3 -2
  25. dodal/devices/electron_analyser/types.py +30 -4
  26. dodal/devices/electron_analyser/util.py +1 -1
  27. dodal/devices/electron_analyser/vgscienta/__init__.py +2 -0
  28. dodal/devices/electron_analyser/vgscienta/detector.py +1 -1
  29. dodal/devices/electron_analyser/vgscienta/driver_io.py +2 -1
  30. dodal/devices/electron_analyser/vgscienta/enums.py +19 -0
  31. dodal/devices/electron_analyser/vgscienta/region.py +7 -22
  32. dodal/devices/hutch_shutter.py +6 -6
  33. dodal/devices/i10/__init__.py +0 -0
  34. dodal/devices/i10/i10_apple2.py +181 -126
  35. dodal/devices/i22/nxsas.py +1 -1
  36. dodal/devices/oav/oav_detector.py +45 -7
  37. dodal/plans/bimorph.py +333 -0
  38. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.0.dist-info}/WHEEL +0 -0
  39. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.0.dist-info}/entry_points.txt +0 -0
  40. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.0.dist-info}/licenses/LICENSE +0 -0
  41. {dls_dodal-1.48.0.dist-info → dls_dodal-1.50.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.48.0
3
+ Version: 1.50.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
@@ -234,6 +234,7 @@ Requires-Dist: aiohttp
234
234
  Requires-Dist: redis
235
235
  Requires-Dist: deepdiff
236
236
  Requires-Dist: scanspec>=0.7.3
237
+ Requires-Dist: event-model>=1.23
237
238
  Provides-Extra: dev
238
239
  Requires-Dist: black; extra == "dev"
239
240
  Requires-Dist: diff-cover; extra == "dev"
@@ -1,7 +1,7 @@
1
- dls_dodal-1.48.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1
+ dls_dodal-1.50.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=24VKZlawQ9AuOnPMmQ73o0O0fvXG6A-_3ZeLR40kRI0,513
4
+ dodal/_version.py,sha256=EDlHUWODqx60XSwjWm_Ktz1n2BnxgiT-qk2UvfHj1II,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
@@ -10,16 +10,18 @@ dodal/beamline_specific_utils/i03.py,sha256=P6Ls4FoVtcacH0RJM3v6ZwwGx27oMppcBdW0
10
10
  dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
11
11
  dodal/beamlines/__init__.py,sha256=lueGFb7cW1kDB_LfFavhrgYdjqGErCwAOk5XoU3BY00,3176
12
12
  dodal/beamlines/adsim.py,sha256=uOmFYZIGyput93XHk9R5ydZdxnTrS_wA2zSEm62UCVU,1930
13
- dodal/beamlines/aithre.py,sha256=gEIyCwvIewNgSxrEmvPsCDuyXVmHjYHt-Go69HITIrE,436
13
+ dodal/beamlines/aithre.py,sha256=QpNIT9RVtlyamJoshAa87Cw5U0QfBNwMBcZVvMlD25s,1037
14
14
  dodal/beamlines/b01_1.py,sha256=SdjnpssxlpdTwE1D2fuXUsf9WmvUsyg-MSp3DONXyQU,2008
15
15
  dodal/beamlines/b07.py,sha256=Fxsn9YDKySnE3zZgtpD8-LSb4IzWlb5xd6sLTCRrvFU,740
16
16
  dodal/beamlines/b07_1.py,sha256=nY5fMUDoxn91OG2miVh5cXNQDH8o881yMW9RfZMRlnQ,742
17
+ dodal/beamlines/b16.py,sha256=0MF-wKfogDkZ6wo0DiqCUor0cNG6cYvMdcYr88KuRdY,1690
18
+ dodal/beamlines/b18.py,sha256=ryxrGtcCdwoFgZ8ljWYgr1g9gKvoA7nxkARVxl1IE78,1189
17
19
  dodal/beamlines/i02_1.py,sha256=d2IyqFMgeaSEyZYm7GMSjTKr7_02SakyC_oARx-XwnY,1204
18
20
  dodal/beamlines/i03.py,sha256=jLiqH3R_TK2sHsI1zCZ91cYcATEtG28-5lMUcsQTXhU,15594
19
21
  dodal/beamlines/i04.py,sha256=_ogXHZZbJVNoMIOKLZe_8TbLP3vC4wss5lqqmzctR40,13723
20
22
  dodal/beamlines/i09.py,sha256=cr75vG65pgyWkEYdpcdpuuqAhN_tkmBiBqJn76lQN3k,744
21
23
  dodal/beamlines/i09_1.py,sha256=UbBn1q4L8BZXjZ1rUZQImwO0zkIYqGd5T8FptlFFMyw,742
22
- dodal/beamlines/i10.py,sha256=k8tnUwAb6jX2xY8hgST3ZP4jX3s4I4ispL5M6HF-M5k,11221
24
+ dodal/beamlines/i10.py,sha256=wg-yKw_a2hK_Tx7rym2Rq7oo8GlluoSQK77HcZNohPY,5716
23
25
  dodal/beamlines/i13_1.py,sha256=RF8AXBqVKPY7rVf4j1gOxcURAToYVk-Yo9t4FWyaphU,1650
24
26
  dodal/beamlines/i18.py,sha256=CbzdLHXcIhLl1T-GmXmnNOhwHojl8V3d3ikxVoCqXII,3657
25
27
  dodal/beamlines/i19_1.py,sha256=RsHXje1S2OLwuPnaqkRva02aAIq5Ya1FvPbHEQKo0Uc,2925
@@ -29,6 +31,7 @@ dodal/beamlines/i20_1.py,sha256=Xp6XXofjXh3Yibrg5wSHet-pXikprJ9oprEhJg19OkI,1825
29
31
  dodal/beamlines/i22.py,sha256=GAS1KgRrtpdXhYb7tIO3yHHMRcffxOqcSIaCZyexnDk,7595
30
32
  dodal/beamlines/i23.py,sha256=pf3KmzLZYDVqUB4LkLcNJk6z9H4qkFpTdVB8_0MYehs,3066
31
33
  dodal/beamlines/i24.py,sha256=D83MIeoyC-tzd5QcR0yiLUyzraAyBTObx7VnP5-okSk,7158
34
+ dodal/beamlines/k11.py,sha256=sBOl-MLk7FMo10KFykuK5aLqH1zyW4FnI0XXmtQhUfg,978
32
35
  dodal/beamlines/p38.py,sha256=bka6zsZfFiBAD-rrLSmIIVAOAw0FvupSkhOHGEG77xo,5708
33
36
  dodal/beamlines/p45.py,sha256=2snO895TGwf4LbNIvg4BkvAGSfvZcevdpv_82MRpXKo,2129
34
37
  dodal/beamlines/p60.py,sha256=IJQdemlEkvVMYcyqp2WkyEwPAQrjor33b52wrfEVDIs,615
@@ -45,16 +48,16 @@ dodal/common/visit.py,sha256=BLpr3GrP7Ij95V135hRJLgg7gWtBKXVxyOibWtcO8RE,5782
45
48
  dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
49
  dodal/common/beamlines/beamline_parameters.py,sha256=H9d4fLwVist7G-KdKYcv9D28E0tkhPtGPfiJ4V_5iHI,2721
47
50
  dodal/common/beamlines/beamline_utils.py,sha256=uy-HWchyUwoIqYYUWAd4BOPPoDzqvvtgkWQGzuKStTg,5061
48
- dodal/common/beamlines/device_helpers.py,sha256=lh7eih7KoFiqxo8PLQIDjbpBbhHuAXSeApt7K3KF9to,1002
51
+ dodal/common/beamlines/device_helpers.py,sha256=V0hdBegQZ0ZILTT00tFFA8nNOOFta3tBMH3fsF1ZsBg,1024
49
52
  dodal/devices/CTAB.py,sha256=5_261Ox6NG2cJIzzwnjWz289BG0nZoE0wKOaI5V5jqM,1998
50
53
  dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
54
  dodal/devices/adsim.py,sha256=vCexraF4zLssHdjfPod-XuQGJE_sWoCttFdx__HDS8w,488
52
55
  dodal/devices/aperture.py,sha256=yyw2ei3gM_lmZWDQ6VTbydB58RCDTen_nqBZyoTP2IM,583
53
56
  dodal/devices/aperturescatterguard.py,sha256=i2hLNyf5_7UOuySdkjckb9RWMZrGcZkOF7cfDUj4V-E,12216
54
- dodal/devices/apple2_undulator.py,sha256=R4KDgA4HcFj9zg1rPAEP9E0mKVzE06bhyxNRUrsi3Sw,20826
57
+ dodal/devices/apple2_undulator.py,sha256=PlgSpeCYfAMDYwOLx06Vzk_Iz_VGPwht1JbbwHjVyFQ,26291
55
58
  dodal/devices/backlight.py,sha256=RcgeA1hE3Z_5jA-jH8S8uLMpBfZjenRLz1lx6HTYeAo,1653
56
59
  dodal/devices/baton.py,sha256=BnakfZxx3cIIX6Kxj8-abxn8Z9LaQODhcPbStbD0as4,485
57
- dodal/devices/bimorph_mirror.py,sha256=D5PkrOggJRVAnv38lTdy8rErKLu_O2juLEvSqwcotxY,4825
60
+ dodal/devices/bimorph_mirror.py,sha256=-35vDYKZZrBgD37xBQPwuAR8SsMdm0YzWo2bgkTX4jA,4652
58
61
  dodal/devices/common_dcm.py,sha256=8QSRE6Z10RQjfL3g4JZhyHRNI_aCKxWlzKSsDgiJHhE,3049
59
62
  dodal/devices/cryostream.py,sha256=K-ldpredpeDTzNt4qtQMg99nKJNjBYoXBbK0WJGexzw,656
60
63
  dodal/devices/diamond_filter.py,sha256=hySd7HnLdplpPNvBrLddLjO_3LqgD8-99Zr__Sy_GbI,689
@@ -64,7 +67,7 @@ dodal/devices/fast_grid_scan.py,sha256=NfP746FfuHW-SWs7c7-O9oocWyVjBpu89WW7kaanl
64
67
  dodal/devices/fluorescence_detector_motion.py,sha256=-1qCSvW0PdT0m6BcoLxrtc0OJ5UDIBsEe11EOLr-gFw,501
65
68
  dodal/devices/flux.py,sha256=1CDsq9yU2-ho8MfYBl50Tl9ABZwpUBHnV486PQXKNoQ,462
66
69
  dodal/devices/focusing_mirror.py,sha256=vdUPkwyCAZBSR3LQ-EojDOoxVy1ZmOaD_nevETbj7BA,6592
67
- dodal/devices/hutch_shutter.py,sha256=UvGpsiIQcNW8IGd8ZA8Omus30bSNcVFE1poqO3yK9TE,3859
70
+ dodal/devices/hutch_shutter.py,sha256=iY3qWxDr8mDlAvN_BYe2gqpXRM1hlfV3ewdwkwh0_v0,3889
68
71
  dodal/devices/ipin.py,sha256=eq5jlKw7WGQi8VLrAWpaAIsZmfiVf-5Q0td_B22H6A4,473
69
72
  dodal/devices/linkam3.py,sha256=2sf-_heIsDg4qmqae-w9C2Py8pG8bPB3mT0TFPQIzd0,3869
70
73
  dodal/devices/motors.py,sha256=WSNPt9Pi7f-16yDtzAHApLOlUh1Y0aqnFICJIy2zOEs,1671
@@ -95,6 +98,8 @@ dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33Kynt
95
98
  dodal/devices/attenuator/attenuator.py,sha256=Vq9Zsyf56S5fePHGeluImTUtxdwEqttBa2YBIdU5tJU,3993
96
99
  dodal/devices/attenuator/filter.py,sha256=ZoPsTWXjllyMtKBdSIFLB7Cbc88rGof5k3ymL13VczE,422
97
100
  dodal/devices/attenuator/filter_selections.py,sha256=lcmTprCXgSggp2L6uQ6YU0xLMljXvbspAug-WWKCXks,1410
101
+ dodal/devices/b16/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
+ dodal/devices/b16/detector.py,sha256=nj0Xl8uleGtD_sk6tN-h7ipAtfz-e-c-DKWVwk_xXuY,1067
98
103
  dodal/devices/current_amplifiers/__init__.py,sha256=-MhT-t-GJ83rrvTDBCoWub_NKYkRtu4sEj8-y5XZBP0,782
99
104
  dodal/devices/current_amplifiers/current_amplifier.py,sha256=erDVtstLNFVb4wdSqWwRCQX_ifPxOc07x_2Ba_8Y1Wg,2660
100
105
  dodal/devices/current_amplifiers/current_amplifier_detector.py,sha256=YKA769KpU1V4GyYF3ckMgE8sXnaJyzRPUbBqIo7UruM,3968
@@ -107,21 +112,25 @@ dodal/devices/detector/det_dist_to_beam_converter.py,sha256=nSkhiEESyuzdrWoPu6h3
107
112
  dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
108
113
  dodal/devices/detector/detector.py,sha256=DqQvlgdjIdKErrZqgM9IH7drc-r6N8nhkFk7KwlgYAk,4815
109
114
  dodal/devices/detector/detector_motion.py,sha256=UGDQriDWRluDZOZh1mDX9w_fPjMD-_BGe11kA36Kezs,1616
110
- dodal/devices/electron_analyser/__init__.py,sha256=zeTwdPFK8Su5kviLu-gertJRRth4jCED9d0NoZl11vg,484
111
- dodal/devices/electron_analyser/types.py,sha256=2QObyZln7pvWyLgixabGGWvfs3aIF98gVSz2B4NS1OM,120
112
- dodal/devices/electron_analyser/util.py,sha256=prZXwwxw3F3JD7S00WLuYTKQx04xvZqzpIC8xESdxJw,437
115
+ dodal/devices/electron_analyser/__init__.py,sha256=xbOqt6b0J89UkZx6PAqEjPchfY_CMb3xgX3NAMEPf6A,793
116
+ dodal/devices/electron_analyser/detector.py,sha256=V_fCe54S8K0C8cZXcozRKWwqm7n9B-iXf97Y9NtKAvQ,4522
117
+ dodal/devices/electron_analyser/enums.py,sha256=2QObyZln7pvWyLgixabGGWvfs3aIF98gVSz2B4NS1OM,120
118
+ dodal/devices/electron_analyser/types.py,sha256=k_uRDdHzx3sZQ11KB5PNTDQjxuGL91B3-l6sRuKdHHo,1026
119
+ dodal/devices/electron_analyser/util.py,sha256=iUFvnYm-Y-0mBHR8oBLofZMKKuDhYYgGkOmvX6y1s1o,437
113
120
  dodal/devices/electron_analyser/abstract/__init__.py,sha256=OJ8rm_23azSe-MHmiyQZEUztqDnew4bRTdC2eVaiHT4,572
114
- dodal/devices/electron_analyser/abstract/base_detector.py,sha256=FKMpd2Igg_ZaHeqgLMfD6eKgZTpfovEMnW2FspXtKkw,7146
115
- dodal/devices/electron_analyser/abstract/base_driver_io.py,sha256=ms3BwmDA6X9efBNihvq_RZWiWQc89eFAKPBCQ6IVDp8,8705
116
- dodal/devices/electron_analyser/abstract/base_region.py,sha256=BE4NGNvSm9Gg7c9Vjq1W51dWpuhwEW5EIQWNR9rGf5M,3522
117
- dodal/devices/electron_analyser/specs/__init__.py,sha256=zzVEeFczfxVsVlBnt6spWhht4ScjKaah_pHC3R4Zy5g,233
118
- dodal/devices/electron_analyser/specs/detector.py,sha256=HgVuGkEI8Xx2WAYplXNycGE9zut__esv91i9-4ee73M,542
119
- dodal/devices/electron_analyser/specs/driver_io.py,sha256=qNFMnUJdrR3dAcgJySm92lN73H816B8uG6m1nk0miyQ,3339
120
- dodal/devices/electron_analyser/specs/region.py,sha256=Z39jr_d28fQ13KQq7Z3NCeHVSM73rbCkDyZNXzDzPzI,862
121
- dodal/devices/electron_analyser/vgscienta/__init__.py,sha256=LL_rvNUZcOFNUvWmuuqAapQ_YbjzNQn7ootJEhZFttI,337
122
- dodal/devices/electron_analyser/vgscienta/detector.py,sha256=zMFV0YPI9h0WjU9QDsM1JfOOCXKLV8Umy3iuu6nVyb8,632
123
- dodal/devices/electron_analyser/vgscienta/driver_io.py,sha256=L0dv7bPTD0ZH9RCEUULePtNwa_joHxhdc0ec5MfUTFo,2707
124
- dodal/devices/electron_analyser/vgscienta/region.py,sha256=h3uQqjWNyZDqDkhDYeJkGBNgZAETn7lr3AfhWynK3Po,2502
121
+ dodal/devices/electron_analyser/abstract/base_detector.py,sha256=Tcx-lrqHr7dkGmOPMSVibZypefddRauQU_1cZTIwaVU,2979
122
+ dodal/devices/electron_analyser/abstract/base_driver_io.py,sha256=ZGYtzxDkPIIcrZP4G2FXXJTAGL5uDKwpdAAvcM94gWU,8824
123
+ dodal/devices/electron_analyser/abstract/base_region.py,sha256=KI4Nk1w9V_1p71wdqLS7IMoal54QPejghDUO4FEdWuw,3648
124
+ dodal/devices/electron_analyser/specs/__init__.py,sha256=qN57kY6ERUGdrAWhU5m8CBrc0KaqiOGwPL6h2BNm3i0,291
125
+ dodal/devices/electron_analyser/specs/detector.py,sha256=9yOmfjVE_cRPJLOLZxaeGUqV1q82YuS_oO-psWE_Wxc,528
126
+ dodal/devices/electron_analyser/specs/driver_io.py,sha256=hAqy0nKCR-9HLlcgJqkXpgIJy77yWsHCtS2bQ7eFM5c,3337
127
+ dodal/devices/electron_analyser/specs/enums.py,sha256=cXPcbIGEN5ZJJt1KeiNJEtZkkcjQ-fz7dBfsU283zYQ,235
128
+ dodal/devices/electron_analyser/specs/region.py,sha256=hBxrMUJrzOoJGInULEbAdnhBL74fFe7R6-c7nde8nPE,977
129
+ dodal/devices/electron_analyser/vgscienta/__init__.py,sha256=Iq0d2BBp0TJh4uG9twiiL-gJiSVI8zNUEbkg1UF5k6U,395
130
+ dodal/devices/electron_analyser/vgscienta/detector.py,sha256=JdCsTXXLbIIGIYZaNDcEGD-fagz8tjil7IbJDTfak6c,618
131
+ dodal/devices/electron_analyser/vgscienta/driver_io.py,sha256=NijPdgvJoTLRPSVDfO4qB7X41TflPRayZZGxfKw-V-o,2800
132
+ dodal/devices/electron_analyser/vgscienta/enums.py,sha256=apJZgIaE1aMQPBwIL1tQvV0WJ5trbk3j6iFmc1OqLsw,353
133
+ dodal/devices/electron_analyser/vgscienta/region.py,sha256=b1_L54ZxVaiO7sDOK6IbzWVi8fxgTlPAXnT4OpMfbVY,2273
125
134
  dodal/devices/i03/__init__.py,sha256=Kvukapy4a5lUQ20qaCqYCJzKNaqJn2DfXP5nKZ_Pec8,118
126
135
  dodal/devices/i03/dcm.py,sha256=zDcgxOdMRVOQZBGDsLaIlr7o4UJIK2vehPWHxAxt6VA,2268
127
136
  dodal/devices/i03/undulator_dcm.py,sha256=c5H-17Dpt3pIMAlU9fHCnU59lYDnmgKk3qE2qR9gg44,2594
@@ -129,8 +138,9 @@ dodal/devices/i04/__init__.py,sha256=Kvukapy4a5lUQ20qaCqYCJzKNaqJn2DfXP5nKZ_Pec8
129
138
  dodal/devices/i04/constants.py,sha256=jHZe5Aeph0_hCDJotMx7Yi8v_a_6jyoI6p60AQ8GvGM,271
130
139
  dodal/devices/i04/murko_results.py,sha256=1vVQKQdBGYAwcX22oQzWYheelIppoTQk5_git563y10,7055
131
140
  dodal/devices/i04/transfocator.py,sha256=sVI4Bgv-2-DH4-F1nIXMp5Aktevrm3agZnCA-WgjmW8,3780
141
+ dodal/devices/i10/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
142
  dodal/devices/i10/diagnostics.py,sha256=5nnf1oFKtUJZa9Pewh1VxXpFecLscqTR2VakHKr_PaQ,5432
133
- dodal/devices/i10/i10_apple2.py,sha256=ErObNNE59NuYssde6ojWJb8wo3SVohkQsvK0Bjnf1T8,13192
143
+ dodal/devices/i10/i10_apple2.py,sha256=RbavLeqwmmcqAkGJw9-0AmLrWSiP91tAxwJLnXXCY-4,15271
134
144
  dodal/devices/i10/i10_setting_data.py,sha256=69XWgE-YNTiW7C3t67MNcTL5JDDhOo7h-X7DCTpFE5g,164
135
145
  dodal/devices/i10/mirrors.py,sha256=E0M5keGI3LGaDHyXQkCCyj6xmixNY1xTSkIaaYwtnP8,794
136
146
  dodal/devices/i10/slits.py,sha256=jI4wJPVT2vtl4bvabrU9u_v-SdGjOfDLBm0S9GMZC7w,4157
@@ -152,7 +162,7 @@ dodal/devices/i19/shutter.py,sha256=Z3_UO3TmSczJrB8AcU5ohk8WlDN04a00XhSyDLAHvbc,
152
162
  dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
163
  dodal/devices/i22/dcm.py,sha256=IbK56lSvX3PZlYKVeH7mIbRK83-mhJEIoTn1zjQfScE,4494
154
164
  dodal/devices/i22/fswitch.py,sha256=LSMoo9aDkH0SLcojbUh2NxTWIpUXHZxauTqThc3XtSk,3073
155
- dodal/devices/i22/nxsas.py,sha256=lFB_h6ns6yETPFZjDghOMZLg16nDnWveMOJV34TDSYk,5994
165
+ dodal/devices/i22/nxsas.py,sha256=093GCM2H2LESt28RF-JfxEljJ8QzRPkL1ByXI2XVhoA,6012
156
166
  dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
167
  dodal/devices/i24/aperture.py,sha256=XlnOyQsvdTom1dJHVUg8CUSthq3jlBlZFOUaa9b1eZ4,837
158
168
  dodal/devices/i24/beam_center.py,sha256=m6LWsG9e_lhtPfZ8pc_hoLNyTYQQGGdRNav8J_2scTo,483
@@ -167,7 +177,7 @@ dodal/devices/i24/vgonio.py,sha256=sxSmcYZayVJPJz_D_91j9PmNor7Tbl1RGQFRrdtESlw,5
167
177
  dodal/devices/mx_phase1/beamstop.py,sha256=MeSpp4YpHgIrWCifDU7OTUaJNAMLVpcmgxTMjmOy048,3170
168
178
  dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
179
  dodal/devices/oav/oav_calculations.py,sha256=qoaNz4MAdbpu0XHAkWTQ3rebFwsWfa8JA1eerUgISjA,2367
170
- dodal/devices/oav/oav_detector.py,sha256=f6z5DIOZOba4nXJq3kusdOF-qpV0gJ-SeDh-oRpfqsM,5874
180
+ dodal/devices/oav/oav_detector.py,sha256=DzRm1d1jC52wl7JawvMWiFCaFYdnjO7HT690NzDQIXs,6730
171
181
  dodal/devices/oav/oav_parameters.py,sha256=nnlTwrX5F6eMVK6wUz_MU39aLfV_P-_EyklfTQFAjZ4,6856
172
182
  dodal/devices/oav/oav_to_redis_forwarder.py,sha256=Nz_fOBK9NIsFTVO-G67JB-0qzDybWb_HS7RCkqrHfd8,6265
173
183
  dodal/devices/oav/utils.py,sha256=T-xg7J38ritzXwRrKjsWZ7daC_qR7aNhlbkXx75nJ8Q,3188
@@ -205,6 +215,7 @@ dodal/plan_stubs/data_session.py,sha256=Syc6XKaN1usf7bNWOez8_vAH3byrcROqskmBrSUW
205
215
  dodal/plan_stubs/motor_utils.py,sha256=Mf8utOA_xmxUa2dLmQ1uRkdfyDTip7D8YcKeCBCQLUQ,4458
206
216
  dodal/plan_stubs/wrapped.py,sha256=kC8HH7bx3-sLYu2oieY_502tAdT2OECF8n-fqoL5Bfc,4266
207
217
  dodal/plans/__init__.py,sha256=nH1jNxw3DzDMg9O8Uda0kqKIalRVEWBrq07OLY6Ey38,93
218
+ dodal/plans/bimorph.py,sha256=JxDmZDiEvZnz5f22tlaoyivpnaNGiX8kSL82qz5uvMM,11738
208
219
  dodal/plans/configure_arm_trigger_and_disarm_detector.py,sha256=pI1AkTH_5hIU56GmmrBdHMhepuDCuQz44V-O4XIaueg,5384
209
220
  dodal/plans/save_panda.py,sha256=1fumH7Ih8uDIv8ahAtgQ_vUuR3dz0sfUs4n9TEtEbSs,3053
210
221
  dodal/plans/scanspec.py,sha256=Q0AcvTKRT401iGMRDSqK-D523UX5_ofiVMZ_rNXKOx8,2074
@@ -212,8 +223,8 @@ dodal/plans/verify_undulator_gap.py,sha256=OcDN09-eCoMzsmhKGxvzsH5EapG2zYz0yGCqU
212
223
  dodal/plans/wrapped.py,sha256=BPMw__RcWvk9v5XnhMsi9_k4KsDEbmXogzD2n1ecbUg,2098
213
224
  dodal/plans/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
225
  dodal/plans/preprocessors/verify_undulator_gap.py,sha256=cBZEGq8TW1jrXFXB00iClQVXSEaE_jP_rHMY9WTgYyY,1813
215
- dls_dodal-1.48.0.dist-info/METADATA,sha256=faFiABQKyznao1MadSS2zvfIcvbLIxz29YRaLXLtnDk,16806
216
- dls_dodal-1.48.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
217
- dls_dodal-1.48.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
218
- dls_dodal-1.48.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
219
- dls_dodal-1.48.0.dist-info/RECORD,,
226
+ dls_dodal-1.50.0.dist-info/METADATA,sha256=HHVwD53GPNpl389XdyNTqmiuW6uEBg1tsRZh7j8HU1g,16839
227
+ dls_dodal-1.50.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
228
+ dls_dodal-1.50.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
229
+ dls_dodal-1.50.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
230
+ dls_dodal-1.50.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.48.0'
21
- __version_tuple__ = version_tuple = (1, 48, 0)
20
+ __version__ = version = '1.50.0'
21
+ __version_tuple__ = version_tuple = (1, 50, 0)
dodal/beamlines/aithre.py CHANGED
@@ -1,6 +1,11 @@
1
1
  from dodal.common.beamlines.beamline_utils import device_factory
2
2
  from dodal.devices.aithre_lasershaping.goniometer import Goniometer
3
3
  from dodal.devices.aithre_lasershaping.laser_robot import LaserRobot
4
+ from dodal.devices.oav.oav_detector import NullZoomController, OAVBeamCentreFile
5
+ from dodal.devices.oav.oav_parameters import OAVConfigBeamCentre
6
+
7
+ ZOOM_PARAMS_FILE = "/dls_sw/i23/software/aithre/aithre_oav.xml"
8
+ DISPLAY_CONFIG = "/dls_sw/i23/software/aithre/aithre_display.configuration"
4
9
 
5
10
  PREFIX = "LA18L"
6
11
 
@@ -13,3 +18,13 @@ def goniometer() -> Goniometer:
13
18
  @device_factory()
14
19
  def robot() -> LaserRobot:
15
20
  return LaserRobot("robot", f"{PREFIX}-MO-ROBOT-01:")
21
+
22
+
23
+ @device_factory()
24
+ def oav(params: OAVConfigBeamCentre | None = None) -> OAVBeamCentreFile:
25
+ return OAVBeamCentreFile(
26
+ prefix=f"{PREFIX}-DI-OAV-01:",
27
+ config=params or OAVConfigBeamCentre(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
28
+ name="oav",
29
+ zoom_controller=NullZoomController(),
30
+ )
dodal/beamlines/b16.py ADDED
@@ -0,0 +1,65 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.adcore import (
4
+ AreaDetector,
5
+ )
6
+ from ophyd_async.epics.motor import Motor
7
+
8
+ from dodal.common.beamlines.beamline_utils import (
9
+ device_factory,
10
+ set_path_provider,
11
+ )
12
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
13
+ from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
14
+ from dodal.devices.b16.detector import (
15
+ software_triggered_tiff_area_detector,
16
+ )
17
+ from dodal.devices.motors import XYZPositioner
18
+ from dodal.log import set_beamline as set_log_beamline
19
+ from dodal.utils import BeamlinePrefix, get_beamline_name
20
+
21
+ BL = get_beamline_name("b16")
22
+ PREFIX = BeamlinePrefix(BL)
23
+ set_log_beamline(BL)
24
+ set_utils_beamline(BL)
25
+
26
+ set_path_provider(
27
+ StaticVisitPathProvider(
28
+ BL,
29
+ Path("/dls/b16/data/2025/cm40635-3/bluesky"),
30
+ client=RemoteDirectoryServiceClient("http://b16-control:8088/api"),
31
+ )
32
+ )
33
+
34
+
35
+ @device_factory()
36
+ def attol1() -> Motor:
37
+ return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT0")
38
+
39
+
40
+ @device_factory()
41
+ def attol2() -> Motor:
42
+ return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT1")
43
+
44
+
45
+ @device_factory()
46
+ def attol3() -> Motor:
47
+ return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-03:ACT2")
48
+
49
+
50
+ @device_factory()
51
+ def attorot1() -> Motor:
52
+ return Motor(f"{PREFIX.beamline_prefix}-EA-ECC-02:ACT2")
53
+
54
+
55
+ @device_factory()
56
+ def fds2() -> AreaDetector:
57
+ prefix = f"{PREFIX.beamline_prefix}-EA-FDS-02:"
58
+ return software_triggered_tiff_area_detector(prefix)
59
+
60
+
61
+ @device_factory()
62
+ def sim_stage() -> XYZPositioner:
63
+ return XYZPositioner(
64
+ f"{PREFIX.beamline_prefix}-MO-SIM-01:", "sim_stage", infix=("M1", "M2", "M3")
65
+ )
dodal/beamlines/b18.py ADDED
@@ -0,0 +1,38 @@
1
+ from pathlib import Path
2
+
3
+ from dodal.common.beamlines.beamline_utils import (
4
+ device_factory,
5
+ set_path_provider,
6
+ )
7
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
8
+ from dodal.common.visit import (
9
+ LocalDirectoryServiceClient,
10
+ StaticVisitPathProvider,
11
+ )
12
+ from dodal.devices.synchrotron import Synchrotron
13
+ from dodal.log import set_beamline as set_log_beamline
14
+ from dodal.utils import BeamlinePrefix, get_beamline_name
15
+
16
+ BL = get_beamline_name("b18")
17
+ PREFIX = BeamlinePrefix(BL)
18
+ set_log_beamline(BL)
19
+ set_utils_beamline(BL)
20
+
21
+
22
+ # Currently we must hard-code the visit, determining the visit at runtime requires
23
+ # infrastructure that is still WIP.
24
+ # Communication with GDA is also WIP so for now we determine an arbitrary scan number
25
+ # locally and write the commissioning directory. The scan number is not guaranteed to
26
+ # be unique and the data is at risk - this configuration is for testing only.
27
+ set_path_provider(
28
+ StaticVisitPathProvider(
29
+ BL,
30
+ Path("/dls/b18/data/2025/cm40637-3/bluesky"),
31
+ client=LocalDirectoryServiceClient(),
32
+ )
33
+ )
34
+
35
+
36
+ @device_factory()
37
+ def synchrotron() -> Synchrotron:
38
+ return Synchrotron()
dodal/beamlines/i10.py CHANGED
@@ -1,19 +1,17 @@
1
- from pathlib import Path
1
+ """
2
+ note:
3
+ I10 has two insertion devices one up(idu) and one down stream(idd).
4
+ It is worth noting that the downstream device is slightly longer,
5
+ so it can reach Mn edge for linear arbitrary.
6
+ idd == id1, idu == id2.
7
+ """
2
8
 
3
- from dodal.common.beamlines.beamline_utils import device_factory, device_instantiation
9
+ from dodal.common.beamlines.beamline_utils import device_factory
4
10
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.apple2_undulator import (
6
- UndulatorGap,
7
- UndulatorJawPhase,
8
- UndulatorPhaseAxes,
9
- )
10
11
  from dodal.devices.current_amplifiers import CurrentAmpDet
11
12
  from dodal.devices.i10.diagnostics import I10Diagnostic, I10Diagnostic5ADet
12
13
  from dodal.devices.i10.i10_apple2 import (
13
- I10Apple2,
14
- I10Apple2PGM,
15
- I10Apple2Pol,
16
- LinearArbitraryAngle,
14
+ I10Id,
17
15
  )
18
16
  from dodal.devices.i10.i10_setting_data import I10Grating
19
17
  from dodal.devices.i10.mirrors import PiezoMirror
@@ -37,238 +35,48 @@ set_utils_beamline(BL)
37
35
  PREFIX = BeamlinePrefix(BL)
38
36
 
39
37
 
40
- LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
41
- """
42
- I10 has two insertion devices one up(idu) and one down stream(idd).
43
- It is worth noting that the down stream device is slightly longer,
44
- so it can reach Mn edge for linear arbitrary.
45
- idd == id1
46
- and
47
- idu == id2.
48
- """
49
-
50
-
51
- def idd_gap(
52
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
53
- ) -> UndulatorGap:
54
- return device_instantiation(
55
- device_factory=UndulatorGap,
56
- name="idd_gap",
57
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
58
- wait=wait_for_connection,
59
- fake=fake_with_ophyd_sim,
60
- bl_prefix=False,
61
- )
62
-
63
-
64
- def idd_phase_axes(
65
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
66
- ) -> UndulatorPhaseAxes:
67
- return device_instantiation(
68
- device_factory=UndulatorPhaseAxes,
69
- name="idd_phase_axes",
70
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
71
- top_outer="RPQ1",
72
- top_inner="RPQ2",
73
- btm_inner="RPQ3",
74
- btm_outer="RPQ4",
75
- wait=wait_for_connection,
76
- fake=fake_with_ophyd_sim,
77
- bl_prefix=False,
78
- )
79
-
80
-
81
- def idd_jaw(
82
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
83
- ) -> UndulatorJawPhase:
84
- return device_instantiation(
85
- device_factory=UndulatorJawPhase,
86
- name="idd_jaw",
87
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
88
- move_pv="RPQ1",
89
- wait=wait_for_connection,
90
- fake=fake_with_ophyd_sim,
91
- bl_prefix=False,
92
- )
93
-
94
-
95
- def idu_gap(
96
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
97
- ) -> UndulatorGap:
98
- return device_instantiation(
99
- device_factory=UndulatorGap,
100
- name="idu_gap",
101
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
102
- wait=wait_for_connection,
103
- fake=fake_with_ophyd_sim,
104
- bl_prefix=False,
105
- )
106
-
107
-
108
- def idu_phase_axes(
109
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
110
- ) -> UndulatorPhaseAxes:
111
- return device_instantiation(
112
- device_factory=UndulatorPhaseAxes,
113
- name="idu_phase_axes",
114
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
115
- top_outer="RPQ1",
116
- top_inner="RPQ2",
117
- btm_inner="RPQ3",
118
- btm_outer="RPQ4",
119
- wait=wait_for_connection,
120
- fake=fake_with_ophyd_sim,
121
- bl_prefix=False,
122
- )
123
-
124
-
125
- def idu_jaw(
126
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
127
- ) -> UndulatorJawPhase:
128
- return device_instantiation(
129
- device_factory=UndulatorJawPhase,
130
- name="idu_jaw",
131
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
132
- move_pv="RPQ1",
133
- wait=wait_for_connection,
134
- fake=fake_with_ophyd_sim,
135
- bl_prefix=False,
136
- )
38
+ LOOK_UPTABLE_DIR = "/dls_sw/i10/software/blueapi/scratch/i10-config/lookupTables/"
137
39
 
138
40
 
139
- def pgm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> PGM:
140
- return device_instantiation(
141
- device_factory=PGM,
142
- name="pgm",
143
- prefix="-OP-PGM-01:",
41
+ @device_factory()
42
+ def pgm() -> PGM:
43
+ "I10 Plane Grating Monochromator, it can change energy via pgm.energy.set(<energy>)"
44
+ return PGM(
45
+ prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
144
46
  grating=I10Grating,
145
47
  gratingPv="NLINES2",
146
- wait=wait_for_connection,
147
- fake=fake_with_ophyd_sim,
148
- )
149
-
150
-
151
- def idu_gap_phase(
152
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
153
- ) -> I10Apple2:
154
- return device_instantiation(
155
- device_factory=I10Apple2,
156
- id_gap=idu_gap(wait_for_connection, fake_with_ophyd_sim),
157
- id_phase=idu_phase_axes(wait_for_connection, fake_with_ophyd_sim),
158
- id_jaw_phase=idu_jaw(wait_for_connection, fake_with_ophyd_sim),
159
- energy_gap_table_path=Path(
160
- LOOK_UPTABLE_DIR + "IDEnergy2GapCalibrations.csv",
161
- ),
162
- energy_phase_table_path=Path(
163
- LOOK_UPTABLE_DIR + "IDEnergy2PhaseCalibrations.csv",
164
- ),
165
- source=("Source", "idu"),
166
- name="idu_gap_phase",
167
- prefix="",
168
- wait=wait_for_connection,
169
- fake=fake_with_ophyd_sim,
170
48
  )
171
49
 
172
50
 
173
- def idd_gap_phase(
174
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
175
- ) -> I10Apple2:
176
- return device_instantiation(
177
- device_factory=I10Apple2,
178
- id_gap=idd_gap(wait_for_connection, fake_with_ophyd_sim),
179
- id_phase=idd_phase_axes(wait_for_connection, fake_with_ophyd_sim),
180
- id_jaw_phase=idd_jaw(wait_for_connection, fake_with_ophyd_sim),
181
- energy_gap_table_path=Path(
182
- LOOK_UPTABLE_DIR + "IDEnergy2GapCalibrations.csv",
183
- ),
184
- energy_phase_table_path=Path(
185
- LOOK_UPTABLE_DIR + "IDEnergy2PhaseCalibrations.csv",
186
- ),
51
+ @device_factory()
52
+ def idd() -> I10Id:
53
+ """i10 downstream insertion device:
54
+ id.energy.set(<energy>) to change beamline energy.
55
+ id.energy.energy_offset.set(<off_set>) to change id energy offset relative to pgm.
56
+ id.pol.set(<polarisation>) to change polarisation.
57
+ id.laa.set(<linear polarisation angle>) to change polarisation angle, must be in LA mode.
58
+ """
59
+ return I10Id(
60
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
61
+ pgm=pgm(),
62
+ look_up_table_dir=LOOK_UPTABLE_DIR,
187
63
  source=("Source", "idd"),
188
- name="idd_gap_phase",
189
- prefix="",
190
- wait=wait_for_connection,
191
- fake=fake_with_ophyd_sim,
192
64
  )
193
65
 
194
66
 
195
- def idu_pol(
196
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
197
- ) -> I10Apple2Pol:
198
- return device_instantiation(
199
- device_factory=I10Apple2Pol,
200
- prefix="",
201
- id=idu_gap_phase(wait_for_connection, fake_with_ophyd_sim),
202
- name="idu_pol",
203
- wait=wait_for_connection,
204
- fake=fake_with_ophyd_sim,
205
- )
206
-
207
-
208
- def idd_pol(
209
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
210
- ) -> I10Apple2Pol:
211
- return device_instantiation(
212
- device_factory=I10Apple2Pol,
213
- prefix="",
214
- id=idd_gap_phase(wait_for_connection, fake_with_ophyd_sim),
215
- name="idd_pol",
216
- wait=wait_for_connection,
217
- fake=fake_with_ophyd_sim,
218
- )
219
-
220
-
221
- def idu(
222
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
223
- ) -> I10Apple2PGM:
224
- return device_instantiation(
225
- device_factory=I10Apple2PGM,
226
- prefix="",
227
- id=idu_gap_phase(wait_for_connection, fake_with_ophyd_sim),
228
- pgm=pgm(wait_for_connection, fake_with_ophyd_sim),
229
- name="idu",
230
- wait=wait_for_connection,
231
- fake=fake_with_ophyd_sim,
232
- )
233
-
234
-
235
- def idd(
236
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
237
- ) -> I10Apple2PGM:
238
- return device_instantiation(
239
- device_factory=I10Apple2PGM,
240
- prefix="",
241
- id=idd_gap_phase(wait_for_connection, fake_with_ophyd_sim),
242
- pgm=pgm(wait_for_connection, fake_with_ophyd_sim),
243
- name="idd",
244
- wait=wait_for_connection,
245
- fake=fake_with_ophyd_sim,
246
- )
247
-
248
-
249
- def idu_la_angle(
250
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
251
- ) -> LinearArbitraryAngle:
252
- return device_instantiation(
253
- device_factory=LinearArbitraryAngle,
254
- prefix="",
255
- id=idu(wait_for_connection, fake_with_ophyd_sim),
256
- name="idu_la_angle",
257
- wait=wait_for_connection,
258
- fake=fake_with_ophyd_sim,
259
- )
260
-
261
-
262
- def idd_la_angle(
263
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
264
- ) -> LinearArbitraryAngle:
265
- return device_instantiation(
266
- device_factory=LinearArbitraryAngle,
267
- prefix="",
268
- id=idu(wait_for_connection, fake_with_ophyd_sim),
269
- name="idd_la_angle",
270
- wait=wait_for_connection,
271
- fake=fake_with_ophyd_sim,
67
+ @device_factory()
68
+ def idu() -> I10Id:
69
+ """i10 upstream insertion device:
70
+ id.energy.set(<energy>) to change beamline energy.
71
+ id.energy.energy_offset.set(<off_set>) to change id energy offset relative to pgm.
72
+ id.pol.set(<polarisation>) to change polarisation.
73
+ id.laa.set(<linear polarisation angle>) to change polarisation angle, must be in LA mode.
74
+ """
75
+ return I10Id(
76
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:",
77
+ pgm=pgm(),
78
+ look_up_table_dir=LOOK_UPTABLE_DIR,
79
+ source=("Source", "idu"),
272
80
  )
273
81
 
274
82
 
@@ -342,7 +150,7 @@ def pa_stage() -> PaStage:
342
150
 
343
151
 
344
152
  @device_factory()
345
- def simple_stage() -> XYZPositioner:
153
+ def sample_stage() -> XYZPositioner:
346
154
  return XYZPositioner(prefix="ME01D-MO-CRYO-01:")
347
155
 
348
156