ophyd-async 0.13.3__py3-none-any.whl → 0.13.5__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 (42) hide show
  1. ophyd_async/_version.py +2 -2
  2. ophyd_async/core/__init__.py +26 -3
  3. ophyd_async/core/_derived_signal_backend.py +2 -1
  4. ophyd_async/core/_detector.py +2 -2
  5. ophyd_async/core/_device.py +9 -9
  6. ophyd_async/core/_enums.py +5 -0
  7. ophyd_async/core/_signal.py +34 -38
  8. ophyd_async/core/_signal_backend.py +3 -1
  9. ophyd_async/core/_status.py +2 -2
  10. ophyd_async/core/_table.py +8 -0
  11. ophyd_async/core/_utils.py +11 -11
  12. ophyd_async/epics/adcore/_core_logic.py +3 -1
  13. ophyd_async/epics/adcore/_utils.py +4 -4
  14. ophyd_async/epics/core/_aioca.py +2 -2
  15. ophyd_async/epics/core/_p4p.py +2 -2
  16. ophyd_async/epics/motor.py +28 -7
  17. ophyd_async/epics/pmac/_pmac_io.py +8 -4
  18. ophyd_async/epics/pmac/_pmac_trajectory.py +144 -41
  19. ophyd_async/epics/pmac/_pmac_trajectory_generation.py +692 -0
  20. ophyd_async/epics/pmac/_utils.py +1 -681
  21. ophyd_async/fastcs/jungfrau/__init__.py +2 -1
  22. ophyd_async/fastcs/jungfrau/_controller.py +29 -11
  23. ophyd_async/fastcs/jungfrau/_utils.py +10 -2
  24. ophyd_async/fastcs/panda/__init__.py +10 -0
  25. ophyd_async/fastcs/panda/_block.py +14 -0
  26. ophyd_async/fastcs/panda/_trigger.py +123 -3
  27. ophyd_async/sim/_motor.py +4 -2
  28. ophyd_async/sim/_stage.py +14 -4
  29. ophyd_async/tango/core/__init__.py +17 -3
  30. ophyd_async/tango/core/_signal.py +18 -22
  31. ophyd_async/tango/core/_tango_transport.py +407 -239
  32. ophyd_async/tango/core/_utils.py +9 -0
  33. ophyd_async/tango/demo/_mover.py +1 -2
  34. ophyd_async/tango/testing/__init__.py +2 -1
  35. ophyd_async/tango/testing/_one_of_everything.py +13 -5
  36. ophyd_async/tango/testing/_test_config.py +11 -0
  37. ophyd_async/testing/_assert.py +2 -2
  38. {ophyd_async-0.13.3.dist-info → ophyd_async-0.13.5.dist-info}/METADATA +2 -36
  39. {ophyd_async-0.13.3.dist-info → ophyd_async-0.13.5.dist-info}/RECORD +42 -40
  40. {ophyd_async-0.13.3.dist-info → ophyd_async-0.13.5.dist-info}/WHEEL +0 -0
  41. {ophyd_async-0.13.3.dist-info → ophyd_async-0.13.5.dist-info}/licenses/LICENSE +0 -0
  42. {ophyd_async-0.13.3.dist-info → ophyd_async-0.13.5.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  import re
2
+ from typing import Any
2
3
 
3
4
  from ophyd_async.core import StrictEnum
4
5
 
@@ -45,3 +46,11 @@ def get_device_trl_and_attr(name: str):
45
46
  groups[2] = groups[2].removesuffix("/") # remove trailing slash from device name
46
47
  device = "".join(groups)
47
48
  return device, attr
49
+
50
+
51
+ def try_to_cast_as_float(value: Any) -> float | None:
52
+ """Attempt to cast a value to float, returning None on failure."""
53
+ try:
54
+ return float(value)
55
+ except (ValueError, TypeError):
56
+ return None
@@ -53,8 +53,7 @@ class TangoMover(TangoReadable, Movable, Stoppable):
53
53
 
54
54
  if not (isinstance(timeout, float) or timeout is None):
55
55
  raise ValueError("Timeout must be a float or None")
56
- # For this server, set returns immediately so this status should not be awaited
57
- await self.position.set(value, wait=False, timeout=timeout)
56
+ await self.position.set(value, timeout=timeout)
58
57
 
59
58
  move_status = AsyncStatus(
60
59
  wait_for_value(self.state, DevStateEnum.ON, timeout=timeout)
@@ -2,5 +2,6 @@ from ._one_of_everything import (
2
2
  ExampleStrEnum,
3
3
  OneOfEverythingTangoDevice,
4
4
  )
5
+ from ._test_config import TestConfig
5
6
 
6
- __all__ = ["ExampleStrEnum", "OneOfEverythingTangoDevice"]
7
+ __all__ = ["ExampleStrEnum", "OneOfEverythingTangoDevice", "TestConfig"]
@@ -1,4 +1,5 @@
1
1
  import textwrap
2
+ from collections.abc import Sequence
2
3
  from dataclasses import dataclass
3
4
  from typing import Any, Generic, TypeVar
4
5
 
@@ -51,7 +52,7 @@ class AttributeData(Generic[T]):
51
52
  name: str
52
53
  tango_type: str
53
54
  initial_scalar: T
54
- initial_spectrum: Array1D
55
+ initial_spectrum: Array1D | Sequence[T]
55
56
 
56
57
 
57
58
  _all_attribute_definitions = [
@@ -59,7 +60,7 @@ _all_attribute_definitions = [
59
60
  "str",
60
61
  "DevString",
61
62
  "test_string",
62
- np.array(["one", "two", "three"], dtype=str),
63
+ ["one", "two", "three"],
63
64
  ),
64
65
  AttributeData(
65
66
  "bool",
@@ -82,7 +83,7 @@ _all_attribute_definitions = [
82
83
  "my_state",
83
84
  "DevState",
84
85
  DevState.INIT,
85
- np.array([DevState.INIT, DevState.ON, DevState.MOVING], dtype=DevState),
86
+ np.array(list(DevState.names.values()), dtype=DevState),
86
87
  ),
87
88
  ]
88
89
 
@@ -111,6 +112,10 @@ class OneOfEverythingTangoDevice(Device):
111
112
 
112
113
  def add_array_attrs(self, name: str, dtype: str, initial_value: np.ndarray):
113
114
  spectrum_name = f"{name}_spectrum"
115
+ if hasattr(initial_value, "shape"):
116
+ max_dim_x = initial_value.shape[-1]
117
+ else:
118
+ max_dim_x = len(initial_value)
114
119
  spectrum_attr = attribute(
115
120
  name=spectrum_name,
116
121
  dtype=dtype,
@@ -118,7 +123,7 @@ class OneOfEverythingTangoDevice(Device):
118
123
  access=AttrWriteType.READ_WRITE,
119
124
  fget=self.read,
120
125
  fset=self.write,
121
- max_dim_x=initial_value.shape[-1],
126
+ max_dim_x=max_dim_x,
122
127
  enum_labels=[e.value for e in ExampleStrEnum],
123
128
  )
124
129
  image_name = f"{name}_image"
@@ -129,12 +134,15 @@ class OneOfEverythingTangoDevice(Device):
129
134
  access=AttrWriteType.READ_WRITE,
130
135
  fget=self.read,
131
136
  fset=self.write,
132
- max_dim_x=initial_value.shape[-1],
137
+ max_dim_x=max_dim_x,
133
138
  max_dim_y=2,
134
139
  enum_labels=[e.value for e in ExampleStrEnum],
135
140
  )
136
141
  self._add_attr(spectrum_attr, initial_value)
137
142
  # have image just be 2 of the initial spectrum stacked
143
+ # String images are not supported, do not add their attribute data
144
+ if name in ["str", "strenum", "my_state"]:
145
+ return
138
146
  self._add_attr(image_attr, np.vstack((initial_value, initial_value)))
139
147
 
140
148
  def add_scalar_command(self, name: str, dtype: str):
@@ -0,0 +1,11 @@
1
+ """Helpful config class for testing."""
2
+
3
+ from tango import AttrDataFormat, CmdArgType
4
+
5
+
6
+ class TestConfig:
7
+ """Configuration for a test."""
8
+
9
+ data_type: CmdArgType
10
+ data_format: AttrDataFormat
11
+ enum_labels: list[str]
@@ -132,7 +132,7 @@ async def assert_describe_signal(signal: SignalR, /, **metadata):
132
132
  assert actual_datakey == expected_datakey
133
133
 
134
134
 
135
- def assert_emitted(docs: dict[str, list[dict]], **numbers: int):
135
+ def assert_emitted(docs: Mapping[str, list[dict]], **numbers: int):
136
136
  """Assert emitted document generated by running a Bluesky plan.
137
137
 
138
138
  :param docs: A mapping of document type -> list of documents that have been emitted.
@@ -195,7 +195,7 @@ class MonitorQueue(AbstractContextManager):
195
195
  _assert_readings_approx_equal(expected_reading, update)
196
196
 
197
197
  def __enter__(self):
198
- self.signal.subscribe(self.updates.put_nowait)
198
+ self.signal.subscribe_reading(self.updates.put_nowait)
199
199
  return self
200
200
 
201
201
  def __exit__(self, exc_type, exc_value, traceback):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ophyd-async
3
- Version: 0.13.3
3
+ Version: 0.13.5
4
4
  Summary: Asynchronous Bluesky hardware abstraction code, compatible with control systems like EPICS and Tango
5
5
  Author-email: Tom Cobb <tom.cobb@diamond.ac.uk>
6
6
  License: BSD 3-Clause License
@@ -58,45 +58,11 @@ Requires-Dist: aioca>=2.0a4; extra == "ca"
58
58
  Provides-Extra: pva
59
59
  Requires-Dist: p4p>=4.2.0; extra == "pva"
60
60
  Provides-Extra: tango
61
- Requires-Dist: pytango==10.0.2; extra == "tango"
61
+ Requires-Dist: pytango>=10.0.2; extra == "tango"
62
62
  Provides-Extra: demo
63
63
  Requires-Dist: ipython; extra == "demo"
64
64
  Requires-Dist: matplotlib; extra == "demo"
65
65
  Requires-Dist: pyqt6; extra == "demo"
66
- Provides-Extra: dev
67
- Requires-Dist: ophyd_async[sim]; extra == "dev"
68
- Requires-Dist: ophyd_async[ca]; extra == "dev"
69
- Requires-Dist: ophyd_async[pva]; extra == "dev"
70
- Requires-Dist: ophyd_async[tango]; extra == "dev"
71
- Requires-Dist: ophyd_async[demo]; extra == "dev"
72
- Requires-Dist: inflection; extra == "dev"
73
- Requires-Dist: import-linter; extra == "dev"
74
- Requires-Dist: myst-parser; extra == "dev"
75
- Requires-Dist: numpydoc; extra == "dev"
76
- Requires-Dist: ophyd>=1.10.7; extra == "dev"
77
- Requires-Dist: pickleshare; extra == "dev"
78
- Requires-Dist: pipdeptree; extra == "dev"
79
- Requires-Dist: pre-commit; extra == "dev"
80
- Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
81
- Requires-Dist: pyepics>=3.4.2; extra == "dev"
82
- Requires-Dist: pyright; extra == "dev"
83
- Requires-Dist: pytest; extra == "dev"
84
- Requires-Dist: pytest-asyncio; extra == "dev"
85
- Requires-Dist: pytest-cov; extra == "dev"
86
- Requires-Dist: pytest-faulthandler; extra == "dev"
87
- Requires-Dist: pytest-forked; extra == "dev"
88
- Requires-Dist: pytest-rerunfailures; extra == "dev"
89
- Requires-Dist: pytest-timeout; extra == "dev"
90
- Requires-Dist: ruff; extra == "dev"
91
- Requires-Dist: scanspec>=1.0a1; extra == "dev"
92
- Requires-Dist: sphinx-autobuild; extra == "dev"
93
- Requires-Dist: sphinx-autodoc2; extra == "dev"
94
- Requires-Dist: sphinxcontrib-mermaid; extra == "dev"
95
- Requires-Dist: sphinx-copybutton; extra == "dev"
96
- Requires-Dist: sphinx-design; extra == "dev"
97
- Requires-Dist: tox-direct; extra == "dev"
98
- Requires-Dist: types-mock; extra == "dev"
99
- Requires-Dist: types-pyyaml; extra == "dev"
100
66
  Dynamic: license-file
101
67
 
102
68
  [![CI](https://github.com/bluesky/ophyd-async/actions/workflows/ci.yml/badge.svg)](https://github.com/bluesky/ophyd-async/actions/workflows/ci.yml)
@@ -1,15 +1,15 @@
1
1
  ophyd_async/__init__.py,sha256=dcAA3qsj1nNIMe5l-v2tlduZ_ypwBmyuHe45Lsq4k4w,206
2
2
  ophyd_async/__main__.py,sha256=n_U4O9bgm97OuboUB_9eK7eFiwy8BZSgXJ0OzbE0DqU,481
3
3
  ophyd_async/_docs_parser.py,sha256=gPYrigfSbYCF7QoSf2UvE-cpQu4snSssl7ZWN-kKDzI,352
4
- ophyd_async/_version.py,sha256=MG7dROnfeBA5y43Gv6z8LsZSoCLYybK6UCAQ7R0xks4,706
4
+ ophyd_async/_version.py,sha256=s59flr3WuC_9oONlGKcmFdyemUNgE-R3uqabpBNb6YU,706
5
5
  ophyd_async/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- ophyd_async/core/__init__.py,sha256=KBj8v-Fxh8V1QKJYR0xAjoziqo1vjyblx45H7Jrikd0,4979
6
+ ophyd_async/core/__init__.py,sha256=yGbkVju5otO8DmA3KyerYB0gLtcX5sdxlq3ajyGha4M,5531
7
7
  ophyd_async/core/_derived_signal.py,sha256=TuZza_j3J1Bw4QSqBYB9Ta2FyQP5BycO3nSHVtJ890Q,13015
8
- ophyd_async/core/_derived_signal_backend.py,sha256=PYyyont_nUR9LBC9eqVwueHCMwLJfQ_F7R_14sivBTU,12510
9
- ophyd_async/core/_detector.py,sha256=bPTQYLTjbxs7-wjV8szAZ0TQI20fV12vkq1OaA5L_z8,14938
10
- ophyd_async/core/_device.py,sha256=lSm8FBul9NTn9VO0rsAlV9pctJyUsMdU2ztEf5CqH5M,14716
8
+ ophyd_async/core/_derived_signal_backend.py,sha256=Ibce9JHghiI5Ir8w0pUYULHL2qWkobeUYc0-CDrsO2E,12615
9
+ ophyd_async/core/_detector.py,sha256=9fYbBPmRnMGADcDTYkspDAL2uzhtNNiKCEeBUU0oKaY,14942
10
+ ophyd_async/core/_device.py,sha256=_M3hwiYv8xO-7pfQkOzeZEEsB05Oa2HTRKOEc69C_a8,14743
11
11
  ophyd_async/core/_device_filler.py,sha256=MDz8eQQ-eEAwo-UEMxfqPfpcBuMG01tLCGR6utwVnmE,14825
12
- ophyd_async/core/_enums.py,sha256=7VpEvh9tFa-E3wn3x0SdXUlCG7AxSPwCRkf37B-0JbM,313
12
+ ophyd_async/core/_enums.py,sha256=2vh6x0rZ6SLiw2xxq1xVIn-GpbLDFc8wZoVdA55QiE8,370
13
13
  ophyd_async/core/_flyer.py,sha256=8zKyU5aQOr_t59GIUwsYeb8NSabdvBp0swwuRe4v5VQ,3457
14
14
  ophyd_async/core/_hdf_dataset.py,sha256=0bIX_ZbFSMdXqDwRtEvV-0avHnwXhjPddE5GVNmo7H8,2608
15
15
  ophyd_async/core/_log.py,sha256=DxKR4Nz3SgTaTzKBZWqt-w48yT8WUAr_3Qr223TEWRw,3587
@@ -18,15 +18,15 @@ ophyd_async/core/_protocol.py,sha256=wQ_snxhTprHqEjQb1HgFwBljwolMY6A8C3xgV1PXwdU
18
18
  ophyd_async/core/_providers.py,sha256=WBht3QCgvGc0stNcwH6z4Zr6hAz3e01-88NjsYI2w6I,9740
19
19
  ophyd_async/core/_readable.py,sha256=iBo1YwA5bsAbzLbznvmSnzKDWUuGkLh850Br3BXsgeU,11707
20
20
  ophyd_async/core/_settings.py,sha256=_ZccbXKP7j5rG6-bMKk7aaLr8hChdRDAPY_YSR71XXM,4213
21
- ophyd_async/core/_signal.py,sha256=ghgxtfUG9vkwgvuu6qXa_ECux5-3j9WwxB5mN5G6jqU,28421
22
- ophyd_async/core/_signal_backend.py,sha256=PvwTbbSVEGqM-2s5BNRrKGwM_MiYL71qMxYAgyZ7wRM,6930
21
+ ophyd_async/core/_signal.py,sha256=085vcyjhEyZECi4Svjq6DUM5kxrzZh8s5DoHR2LALOc,28195
22
+ ophyd_async/core/_signal_backend.py,sha256=F3ma45cIIJ3D702zsVZIqn4Jv7u05YzMQBQND70QCbQ,6987
23
23
  ophyd_async/core/_soft_signal_backend.py,sha256=NJUuyaCKtBZjggt8WKi7_lKQRHasToxviuQvl5xbhLU,6222
24
- ophyd_async/core/_status.py,sha256=h4TtWFM7wFtpxxyAYYSITgcVzArYZdYBHbya6qIX5t0,6553
25
- ophyd_async/core/_table.py,sha256=ai-_W-_WMZcy9f69BDYRv9vjVl-AVeOPN_uHYoGCSsc,6905
26
- ophyd_async/core/_utils.py,sha256=-iKbqsvVR7P29E6VpOgI5WfDwGBRdud_gvExIoUVlG4,12495
24
+ ophyd_async/core/_status.py,sha256=a2IDvv_GvUcFuhjQA5bQzWm9ngR6zGc9PR4XcZiaeqk,6557
25
+ ophyd_async/core/_table.py,sha256=ryJ7AwJBglQUzwP9_aSjR8cu8EKvYXfo1q1byhke3Uc,7248
26
+ ophyd_async/core/_utils.py,sha256=gUewO4XPrBxsEWzObNumqAB2Q7Hwrd5F_Nc6B2XwQIM,12532
27
27
  ophyd_async/core/_yaml_settings.py,sha256=Qojhku9l5kPSkTnEylCRWTe0gpw6S_XP5av5dPpqFgQ,2089
28
28
  ophyd_async/epics/__init__.py,sha256=ou4yEaH9VZHz70e8oM614-arLMQvUfQyXhRJsnEpWn8,60
29
- ophyd_async/epics/motor.py,sha256=YbhzyP56X_2KjFLyPVHXMxYmntxUzDl4K3np_V2akhk,9024
29
+ ophyd_async/epics/motor.py,sha256=nS6Vx4-6vYso3b_QtpE8p8dlys5jRr2LK7prZCkZMc8,9558
30
30
  ophyd_async/epics/signal.py,sha256=0A-supp9ajr63O6aD7F9oG0-Q26YmRjk-ZGh57-jo1Y,239
31
31
  ophyd_async/epics/adandor/__init__.py,sha256=dlitllrAdhvh16PAcVMUSSEytTDNMu6_HuYk8KD1EoY,343
32
32
  ophyd_async/epics/adandor/_andor.py,sha256=TijGjNVxuH-P0X7UACPt9eLLQ449DwMyVhbn1kV7Le8,1245
@@ -39,13 +39,13 @@ ophyd_async/epics/adaravis/_aravis_io.py,sha256=af639qsO2V8NU5I0LgxK8jrxuhXgM6eM
39
39
  ophyd_async/epics/adcore/__init__.py,sha256=NWNLe2uFqU86P5mYbKINfHHrUVoTHeDN6829-7lBHxE,1631
40
40
  ophyd_async/epics/adcore/_core_detector.py,sha256=m821Ji4WVMYd0CI5NOXSkHMiHzkO1aA0mvQzWrig6Z0,2592
41
41
  ophyd_async/epics/adcore/_core_io.py,sha256=hEz_yFB2pr7CyTN9JjC7RlLUPfhxjJ1r380XhYEcId4,9647
42
- ophyd_async/epics/adcore/_core_logic.py,sha256=L3XUPoTdGjNSh-DUKWS8Fkw-qhp1MzGI8GGDVPSuW0I,8884
42
+ ophyd_async/epics/adcore/_core_logic.py,sha256=QVphp-N2o0j4HrzSRISa21cb1oJdYdbFgwj8eFXwOGM,8972
43
43
  ophyd_async/epics/adcore/_core_writer.py,sha256=iQV5xodp63Fsoww1ply5dyQMIysVY_f6_EryzoNkjbk,8383
44
44
  ophyd_async/epics/adcore/_hdf_writer.py,sha256=nKXOjVZfM6_BlYv5f1l8nwo7tjenYjx-3AN18gzhUBA,6074
45
45
  ophyd_async/epics/adcore/_jpeg_writer.py,sha256=VYpUWQGEjrKG2kiRGQZlBCPXVJ1BzWb9GyB9KhxPWgo,688
46
46
  ophyd_async/epics/adcore/_single_trigger.py,sha256=tFGLT1b_rZzAvbqWP-hyCccxJMRY26T5IER-VAqKXmc,1275
47
47
  ophyd_async/epics/adcore/_tiff_writer.py,sha256=197Ky9ltsJjUKNwl8_OAuoCe8dWIc7zCFs7wautwC7Y,689
48
- ophyd_async/epics/adcore/_utils.py,sha256=L7YQBrsNt6gL1JqVK_rW4fkHaRiDrDYlOtiLakMbXE8,5233
48
+ ophyd_async/epics/adcore/_utils.py,sha256=iKSUh-D99sjipmZxWuo_XsA6UG-vJlMlFrAmZW4FZns,5241
49
49
  ophyd_async/epics/adkinetix/__init__.py,sha256=A9xq3lGMrmza9lfukRixC0Up_kUDVFII8JguLr2x7Bw,308
50
50
  ophyd_async/epics/adkinetix/_kinetix.py,sha256=zZv0JZ8i1RSx7KBDn_1HGNOY0BoIP81mRK5TKq7d4eA,1302
51
51
  ophyd_async/epics/adkinetix/_kinetix_controller.py,sha256=UI-XcQpGj7jq-_e1ceoMOZkyfejwG6H5wX-Ntp_NJjg,1481
@@ -63,10 +63,10 @@ ophyd_async/epics/advimba/_vimba.py,sha256=4XlEnsJMGDzHLuYaIDUmaxx0gtOAehn5BKBZM
63
63
  ophyd_async/epics/advimba/_vimba_controller.py,sha256=KSbP4LHqYkCDplpmBk7hdf0Yz9J2vOxWn0fStFFAklA,1942
64
64
  ophyd_async/epics/advimba/_vimba_io.py,sha256=E3XlCKLQbGOWho0dQPeD4xeEl5pZGINyYstGD43qNrM,1492
65
65
  ophyd_async/epics/core/__init__.py,sha256=q73i4aJ_0HApVNmf3eAw-q30XuazAyZW2MW5TXk-pOY,648
66
- ophyd_async/epics/core/_aioca.py,sha256=38aW5dd3MzwhoweNMjkOfnfZHI2JZFateO0YABGVSfQ,13230
66
+ ophyd_async/epics/core/_aioca.py,sha256=KnD_LWBlIiJFf3ujPe7ZH3_j2P5uWtg5d9_XaVk-cqQ,13240
67
67
  ophyd_async/epics/core/_epics_connector.py,sha256=KXQ1WVpNrgQ30KiiXTYRwfoHdaU5oWv1jVZAvx3tGig,2557
68
68
  ophyd_async/epics/core/_epics_device.py,sha256=wGdR24I7GSPh3HmM7jsWKZhBZgt4IyLrCn4Ut7Wx_xo,510
69
- ophyd_async/epics/core/_p4p.py,sha256=Q6o4rlyrg2VXlqi1uHkGbnYc1gZ8YX5ZaJDcL0eAr_8,16385
69
+ ophyd_async/epics/core/_p4p.py,sha256=IUu0cROcgRee9er6qyskkX7GMS4Ixr94TV4_4a7joYA,16395
70
70
  ophyd_async/epics/core/_pvi_connector.py,sha256=SfKkZqGCRvJJtQpJQzmfuLJQqOge0wBsMeuTSQ-KPjs,5553
71
71
  ophyd_async/epics/core/_signal.py,sha256=qAEe8mgXRMgBTcxuwN-KDGSRtJTwrhygThTDe5vA3EQ,5916
72
72
  ophyd_async/epics/core/_util.py,sha256=wcbZ6Qa2qqme6AlKAfxGI68EMEPEMJSl7BiDRz3mrEg,2820
@@ -83,9 +83,10 @@ ophyd_async/epics/demo/point_detector_channel.db,sha256=FZ9H6HjqplhcF2jgimv_dT1n
83
83
  ophyd_async/epics/odin/__init__.py,sha256=7kRqVzwoD8PVtp7Nj9iQWlgbLeoWE_8oiq-B0kixwTE,93
84
84
  ophyd_async/epics/odin/_odin_io.py,sha256=YDBrS15PnEKe5SHmz397Emh--lZSQEnbR3G7p8pbShY,6533
85
85
  ophyd_async/epics/pmac/__init__.py,sha256=GqJTiJudqE9pu050ZNED09F9tKRfazn0wBsojsMH2gg,273
86
- ophyd_async/epics/pmac/_pmac_io.py,sha256=Nnenk7HHyzzqe0jIg2FAtxFohFnr_ByDZ0IAEI4_Ls4,4023
87
- ophyd_async/epics/pmac/_pmac_trajectory.py,sha256=e1WNyHd-Tn1JENYGfDJJ5o66B9z8qYZXV3khNo9YStk,4118
88
- ophyd_async/epics/pmac/_utils.py,sha256=ahN5zMfO3-gNV7H1fQ5wsDeGUL9IpMQa2g27rhVf0uU,34326
86
+ ophyd_async/epics/pmac/_pmac_io.py,sha256=E7tdaq9FAM6BeGQG1L8ALEYpXOlyqTXl_NLLSWzmCdk,4345
87
+ ophyd_async/epics/pmac/_pmac_trajectory.py,sha256=7wTaetNNy9uj7C_skcs0VH5BthuY4Ec5zn-m4ROxd8k,7866
88
+ ophyd_async/epics/pmac/_pmac_trajectory_generation.py,sha256=l-jFlJCs2-LowoF6vJn2ex0Evcon2OeYPMHWzEZnEgk,27136
89
+ ophyd_async/epics/pmac/_utils.py,sha256=n4vh9n7hmaWe9g02FtguF2oDsYuVvsTgmK7fYEyGuIE,6092
89
90
  ophyd_async/epics/testing/__init__.py,sha256=aTIv4D2DYrpnGco5RQF8QuLG1SfFkIlTyM2uYEKXltA,522
90
91
  ophyd_async/epics/testing/_example_ioc.py,sha256=zb4ZEUzuB2MrSw5ETPLIiHhf-2BRU1Bdxco6Kh4iI1I,3880
91
92
  ophyd_async/epics/testing/_utils.py,sha256=9gxpwaWX0HGtacu1LTupcw7viXN8G78RmuNciU_-cjs,1702
@@ -97,18 +98,18 @@ ophyd_async/fastcs/eiger/__init__.py,sha256=RxwOFjERKy5tUD_IDGCGuMh716FaZgCq7R9e
97
98
  ophyd_async/fastcs/eiger/_eiger.py,sha256=jo3K5dM3Co_RDYIyO6poCVDqp2g_1z4MqnYftwnMhUk,1103
98
99
  ophyd_async/fastcs/eiger/_eiger_controller.py,sha256=Cucj-1M-1CaxSJxHZmHs3f_OXwtTIspcqUFhRNGzn_E,2361
99
100
  ophyd_async/fastcs/eiger/_eiger_io.py,sha256=yNozTKX4CMoqIaFvyKJEs5RXXGJ4VITP_T4TIFHWRmc,1242
100
- ophyd_async/fastcs/jungfrau/__init__.py,sha256=6BV6czpOWmDuTAKR-47tRFdM3Q5dQenHnPPAYiWOFk0,717
101
- ophyd_async/fastcs/jungfrau/_controller.py,sha256=OiPCVwYtY_0bx5His9qVsRHzG8-Rjg087B6c71gO5Q8,4836
101
+ ophyd_async/fastcs/jungfrau/__init__.py,sha256=xwTaPiqvtyyljP2acz07FSlUW79Io8EsKks9ENgbumA,765
102
+ ophyd_async/fastcs/jungfrau/_controller.py,sha256=TvUxRuP3NJFTOcyHeMn5-1Va7HzOJswWCYSGdp1NMFI,5778
102
103
  ophyd_async/fastcs/jungfrau/_jungfrau.py,sha256=KAHCmRHMyzIh-r2JXVJcQOGLkCOOdW5Mao_KChITO2s,929
103
104
  ophyd_async/fastcs/jungfrau/_signals.py,sha256=8seZCkKTb-xJL0IdB2el8VTEbWNaCvZIhpP0609GpxI,2500
104
- ophyd_async/fastcs/jungfrau/_utils.py,sha256=-NeIlUW7Mx9llUC6FZORc6e-IAAOL9lwzzl07wc8lTc,2509
105
+ ophyd_async/fastcs/jungfrau/_utils.py,sha256=QpdWbPT_31Jwyi7INFMRq9hncSZIK_4J3l6wpuppzn8,2875
105
106
  ophyd_async/fastcs/odin/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
106
- ophyd_async/fastcs/panda/__init__.py,sha256=ugrScVm4HPQFc-d1kTAfZ5UUzW9T3SPgTi0OD2s8ZH0,1003
107
- ophyd_async/fastcs/panda/_block.py,sha256=SM7NaWCRwLz2Pl4wgjZMrDgx3ZLdGPTw6nU0bA-65yA,2394
107
+ ophyd_async/fastcs/panda/__init__.py,sha256=GbnPqH_13wvyPK1CvRHGAViamKVWHY9n-sTmfAdcnMA,1229
108
+ ophyd_async/fastcs/panda/_block.py,sha256=ejWajojXpP85kdWoB4zl6Z4s9S-Izs4brBdxosfjYbA,2645
108
109
  ophyd_async/fastcs/panda/_control.py,sha256=xtW3dH_MLQoycgP-4vJtYx1M9alHjWo13iu9UFTgwzY,1306
109
110
  ophyd_async/fastcs/panda/_hdf_panda.py,sha256=tL_OWHxlMQcMZGq9sxHLSeag6hP9MRIbTPn1W0u0iNI,1237
110
111
  ophyd_async/fastcs/panda/_table.py,sha256=maKGoKypEuYqTSVWGgDO6GMEKOtlDm9Dn5YiYdBzu6c,2486
111
- ophyd_async/fastcs/panda/_trigger.py,sha256=TLd0ST-ZgsCGpONGUe76qHOaH74TlZNIGNkh-10eRa8,3404
112
+ ophyd_async/fastcs/panda/_trigger.py,sha256=iBxW4YMfRYrpg7AoQaHb7rHKCE95UbSxguRuR9FOgw8,7610
112
113
  ophyd_async/fastcs/panda/_writer.py,sha256=UqsU44u0uIqkDNky3mIzhW3OhLeZ8TSqFS666qrRdmA,6181
113
114
  ophyd_async/plan_stubs/__init__.py,sha256=sRe1Jna_6i7aKjE3pPzsP4iNMWeWdtiptLnOq9pov9M,619
114
115
  ophyd_async/plan_stubs/_ensure_connected.py,sha256=YR6VRj7koccJ4x35NV-Ugl4ZbxgAoGN9PjVIjhv0gpw,894
@@ -125,36 +126,37 @@ ophyd_async/sim/_blob_detector_controller.py,sha256=y1aSNQJUPnsT2qnj2sk254Mp18an
125
126
  ophyd_async/sim/_blob_detector_writer.py,sha256=_Pd0OaP4_mZfwxtUF35v7hsktLP_wYljR4nylr5CzJo,3346
126
127
  ophyd_async/sim/_mirror_horizontal.py,sha256=Jsqa8Snjy1jQDboZtAQFJjGor5uKk8FBC7OCe-GoZDw,1478
127
128
  ophyd_async/sim/_mirror_vertical.py,sha256=HUD44mYT0jQ0GKiQKxD7k_7y6o6OdE6TztgdPUJIK_g,2085
128
- ophyd_async/sim/_motor.py,sha256=EUykjGfQgBnf0Pmr66XeDlhz8DU0eAIXUvIgbtJccoA,9226
129
+ ophyd_async/sim/_motor.py,sha256=QRs9oBMKQBsUvP2kaTbh9apMgPvS3DwqbVUwgQAffAQ,9277
129
130
  ophyd_async/sim/_pattern_generator.py,sha256=kuxvyX2gIxrywhQRhaO1g8YluBT7LBkE20IsurZS-6o,3734
130
131
  ophyd_async/sim/_point_detector.py,sha256=wMG_ncvm99WMCPihlFyuMEf3UknAxCpB1hpk3uKiENE,3024
131
- ophyd_async/sim/_stage.py,sha256=fOR5HGWfqWw47-0HrMmQ5rait_qPVNneF329wCx8KKY,1233
132
+ ophyd_async/sim/_stage.py,sha256=_SywbmSQwxf7JLx68qwo0RpiB3oIWlbTLmvRKxUoig0,1602
132
133
  ophyd_async/tango/__init__.py,sha256=g9xzjlzPpUAP12YI-kYwfAoLSYPAQdL1S11R2c-cius,60
133
- ophyd_async/tango/core/__init__.py,sha256=IMvQ7MWcTof99h_pr483KWKvQV2-h7zo_iRpLA2PUYQ,1108
134
+ ophyd_async/tango/core/__init__.py,sha256=OOVdHu07cssK90F-caG0CY7qKpPYy0MSV421YNAI-_8,1413
134
135
  ophyd_async/tango/core/_base_device.py,sha256=e9oqSL-fDOj8r9nUUFZkbibhRGbI6HYtlnZjK5B_2fE,5033
135
136
  ophyd_async/tango/core/_converters.py,sha256=xI_RhMR8dY6IVORUZVVCL9LdYnEE6TA6BBPX_lTu06w,2183
136
- ophyd_async/tango/core/_signal.py,sha256=6KXDzV8Z08hrtCqG8J4AYnhemQjtL6Eofngo6yNo52o,5798
137
+ ophyd_async/tango/core/_signal.py,sha256=8mIxRVEVjhDN33LDbbKZWGMUYn9Gl5ZMEIYw6GSBTUE,5569
137
138
  ophyd_async/tango/core/_tango_readable.py,sha256=ctR6YcBGGatW6Jp2kvddA1hVZ2v1CidPsF9FmJK9BYg,406
138
- ophyd_async/tango/core/_tango_transport.py,sha256=kKBUSgZs80ZcldkD8gU16A5VYVlZneFNz-TSYd8QoQ0,31887
139
- ophyd_async/tango/core/_utils.py,sha256=FrX524jwa-0EQxpcGaKF6yqyHm5BWIFSE82FcIB0aAY,1430
139
+ ophyd_async/tango/core/_tango_transport.py,sha256=KxjhHqKADrOvzGi9tbOQXUWdsJ0NKGejWxHItxpUsjg,37401
140
+ ophyd_async/tango/core/_utils.py,sha256=pwT7V1DNWSyPOSzvDZ6OsDZTjaV-pAeDLDlmgtHVcNM,1673
140
141
  ophyd_async/tango/demo/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
141
142
  ophyd_async/tango/demo/_counter.py,sha256=2J4SCHnBWLF0O5mFWlJdO4tmnElvlx5sRrk4op_AC9U,1139
142
143
  ophyd_async/tango/demo/_detector.py,sha256=X5YWHAjukKZ7iYF1fBNle4CBDj1X5rvj0lnPMOcnRCU,1340
143
- ophyd_async/tango/demo/_mover.py,sha256=c-IxrWQN0YX-Iuf720xlKfsPbNfh7bUz_AVnbwYkW08,2984
144
+ ophyd_async/tango/demo/_mover.py,sha256=i-Tq5nDmYi4RcC4O6mOJoVeMEIIxuqyS_2AfjTpAcnk,2884
144
145
  ophyd_async/tango/demo/_tango/__init__.py,sha256=FfONT7vM49nNo3a1Lv-LcMZO9EHv6bv91yY-RnxIib4,85
145
146
  ophyd_async/tango/demo/_tango/_servers.py,sha256=putvERDyibibaTbhdWyqZB_axj2fURXqzDsZb9oSW14,2991
146
- ophyd_async/tango/testing/__init__.py,sha256=SYXPAS00ny3jlUMOJKpaewO4ljPjK1_z1smj7IfsBQg,148
147
- ophyd_async/tango/testing/_one_of_everything.py,sha256=tsxWgy2f_m9f0FH4XCVO_I8OtEquKbJQZbr4KaXMJL4,6571
147
+ ophyd_async/tango/testing/__init__.py,sha256=l52SmX9XuxZUBuLpOYJzHfskkWVYhx3RkSbGL_wUu5Y,199
148
+ ophyd_async/tango/testing/_one_of_everything.py,sha256=eJg5K8n1ExwPfruDCHNZcWjx4aRTA1Vs_7NQHSHjpgc,6851
149
+ ophyd_async/tango/testing/_test_config.py,sha256=i3t5d4wjUEtAvvSSZNz_bH_r5VEvUphUcEOEd8LKxQQ,228
148
150
  ophyd_async/testing/__init__.py,sha256=jDBzUAHGDMfkhd-_9u0CJWEq0E0sPrIGGlLmVzEyxY8,1742
149
151
  ophyd_async/testing/__pytest_assert_rewrite.py,sha256=_SU2UfChPgEf7CFY7aYH2B7MLp-07_qYnVLyu6QtDL8,129
150
- ophyd_async/testing/_assert.py,sha256=8j7NtHBdG2AjFY4yxgMx3oGX22rYvzj0337o-shfH40,8784
152
+ ophyd_async/testing/_assert.py,sha256=Ss_XDToi1ymUfr0Z1r45A2Fmg7-9UOv9gYkJEBsZPv8,8795
151
153
  ophyd_async/testing/_mock_signal_utils.py,sha256=d-n_923ii59-ae9TbqVuIK9MAJpDmu0k47fzgJLj8t8,5195
152
154
  ophyd_async/testing/_one_of_everything.py,sha256=U9ui7B-iNHDM3H3hIWUuaCb8Gc2eLlUh0sBHUlQldT0,4741
153
155
  ophyd_async/testing/_single_derived.py,sha256=5-HOTzgePcZ354NK_ssVpyIbJoJmKyjVQCxSwQXUC-4,2730
154
156
  ophyd_async/testing/_utils.py,sha256=zClRo5ve8RGia7wQnby41W-Zprj-slOA5da1LfYnuhw,45
155
157
  ophyd_async/testing/_wait_for_pending.py,sha256=YZAR48n-CW0GsPey3zFRzMJ4byDAr3HvMIoawjmTrHw,732
156
- ophyd_async-0.13.3.dist-info/licenses/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
157
- ophyd_async-0.13.3.dist-info/METADATA,sha256=MJyMUgxAYadbFX6irChsIsegu_39gLCH0DKzhB8qOhs,7222
158
- ophyd_async-0.13.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
159
- ophyd_async-0.13.3.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
160
- ophyd_async-0.13.3.dist-info/RECORD,,
158
+ ophyd_async-0.13.5.dist-info/licenses/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
159
+ ophyd_async-0.13.5.dist-info/METADATA,sha256=poy7PYBMjXEoQKIWeOyo9kcz_Vv5LhZSA9w9xFZRMR8,5703
160
+ ophyd_async-0.13.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
161
+ ophyd_async-0.13.5.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
162
+ ophyd_async-0.13.5.dist-info/RECORD,,