dls-dodal 1.55.0__py3-none-any.whl → 1.55.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dls-dodal
3
- Version: 1.55.0
3
+ Version: 1.55.1
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>, 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
@@ -215,7 +215,7 @@ Description-Content-Type: text/markdown
215
215
  License-File: LICENSE
216
216
  Requires-Dist: click
217
217
  Requires-Dist: ophyd
218
- Requires-Dist: ophyd-async[ca,pva]>=0.12.3
218
+ Requires-Dist: ophyd-async[ca,pva]>=0.13.0
219
219
  Requires-Dist: bluesky
220
220
  Requires-Dist: pyepics
221
221
  Requires-Dist: dataclasses-json
@@ -1,7 +1,7 @@
1
- dls_dodal-1.55.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1
+ dls_dodal-1.55.1.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=cTx5VW1VAG-cR7joz4SaLqtJSPbcwdCg_iEy7KKl-r4,706
4
+ dodal/_version.py,sha256=8qvUs6mvapQhxrIGGBeNIqoPp4X2cG1zqRENSu9HJxQ,513
5
5
  dodal/cli.py,sha256=NieWNUgLUxyck1rHoFAPJjX1xXLzHNdQ-s4wvxYFfps,3757
6
6
  dodal/log.py,sha256=Rt5O3hFZfMnJvQueZvgagQuXnPqHrFxhponOvVkpfrk,9871
7
7
  dodal/utils.py,sha256=abGitd4FLpLnmckF7lUqOKYUL88r5Ex_NGSVgO4gOf4,19305
@@ -12,7 +12,7 @@ dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
12
12
  dodal/beamlines/__init__.py,sha256=pYP4kWH7h3VYXmjXdgbt27T_q-EA5PIyiaMZc7C49UA,3198
13
13
  dodal/beamlines/adsim.py,sha256=fxj_P-7PsywdWPjfBAsLoOPiSKtApOKmLWHdQ8xCa3s,2048
14
14
  dodal/beamlines/aithre.py,sha256=IoRO5szytOtdkLLEtwYwLl4TLhMllyG6l9A2G1r7Yic,994
15
- dodal/beamlines/b01_1.py,sha256=KNL8M750UBu0ziWIhGDvHfQgJKrUdeht6E9NjnI5B-E,2946
15
+ dodal/beamlines/b01_1.py,sha256=id8dYMv7EILT3C-fw2LYXEWVn_XmCpXZUJ9y2z9__mo,2649
16
16
  dodal/beamlines/b07.py,sha256=wtNPxoLCf6KG3XzoRIyWI3QnZDV1VP8XMNmmBUVwFmU,1226
17
17
  dodal/beamlines/b07_1.py,sha256=ST8niY5nKJi-svIVPfHslY4rKWq8VDEVvlX8MpDhU2Q,1433
18
18
  dodal/beamlines/b16.py,sha256=rK00hEj8KLGNkLZr9omAuoMz_DyLN9rK4eUQssETR9E,1703
@@ -88,7 +88,7 @@ dodal/devices/slits.py,sha256=b_7ku2sHlzhMHTvWrwiRwee6ufrbxNX9JB_Z0lvk15o,1105
88
88
  dodal/devices/smargon.py,sha256=uTO01FNToL_4FL6XIcH9WxGZmQB-SP4ujkZU6ChS-3U,5823
89
89
  dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
90
90
  dodal/devices/synchrotron.py,sha256=wLfClZ1lYQWA_D--UsM3NnKLG8bY8mvVsRYER6ob-Ew,2026
91
- dodal/devices/tetramm.py,sha256=MSEoScDHWxGXqVQcq3DdG3_p7EOPsDgQme9K3TdgIOo,8397
91
+ dodal/devices/tetramm.py,sha256=qBu2ClXRM4RFO-y4C2pXVKsp5sX4VpOelbVHOAkkUHQ,8936
92
92
  dodal/devices/thawer.py,sha256=mYrO9klUPYcSbpoUuJ4ZuZZEPcHWWaZ2px5jh8XNQ9Y,1675
93
93
  dodal/devices/turbo_slit.py,sha256=xhcnhfbdcTYSYozogw6Li4fF4ofoPsc350rEyrRdaNE,1460
94
94
  dodal/devices/undulator.py,sha256=ZCdMQ8PKnW7mFV1BmrprOt0aSBCZMSKAH-2yyVH5Ihk,5316
@@ -100,7 +100,7 @@ dodal/devices/aithre_lasershaping/goniometer.py,sha256=-2ewYMcdzB1DqP9sMpr4L1i4K
100
100
  dodal/devices/aithre_lasershaping/laser_robot.py,sha256=JVp5J0GwpaHTwRDO7lU43W1hfy7pUukqASZuJG3o3_I,756
101
101
  dodal/devices/areadetector/plugins/CAM.py,sha256=sZzJm5Ez3eWfXZi_EB67wluhZmMQm1UyOc2bJFfzd1U,964
102
102
  dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33KyntuLepbF0YmX0KE,3031
103
- dodal/devices/attenuator/attenuator.py,sha256=XHdRMvq9t0DKJVDxkz-oXMAS3Dt4mbfO_H-x8fGmk_4,4071
103
+ dodal/devices/attenuator/attenuator.py,sha256=7RFCAZSCUL1hWSLrYrgmalaEIWUhr0fHoDRthAG4yZ0,4104
104
104
  dodal/devices/attenuator/filter.py,sha256=ZoPsTWXjllyMtKBdSIFLB7Cbc88rGof5k3ymL13VczE,422
105
105
  dodal/devices/attenuator/filter_selections.py,sha256=lcmTprCXgSggp2L6uQ6YU0xLMljXvbspAug-WWKCXks,1410
106
106
  dodal/devices/b07/__init__.py,sha256=Zw4VkH-68MLoDveswDpR-lTlzK1-IeNz2W4qtkCO3Hs,109
@@ -213,7 +213,7 @@ dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
213
213
  dodal/devices/util/adjuster_plans.py,sha256=c40PFZpXFw0YmJLh9jU4VIb8vRxHyafZlmvprTKAOhM,824
214
214
  dodal/devices/util/epics_util.py,sha256=3_d0m7BTvN19WIKvz2XSMvoPdTdccg9Z2gOAL-52q4s,4692
215
215
  dodal/devices/util/lookup_tables.py,sha256=jH9f_D8JbTSqzL-RKHUWOORLt8lEoNQL3o9HpXE98TY,3476
216
- dodal/devices/util/test_utils.py,sha256=KEYkqyZrAyju438VCbtQ0Ujv-9GBuIuVGCgggDHUO9M,607
216
+ dodal/devices/util/test_utils.py,sha256=tnKKmSBaHEyx-qTQjoR3COqraRMmTdRJe9s-pWjuTPk,1176
217
217
  dodal/devices/xspress3/xspress3.py,sha256=75RdPuHpES4Xi-Lcywz0XUhaN2G3vZSoc-dzgcxfNvs,4636
218
218
  dodal/devices/xspress3/xspress3_channel.py,sha256=w8tAx2lz5kJ_LeJ_eb_4o--Dtt8MRijsYNgDG6oEIVg,1626
219
219
  dodal/devices/zebra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -239,8 +239,8 @@ dodal/plans/verify_undulator_gap.py,sha256=OcDN09-eCoMzsmhKGxvzsH5EapG2zYz0yGCqU
239
239
  dodal/plans/wrapped.py,sha256=BPMw__RcWvk9v5XnhMsi9_k4KsDEbmXogzD2n1ecbUg,2098
240
240
  dodal/plans/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
241
  dodal/plans/preprocessors/verify_undulator_gap.py,sha256=cBZEGq8TW1jrXFXB00iClQVXSEaE_jP_rHMY9WTgYyY,1813
242
- dls_dodal-1.55.0.dist-info/METADATA,sha256=280iXwCswf8oavrCHc295C-tJFK4lE58wzdVzF-KD4Q,16920
243
- dls_dodal-1.55.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
244
- dls_dodal-1.55.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
245
- dls_dodal-1.55.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
246
- dls_dodal-1.55.0.dist-info/RECORD,,
242
+ dls_dodal-1.55.1.dist-info/METADATA,sha256=uFswQCKMNscdjuyCj9gW-eGGMG-A1unNWNbDLF9lHbE,16920
243
+ dls_dodal-1.55.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
244
+ dls_dodal-1.55.1.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
245
+ dls_dodal-1.55.1.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
246
+ dls_dodal-1.55.1.dist-info/RECORD,,
dodal/_version.py CHANGED
@@ -1,14 +1,7 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = [
5
- "__version__",
6
- "__version_tuple__",
7
- "version",
8
- "version_tuple",
9
- "__commit_id__",
10
- "commit_id",
11
- ]
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
12
5
 
13
6
  TYPE_CHECKING = False
14
7
  if TYPE_CHECKING:
@@ -16,19 +9,13 @@ if TYPE_CHECKING:
16
9
  from typing import Union
17
10
 
18
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
- COMMIT_ID = Union[str, None]
20
12
  else:
21
13
  VERSION_TUPLE = object
22
- COMMIT_ID = object
23
14
 
24
15
  version: str
25
16
  __version__: str
26
17
  __version_tuple__: VERSION_TUPLE
27
18
  version_tuple: VERSION_TUPLE
28
- commit_id: COMMIT_ID
29
- __commit_id__: COMMIT_ID
30
19
 
31
- __version__ = version = '1.55.0'
32
- __version_tuple__ = version_tuple = (1, 55, 0)
33
-
34
- __commit_id__ = commit_id = None
20
+ __version__ = version = '1.55.1'
21
+ __version_tuple__ = version_tuple = (1, 55, 1)
dodal/beamlines/b01_1.py CHANGED
@@ -1,16 +1,12 @@
1
- from pathlib import Path
2
-
3
1
  from ophyd_async.epics.adaravis import AravisDetector
4
2
  from ophyd_async.fastcs.panda import HDFPanda
5
3
 
6
4
  from dodal.common.beamlines.beamline_utils import (
7
5
  device_factory,
8
6
  get_path_provider,
9
- set_path_provider,
10
7
  )
11
8
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
12
9
  from dodal.common.beamlines.device_helpers import CAM_SUFFIX, HDF5_SUFFIX
13
- from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
14
10
  from dodal.devices.motors import XYZStage
15
11
  from dodal.devices.synchrotron import Synchrotron
16
12
  from dodal.log import set_beamline as set_log_beamline
@@ -21,14 +17,6 @@ PREFIX = BeamlinePrefix(BL)
21
17
  set_log_beamline(BL)
22
18
  set_utils_beamline(BL)
23
19
 
24
- set_path_provider(
25
- StaticVisitPathProvider(
26
- BL,
27
- Path("/dls/b01-1/data/2025/cm40661-1/"),
28
- client=LocalDirectoryServiceClient(),
29
- )
30
- )
31
-
32
20
  """
33
21
  NOTE: Due to ArgoCD and the k8s cluster configuration those PVs are not available remotely.
34
22
  You need to be on the beamline-local network to access them.
@@ -15,6 +15,8 @@ from ophyd_async.epics.core import epics_signal_r, epics_signal_rw, epics_signal
15
15
  from dodal.devices.attenuator.filter import FilterMotor
16
16
  from dodal.log import LOGGER
17
17
 
18
+ DEFAULT_TIMEOUT = 60
19
+
18
20
 
19
21
  class ReadOnlyAttenuator(StandardReadable):
20
22
  """A read-only attenuator class with a minimum set of PVs for reading.
@@ -83,7 +85,7 @@ class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable[float]):
83
85
  wait_for_value(
84
86
  self._filters_in_position[i],
85
87
  bool(await self._calculated_filter_states[i].get_value()),
86
- None,
88
+ DEFAULT_TIMEOUT,
87
89
  )
88
90
  for i in range(16)
89
91
  ]
dodal/devices/tetramm.py CHANGED
@@ -116,6 +116,19 @@ class TetrammController(DetectorController):
116
116
  self.set_exposure(trigger_info.livetime),
117
117
  )
118
118
 
119
+ # raise an error if asked to trigger faster than the max.
120
+ # possible speed for a tetramm
121
+ self._validate_deadtime(trigger_info)
122
+
123
+ def _validate_deadtime(self, value: TriggerInfo) -> None:
124
+ minimum_deadtime = self.get_deadtime(value.livetime)
125
+ if minimum_deadtime > value.deadtime:
126
+ msg = (
127
+ f"Tetramm {self} needs at least {minimum_deadtime}s "
128
+ f"deadtime, but trigger logic provides only {value.deadtime}s"
129
+ )
130
+ raise ValueError(msg)
131
+
119
132
  async def arm(self):
120
133
  self._arm_status = await self.start_acquiring_driver_and_ensure_status()
121
134
 
@@ -1,3 +1,6 @@
1
+ from contextlib import ExitStack
2
+
3
+ from ophyd_async.core import Device
1
4
  from ophyd_async.epics.motor import Motor
2
5
  from ophyd_async.testing import (
3
6
  callback_on_mock_put,
@@ -16,3 +19,19 @@ def patch_motor(motor: Motor, initial_position=0):
16
19
  motor.user_setpoint,
17
20
  lambda pos, *args, **kwargs: set_mock_value(motor.user_readback, pos),
18
21
  )
22
+
23
+
24
+ def patch_all_motors(parent_device: Device):
25
+ motors = []
26
+
27
+ def recursively_find_motors(device: Device):
28
+ for _, child_device in device.children():
29
+ if isinstance(child_device, Motor):
30
+ motors.append(child_device)
31
+ recursively_find_motors(child_device)
32
+
33
+ recursively_find_motors(parent_device)
34
+ motor_patch_stack = ExitStack()
35
+ for motor in motors:
36
+ motor_patch_stack.enter_context(patch_motor(motor))
37
+ return motor_patch_stack