ophyd-async 0.13.0__py3-none-any.whl → 0.13.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.
ophyd_async/_version.py CHANGED
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.13.0'
21
- __version_tuple__ = version_tuple = (0, 13, 0)
31
+ __version__ = version = '0.13.1'
32
+ __version_tuple__ = version_tuple = (0, 13, 1)
33
+
34
+ __commit_id__ = commit_id = None
@@ -84,7 +84,7 @@ class TriggerInfo(ConfinedModel):
84
84
  A exposures_per_event > 1 can be useful to have exposures from a faster detector
85
85
  able to be zipped with a single exposure from a slower detector. E.g. if
86
86
  number_of_events=10 and exposures_per_event=5 then the detector will take
87
- 10 exposures, but publish 2 StreamDatum indices, and describe() will show a
87
+ 50 exposures, but publish 10 StreamDatum indices, and describe() will show a
88
88
  shape of (5, h, w) for each.
89
89
  Default is 1.
90
90
  """
@@ -39,8 +39,8 @@ from ._utils import (
39
39
  async def _wait_for(coro: Awaitable[T], timeout: float | None, source: str) -> T:
40
40
  try:
41
41
  return await asyncio.wait_for(coro, timeout)
42
- except asyncio.TimeoutError as e:
43
- raise asyncio.TimeoutError(source) from e
42
+ except TimeoutError as e:
43
+ raise TimeoutError(source) from e
44
44
 
45
45
 
46
46
  def _add_timeout(func):
@@ -492,7 +492,7 @@ async def observe_signals_value(
492
492
  last_item = ()
493
493
  while True:
494
494
  if overall_deadline and time.monotonic() >= overall_deadline:
495
- raise asyncio.TimeoutError(
495
+ raise TimeoutError(
496
496
  f"observe_value was still observing signals "
497
497
  f"{[signal.source for signal in signals]} after "
498
498
  f"timeout {done_timeout}s"
@@ -500,8 +500,8 @@ async def observe_signals_value(
500
500
  iteration_timeout = _get_iteration_timeout(timeout, overall_deadline)
501
501
  try:
502
502
  item = await asyncio.wait_for(q.get(), iteration_timeout)
503
- except asyncio.TimeoutError as exc:
504
- raise asyncio.TimeoutError(
503
+ except TimeoutError as exc:
504
+ raise TimeoutError(
505
505
  f"Timeout Error while waiting {iteration_timeout}s to update "
506
506
  f"{[signal.source for signal in signals]}. "
507
507
  f"Last observed signal and value were {last_item}"
@@ -536,8 +536,8 @@ class _ValueChecker(Generic[SignalDatatypeT]):
536
536
  ):
537
537
  try:
538
538
  await asyncio.wait_for(self._wait_for_value(signal), timeout)
539
- except asyncio.TimeoutError as e:
540
- raise asyncio.TimeoutError(
539
+ except TimeoutError as e:
540
+ raise TimeoutError(
541
541
  f"{signal.name} didn't match {self._matcher_name} in {timeout}s, "
542
542
  f"last value {self._last_value!r}"
543
543
  ) from e
@@ -635,8 +635,8 @@ async def set_and_wait_for_other_value(
635
635
  await asyncio.wait_for(_wait_for_value(), timeout)
636
636
  if wait_for_set_completion:
637
637
  await status
638
- except asyncio.TimeoutError as e:
639
- raise asyncio.TimeoutError(
638
+ except TimeoutError as e:
639
+ raise TimeoutError(
640
640
  f"{match_signal.name} value didn't match value from"
641
641
  f" {matcher.__name__}() in {timeout}s"
642
642
  ) from e
@@ -4,7 +4,7 @@ import asyncio
4
4
  import logging
5
5
  from collections.abc import Awaitable, Callable, Iterable, Mapping, Sequence
6
6
  from dataclasses import dataclass
7
- from enum import Enum, EnumMeta
7
+ from enum import Enum, EnumMeta, StrEnum
8
8
  from typing import (
9
9
  Any,
10
10
  Generic,
@@ -59,15 +59,15 @@ class AnyStringUppercaseNameEnumMeta(UppercaseNameEnumMeta):
59
59
  return super().__call__(value, *args, **kwargs)
60
60
 
61
61
 
62
- class StrictEnum(str, Enum, metaclass=UppercaseNameEnumMeta):
62
+ class StrictEnum(StrEnum, metaclass=UppercaseNameEnumMeta):
63
63
  """All members should exist in the Backend, and there will be no extras."""
64
64
 
65
65
 
66
- class SubsetEnum(str, Enum, metaclass=AnyStringUppercaseNameEnumMeta):
66
+ class SubsetEnum(StrEnum, metaclass=AnyStringUppercaseNameEnumMeta):
67
67
  """All members should exist in the Backend, but there may be extras."""
68
68
 
69
69
 
70
- class SupersetEnum(str, Enum, metaclass=UppercaseNameEnumMeta):
70
+ class SupersetEnum(StrEnum, metaclass=UppercaseNameEnumMeta):
71
71
  """Some members should exist in the Backend, and there should be no extras."""
72
72
 
73
73
 
@@ -243,6 +243,7 @@ def get_enum_cls(datatype: type | None) -> type[EnumTypes] | None:
243
243
  """
244
244
  if get_origin(datatype) is Sequence:
245
245
  datatype = get_args(datatype)[0]
246
+ datatype = get_origin_class(datatype)
246
247
  if datatype and issubclass(datatype, Enum):
247
248
  if not issubclass(datatype, EnumTypes):
248
249
  raise TypeError(
@@ -1,7 +1,6 @@
1
1
  from collections.abc import Sequence
2
2
 
3
- from ophyd_async.core import PathProvider
4
- from ophyd_async.core._signal import SignalR
3
+ from ophyd_async.core import PathProvider, SignalR
5
4
  from ophyd_async.epics import adcore
6
5
 
7
6
  from ._andor_controller import Andor2Controller
@@ -1,7 +1,6 @@
1
1
  from collections.abc import Sequence
2
2
 
3
- from ophyd_async.core import SignalR, StandardDetector
4
- from ophyd_async.core._providers import PathProvider
3
+ from ophyd_async.core import PathProvider, SignalR, StandardDetector
5
4
 
6
5
  from ._core_io import ADBaseIO, NDPluginBaseIO, NDPluginCBIO
7
6
  from ._core_logic import ADBaseContAcqController, ADBaseControllerT
@@ -229,7 +229,7 @@ class NDFileHDFIO(NDFilePluginIO):
229
229
  swmr_mode: A[SignalRW[bool], PvSuffix.rbv("SWMRMode")]
230
230
  flush_now: A[SignalRW[bool], PvSuffix("FlushNow")]
231
231
  xml_file_name: A[SignalRW[str], PvSuffix.rbv("XMLFileName")]
232
- num_frames_chunks: A[SignalR[int], PvSuffix("NumFramesChunks_RBV")]
232
+ num_frames_chunks: A[SignalRW[int], PvSuffix.rbv("NumFramesChunks")]
233
233
  chunk_size_auto: A[SignalRW[bool], PvSuffix.rbv("ChunkSizeAuto")]
234
234
  lazy_open: A[SignalRW[bool], PvSuffix.rbv("LazyOpen")]
235
235
 
@@ -130,7 +130,7 @@ class ADBaseController(DetectorController, Generic[ADBaseIOT]):
130
130
  ):
131
131
  if state in self.good_states:
132
132
  return
133
- except asyncio.TimeoutError as exc:
133
+ except TimeoutError as exc:
134
134
  if state is not None:
135
135
  raise ValueError(
136
136
  f"Final detector state {state.value} not in valid end "
@@ -138,7 +138,7 @@ class ADBaseController(DetectorController, Generic[ADBaseIOT]):
138
138
  ) from exc
139
139
  else:
140
140
  # No updates from the detector, something else is wrong
141
- raise asyncio.TimeoutError(
141
+ raise TimeoutError(
142
142
  "Could not monitor detector state: "
143
143
  + self.driver.detector_state.source
144
144
  ) from exc
@@ -11,15 +11,18 @@ from event_model import ( # type: ignore
11
11
  )
12
12
  from pydantic import PositiveInt
13
13
 
14
- from ophyd_async.core._detector import DetectorWriter
15
- from ophyd_async.core._enums import EnableDisable
16
- from ophyd_async.core._providers import DatasetDescriber, PathInfo, PathProvider
17
- from ophyd_async.core._signal import (
14
+ from ophyd_async.core import (
15
+ DEFAULT_TIMEOUT,
16
+ AsyncStatus,
17
+ DatasetDescriber,
18
+ DetectorWriter,
19
+ EnableDisable,
20
+ PathInfo,
21
+ PathProvider,
22
+ error_if_none,
18
23
  observe_value,
19
24
  set_and_wait_for_value,
20
25
  )
21
- from ophyd_async.core._status import AsyncStatus
22
- from ophyd_async.core._utils import DEFAULT_TIMEOUT, error_if_none
23
26
  from ophyd_async.epics.core import stop_busy_record
24
27
 
25
28
  # from ophyd_async.epics.adcore._core_logic import ADBaseDatasetDescriber
@@ -75,8 +75,13 @@ class ADHDFWriter(ADWriter[NDFileHDFIO]):
75
75
  # Used by the base class
76
76
  self._exposures_per_event = exposures_per_event
77
77
 
78
- # Determine number of frames that will be saved per HDF chunk
78
+ # Determine number of frames that will be saved per HDF chunk.
79
+ # On a fresh IOC startup, this is set to zero until the first capture,
80
+ # so if it is zero, set it to 1.
79
81
  frames_per_chunk = await self.fileio.num_frames_chunks.get_value()
82
+ if frames_per_chunk == 0:
83
+ frames_per_chunk = 1
84
+ await self.fileio.num_frames_chunks.set(frames_per_chunk)
80
85
 
81
86
  if not _is_fully_described(detector_shape):
82
87
  # Questions:
@@ -16,10 +16,10 @@ class KinetixTriggerMode(StrictEnum):
16
16
  class KinetixReadoutMode(StrictEnum):
17
17
  """Readout mode for ADKinetix detector."""
18
18
 
19
- SENSITIVITY = 1
20
- SPEED = 2
21
- DYNAMIC_RANGE = 3
22
- SUB_ELECTRON = 4
19
+ SENSITIVITY = "1"
20
+ SPEED = "2"
21
+ DYNAMIC_RANGE = "3"
22
+ SUB_ELECTRON = "4"
23
23
 
24
24
 
25
25
  class KinetixDriverIO(adcore.ADBaseIO):
@@ -1,11 +1,7 @@
1
1
  from collections.abc import Sequence
2
2
 
3
- from ophyd_async.core import PathProvider
4
- from ophyd_async.core._signal import SignalR
5
- from ophyd_async.epics.adcore._core_detector import AreaDetector
6
- from ophyd_async.epics.adcore._core_io import NDPluginBaseIO
7
- from ophyd_async.epics.adcore._core_writer import ADWriter
8
- from ophyd_async.epics.adcore._hdf_writer import ADHDFWriter
3
+ from ophyd_async.core import PathProvider, SignalR
4
+ from ophyd_async.epics.adcore import ADHDFWriter, ADWriter, AreaDetector, NDPluginBaseIO
9
5
 
10
6
  from ._pilatus_controller import PilatusController, PilatusReadoutTime
11
7
  from ._pilatus_io import PilatusDriverIO
@@ -30,7 +30,7 @@ class VimbaTriggerSource(StrictEnum):
30
30
  class VimbaOverlap(StrictEnum):
31
31
  """Overlap modes for the Vimba detector."""
32
32
 
33
- OFF = OnOff.OFF
33
+ OFF = OnOff.OFF.value
34
34
  PREV_FRAME = "PreviousFrame"
35
35
 
36
36
 
@@ -22,7 +22,6 @@ from ophyd_async.core import (
22
22
  SignalDatatype,
23
23
  SignalDatatypeT,
24
24
  SignalMetadata,
25
- StrictEnum,
26
25
  Table,
27
26
  get_enum_cls,
28
27
  get_unique,
@@ -82,7 +81,7 @@ def _metadata_from_value(datatype: type[SignalDatatype], value: Any) -> SignalMe
82
81
  if (limits := _limits_from_value(value)) and specifier[-1] in _number_specifiers:
83
82
  metadata["limits"] = limits
84
83
  # Get choices from display or value
85
- if datatype is str or issubclass(datatype, StrictEnum):
84
+ if datatype is str or get_enum_cls(datatype) is not None:
86
85
  if hasattr(display_data, "choices"):
87
86
  metadata["choices"] = display_data.choices
88
87
  elif hasattr(value_data, "choices"):
@@ -327,7 +326,7 @@ def context() -> Context:
327
326
  async def pvget_with_timeout(pv: str, timeout: float) -> Any:
328
327
  try:
329
328
  return await asyncio.wait_for(context().get(pv), timeout=timeout)
330
- except asyncio.TimeoutError as exc:
329
+ except TimeoutError as exc:
331
330
  logger.debug(f"signal pva://{pv} timed out", exc_info=True)
332
331
  raise NotConnected(f"pva://{pv}") from exc
333
332
 
@@ -6,13 +6,13 @@ from ophyd_async.core import (
6
6
  Device,
7
7
  DeviceConnector,
8
8
  DeviceFiller,
9
+ LazyMock,
9
10
  Signal,
10
11
  SignalR,
11
12
  SignalRW,
12
13
  SignalW,
13
14
  SignalX,
14
15
  )
15
- from ophyd_async.core._utils import LazyMock
16
16
 
17
17
  from ._epics_connector import fill_backend_with_prefix
18
18
  from ._signal import PvaSignalBackend, pvget_with_timeout
@@ -4,8 +4,7 @@ from typing import Annotated as A
4
4
 
5
5
  import numpy as np
6
6
 
7
- from ophyd_async.core import Array1D, SignalR, SignalRW, StrictEnum, Table
8
- from ophyd_async.core._utils import SubsetEnum
7
+ from ophyd_async.core import Array1D, SignalR, SignalRW, StrictEnum, SubsetEnum, Table
9
8
  from ophyd_async.epics.core import EpicsDevice, PvSuffix
10
9
 
11
10
  from ._utils import TestingIOC, generate_random_pv_prefix
@@ -13,10 +13,10 @@ from ophyd_async.core import (
13
13
  Settings,
14
14
  SettingsProvider,
15
15
  SignalRW,
16
+ Table,
16
17
  walk_config_signals,
17
18
  walk_rw_signals,
18
19
  )
19
- from ophyd_async.core._table import Table
20
20
 
21
21
  from ._utils import T
22
22
  from ._wait_for_awaitable import wait_for_awaitable
@@ -212,7 +212,7 @@ class AttributeProxy(TangoProxy):
212
212
 
213
213
  task = asyncio.create_task(_write())
214
214
  await asyncio.wait_for(task, timeout)
215
- except asyncio.TimeoutError as te:
215
+ except TimeoutError as te:
216
216
  raise TimeoutError(f"{self._name} attr put failed: Timeout") from te
217
217
  except DevFailed as de:
218
218
  raise RuntimeError(
@@ -451,7 +451,7 @@ class CommandProxy(TangoProxy):
451
451
  timestamp=time.time(),
452
452
  alarm_severity=0,
453
453
  )
454
- except asyncio.TimeoutError as te:
454
+ except TimeoutError as te:
455
455
  raise TimeoutError(f"{self._name} command failed: Timeout") from te
456
456
  except DevFailed as de:
457
457
  raise RuntimeError(
@@ -21,11 +21,11 @@ from ophyd_async.core import (
21
21
  from ._utils import T
22
22
 
23
23
 
24
- def partial_reading(val: Any) -> dict[str, Any]:
25
- """Helper function for building expected reading or configuration dicts.
24
+ def partial_reading(val: Any) -> Mapping[str, Any]:
25
+ """Helper function for building expected reading or configuration mapping.
26
26
 
27
- :param val: Value to be wrapped in dict with "value" as the key.
28
- :return: The dict that has wrapped the val with key "value".
27
+ :param val: Value to be wrapped in mapping with "value" as the key.
28
+ :return: The mapping that has wrapped the val with key "value".
29
29
  """
30
30
  return {"value": val}
31
31
 
@@ -100,7 +100,7 @@ def _assert_readings_approx_equal(
100
100
 
101
101
  async def assert_configuration(
102
102
  configurable: AsyncConfigurable,
103
- expected_configuration: dict[str, dict[str, Any]],
103
+ expected_configuration: Mapping[str, Mapping[str, Any]],
104
104
  full_match: bool = True,
105
105
  ) -> None:
106
106
  """Assert that a configurable Device has the given configuration.
@@ -108,7 +108,7 @@ async def assert_configuration(
108
108
  :param configurable:
109
109
  Device with an async ``read_configuration()`` method to get the
110
110
  configuration from.
111
- :param configuration: The expected configuration from the configurable.
111
+ :param expected_configuration: The expected configuration from the configurable.
112
112
  :param full_match: if expected_reading keys set is same as actual keys set.
113
113
  true: exact match
114
114
  false: expected_reading keys is subset of actual reading keys
@@ -6,6 +6,7 @@ import numpy as np
6
6
  from ophyd_async.core import (
7
7
  Array1D,
8
8
  Device,
9
+ DeviceVector,
9
10
  DTypeScalar_co,
10
11
  SignalRW,
11
12
  StandardReadable,
@@ -15,7 +16,6 @@ from ophyd_async.core import (
15
16
  soft_signal_rw,
16
17
  )
17
18
  from ophyd_async.core import StandardReadableFormat as Format
18
- from ophyd_async.core._device import DeviceVector
19
19
 
20
20
 
21
21
  class ExampleEnum(StrictEnum):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ophyd-async
3
- Version: 0.13.0
3
+ Version: 0.13.1
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
@@ -35,10 +35,10 @@ License: BSD 3-Clause License
35
35
  Project-URL: GitHub, https://github.com/bluesky/ophyd-async
36
36
  Classifier: Development Status :: 3 - Alpha
37
37
  Classifier: License :: OSI Approved :: BSD License
38
- Classifier: Programming Language :: Python :: 3.10
39
38
  Classifier: Programming Language :: Python :: 3.11
40
39
  Classifier: Programming Language :: Python :: 3.12
41
- Requires-Python: >=3.10
40
+ Classifier: Programming Language :: Python :: 3.13
41
+ Requires-Python: >=3.11
42
42
  Description-Content-Type: text/markdown
43
43
  License-File: LICENSE
44
44
  Requires-Dist: numpy
@@ -57,7 +57,7 @@ Requires-Dist: aioca>=2.0a4; extra == "ca"
57
57
  Provides-Extra: pva
58
58
  Requires-Dist: p4p>=4.2.0; extra == "pva"
59
59
  Provides-Extra: tango
60
- Requires-Dist: pytango==10.0.0; extra == "tango"
60
+ Requires-Dist: pytango==10.0.2; extra == "tango"
61
61
  Provides-Extra: demo
62
62
  Requires-Dist: ipython; extra == "demo"
63
63
  Requires-Dist: matplotlib; extra == "demo"
@@ -1,12 +1,12 @@
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=irlt-ETr2vtyV_bhp1DlVRDx0Kx9LTwnA5UW4gdE8ZA,513
4
+ ophyd_async/_version.py,sha256=RBWKvLuPH5uJN_RJXTOaV5SvvBYz1PUZvU4D8m3gAvo,706
5
5
  ophyd_async/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  ophyd_async/core/__init__.py,sha256=yRb_6ufTXFtf3fagShfmSDfiMduIhvNPgQyM-7GGwas,4929
7
7
  ophyd_async/core/_derived_signal.py,sha256=TuZza_j3J1Bw4QSqBYB9Ta2FyQP5BycO3nSHVtJ890Q,13015
8
8
  ophyd_async/core/_derived_signal_backend.py,sha256=PYyyont_nUR9LBC9eqVwueHCMwLJfQ_F7R_14sivBTU,12510
9
- ophyd_async/core/_detector.py,sha256=Bl0_bpeAlo8hsp98dCkZnlKwRI0_gtXKKDE0-KrA-3k,14937
9
+ ophyd_async/core/_detector.py,sha256=bPTQYLTjbxs7-wjV8szAZ0TQI20fV12vkq1OaA5L_z8,14938
10
10
  ophyd_async/core/_device.py,sha256=lSm8FBul9NTn9VO0rsAlV9pctJyUsMdU2ztEf5CqH5M,14716
11
11
  ophyd_async/core/_device_filler.py,sha256=MDz8eQQ-eEAwo-UEMxfqPfpcBuMG01tLCGR6utwVnmE,14825
12
12
  ophyd_async/core/_enums.py,sha256=7VpEvh9tFa-E3wn3x0SdXUlCG7AxSPwCRkf37B-0JbM,313
@@ -18,18 +18,18 @@ 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=wKbDJYpN7zWgRf_jAARFqZwCGXcdzPRDNXwvjGUR6dw,28217
21
+ ophyd_async/core/_signal.py,sha256=uBeiLblabI0QUzEOrjtqS6pNnYkzAsadtm_KX628Kt4,28145
22
22
  ophyd_async/core/_signal_backend.py,sha256=PvwTbbSVEGqM-2s5BNRrKGwM_MiYL71qMxYAgyZ7wRM,6930
23
23
  ophyd_async/core/_soft_signal_backend.py,sha256=NJUuyaCKtBZjggt8WKi7_lKQRHasToxviuQvl5xbhLU,6222
24
24
  ophyd_async/core/_status.py,sha256=h4TtWFM7wFtpxxyAYYSITgcVzArYZdYBHbya6qIX5t0,6553
25
25
  ophyd_async/core/_table.py,sha256=ai-_W-_WMZcy9f69BDYRv9vjVl-AVeOPN_uHYoGCSsc,6905
26
- ophyd_async/core/_utils.py,sha256=fePvt3g7eQ6CRQcMVkMeqxcbvYZboZ2sf1fVVZL-26M,12450
26
+ ophyd_async/core/_utils.py,sha256=-iKbqsvVR7P29E6VpOgI5WfDwGBRdud_gvExIoUVlG4,12495
27
27
  ophyd_async/core/_yaml_settings.py,sha256=Qojhku9l5kPSkTnEylCRWTe0gpw6S_XP5av5dPpqFgQ,2089
28
28
  ophyd_async/epics/__init__.py,sha256=ou4yEaH9VZHz70e8oM614-arLMQvUfQyXhRJsnEpWn8,60
29
29
  ophyd_async/epics/motor.py,sha256=UFolYxuaePnWNJNOFzgI-He4kBTHhJqaTywtqFFSmsk,8475
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
- ophyd_async/epics/adandor/_andor.py,sha256=SxAIP9OLefUqKcxrxhjNzil5D8-59Ps0vADdR6scO44,1281
32
+ ophyd_async/epics/adandor/_andor.py,sha256=TijGjNVxuH-P0X7UACPt9eLLQ449DwMyVhbn1kV7Le8,1245
33
33
  ophyd_async/epics/adandor/_andor_controller.py,sha256=i0AwWdk9tqB802C9d5gTgYugZ1UOcJCQLk130gVQNeo,1779
34
34
  ophyd_async/epics/adandor/_andor_io.py,sha256=DOrni8vcncQ3lW1JOpXo_jwMCLx1qsggbg6FXlsl5Ew,819
35
35
  ophyd_async/epics/adaravis/__init__.py,sha256=OY3hu1MpHbmQRZMulHC0uWfzoHmhLTvLdSrIhIQZoT0,351
@@ -37,11 +37,11 @@ ophyd_async/epics/adaravis/_aravis.py,sha256=Ju2wuebz9_ovl-Kza39s5VQ1pV-Omt_BaIW
37
37
  ophyd_async/epics/adaravis/_aravis_controller.py,sha256=aqIIj6awD2h870HAT3rPXg3Ro3G6Hp_vA5TvPbfS05o,1872
38
38
  ophyd_async/epics/adaravis/_aravis_io.py,sha256=af639qsO2V8NU5I0LgxK8jrxuhXgM6eMxEFJwsCPdjQ,624
39
39
  ophyd_async/epics/adcore/__init__.py,sha256=NWNLe2uFqU86P5mYbKINfHHrUVoTHeDN6829-7lBHxE,1631
40
- ophyd_async/epics/adcore/_core_detector.py,sha256=mRDaHgXCTZF-MIVsU1csoQx9jObutYDpMWayugx2-jI,2631
41
- ophyd_async/epics/adcore/_core_io.py,sha256=w4IO3OiwCewVWWAJAB9txL_FFjdplE5ggP1OV4lCaKs,9646
42
- ophyd_async/epics/adcore/_core_logic.py,sha256=uVg5gJCihYLnMbXQjKwb3prM-KoHM5wxjSor9v0HFK0,8900
43
- ophyd_async/epics/adcore/_core_writer.py,sha256=vRCEPn_52PgMejgtpp00hRlzF20CT9jb3ooR9rZtNRs,8542
44
- ophyd_async/epics/adcore/_hdf_writer.py,sha256=8rl6NQUt8r_9gTHAUWJq_YJ86f5iUiWadcaROarpLrE,5816
40
+ ophyd_async/epics/adcore/_core_detector.py,sha256=m821Ji4WVMYd0CI5NOXSkHMiHzkO1aA0mvQzWrig6Z0,2592
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
43
+ ophyd_async/epics/adcore/_core_writer.py,sha256=iQV5xodp63Fsoww1ply5dyQMIysVY_f6_EryzoNkjbk,8383
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
@@ -49,9 +49,9 @@ ophyd_async/epics/adcore/_utils.py,sha256=L7YQBrsNt6gL1JqVK_rW4fkHaRiDrDYlOtiLak
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
52
- ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=5u4TknhcoCSjyp16HQIEp_aOmvfNAKOBoGlMRJoVxuw,770
52
+ ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=LM88tVicKvKaxGUNMtrtVckTc-6Vlh9yNHuTFbJCZsg,778
53
53
  ophyd_async/epics/adpilatus/__init__.py,sha256=So7PrLHij7LWOqMbsHUhfqRzKp9iKtrojuWTDS1lID8,406
54
- ophyd_async/epics/adpilatus/_pilatus.py,sha256=CaViuom2oKxYWRU4Y_GltHA-LxqguoTW9k67b76Q5SY,1538
54
+ ophyd_async/epics/adpilatus/_pilatus.py,sha256=sp5dNs5M3bQhABt9sIWr451PI0cwGPUV8tT78cfvz_8,1345
55
55
  ophyd_async/epics/adpilatus/_pilatus_controller.py,sha256=21NVM_xwS5De1R6Vi_4GKpbTfdxByMzmZNwU3qBV1-A,2515
56
56
  ophyd_async/epics/adpilatus/_pilatus_io.py,sha256=EhCj--x4yYy5AtRBG6Ts3A6gsKS6Ut-LaMihAuYDvE0,819
57
57
  ophyd_async/epics/adsimdetector/__init__.py,sha256=EQqxP5DUvZGLxpvSXPagTPy3ROwE-PikyRfcnZfD1KM,281
@@ -61,13 +61,13 @@ ophyd_async/epics/adsimdetector/_sim_io.py,sha256=TOQcawMtb0ypwUlPcbwGfvp5ZI9jce
61
61
  ophyd_async/epics/advimba/__init__.py,sha256=fPfuakXOwQsFej26gLksqkfBiP6BZlfTyutw1q0tXOM,395
62
62
  ophyd_async/epics/advimba/_vimba.py,sha256=4XlEnsJMGDzHLuYaIDUmaxx0gtOAehn5BKBZMUAzoHQ,1241
63
63
  ophyd_async/epics/advimba/_vimba_controller.py,sha256=KSbP4LHqYkCDplpmBk7hdf0Yz9J2vOxWn0fStFFAklA,1942
64
- ophyd_async/epics/advimba/_vimba_io.py,sha256=CwAUGiCXcu7me7vHjGd2FfUBxUux1eidziYKhKiYoC4,1486
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
66
  ophyd_async/epics/core/_aioca.py,sha256=38aW5dd3MzwhoweNMjkOfnfZHI2JZFateO0YABGVSfQ,13230
67
67
  ophyd_async/epics/core/_epics_connector.py,sha256=S4z_wbj-aogVcjqCyUgjhcq5Y4gDC7y6wXbsSz2nODY,1918
68
68
  ophyd_async/epics/core/_epics_device.py,sha256=wGdR24I7GSPh3HmM7jsWKZhBZgt4IyLrCn4Ut7Wx_xo,510
69
- ophyd_async/epics/core/_p4p.py,sha256=uWh3oWPme74G4YfeJ6k8ZlHdKOwcf8Xp1J82b9aa_JI,16407
70
- ophyd_async/epics/core/_pvi_connector.py,sha256=nAReSiasZA3j_0f8XhuWVO4_ck0MrusnKR9Jg-RT-ok,5584
69
+ ophyd_async/epics/core/_p4p.py,sha256=Q6o4rlyrg2VXlqi1uHkGbnYc1gZ8YX5ZaJDcL0eAr_8,16385
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
73
73
  ophyd_async/epics/demo/__init__.py,sha256=WR2M3D8dbHcisJW2OIU2ManZu5SWez8ytZEp4jSBfDY,416
@@ -86,7 +86,7 @@ ophyd_async/epics/pmac/__init__.py,sha256=fQAFnVtzEiPlzXI5XgB62HyburMbUKDfOgkIO_
86
86
  ophyd_async/epics/pmac/_pmac_io.py,sha256=_lTUdNHTWOwPitAxXottyLrmiwhf36WfTbrdneqeg34,4022
87
87
  ophyd_async/epics/pmac/_utils.py,sha256=6bb_yKNcmWSfuaYunRv5GcA8ML4jEUsf1jkXko_LSEo,8888
88
88
  ophyd_async/epics/testing/__init__.py,sha256=aTIv4D2DYrpnGco5RQF8QuLG1SfFkIlTyM2uYEKXltA,522
89
- ophyd_async/epics/testing/_example_ioc.py,sha256=uUmfMXV_Pd2SMFyb0y_4uTc6gkGRUqU1cJ-XQC2ROW8,3915
89
+ ophyd_async/epics/testing/_example_ioc.py,sha256=zb4ZEUzuB2MrSw5ETPLIiHhf-2BRU1Bdxco6Kh4iI1I,3880
90
90
  ophyd_async/epics/testing/_utils.py,sha256=9gxpwaWX0HGtacu1LTupcw7viXN8G78RmuNciU_-cjs,1702
91
91
  ophyd_async/epics/testing/test_records.db,sha256=SgWQPZgtmc__JiLkH2VPwe5KZOua6ZCIgTLGT_5SDDc,3589
92
92
  ophyd_async/epics/testing/test_records_pva.db,sha256=HJAJSvLtPWG5B5dKv8OZ0_hPJxRFrDoYp6ROcF2lqyA,4202
@@ -109,7 +109,7 @@ ophyd_async/plan_stubs/_ensure_connected.py,sha256=YR6VRj7koccJ4x35NV-Ugl4ZbxgAo
109
109
  ophyd_async/plan_stubs/_fly.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  ophyd_async/plan_stubs/_nd_attributes.py,sha256=1g41uLjBGFl9j_xs3I2RlL_IV7aPcRYvdJ_HmNy5urc,1246
111
111
  ophyd_async/plan_stubs/_panda.py,sha256=5_Mf9kGzNjXpf_YscpCUE8tgq284nOHWCG7o_LNFfII,463
112
- ophyd_async/plan_stubs/_settings.py,sha256=e3dGVSUV-Htay_9fKXyQTAQLdjunetGI3OBYp_oC_FY,5574
112
+ ophyd_async/plan_stubs/_settings.py,sha256=R4fO-LPd9MUS1yfQwCzCrLqTuGRO4GgDMoqH2juAUag,5543
113
113
  ophyd_async/plan_stubs/_utils.py,sha256=zClRo5ve8RGia7wQnby41W-Zprj-slOA5da1LfYnuhw,45
114
114
  ophyd_async/plan_stubs/_wait_for_awaitable.py,sha256=PGct_dGezKrLhm0W_GD83dwevSccG_vsmj0WSlMNVWc,364
115
115
  ophyd_async/sim/__init__.py,sha256=TC86iJGt4u5UtRJniNEaUJbYB2C03kmjZF-jr2zPExY,709
@@ -129,7 +129,7 @@ ophyd_async/tango/core/_base_device.py,sha256=e9oqSL-fDOj8r9nUUFZkbibhRGbI6HYtln
129
129
  ophyd_async/tango/core/_converters.py,sha256=xI_RhMR8dY6IVORUZVVCL9LdYnEE6TA6BBPX_lTu06w,2183
130
130
  ophyd_async/tango/core/_signal.py,sha256=6KXDzV8Z08hrtCqG8J4AYnhemQjtL6Eofngo6yNo52o,5798
131
131
  ophyd_async/tango/core/_tango_readable.py,sha256=ctR6YcBGGatW6Jp2kvddA1hVZ2v1CidPsF9FmJK9BYg,406
132
- ophyd_async/tango/core/_tango_transport.py,sha256=6ngUybtSYqABFKsxZgA-rVms21LDmxIwfQ_VMS7h5qU,31903
132
+ ophyd_async/tango/core/_tango_transport.py,sha256=kKBUSgZs80ZcldkD8gU16A5VYVlZneFNz-TSYd8QoQ0,31887
133
133
  ophyd_async/tango/core/_utils.py,sha256=FrX524jwa-0EQxpcGaKF6yqyHm5BWIFSE82FcIB0aAY,1430
134
134
  ophyd_async/tango/demo/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
135
135
  ophyd_async/tango/demo/_counter.py,sha256=2J4SCHnBWLF0O5mFWlJdO4tmnElvlx5sRrk4op_AC9U,1139
@@ -141,14 +141,14 @@ ophyd_async/tango/testing/__init__.py,sha256=SYXPAS00ny3jlUMOJKpaewO4ljPjK1_z1sm
141
141
  ophyd_async/tango/testing/_one_of_everything.py,sha256=tsxWgy2f_m9f0FH4XCVO_I8OtEquKbJQZbr4KaXMJL4,6571
142
142
  ophyd_async/testing/__init__.py,sha256=jDBzUAHGDMfkhd-_9u0CJWEq0E0sPrIGGlLmVzEyxY8,1742
143
143
  ophyd_async/testing/__pytest_assert_rewrite.py,sha256=_SU2UfChPgEf7CFY7aYH2B7MLp-07_qYnVLyu6QtDL8,129
144
- ophyd_async/testing/_assert.py,sha256=zDTJh7QPhaJpzhnuFuejGKTKbKAs7ZNKx3sVsXBMrTU,8758
144
+ ophyd_async/testing/_assert.py,sha256=8j7NtHBdG2AjFY4yxgMx3oGX22rYvzj0337o-shfH40,8784
145
145
  ophyd_async/testing/_mock_signal_utils.py,sha256=d-n_923ii59-ae9TbqVuIK9MAJpDmu0k47fzgJLj8t8,5195
146
- ophyd_async/testing/_one_of_everything.py,sha256=Di0hPoKwrDOSsx50-2UdSHM2EbIKrPG9s0Vp11nE9V8,4773
146
+ ophyd_async/testing/_one_of_everything.py,sha256=U9ui7B-iNHDM3H3hIWUuaCb8Gc2eLlUh0sBHUlQldT0,4741
147
147
  ophyd_async/testing/_single_derived.py,sha256=5-HOTzgePcZ354NK_ssVpyIbJoJmKyjVQCxSwQXUC-4,2730
148
148
  ophyd_async/testing/_utils.py,sha256=zClRo5ve8RGia7wQnby41W-Zprj-slOA5da1LfYnuhw,45
149
149
  ophyd_async/testing/_wait_for_pending.py,sha256=YZAR48n-CW0GsPey3zFRzMJ4byDAr3HvMIoawjmTrHw,732
150
- ophyd_async-0.13.0.dist-info/licenses/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
151
- ophyd_async-0.13.0.dist-info/METADATA,sha256=VfG70R_jA05hUvMrhl61ySxIeeQ0JGRkw7Yqp6bxpeM,7145
152
- ophyd_async-0.13.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
153
- ophyd_async-0.13.0.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
154
- ophyd_async-0.13.0.dist-info/RECORD,,
150
+ ophyd_async-0.13.1.dist-info/licenses/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
151
+ ophyd_async-0.13.1.dist-info/METADATA,sha256=C7N-G9XhmTuI2S1P6V1efiRZTInRDDaG9S1YXgMGA4g,7145
152
+ ophyd_async-0.13.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
153
+ ophyd_async-0.13.1.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
154
+ ophyd_async-0.13.1.dist-info/RECORD,,