dls-dodal 1.67.0__py3-none-any.whl → 1.68.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 (57) hide show
  1. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/METADATA +2 -2
  2. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/RECORD +50 -50
  3. dodal/_version.py +2 -2
  4. dodal/beamlines/b07.py +1 -1
  5. dodal/beamlines/b07_1.py +1 -1
  6. dodal/beamlines/i05.py +1 -1
  7. dodal/beamlines/i06.py +1 -1
  8. dodal/beamlines/i09.py +1 -1
  9. dodal/beamlines/i09_1.py +1 -1
  10. dodal/beamlines/i09_2.py +5 -4
  11. dodal/beamlines/i10_optics.py +1 -1
  12. dodal/beamlines/i16.py +23 -0
  13. dodal/beamlines/i17.py +1 -1
  14. dodal/beamlines/i21.py +61 -2
  15. dodal/beamlines/p60.py +1 -1
  16. dodal/devices/eiger.py +15 -9
  17. dodal/devices/electron_analyser/__init__.py +0 -33
  18. dodal/devices/electron_analyser/base/__init__.py +58 -0
  19. dodal/devices/electron_analyser/base/base_controller.py +73 -0
  20. dodal/devices/electron_analyser/base/base_detector.py +214 -0
  21. dodal/devices/electron_analyser/{abstract → base}/base_driver_io.py +23 -42
  22. dodal/devices/electron_analyser/{abstract → base}/base_region.py +47 -11
  23. dodal/devices/electron_analyser/{util.py → base/base_util.py} +1 -1
  24. dodal/devices/electron_analyser/{energy_sources.py → base/energy_sources.py} +1 -1
  25. dodal/devices/electron_analyser/specs/__init__.py +4 -4
  26. dodal/devices/electron_analyser/specs/specs_detector.py +46 -0
  27. dodal/devices/electron_analyser/specs/{driver_io.py → specs_driver_io.py} +23 -26
  28. dodal/devices/electron_analyser/specs/{region.py → specs_region.py} +4 -3
  29. dodal/devices/electron_analyser/vgscienta/__init__.py +4 -4
  30. dodal/devices/electron_analyser/vgscienta/vgscienta_detector.py +52 -0
  31. dodal/devices/electron_analyser/vgscienta/{driver_io.py → vgscienta_driver_io.py} +25 -31
  32. dodal/devices/electron_analyser/vgscienta/{region.py → vgscienta_region.py} +6 -6
  33. dodal/devices/i09_2_shared/i09_apple2.py +0 -72
  34. dodal/devices/i10/i10_apple2.py +2 -2
  35. dodal/devices/i21/__init__.py +3 -1
  36. dodal/devices/insertion_device/__init__.py +58 -0
  37. dodal/devices/insertion_device/apple2_undulator.py +66 -16
  38. dodal/devices/insertion_device/energy_motor_lookup.py +1 -1
  39. dodal/devices/insertion_device/id_enum.py +17 -0
  40. dodal/devices/insertion_device/lookup_table_models.py +65 -35
  41. dodal/testing/electron_analyser/device_factory.py +4 -4
  42. dodal/testing/fixtures/devices/apple2.py +1 -1
  43. dodal/testing/fixtures/run_engine.py +4 -0
  44. dodal/devices/electron_analyser/abstract/__init__.py +0 -25
  45. dodal/devices/electron_analyser/abstract/base_detector.py +0 -63
  46. dodal/devices/electron_analyser/abstract/types.py +0 -12
  47. dodal/devices/electron_analyser/detector.py +0 -143
  48. dodal/devices/electron_analyser/specs/detector.py +0 -34
  49. dodal/devices/electron_analyser/types.py +0 -57
  50. dodal/devices/electron_analyser/vgscienta/detector.py +0 -48
  51. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/WHEEL +0 -0
  52. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/entry_points.txt +0 -0
  53. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/licenses/LICENSE +0 -0
  54. {dls_dodal-1.67.0.dist-info → dls_dodal-1.68.0.dist-info}/top_level.txt +0 -0
  55. /dodal/devices/electron_analyser/{enums.py → base/base_enums.py} +0 -0
  56. /dodal/devices/electron_analyser/specs/{enums.py → specs_enums.py} +0 -0
  57. /dodal/devices/electron_analyser/vgscienta/{enums.py → vgscienta_enums.py} +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.67.0
3
+ Version: 1.68.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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
6
6
  License: Apache License
@@ -231,7 +231,7 @@ Requires-Dist: redis
231
231
  Requires-Dist: scanspec>=0.7.3
232
232
  Requires-Dist: pyzmq==26.3.0
233
233
  Requires-Dist: deepdiff
234
- Requires-Dist: daq-config-server>=v1.0.0-rc.2
234
+ Requires-Dist: daq-config-server>=v1.0.0
235
235
  Provides-Extra: dev
236
236
  Requires-Dist: black; extra == "dev"
237
237
  Requires-Dist: diff-cover; extra == "dev"
@@ -1,7 +1,7 @@
1
- dls_dodal-1.67.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1
+ dls_dodal-1.68.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=c0RuIg9OCtUaPM4-lkpuPjMg-xh8FH9wzexV0vljv2U,706
4
+ dodal/_version.py,sha256=fKEtAXP7aFyf66hvwaMabE9BzwL6dh3xGKYU6jI5_mA,706
5
5
  dodal/cli.py,sha256=fPFs0ACCf2jEnACCIzEd5xR5ormxRwDKOZjzFlaBC88,4728
6
6
  dodal/device_manager.py,sha256=rTW-uaOiMPxkvYg7-yDy5MwhhfTCbbY5XkJXV_kcvj0,21029
7
7
  dodal/log.py,sha256=UckmmyY_SdZePyi5lHnjh-DVw6qvnat3ANa_5-y80Og,9877
@@ -13,8 +13,8 @@ dodal/beamlines/__init__.py,sha256=kVmxHMi9W1MkrOsVxBK7N1DBFGDrWv4FH1m8_nRxwzo,3
13
13
  dodal/beamlines/adsim.py,sha256=1ciucMo1oNYeKarIeBbqlQjZrVN2viyNrDz8dHw5QxY,2153
14
14
  dodal/beamlines/aithre.py,sha256=RRNmzJz4Fu5eHRXKoIJpv1D1fNR5e7wmT34d52QwM9Y,1399
15
15
  dodal/beamlines/b01_1.py,sha256=H24kiQtF0XnpWBtpsdC_k4w2WU4ibvovU3YPAop_zdg,2830
16
- dodal/beamlines/b07.py,sha256=dDg-im7loDU1eBGECU7XbNfE4e8hCk7RMZ2CAt9cZYg,1425
17
- dodal/beamlines/b07_1.py,sha256=4PZm5t9mQIoGvUpKjO8cXTddw96kh5ONigCJ_vomAug,1632
16
+ dodal/beamlines/b07.py,sha256=BfJJso_h2YX1LU0sRNxGeKJzCNRWngV9Kv2Hc3M6zLM,1430
17
+ dodal/beamlines/b07_1.py,sha256=Lph4PT0JOoOk_PnRBFZxg1R6N6TqNCrmNL7ybCF2Evc,1637
18
18
  dodal/beamlines/b16.py,sha256=rK00hEj8KLGNkLZr9omAuoMz_DyLN9rK4eUQssETR9E,1703
19
19
  dodal/beamlines/b18.py,sha256=ryxrGtcCdwoFgZ8ljWYgr1g9gKvoA7nxkARVxl1IE78,1189
20
20
  dodal/beamlines/b21.py,sha256=KGPoUogtu5XutVSGZ8LiQgIHOyWbW_9KAt23TetKTHc,3873
@@ -22,27 +22,28 @@ dodal/beamlines/i02_1.py,sha256=SwRm9v1U6CiT0fwLbSTECbJ6OF1BPEx4TJ0cEReuGZA,4017
22
22
  dodal/beamlines/i02_2.py,sha256=Jkghwv1Y5i0VUR2NZZ7hoiK9Ii8O-rIECDoKLX9AKi0,1169
23
23
  dodal/beamlines/i03.py,sha256=HyJzusfTuTYT5hi6ajcB3wQup1BPKWRGrxbLocz8Hmg,10438
24
24
  dodal/beamlines/i04.py,sha256=toMPtu1k2NXzfmmX6b8CH_kjhCjmO5LD_8Hs9UQPNhU,14956
25
- dodal/beamlines/i05.py,sha256=Xq9Bq4sU7l3MUcXgMb1iRFtDgW-797SGVGeQyTq-yZg,1298
25
+ dodal/beamlines/i05.py,sha256=FxzIJ4BFE6PC3Gs6Kq_GjrRbpam8UbRO22EHjuSO2nQ,1281
26
26
  dodal/beamlines/i05_1.py,sha256=bzaDqR2doZnoN-dk_oPwWqSGJaVZTDnNtx0wMzGSTp8,714
27
- dodal/beamlines/i06.py,sha256=L8JOEob0FXQiwOPNmGP8ySPL5EgNhUaiSEwSXnwuJtE,1588
27
+ dodal/beamlines/i06.py,sha256=V0kjC2NPX4fn9et3T8KLbTgNXsyYki4S5swrC61YwAI,1571
28
28
  dodal/beamlines/i07.py,sha256=mnwJPscsXFZnRQ2fKd-FwYiL_VjQu5zbYGQcgg7lplE,1270
29
- dodal/beamlines/i09.py,sha256=vRwfF3I3H6PzeJ87_ZzIT0wEwu0iIOS05BwZhbnGBiI,1905
30
- dodal/beamlines/i09_1.py,sha256=e3c7xTALLo90Dnqxn04iEw3eoSX_QdZ08vTScSxjrwk,2538
31
- dodal/beamlines/i09_2.py,sha256=Cn4XBh8u6bJ3wCLUmJFpm35jbG4PA5_csXRGR42wNNs,3361
29
+ dodal/beamlines/i09.py,sha256=gWVSQOmpQO6X24eARNXHQHafDv5AX7CozGSmj8NR_ak,1910
30
+ dodal/beamlines/i09_1.py,sha256=bcFExeMBPoabzEA-c01cO-EUwFA3KHWBmA0iuQ4gp7A,2543
31
+ dodal/beamlines/i09_2.py,sha256=pEH-a4gwuhf4xRqdLx5eAvOfxDtnc16Nvk57nDUVPSg,3395
32
32
  dodal/beamlines/i10.py,sha256=LC0ii13rVyZj1ziatBAyRoyuutdyyTCkpSvICGv4IGY,4059
33
33
  dodal/beamlines/i10_1.py,sha256=FxnWjr1u55XgIvnuyTfknnj-xPMNJOAtxObq1y9k518,1062
34
- dodal/beamlines/i10_optics.py,sha256=VbBY4kcTCVjdGPtIvHppdLiDByvi5c4ZsM_AKcXtV3M,7159
34
+ dodal/beamlines/i10_optics.py,sha256=C8dftjZw1TmdswUMpGoKOF70TsAQ1WAffdQH-1BJ74I,7142
35
35
  dodal/beamlines/i11.py,sha256=hzW5Lh74zDzUD0vqXQzekoFVWDp8qEIc0OPRm0Qepqs,3643
36
36
  dodal/beamlines/i13_1.py,sha256=VYVqMN8-njy7YSI08gskRccT-K2paRC9edAx0ah-Cwo,1602
37
37
  dodal/beamlines/i15.py,sha256=lmUhh1jt5CtD4P_BzkwNufu814aT3uaQlLyDMY_B5AE,5725
38
38
  dodal/beamlines/i15_1.py,sha256=EKg6BCr3wpHxdmG23kSTZYcNnGQxZbkzzulBLwz_Kew,3903
39
- dodal/beamlines/i17.py,sha256=z-TBQIuaV9KEMNSXNe2GV14KWUKqvLXxUFxXiZW6sGY,2805
39
+ dodal/beamlines/i16.py,sha256=NDTbyllb11Rklk5MNDVhrmI361Q-aKOMPy_dp09JE74,648
40
+ dodal/beamlines/i17.py,sha256=nlebjLsEruFcrpVGXclNHBsnIMtasQKvsBimwIf2-vI,2788
40
41
  dodal/beamlines/i18.py,sha256=vPGfrbh1CY2W2BXIfCA5PIeVyixS5nEJSxHpla1RM4I,3756
41
42
  dodal/beamlines/i19_1.py,sha256=aC-R9CEjRZEdSutfYhK9r2rT6J__IOZy4zG95B_fJC8,3466
42
43
  dodal/beamlines/i19_2.py,sha256=gNRRRimY69zl_e9FRaEFs-fQxWu6oqFwjHjjVs-AJrk,4514
43
44
  dodal/beamlines/i19_optics.py,sha256=fNdAFRJYFA045l4giGI3V68qijDFE1C8gdvD6fncAio,1181
44
45
  dodal/beamlines/i20_1.py,sha256=Zsr1lsH7ySbOgK7RhMVMWzNWZAV-fuYW0iAjSEJZicY,2625
45
- dodal/beamlines/i21.py,sha256=ykBBgb_epcKy2995CqpRK-iJ_-vuA5DaDG72wQANw_s,1428
46
+ dodal/beamlines/i21.py,sha256=1ZtVPmnZLMvhcIpeVN7OZYnt44hVJpNNnHbfxwGoseQ,3357
46
47
  dodal/beamlines/i22.py,sha256=XVGYyx6QEhbXJ5DRm-YWnUZKdagv_X8YJNYjmhXT7II,8097
47
48
  dodal/beamlines/i23.py,sha256=ZXvPEiMA4mPbRTXOxvL1NcoVWDg4Deyl8k57cveDg90,3060
48
49
  dodal/beamlines/i24.py,sha256=0ZjJCUYIUWIQTPrXFqKviiTCZiyuJh4MkmqMYd9JZ9o,7454
@@ -50,7 +51,7 @@ dodal/beamlines/k07.py,sha256=jELF4ENfSsPumbFieZDQKP-fDKFeGfox7guhdxJqmD8,1005
50
51
  dodal/beamlines/k11.py,sha256=sBOl-MLk7FMo10KFykuK5aLqH1zyW4FnI0XXmtQhUfg,978
51
52
  dodal/beamlines/p38.py,sha256=ohFCTkyqR2MWGK20PrJqAIokiEjDPNTAfMRzrn3T0Mg,5778
52
53
  dodal/beamlines/p45.py,sha256=tQ7EkWfr7o2okK7Prw1C7DNGYdKPU2ofqjm98wu_-G0,2158
53
- dodal/beamlines/p60.py,sha256=JtoajfrWGIDHFBQfXDKud4A9O2sV-BTVL1pZYUHx9zY,1480
54
+ dodal/beamlines/p60.py,sha256=EEEPwzIMyNecEDZsPDrfn6RskbSumySruLTuYNQCDBI,1485
54
55
  dodal/beamlines/p99.py,sha256=Rbi9OvmrGIblctOnZxFG_tqqhALLZ9O3ht4mBcb5vU8,2754
55
56
  dodal/beamlines/training_rig.py,sha256=VfMMNLdqej50CX17GluuwBbdXaurc5dnWjmoCT20bT4,1593
56
57
  dodal/common/__init__.py,sha256=0fah9eCiHBBLVhdIqN_pjQIgPtxkAu25-3i4KjHRFM4,386
@@ -80,7 +81,7 @@ dodal/devices/common_dcm.py,sha256=BmvwnT5mbCmSQI8aGl3GKEfpe7N1axUANEyG-NYgC98,5
80
81
  dodal/devices/controllers.py,sha256=W_Ras1c6xLjcOMKPSHN8Z1eCUCH-ktaah2hzQXyuFLk,652
81
82
  dodal/devices/cryostream.py,sha256=F8-JVl9LvvR0jvFUwhowazwT7q38HnDuVZxRS-1BOnk,4522
82
83
  dodal/devices/diamond_filter.py,sha256=hySd7HnLdplpPNvBrLddLjO_3LqgD8-99Zr__Sy_GbI,689
83
- dodal/devices/eiger.py,sha256=l5AbGDHWbpp1RCEEGh1-C7uA-_Hkuz8UL6CkNQVZPzY,17165
84
+ dodal/devices/eiger.py,sha256=EywzuUSDnwLDd0XACKilDgwVcet1SnIPixZ28Etf78Q,17527
84
85
  dodal/devices/eiger_odin.py,sha256=1JoqPppTp99IZCiFOXJZB3h62xXRYKZINxTYXdLnT8c,7480
85
86
  dodal/devices/eurotherm.py,sha256=rdLldmWYP1PZBckoya6svPy1mDxHYaa1IfMleMPGzD4,3832
86
87
  dodal/devices/fast_grid_scan.py,sha256=xm2PEPrbqHOQfVrNcXt60S1UT5RtWir6MkdnVlhZNPw,17592
@@ -144,27 +145,25 @@ dodal/devices/detector/det_dist_to_beam_converter.py,sha256=nSkhiEESyuzdrWoPu6h3
144
145
  dodal/devices/detector/det_resolution.py,sha256=8OW40MhRg56GlLstM1MOkIxa4DY8eg4q0RBUX7k6PHs,3298
145
146
  dodal/devices/detector/detector.py,sha256=DqQvlgdjIdKErrZqgM9IH7drc-r6N8nhkFk7KwlgYAk,4815
146
147
  dodal/devices/detector/detector_motion.py,sha256=Ly4nz_AsB-_EDOADMC2u2J0dunpkOMbafVN_dgh3T-E,1389
147
- dodal/devices/electron_analyser/__init__.py,sha256=mpC48s2fK58aEKI-Fl3CiYBb4tXgcaa4Msj8_jLpH8g,956
148
- dodal/devices/electron_analyser/detector.py,sha256=FE8Qh7H01tej5GqWLXtCbiWo4n7OGm6q-QVViv-dqZ8,4749
149
- dodal/devices/electron_analyser/energy_sources.py,sha256=NO3oxaVgmXnm6QuvyPBaeFbTjl3KwXzXY7EsdOhjATM,3152
150
- dodal/devices/electron_analyser/enums.py,sha256=ruSH7LNRhtqMflv7gYxKeAu0uLzZIaoCai7sSTzpvkg,204
151
- dodal/devices/electron_analyser/types.py,sha256=_kmdSp4E98fsusg5Wg-Hyo25zHYA_pMe_hFW8lKe3tE,1869
152
- dodal/devices/electron_analyser/util.py,sha256=ZFQJxxwDPIr43859DPIS9lBuq54phUT3R2f_Rbn-FbU,1235
153
- dodal/devices/electron_analyser/abstract/__init__.py,sha256=OE5iU5L_7wQudl3cddtMk6eRNbXzZxqiVIzaOAZmuxc,612
154
- dodal/devices/electron_analyser/abstract/base_detector.py,sha256=alBDZgJxNYLAHDrUa_C5tRUSlujxwWdBebFHDQ8jOv0,2055
155
- dodal/devices/electron_analyser/abstract/base_driver_io.py,sha256=1j_bCS1k4LqyOBvlt34ijGOLbgX3vboxOUD4j-zv-MU,9963
156
- dodal/devices/electron_analyser/abstract/base_region.py,sha256=DY5wNs-BMYimkH5tpBEqXGq4n0YhHpk81kuHASveBpw,5702
157
- dodal/devices/electron_analyser/abstract/types.py,sha256=eoeO7sqlv5RE7AEnyzsxHyuBXlUzOIYdRLWp0EnLyAU,596
158
- dodal/devices/electron_analyser/specs/__init__.py,sha256=qN57kY6ERUGdrAWhU5m8CBrc0KaqiOGwPL6h2BNm3i0,291
159
- dodal/devices/electron_analyser/specs/detector.py,sha256=RaNkSmQ_Jb9AuwQqVqo3vv5Q6DcTtpoVqqRAQvgoeEs,1139
160
- dodal/devices/electron_analyser/specs/driver_io.py,sha256=_6FG5zXGw8vzKc8JzyxdqqQAcU5mBoDjrF_ehfG9h8w,4500
161
- dodal/devices/electron_analyser/specs/enums.py,sha256=cXPcbIGEN5ZJJt1KeiNJEtZkkcjQ-fz7dBfsU283zYQ,235
162
- dodal/devices/electron_analyser/specs/region.py,sha256=P7rwbY72-QGKzC6TeldmP8sTmardpB_-rYx7gPVCMqo,1213
163
- dodal/devices/electron_analyser/vgscienta/__init__.py,sha256=5ZUJcUkJJ9ruwE0PzCFdA0HyWKrfjxaUBeGAMCC9JH4,357
164
- dodal/devices/electron_analyser/vgscienta/detector.py,sha256=JkO8E5N8tQjYfaHMXoDV6r3oEyzTC0oQI5IqWbOmvxw,1446
165
- dodal/devices/electron_analyser/vgscienta/driver_io.py,sha256=c1v3AOSGKp6DlVmE82rvuN5aYElWsHeWPtYHPLwIM-s,3510
166
- dodal/devices/electron_analyser/vgscienta/enums.py,sha256=3vmX67ExATU8clueVp_mCzw3OUQx799oZMc8gyHtMJE,205
167
- dodal/devices/electron_analyser/vgscienta/region.py,sha256=6k6Eah6_I74Pi2_a0KfyMYFfwHwJbh1ndqy0fuq5o14,2184
148
+ dodal/devices/electron_analyser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ dodal/devices/electron_analyser/base/__init__.py,sha256=u8kktlYGxZKXFh-dA98MVVvSsSayAraCHsDI8RtJm3Q,1604
150
+ dodal/devices/electron_analyser/base/base_controller.py,sha256=aFajs4VgmG4J2Gf_4Wt--HM3gaslQlS3JXFUw5YeOWI,2869
151
+ dodal/devices/electron_analyser/base/base_detector.py,sha256=qNZnf-PS82z250ir9UxGYsGF5ToxvL-y-9gCJWrrWnE,7092
152
+ dodal/devices/electron_analyser/base/base_driver_io.py,sha256=Y1uXIbxZS4wrxzAxv8bIJ5eZHyG3rGTTauLNjptjR-A,8985
153
+ dodal/devices/electron_analyser/base/base_enums.py,sha256=ruSH7LNRhtqMflv7gYxKeAu0uLzZIaoCai7sSTzpvkg,204
154
+ dodal/devices/electron_analyser/base/base_region.py,sha256=VD-7bccwKMfm1AqY9jYSiuqfL5XLKKmxrfiFzi13Crw,7432
155
+ dodal/devices/electron_analyser/base/base_util.py,sha256=nGx3vF7eF4SxjzNysoxWbzqmxdSWvcPPHmghw74UuEc,1245
156
+ dodal/devices/electron_analyser/base/energy_sources.py,sha256=HdslyJYn8GbhCkQ2eOlgDOZ1zrHXBUIEk_4kfUXgLrk,3162
157
+ dodal/devices/electron_analyser/specs/__init__.py,sha256=PiId7pXfFqG0UznwzTROAp3iORuU6UEwn_0ohKBxKNk,315
158
+ dodal/devices/electron_analyser/specs/specs_detector.py,sha256=J7TQpvCg6mzVp010LCqtHhHydrcKRweGeApeZeX8GFM,1542
159
+ dodal/devices/electron_analyser/specs/specs_driver_io.py,sha256=SVb0tQGbb6m9DbjmNxfWKCwDVqMSh5a8Ad5RsMb6rZs,4449
160
+ dodal/devices/electron_analyser/specs/specs_enums.py,sha256=cXPcbIGEN5ZJJt1KeiNJEtZkkcjQ-fz7dBfsU283zYQ,235
161
+ dodal/devices/electron_analyser/specs/specs_region.py,sha256=uF12HNzh1I9csYVS3j-CAGuCHCblVzYFBp_4G7JCnvI,1165
162
+ dodal/devices/electron_analyser/vgscienta/__init__.py,sha256=s8acayQN8E0j1H9YEr6Q47Kxu3OtrPuZHk3ARuuot_A,397
163
+ dodal/devices/electron_analyser/vgscienta/vgscienta_detector.py,sha256=5iJIl1WwnrPVCoyBEMwzaycg0yDURs3DZNq5ceTSRAc,1850
164
+ dodal/devices/electron_analyser/vgscienta/vgscienta_driver_io.py,sha256=QADd2CU52BrRwPquHmHO77gX4EY7x-yWmbOfGZhe_k8,3471
165
+ dodal/devices/electron_analyser/vgscienta/vgscienta_enums.py,sha256=3vmX67ExATU8clueVp_mCzw3OUQx799oZMc8gyHtMJE,205
166
+ dodal/devices/electron_analyser/vgscienta/vgscienta_region.py,sha256=SvQmB_NsdzKhuKkuzvkirsYMaqR-1bOjppVsBP4bBqo,2219
168
167
  dodal/devices/i02_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
168
  dodal/devices/i02_1/fast_grid_scan.py,sha256=bfiumNayrISFGYqdcd3Bh6lEZvkOxrqyX_B24LYW1nU,2429
170
169
  dodal/devices/i02_1/sample_motors.py,sha256=fAHAyeuP4hjOnYsp2x5VQNrTh8Di35ezJV1si2YmKPY,607
@@ -193,10 +192,10 @@ dodal/devices/i09_1_shared/__init__.py,sha256=jbSL26A4boUJZKUCoA7JNjVfjZ3ehERlDs
193
192
  dodal/devices/i09_1_shared/hard_energy.py,sha256=77TbYZGidZAlwP9zDE-h0mTMW4Iuf9b30mfnbUV0qJc,3965
194
193
  dodal/devices/i09_1_shared/hard_undulator_functions.py,sha256=e0kpReW1q4lK4pQYVbg-h9JZxDN-M8a-yaPo1cNuY-0,6205
195
194
  dodal/devices/i09_2_shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
- dodal/devices/i09_2_shared/i09_apple2.py,sha256=zfVTgFH6BWafwPbvPTzbkn5GQA6hO-WzuwUk6DgU4p8,2801
195
+ dodal/devices/i09_2_shared/i09_apple2.py,sha256=6WliOiSdTjuO6N5YrvJK4AKAUgT7sSVHoLnpH1ntTU0,245
197
196
  dodal/devices/i10/__init__.py,sha256=Pa7gI_ulcPO3dN2xpw6tBN1E3CpV3Lj82kmGwIVU7TA,575
198
197
  dodal/devices/i10/diagnostics.py,sha256=ULSHpaRPVWcP-HgKAJW2rsdPoYZs_MgF6HJoPj39MwU,6339
199
- dodal/devices/i10/i10_apple2.py,sha256=v26u7MymFHwu85wba_Lso3h5DbjTnxe_WXO902ZS10A,6851
198
+ dodal/devices/i10/i10_apple2.py,sha256=zbJFTsBGT0i0ZMFG49bSPLv0z5gbpr1nRrzbhIEDIh8,6880
200
199
  dodal/devices/i10/i10_setting_data.py,sha256=69XWgE-YNTiW7C3t67MNcTL5JDDhOo7h-X7DCTpFE5g,164
201
200
  dodal/devices/i10/mirrors.py,sha256=Zofd0g2f3YvFi_KIHQE_w4dFZNglhmh--65tRnWLuyY,504
202
201
  dodal/devices/i10/slits.py,sha256=pBstXJnA6j3ftDqei0EZyAPU--M_heqo6hm2DEOqPdc,5040
@@ -238,7 +237,7 @@ dodal/devices/i19/access_controlled/blueapi_device.py,sha256=ZUt1Am5H4Tm74joLz7d
238
237
  dodal/devices/i19/access_controlled/hutch_access.py,sha256=hnClUWCL1qTYzuBMmhXX85jiNak7mbYfyHEh54tZ27U,377
239
238
  dodal/devices/i19/access_controlled/shutter.py,sha256=D0vNXkIa6IoSoBMyGdw_RQHPlTgJdgzRsKkany0Jv-I,2154
240
239
  dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
- dodal/devices/i21/__init__.py,sha256=1H0Ov9s8K7nu6e20WtQDH39wgSKWz2ChRVAUzytIyzQ,67
240
+ dodal/devices/i21/__init__.py,sha256=GQB4jkhrWvD1i6LTqIBf_2CDLLL3M9cdwHxjkAHyUdU,74
242
241
  dodal/devices/i21/enums.py,sha256=asy90S84fBBydYwz89jNeocz04JXpbHn8ynaPzW353c,141
243
242
  dodal/devices/i22/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
243
  dodal/devices/i22/dcm.py,sha256=abs6U6DOUO8_g2adpynfoc9lQYbLC3tgObSwI9AhKZg,4551
@@ -254,10 +253,11 @@ dodal/devices/i24/dual_backlight.py,sha256=N0R7M1mHPRmQ4fks5lGU1wrXjOvcW_ZKIXaRo
254
253
  dodal/devices/i24/focus_mirrors.py,sha256=DYiYLpDw8FJ1LYHxLOxE_om5qGfUo2itzskgqhmQZlg,1763
255
254
  dodal/devices/i24/pmac.py,sha256=-HYf2HPzaqWvszp4T8TXohdp40-xmKqQq4V0mLvVri8,7028
256
255
  dodal/devices/i24/vgonio.py,sha256=sxSmcYZayVJPJz_D_91j9PmNor7Tbl1RGQFRrdtESlw,533
257
- dodal/devices/insertion_device/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
- dodal/devices/insertion_device/apple2_undulator.py,sha256=2Ccm6eSu2f-TSPFbk-t1uumsOuGu9whNWm71vby4Sb8,28009
259
- dodal/devices/insertion_device/energy_motor_lookup.py,sha256=7ULsJdMM3tdYNW-skNMYpKYxH0UkAg67ht94d1x0SYc,2717
260
- dodal/devices/insertion_device/lookup_table_models.py,sha256=eLFGfWICss7OIyfKx-24VsYXccsROOcVeN_ywTBT_DE,8748
256
+ dodal/devices/insertion_device/__init__.py,sha256=Gx-2YRja1TeW5AMaSH42sCOoiXnoAkuezsy8aJmC3IE,1373
257
+ dodal/devices/insertion_device/apple2_undulator.py,sha256=B0OjfPv8oN0tOVJ8JVhsBqLC9zWeHQxxy9t9ERO6T_Q,30543
258
+ dodal/devices/insertion_device/energy_motor_lookup.py,sha256=8kmw7rNBTK_srKplNQ5pHD5P6b1oOP1fNJ7iNDrKgzY,2708
259
+ dodal/devices/insertion_device/id_enum.py,sha256=IQgVUiY23hcOk3G073OAspeRJ9V4YEx2MntKlUt0Nqk,265
260
+ dodal/devices/insertion_device/lookup_table_models.py,sha256=_lkdHo9W8u0GppBUg5Mas7ABF1ET3la6PjLGavThh3Q,9874
261
261
  dodal/devices/mx_phase1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
262
  dodal/devices/mx_phase1/beamstop.py,sha256=zWdZp0j9lCg4YzsZ7GSR3xEcvMfMTJoMO6XdgiC53p4,3765
263
263
  dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -317,14 +317,14 @@ dodal/plans/wrapped.py,sha256=BPMw__RcWvk9v5XnhMsi9_k4KsDEbmXogzD2n1ecbUg,2098
317
317
  dodal/plans/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
318
  dodal/plans/preprocessors/verify_undulator_gap.py,sha256=cBZEGq8TW1jrXFXB00iClQVXSEaE_jP_rHMY9WTgYyY,1813
319
319
  dodal/testing/electron_analyser/__init__.py,sha256=-lc1opD2dCv0x678-J-ApOhHtvEvcslfOQ7E613U8-Y,118
320
- dodal/testing/electron_analyser/device_factory.py,sha256=tkMY6fW3iI02DTD1XXHi4lH6sjo8RHHZBGDHSuTdmNU,2243
320
+ dodal/testing/electron_analyser/device_factory.py,sha256=mLeWQems_xBmmxPjyUEBhcp8VIsasY4TsUnVOe10ZaE,2252
321
321
  dodal/testing/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
- dodal/testing/fixtures/run_engine.py,sha256=L77Sy6k142X2pWDReSygUymrS7PngBH6xR45EFYl_l4,4042
322
+ dodal/testing/fixtures/run_engine.py,sha256=_DQivl-pAAoSVpX60XT4jLLmPBJHahCkaVAI3gnl3q8,4208
323
323
  dodal/testing/fixtures/utils.py,sha256=jy3mfAAn_TFQ7gqCec-OiOlZkaNLUH3TESW2oohvNgo,1861
324
324
  dodal/testing/fixtures/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
- dodal/testing/fixtures/devices/apple2.py,sha256=A2cwkIbmNUF-DGnltkJQhQI8BXbLs_0yFEbFv1s0q9Y,2744
326
- dls_dodal-1.67.0.dist-info/METADATA,sha256=7w9CUuJeMgmMxvFPljHjuU9qz7wOePNJrv9ZdhGuMvQ,16928
327
- dls_dodal-1.67.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
328
- dls_dodal-1.67.0.dist-info/entry_points.txt,sha256=0IO1Bjlnv0vJSSFdGEZ-S_pqQNkE2FnPTA6f0-aTBs8,87
329
- dls_dodal-1.67.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
330
- dls_dodal-1.67.0.dist-info/RECORD,,
325
+ dodal/testing/fixtures/devices/apple2.py,sha256=5FbO1YACBF8aM82X9_36gPqk6rjdy1xRu8OdfdPrxAM,2727
326
+ dls_dodal-1.68.0.dist-info/METADATA,sha256=9_RH8_nxq7q8xT5oNB_i10-jiRoqOC6dIxs_RRHg2o0,16923
327
+ dls_dodal-1.68.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
328
+ dls_dodal-1.68.0.dist-info/entry_points.txt,sha256=0IO1Bjlnv0vJSSFdGEZ-S_pqQNkE2FnPTA6f0-aTBs8,87
329
+ dls_dodal-1.68.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
330
+ dls_dodal-1.68.0.dist-info/RECORD,,
dodal/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.67.0'
32
- __version_tuple__ = version_tuple = (1, 67, 0)
31
+ __version__ = version = '1.68.0'
32
+ __version_tuple__ = version_tuple = (1, 68, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
dodal/beamlines/b07.py CHANGED
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
5
  from dodal.devices.b07 import Grating, LensMode, PsuMode
6
- from dodal.devices.electron_analyser import EnergySource
6
+ from dodal.devices.electron_analyser.base import EnergySource
7
7
  from dodal.devices.electron_analyser.specs import SpecsDetector
8
8
  from dodal.devices.pgm import PlaneGratingMonochromator
9
9
  from dodal.devices.synchrotron import Synchrotron
dodal/beamlines/b07_1.py CHANGED
@@ -6,7 +6,7 @@ from dodal.devices.b07_1 import (
6
6
  Grating,
7
7
  LensMode,
8
8
  )
9
- from dodal.devices.electron_analyser import EnergySource
9
+ from dodal.devices.electron_analyser.base import EnergySource
10
10
  from dodal.devices.electron_analyser.specs import SpecsDetector
11
11
  from dodal.devices.pgm import PlaneGratingMonochromator
12
12
  from dodal.devices.synchrotron import Synchrotron
dodal/beamlines/i05.py CHANGED
@@ -3,7 +3,7 @@ from dodal.common.beamlines.beamline_utils import (
3
3
  device_factory,
4
4
  )
5
5
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
6
- from dodal.devices.insertion_device.apple2_undulator import (
6
+ from dodal.devices.insertion_device import (
7
7
  Apple2,
8
8
  UndulatorGap,
9
9
  UndulatorLockedPhaseAxes,
dodal/beamlines/i06.py CHANGED
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.insertion_device.apple2_undulator import (
5
+ from dodal.devices.insertion_device import (
6
6
  Apple2,
7
7
  UndulatorGap,
8
8
  UndulatorLockedPhaseAxes,
dodal/beamlines/i09.py CHANGED
@@ -7,7 +7,7 @@ from dodal.devices.common_dcm import (
7
7
  PitchAndRollCrystal,
8
8
  StationaryCrystal,
9
9
  )
10
- from dodal.devices.electron_analyser import DualEnergySource
10
+ from dodal.devices.electron_analyser.base import DualEnergySource
11
11
  from dodal.devices.electron_analyser.vgscienta import VGScientaDetector
12
12
  from dodal.devices.i09 import Grating, LensMode, PassEnergy, PsuMode
13
13
  from dodal.devices.pgm import PlaneGratingMonochromator
dodal/beamlines/i09_1.py CHANGED
@@ -7,7 +7,7 @@ from dodal.devices.common_dcm import (
7
7
  PitchAndRollCrystal,
8
8
  StationaryCrystal,
9
9
  )
10
- from dodal.devices.electron_analyser import EnergySource
10
+ from dodal.devices.electron_analyser.base import EnergySource
11
11
  from dodal.devices.electron_analyser.specs import SpecsDetector
12
12
  from dodal.devices.i09_1 import LensMode, PsuMode
13
13
  from dodal.devices.i09_1_shared.hard_energy import HardEnergy, HardInsertionDeviceEnergy
dodal/beamlines/i09_2.py CHANGED
@@ -10,10 +10,10 @@ from dodal.devices.i09.enums import Grating
10
10
  from dodal.devices.i09_2_shared.i09_apple2 import (
11
11
  J09_GAP_POLY_DEG_COLUMNS,
12
12
  J09_PHASE_POLY_DEG_COLUMNS,
13
- J09Apple2Controller,
14
13
  )
15
- from dodal.devices.insertion_device.apple2_undulator import (
14
+ from dodal.devices.insertion_device import (
16
15
  Apple2,
16
+ Apple2EnforceLHMoveController,
17
17
  BeamEnergy,
18
18
  InsertionDeviceEnergy,
19
19
  InsertionDevicePolarisation,
@@ -79,9 +79,9 @@ def jid() -> Apple2:
79
79
 
80
80
 
81
81
  @device_factory()
82
- def jid_controller() -> J09Apple2Controller:
82
+ def jid_controller() -> Apple2EnforceLHMoveController:
83
83
  """J09 insertion device controller."""
84
- return J09Apple2Controller(
84
+ return Apple2EnforceLHMoveController(
85
85
  apple2=jid(),
86
86
  gap_energy_motor_lut=ConfigServerEnergyMotorLookup(
87
87
  lut_config=LookupTableColumnConfig(poly_deg=J09_GAP_POLY_DEG_COLUMNS),
@@ -93,6 +93,7 @@ def jid_controller() -> J09Apple2Controller:
93
93
  config_client=J09_CONF_CLIENT,
94
94
  path=Path(LOOK_UPTABLE_DIR, PHASE_LOOKUP_FILE_NAME),
95
95
  ),
96
+ units="keV",
96
97
  )
97
98
 
98
99
 
@@ -26,7 +26,7 @@ from dodal.devices.i10.i10_apple2 import (
26
26
 
27
27
  # Imports taken from i10 while we work out how to deal with split end stations
28
28
  from dodal.devices.i10.i10_setting_data import I10Grating
29
- from dodal.devices.insertion_device.apple2_undulator import (
29
+ from dodal.devices.insertion_device import (
30
30
  BeamEnergy,
31
31
  InsertionDeviceEnergy,
32
32
  InsertionDevicePolarisation,
dodal/beamlines/i16.py ADDED
@@ -0,0 +1,23 @@
1
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
2
+ from dodal.device_manager import DeviceManager
3
+ from dodal.devices.undulator import UndulatorInMm, UndulatorOrder
4
+ from dodal.log import set_beamline as set_log_beamline
5
+ from dodal.utils import BeamlinePrefix, get_beamline_name
6
+
7
+ BL = get_beamline_name("i16")
8
+ set_log_beamline(BL)
9
+ set_utils_beamline(BL)
10
+ PREFIX = BeamlinePrefix(BL)
11
+
12
+
13
+ devices = DeviceManager()
14
+
15
+
16
+ @devices.factory()
17
+ def id() -> UndulatorInMm:
18
+ return UndulatorInMm(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
19
+
20
+
21
+ @devices.factory()
22
+ def harmonic() -> UndulatorOrder:
23
+ return UndulatorOrder()
dodal/beamlines/i17.py CHANGED
@@ -8,7 +8,7 @@ from dodal.common.beamlines.beamline_utils import (
8
8
  )
9
9
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
10
10
  from dodal.devices.i17.i17_apple2 import I17Apple2Controller
11
- from dodal.devices.insertion_device.apple2_undulator import (
11
+ from dodal.devices.insertion_device import (
12
12
  Apple2,
13
13
  Apple2Controller,
14
14
  BeamEnergy,
dodal/beamlines/i21.py CHANGED
@@ -1,13 +1,27 @@
1
+ from pathlib import Path
2
+
3
+ from daq_config_server.client import ConfigServer
4
+
1
5
  from dodal.common.beamlines.beamline_utils import (
2
6
  device_factory,
3
7
  )
4
8
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.i21 import Grating
6
- from dodal.devices.insertion_device.apple2_undulator import (
9
+ from dodal.devices.i21 import (
10
+ Grating,
11
+ )
12
+ from dodal.devices.insertion_device import (
7
13
  Apple2,
14
+ Apple2EnforceLHMoveController,
15
+ BeamEnergy,
16
+ InsertionDeviceEnergy,
17
+ InsertionDevicePolarisation,
8
18
  UndulatorGap,
9
19
  UndulatorPhaseAxes,
10
20
  )
21
+ from dodal.devices.insertion_device.energy_motor_lookup import (
22
+ ConfigServerEnergyMotorLookup,
23
+ )
24
+ from dodal.devices.insertion_device.lookup_table_models import LookupTableColumnConfig
11
25
  from dodal.devices.pgm import PlaneGratingMonochromator
12
26
  from dodal.devices.synchrotron import Synchrotron
13
27
  from dodal.log import set_beamline as set_log_beamline
@@ -18,6 +32,14 @@ PREFIX = BeamlinePrefix(BL)
18
32
  set_log_beamline(BL)
19
33
  set_utils_beamline(BL)
20
34
 
35
+ I21_PHASE_POLY_DEG_COLUMNS = ["b"]
36
+ I21_GRATING_COLUMNS = "Grating"
37
+
38
+ I21_CONF_CLIENT = ConfigServer(url="https://daq-config.diamond.ac.uk")
39
+ LOOK_UPTABLE_DIR = "/dls_sw/i21/software/gda/workspace_git/gda-diamond.git/configurations/i21-config/lookupTables/"
40
+ GAP_LOOKUP_FILE_NAME = "IDEnergy2GapCalibrations.csv"
41
+ PHASE_LOOKUP_FILE_NAME = "IDEnergy2PhaseCalibrations.csv"
42
+
21
43
 
22
44
  @device_factory()
23
45
  def synchrotron() -> Synchrotron:
@@ -55,3 +77,40 @@ def id() -> Apple2:
55
77
  id_gap=id_gap(),
56
78
  id_phase=id_phase(),
57
79
  )
80
+
81
+
82
+ @device_factory()
83
+ def id_controller() -> Apple2EnforceLHMoveController:
84
+ """i21 insertion device controller."""
85
+ return Apple2EnforceLHMoveController(
86
+ apple2=id(),
87
+ gap_energy_motor_lut=ConfigServerEnergyMotorLookup(
88
+ lut_config=LookupTableColumnConfig(grating=I21_GRATING_COLUMNS),
89
+ config_client=I21_CONF_CLIENT,
90
+ path=Path(LOOK_UPTABLE_DIR, GAP_LOOKUP_FILE_NAME),
91
+ ),
92
+ phase_energy_motor_lut=ConfigServerEnergyMotorLookup(
93
+ lut_config=LookupTableColumnConfig(
94
+ grating=I21_GRATING_COLUMNS, poly_deg=I21_PHASE_POLY_DEG_COLUMNS
95
+ ),
96
+ config_client=I21_CONF_CLIENT,
97
+ path=Path(LOOK_UPTABLE_DIR, GAP_LOOKUP_FILE_NAME),
98
+ ),
99
+ units="eV",
100
+ )
101
+
102
+
103
+ @device_factory()
104
+ def id_energy() -> InsertionDeviceEnergy:
105
+ return InsertionDeviceEnergy(id_controller=id_controller())
106
+
107
+
108
+ @device_factory()
109
+ def id_polarisation() -> InsertionDevicePolarisation:
110
+ return InsertionDevicePolarisation(id_controller=id_controller())
111
+
112
+
113
+ @device_factory()
114
+ def energy_jid() -> BeamEnergy:
115
+ """Beam energy."""
116
+ return BeamEnergy(id_energy=id_energy(), mono=pgm().energy)
dodal/beamlines/p60.py CHANGED
@@ -2,7 +2,7 @@ from dodal.common.beamlines.beamline_utils import (
2
2
  device_factory,
3
3
  )
4
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
- from dodal.devices.electron_analyser import DualEnergySource
5
+ from dodal.devices.electron_analyser.base import DualEnergySource
6
6
  from dodal.devices.electron_analyser.vgscienta import VGScientaDetector
7
7
  from dodal.devices.p60 import (
8
8
  LabXraySource,
dodal/devices/eiger.py CHANGED
@@ -1,11 +1,10 @@
1
- # type: ignore # Eiger will soon be ophyd-async https://github.com/DiamondLightSource/dodal/issues/700
2
1
  from dataclasses import dataclass
3
2
  from enum import Enum
4
3
 
5
4
  from bluesky.protocols import Stageable
6
5
  from ophyd import Component, Device, EpicsSignalRO, Signal
7
6
  from ophyd.areadetector.cam import EigerDetectorCam
8
- from ophyd.status import AndStatus, Status, StatusBase
7
+ from ophyd.status import AndStatus, Status, StatusBase, SubscriptionStatus
9
8
 
10
9
  from dodal.devices.detector import DetectorParams, TriggerMode
11
10
  from dodal.devices.eiger_odin import EigerOdin
@@ -123,7 +122,7 @@ class EigerDetector(Device, Stageable):
123
122
  LOGGER.info("Waiting for arming to finish")
124
123
  self.arming_status.wait(self.timeouts.arming_timeout)
125
124
 
126
- def stage(self):
125
+ def stage(self): # pyright: ignore[reportIncompatibleMethodOverride]
127
126
  self.wait_on_arming_if_started()
128
127
  if not self.is_armed():
129
128
  LOGGER.info("Eiger not armed, arming")
@@ -132,6 +131,7 @@ class EigerDetector(Device, Stageable):
132
131
 
133
132
  def stop_odin_when_all_frames_collected(self):
134
133
  LOGGER.info("Waiting on all frames")
134
+ assert self.detector_params
135
135
  try:
136
136
  await_value(
137
137
  self.odin.file_writer.num_captured,
@@ -141,7 +141,7 @@ class EigerDetector(Device, Stageable):
141
141
  LOGGER.info("Stopping Odin")
142
142
  self.odin.stop().wait(self.timeouts.odin_stop_timeout)
143
143
 
144
- def unstage(self) -> bool:
144
+ def unstage(self) -> bool: # pyright: ignore[reportIncompatibleMethodOverride]
145
145
  assert self.detector_params is not None
146
146
  try:
147
147
  self.disarming_status = Status()
@@ -166,7 +166,7 @@ class EigerDetector(Device, Stageable):
166
166
  self.disarming_status.set_finished()
167
167
  return status_ok
168
168
 
169
- def stop(self, *args):
169
+ def stop(self, *args): # pyright: ignore[reportIncompatibleMethodOverride]
170
170
  """Emergency stop the device, mainly used to clean up after error."""
171
171
  LOGGER.info("Eiger stop() called - cleaning up...")
172
172
  if self.disarming_status and not self.disarming_status.done:
@@ -241,7 +241,8 @@ class EigerDetector(Device, Stageable):
241
241
  1, timeout=self.timeouts.general_status_timeout
242
242
  )
243
243
  status &= self.cam.image_mode.set(
244
- self.cam.ImageMode.MULTIPLE, timeout=self.timeouts.general_status_timeout
244
+ self.cam.ImageMode.MULTIPLE, # pyright: ignore[reportAttributeAccessIssue]
245
+ timeout=self.timeouts.general_status_timeout,
245
246
  )
246
247
  status &= self.cam.trigger_mode.set(
247
248
  InternalEigerTriggerMode.EXTERNAL_SERIES.value,
@@ -315,7 +316,7 @@ class EigerDetector(Device, Stageable):
315
316
  this tolerance it is not set again. Defaults to 0.1eV.
316
317
  """
317
318
 
318
- current_energy = self.cam.photon_energy.get()
319
+ current_energy = float(self.cam.photon_energy.get())
319
320
  if abs(current_energy - energy) > tolerance:
320
321
  LOGGER.info(f"Setting detector threshold to {energy}")
321
322
  return self.cam.photon_energy.set(
@@ -398,7 +399,7 @@ class EigerDetector(Device, Stageable):
398
399
  def disarm_detector(self):
399
400
  self.cam.acquire.set(0).wait(self.timeouts.general_status_timeout)
400
401
 
401
- def wait_for_stale_params(self) -> Status:
402
+ def wait_for_stale_params(self) -> SubscriptionStatus:
402
403
  LOGGER.info("Eiger arming: Waiting for stale params...")
403
404
  return await_value(self.stale_params, 0, 60)
404
405
 
@@ -412,6 +413,11 @@ class EigerDetector(Device, Stageable):
412
413
  detector_params: DetectorParams = self.detector_params
413
414
  if detector_params.use_roi_mode:
414
415
  functions_to_do_arm.append(self.enable_roi_mode)
416
+ threshold_energy = (
417
+ detector_params.expected_energy_ev
418
+ if detector_params.expected_energy_ev
419
+ else float(self.cam.photon_energy.get())
420
+ )
415
421
 
416
422
  arming_sequence_funcs = [
417
423
  # If a beam dump occurs after arming the eiger but prior to eiger staging,
@@ -419,7 +425,7 @@ class EigerDetector(Device, Stageable):
419
425
  # if this previously completed successfully we must reset the odin first
420
426
  self.odin.stop,
421
427
  lambda: self.change_dev_shm(detector_params.enable_dev_shm),
422
- lambda: self.set_detector_threshold(detector_params.expected_energy_ev),
428
+ lambda: self.set_detector_threshold(threshold_energy),
423
429
  self.set_cam_pvs,
424
430
  self.set_odin_number_of_frame_chunks,
425
431
  self.set_odin_pvs,
@@ -1,33 +0,0 @@
1
- from .detector import (
2
- ElectronAnalyserDetector,
3
- ElectronAnalyserRegionDetector,
4
- TElectronAnalyserDetector,
5
- TElectronAnalyserRegionDetector,
6
- )
7
- from .energy_sources import DualEnergySource, EnergySource
8
- from .enums import EnergyMode, SelectedSource
9
- from .types import (
10
- ElectronAnalyserDetectorImpl,
11
- ElectronAnalyserDriverImpl,
12
- GenericElectronAnalyserDetector,
13
- GenericElectronAnalyserRegionDetector,
14
- )
15
- from .util import to_binding_energy, to_kinetic_energy
16
-
17
- __all__ = [
18
- "to_binding_energy",
19
- "to_kinetic_energy",
20
- "DualEnergySource",
21
- "SelectedSource",
22
- "EnergySource",
23
- "EnergyMode",
24
- "SelectedSource",
25
- "ElectronAnalyserDetector",
26
- "ElectronAnalyserDetectorImpl",
27
- "ElectronAnalyserDriverImpl",
28
- "TElectronAnalyserDetector",
29
- "ElectronAnalyserRegionDetector",
30
- "TElectronAnalyserRegionDetector",
31
- "GenericElectronAnalyserDetector",
32
- "GenericElectronAnalyserRegionDetector",
33
- ]
@@ -0,0 +1,58 @@
1
+ from .base_controller import (
2
+ ElectronAnalyserController,
3
+ GenericElectronAnalyserController,
4
+ )
5
+ from .base_detector import (
6
+ BaseElectronAnalyserDetector,
7
+ ElectronAnalyserDetector,
8
+ ElectronAnalyserRegionDetector,
9
+ GenericBaseElectronAnalyserDetector,
10
+ GenericElectronAnalyserDetector,
11
+ GenericElectronAnalyserRegionDetector,
12
+ )
13
+ from .base_driver_io import (
14
+ AbstractAnalyserDriverIO,
15
+ GenericAnalyserDriverIO,
16
+ TAbstractAnalyserDriverIO,
17
+ )
18
+ from .base_enums import EnergyMode, SelectedSource
19
+ from .base_region import (
20
+ AbstractBaseRegion,
21
+ AbstractBaseSequence,
22
+ GenericRegion,
23
+ GenericSequence,
24
+ TAbstractBaseRegion,
25
+ TAbstractBaseSequence,
26
+ TAcquisitionMode,
27
+ TLensMode,
28
+ )
29
+ from .base_util import to_binding_energy, to_kinetic_energy
30
+ from .energy_sources import DualEnergySource, EnergySource
31
+
32
+ __all__ = [
33
+ "ElectronAnalyserController",
34
+ "GenericElectronAnalyserController",
35
+ "BaseElectronAnalyserDetector",
36
+ "ElectronAnalyserDetector",
37
+ "ElectronAnalyserRegionDetector",
38
+ "GenericBaseElectronAnalyserDetector",
39
+ "GenericElectronAnalyserDetector",
40
+ "GenericElectronAnalyserRegionDetector",
41
+ "AbstractAnalyserDriverIO",
42
+ "GenericAnalyserDriverIO",
43
+ "TAbstractAnalyserDriverIO",
44
+ "EnergyMode",
45
+ "SelectedSource",
46
+ "AbstractBaseRegion",
47
+ "AbstractBaseSequence",
48
+ "GenericRegion",
49
+ "GenericSequence",
50
+ "TAbstractBaseRegion",
51
+ "TAbstractBaseSequence",
52
+ "TAcquisitionMode",
53
+ "TLensMode",
54
+ "to_binding_energy",
55
+ "to_kinetic_energy",
56
+ "DualEnergySource",
57
+ "EnergySource",
58
+ ]