ophyd-async 0.7.0__py3-none-any.whl → 0.8.0a2__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 +2 -2
- ophyd_async/core/__init__.py +23 -8
- ophyd_async/core/_detector.py +5 -10
- ophyd_async/core/_device.py +139 -66
- ophyd_async/core/_device_filler.py +191 -0
- ophyd_async/core/_device_save_loader.py +6 -7
- ophyd_async/core/_mock_signal_backend.py +32 -40
- ophyd_async/core/_mock_signal_utils.py +22 -16
- ophyd_async/core/_protocol.py +28 -8
- ophyd_async/core/_readable.py +5 -5
- ophyd_async/core/_signal.py +140 -152
- ophyd_async/core/_signal_backend.py +131 -64
- ophyd_async/core/_soft_signal_backend.py +125 -194
- ophyd_async/core/_status.py +22 -6
- ophyd_async/core/_table.py +97 -100
- ophyd_async/core/_utils.py +71 -18
- ophyd_async/epics/adaravis/_aravis_controller.py +2 -2
- ophyd_async/epics/adaravis/_aravis_io.py +7 -5
- ophyd_async/epics/adcore/_core_io.py +4 -6
- ophyd_async/epics/adcore/_hdf_writer.py +2 -2
- ophyd_async/epics/adcore/_utils.py +15 -10
- ophyd_async/epics/adkinetix/__init__.py +2 -1
- ophyd_async/epics/adkinetix/_kinetix_controller.py +6 -3
- ophyd_async/epics/adkinetix/_kinetix_io.py +3 -4
- ophyd_async/epics/adpilatus/_pilatus_controller.py +2 -2
- ophyd_async/epics/adpilatus/_pilatus_io.py +2 -3
- ophyd_async/epics/adsimdetector/_sim_controller.py +2 -2
- ophyd_async/epics/advimba/__init__.py +4 -1
- ophyd_async/epics/advimba/_vimba_controller.py +6 -3
- ophyd_async/epics/advimba/_vimba_io.py +7 -8
- ophyd_async/epics/demo/_sensor.py +8 -4
- ophyd_async/epics/eiger/_eiger.py +1 -2
- ophyd_async/epics/eiger/_eiger_controller.py +1 -1
- ophyd_async/epics/eiger/_eiger_io.py +2 -4
- ophyd_async/epics/eiger/_odin_io.py +4 -4
- ophyd_async/epics/pvi/__init__.py +2 -2
- ophyd_async/epics/pvi/_pvi.py +56 -321
- ophyd_async/epics/signal/__init__.py +3 -4
- ophyd_async/epics/signal/_aioca.py +184 -236
- ophyd_async/epics/signal/_common.py +35 -49
- ophyd_async/epics/signal/_p4p.py +254 -387
- ophyd_async/epics/signal/_signal.py +63 -21
- ophyd_async/fastcs/core.py +9 -0
- ophyd_async/fastcs/panda/__init__.py +4 -4
- ophyd_async/fastcs/panda/_block.py +18 -13
- ophyd_async/fastcs/panda/_control.py +3 -5
- ophyd_async/fastcs/panda/_hdf_panda.py +5 -19
- ophyd_async/fastcs/panda/_table.py +29 -51
- ophyd_async/fastcs/panda/_trigger.py +8 -8
- ophyd_async/fastcs/panda/_writer.py +2 -5
- ophyd_async/plan_stubs/_ensure_connected.py +3 -1
- ophyd_async/plan_stubs/_fly.py +2 -2
- ophyd_async/plan_stubs/_nd_attributes.py +5 -4
- ophyd_async/py.typed +0 -0
- ophyd_async/sim/demo/_pattern_detector/_pattern_detector_controller.py +1 -2
- ophyd_async/tango/__init__.py +2 -4
- ophyd_async/tango/base_devices/_base_device.py +76 -143
- ophyd_async/tango/demo/_counter.py +2 -2
- ophyd_async/tango/demo/_mover.py +2 -2
- ophyd_async/tango/signal/__init__.py +2 -4
- ophyd_async/tango/signal/_signal.py +29 -50
- ophyd_async/tango/signal/_tango_transport.py +38 -40
- {ophyd_async-0.7.0.dist-info → ophyd_async-0.8.0a2.dist-info}/METADATA +8 -12
- ophyd_async-0.8.0a2.dist-info/RECORD +110 -0
- {ophyd_async-0.7.0.dist-info → ophyd_async-0.8.0a2.dist-info}/WHEEL +1 -1
- ophyd_async/epics/signal/_epics_transport.py +0 -34
- ophyd_async-0.7.0.dist-info/RECORD +0 -108
- {ophyd_async-0.7.0.dist-info → ophyd_async-0.8.0a2.dist-info}/LICENSE +0 -0
- {ophyd_async-0.7.0.dist-info → ophyd_async-0.8.0a2.dist-info}/entry_points.txt +0 -0
- {ophyd_async-0.7.0.dist-info → ophyd_async-0.8.0a2.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,6 @@ import asyncio
|
|
|
2
2
|
import functools
|
|
3
3
|
import time
|
|
4
4
|
from abc import abstractmethod
|
|
5
|
-
from asyncio import CancelledError
|
|
6
5
|
from collections.abc import Callable, Coroutine
|
|
7
6
|
from enum import Enum
|
|
8
7
|
from typing import Any, TypeVar, cast
|
|
@@ -11,12 +10,11 @@ import numpy as np
|
|
|
11
10
|
from bluesky.protocols import Descriptor, Reading
|
|
12
11
|
|
|
13
12
|
from ophyd_async.core import (
|
|
14
|
-
DEFAULT_TIMEOUT,
|
|
15
13
|
AsyncStatus,
|
|
14
|
+
Callback,
|
|
16
15
|
NotConnected,
|
|
17
|
-
ReadingValueCallback,
|
|
18
16
|
SignalBackend,
|
|
19
|
-
|
|
17
|
+
SignalDatatypeT,
|
|
20
18
|
get_dtype,
|
|
21
19
|
get_unique,
|
|
22
20
|
wait_for_connection,
|
|
@@ -121,7 +119,7 @@ class TangoProxy:
|
|
|
121
119
|
"""indicates, that this trl already subscribed"""
|
|
122
120
|
|
|
123
121
|
@abstractmethod
|
|
124
|
-
def subscribe_callback(self, callback:
|
|
122
|
+
def subscribe_callback(self, callback: Callback | None):
|
|
125
123
|
"""subscribe tango CHANGE event to callback"""
|
|
126
124
|
|
|
127
125
|
@abstractmethod
|
|
@@ -140,7 +138,7 @@ class TangoProxy:
|
|
|
140
138
|
|
|
141
139
|
|
|
142
140
|
class AttributeProxy(TangoProxy):
|
|
143
|
-
_callback:
|
|
141
|
+
_callback: Callback | None = None
|
|
144
142
|
_eid: int | None = None
|
|
145
143
|
_poll_task: asyncio.Task | None = None
|
|
146
144
|
_abs_change: float | None = None
|
|
@@ -178,6 +176,7 @@ class AttributeProxy(TangoProxy):
|
|
|
178
176
|
async def put(
|
|
179
177
|
self, value: object | None, wait: bool = True, timeout: float | None = None
|
|
180
178
|
) -> AsyncStatus | None:
|
|
179
|
+
# TODO: remove the timeout from this as it is handled at the signal level
|
|
181
180
|
if wait:
|
|
182
181
|
try:
|
|
183
182
|
|
|
@@ -236,7 +235,7 @@ class AttributeProxy(TangoProxy):
|
|
|
236
235
|
def has_subscription(self) -> bool:
|
|
237
236
|
return bool(self._callback)
|
|
238
237
|
|
|
239
|
-
def subscribe_callback(self, callback:
|
|
238
|
+
def subscribe_callback(self, callback: Callback | None):
|
|
240
239
|
# If the attribute supports events, then we can subscribe to them
|
|
241
240
|
# If the callback is not a callable, then we raise an error
|
|
242
241
|
if callback is not None and not callable(callback):
|
|
@@ -283,21 +282,20 @@ class AttributeProxy(TangoProxy):
|
|
|
283
282
|
if self._callback is not None:
|
|
284
283
|
# Call the callback with the last reading
|
|
285
284
|
try:
|
|
286
|
-
self._callback(self._last_reading
|
|
285
|
+
self._callback(self._last_reading)
|
|
287
286
|
except TypeError:
|
|
288
287
|
pass
|
|
289
288
|
self._callback = None
|
|
290
289
|
|
|
291
290
|
def _event_processor(self, event):
|
|
292
291
|
if not event.err:
|
|
293
|
-
value = event.attr_value.value
|
|
294
292
|
reading = Reading(
|
|
295
|
-
value=value,
|
|
293
|
+
value=event.attr_value.value,
|
|
296
294
|
timestamp=event.get_date().totime(),
|
|
297
295
|
alarm_severity=event.attr_value.quality,
|
|
298
296
|
)
|
|
299
297
|
if self._callback is not None:
|
|
300
|
-
self._callback(reading
|
|
298
|
+
self._callback(reading)
|
|
301
299
|
|
|
302
300
|
async def poll(self):
|
|
303
301
|
"""
|
|
@@ -310,7 +308,7 @@ class AttributeProxy(TangoProxy):
|
|
|
310
308
|
flag = 0
|
|
311
309
|
# Initial reading
|
|
312
310
|
if self._callback is not None:
|
|
313
|
-
self._callback(last_reading
|
|
311
|
+
self._callback(last_reading)
|
|
314
312
|
except Exception as e:
|
|
315
313
|
raise RuntimeError(f"Could not poll the attribute: {e}") from e
|
|
316
314
|
|
|
@@ -325,7 +323,7 @@ class AttributeProxy(TangoProxy):
|
|
|
325
323
|
diff = abs(reading["value"] - last_reading["value"])
|
|
326
324
|
if self._abs_change is not None and diff >= abs(self._abs_change):
|
|
327
325
|
if self._callback is not None:
|
|
328
|
-
self._callback(reading
|
|
326
|
+
self._callback(reading)
|
|
329
327
|
flag = 0
|
|
330
328
|
|
|
331
329
|
elif (
|
|
@@ -333,13 +331,13 @@ class AttributeProxy(TangoProxy):
|
|
|
333
331
|
and diff >= self._rel_change * abs(last_reading["value"])
|
|
334
332
|
):
|
|
335
333
|
if self._callback is not None:
|
|
336
|
-
self._callback(reading
|
|
334
|
+
self._callback(reading)
|
|
337
335
|
flag = 0
|
|
338
336
|
|
|
339
337
|
else:
|
|
340
338
|
flag = (flag + 1) % 4
|
|
341
339
|
if flag == 0 and self._callback is not None:
|
|
342
|
-
self._callback(reading
|
|
340
|
+
self._callback(reading)
|
|
343
341
|
|
|
344
342
|
last_reading = reading.copy()
|
|
345
343
|
if self._callback is None:
|
|
@@ -358,13 +356,13 @@ class AttributeProxy(TangoProxy):
|
|
|
358
356
|
reading["value"], last_reading["value"]
|
|
359
357
|
):
|
|
360
358
|
if self._callback is not None:
|
|
361
|
-
self._callback(reading
|
|
359
|
+
self._callback(reading)
|
|
362
360
|
else:
|
|
363
361
|
break
|
|
364
362
|
else:
|
|
365
363
|
if reading["value"] != last_reading["value"]:
|
|
366
364
|
if self._callback is not None:
|
|
367
|
-
self._callback(reading
|
|
365
|
+
self._callback(reading)
|
|
368
366
|
else:
|
|
369
367
|
break
|
|
370
368
|
last_reading = reading.copy()
|
|
@@ -390,7 +388,7 @@ class AttributeProxy(TangoProxy):
|
|
|
390
388
|
class CommandProxy(TangoProxy):
|
|
391
389
|
_last_reading: Reading = Reading(value=None, timestamp=0, alarm_severity=0)
|
|
392
390
|
|
|
393
|
-
def subscribe_callback(self, callback:
|
|
391
|
+
def subscribe_callback(self, callback: Callback | None) -> None:
|
|
394
392
|
raise NotImplementedError("Cannot subscribe to commands")
|
|
395
393
|
|
|
396
394
|
def unsubscribe_callback(self) -> None:
|
|
@@ -584,14 +582,14 @@ def get_trl_descriptor(
|
|
|
584
582
|
|
|
585
583
|
|
|
586
584
|
async def get_tango_trl(
|
|
587
|
-
full_trl: str, device_proxy: DeviceProxy | TangoProxy | None
|
|
585
|
+
full_trl: str, device_proxy: DeviceProxy | TangoProxy | None, timeout: float
|
|
588
586
|
) -> TangoProxy:
|
|
589
587
|
if isinstance(device_proxy, TangoProxy):
|
|
590
588
|
return device_proxy
|
|
591
589
|
device_trl, trl_name = full_trl.rsplit("/", 1)
|
|
592
590
|
trl_name = trl_name.lower()
|
|
593
591
|
if device_proxy is None:
|
|
594
|
-
device_proxy = await AsyncDeviceProxy(device_trl)
|
|
592
|
+
device_proxy = await AsyncDeviceProxy(device_trl, timeout=timeout)
|
|
595
593
|
|
|
596
594
|
# all attributes can be always accessible with low register
|
|
597
595
|
if isinstance(device_proxy, DeviceProxy):
|
|
@@ -620,16 +618,15 @@ async def get_tango_trl(
|
|
|
620
618
|
raise RuntimeError(f"{trl_name} cannot be found in {device_proxy.name()}")
|
|
621
619
|
|
|
622
620
|
|
|
623
|
-
class TangoSignalBackend(SignalBackend[
|
|
621
|
+
class TangoSignalBackend(SignalBackend[SignalDatatypeT]):
|
|
624
622
|
def __init__(
|
|
625
623
|
self,
|
|
626
|
-
datatype: type[
|
|
624
|
+
datatype: type[SignalDatatypeT] | None,
|
|
627
625
|
read_trl: str = "",
|
|
628
626
|
write_trl: str = "",
|
|
629
627
|
device_proxy: DeviceProxy | None = None,
|
|
630
628
|
):
|
|
631
629
|
self.device_proxy = device_proxy
|
|
632
|
-
self.datatype = datatype
|
|
633
630
|
self.read_trl = read_trl
|
|
634
631
|
self.write_trl = write_trl
|
|
635
632
|
self.proxies: dict[str, TangoProxy | DeviceProxy | None] = {
|
|
@@ -646,6 +643,7 @@ class TangoSignalBackend(SignalBackend[T]):
|
|
|
646
643
|
)
|
|
647
644
|
self.support_events: bool = True
|
|
648
645
|
self.status: AsyncStatus | None = None
|
|
646
|
+
super().__init__(datatype)
|
|
649
647
|
|
|
650
648
|
@classmethod
|
|
651
649
|
def datatype_allowed(cls, dtype: Any) -> bool:
|
|
@@ -659,14 +657,14 @@ class TangoSignalBackend(SignalBackend[T]):
|
|
|
659
657
|
write_trl: self.device_proxy,
|
|
660
658
|
}
|
|
661
659
|
|
|
662
|
-
def source(self, name: str) -> str:
|
|
663
|
-
return self.read_trl
|
|
660
|
+
def source(self, name: str, read: bool) -> str:
|
|
661
|
+
return self.read_trl if read else self.write_trl
|
|
664
662
|
|
|
665
|
-
async def _connect_and_store_config(self, trl: str) -> None:
|
|
663
|
+
async def _connect_and_store_config(self, trl: str, timeout: float) -> None:
|
|
666
664
|
if not trl:
|
|
667
665
|
raise RuntimeError(f"trl not set for {self}")
|
|
668
666
|
try:
|
|
669
|
-
self.proxies[trl] = await get_tango_trl(trl, self.proxies[trl])
|
|
667
|
+
self.proxies[trl] = await get_tango_trl(trl, self.proxies[trl], timeout)
|
|
670
668
|
if self.proxies[trl] is None:
|
|
671
669
|
raise NotConnected(f"Not connected to {trl}")
|
|
672
670
|
# Pyright does not believe that self.proxies[trl] is not None despite
|
|
@@ -674,27 +672,27 @@ class TangoSignalBackend(SignalBackend[T]):
|
|
|
674
672
|
await self.proxies[trl].connect() # type: ignore
|
|
675
673
|
self.trl_configs[trl] = await self.proxies[trl].get_config() # type: ignore
|
|
676
674
|
self.proxies[trl].support_events = self.support_events # type: ignore
|
|
677
|
-
except
|
|
678
|
-
raise NotConnected(f"
|
|
675
|
+
except TimeoutError as ce:
|
|
676
|
+
raise NotConnected(f"tango://{trl}") from ce
|
|
679
677
|
|
|
680
|
-
async def connect(self, timeout: float
|
|
678
|
+
async def connect(self, timeout: float) -> None:
|
|
681
679
|
if not self.read_trl:
|
|
682
680
|
raise RuntimeError(f"trl not set for {self}")
|
|
683
681
|
if self.read_trl != self.write_trl:
|
|
684
682
|
# Different, need to connect both
|
|
685
683
|
await wait_for_connection(
|
|
686
|
-
read_trl=self._connect_and_store_config(self.read_trl),
|
|
687
|
-
write_trl=self._connect_and_store_config(self.write_trl),
|
|
684
|
+
read_trl=self._connect_and_store_config(self.read_trl, timeout),
|
|
685
|
+
write_trl=self._connect_and_store_config(self.write_trl, timeout),
|
|
688
686
|
)
|
|
689
687
|
else:
|
|
690
688
|
# The same, so only need to connect one
|
|
691
|
-
await self._connect_and_store_config(self.read_trl)
|
|
689
|
+
await self._connect_and_store_config(self.read_trl, timeout)
|
|
692
690
|
self.proxies[self.read_trl].set_polling(*self._polling) # type: ignore
|
|
693
691
|
self.descriptor = get_trl_descriptor(
|
|
694
692
|
self.datatype, self.read_trl, self.trl_configs
|
|
695
693
|
)
|
|
696
694
|
|
|
697
|
-
async def put(self, value:
|
|
695
|
+
async def put(self, value: SignalDatatypeT | None, wait=True, timeout=None) -> None:
|
|
698
696
|
if self.proxies[self.write_trl] is None:
|
|
699
697
|
raise NotConnected(f"Not connected to {self.write_trl}")
|
|
700
698
|
self.status = None
|
|
@@ -704,28 +702,28 @@ class TangoSignalBackend(SignalBackend[T]):
|
|
|
704
702
|
async def get_datakey(self, source: str) -> Descriptor:
|
|
705
703
|
return self.descriptor
|
|
706
704
|
|
|
707
|
-
async def get_reading(self) -> Reading:
|
|
705
|
+
async def get_reading(self) -> Reading[SignalDatatypeT]:
|
|
708
706
|
if self.proxies[self.read_trl] is None:
|
|
709
707
|
raise NotConnected(f"Not connected to {self.read_trl}")
|
|
710
708
|
return await self.proxies[self.read_trl].get_reading() # type: ignore
|
|
711
709
|
|
|
712
|
-
async def get_value(self) ->
|
|
710
|
+
async def get_value(self) -> SignalDatatypeT:
|
|
713
711
|
if self.proxies[self.read_trl] is None:
|
|
714
712
|
raise NotConnected(f"Not connected to {self.read_trl}")
|
|
715
713
|
proxy = self.proxies[self.read_trl]
|
|
716
714
|
if proxy is None:
|
|
717
715
|
raise NotConnected(f"Not connected to {self.read_trl}")
|
|
718
|
-
return cast(
|
|
716
|
+
return cast(SignalDatatypeT, await proxy.get())
|
|
719
717
|
|
|
720
|
-
async def get_setpoint(self) ->
|
|
718
|
+
async def get_setpoint(self) -> SignalDatatypeT:
|
|
721
719
|
if self.proxies[self.write_trl] is None:
|
|
722
720
|
raise NotConnected(f"Not connected to {self.write_trl}")
|
|
723
721
|
proxy = self.proxies[self.write_trl]
|
|
724
722
|
if proxy is None:
|
|
725
723
|
raise NotConnected(f"Not connected to {self.write_trl}")
|
|
726
|
-
return cast(
|
|
724
|
+
return cast(SignalDatatypeT, await proxy.get_w_value())
|
|
727
725
|
|
|
728
|
-
def set_callback(self, callback:
|
|
726
|
+
def set_callback(self, callback: Callback | None) -> None:
|
|
729
727
|
if self.proxies[self.read_trl] is None:
|
|
730
728
|
raise NotConnected(f"Not connected to {self.read_trl}")
|
|
731
729
|
if self.support_events is False and self._polling[0] is False:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0a2
|
|
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
|
|
@@ -41,12 +41,12 @@ Requires-Python: >=3.10
|
|
|
41
41
|
Description-Content-Type: text/markdown
|
|
42
42
|
License-File: LICENSE
|
|
43
43
|
Requires-Dist: networkx >=2.0
|
|
44
|
-
Requires-Dist: numpy
|
|
44
|
+
Requires-Dist: numpy
|
|
45
45
|
Requires-Dist: packaging
|
|
46
46
|
Requires-Dist: pint
|
|
47
|
-
Requires-Dist: bluesky >=1.13
|
|
48
|
-
Requires-Dist: event-model
|
|
49
|
-
Requires-Dist: p4p
|
|
47
|
+
Requires-Dist: bluesky >=1.13
|
|
48
|
+
Requires-Dist: event-model >=1.22.1
|
|
49
|
+
Requires-Dist: p4p >=4.2.0a3
|
|
50
50
|
Requires-Dist: pyyaml
|
|
51
51
|
Requires-Dist: colorlog
|
|
52
52
|
Requires-Dist: pydantic >=2.0
|
|
@@ -58,10 +58,6 @@ Requires-Dist: ophyd-async[pva] ; extra == 'dev'
|
|
|
58
58
|
Requires-Dist: ophyd-async[sim] ; extra == 'dev'
|
|
59
59
|
Requires-Dist: ophyd-async[ca] ; extra == 'dev'
|
|
60
60
|
Requires-Dist: ophyd-async[tango] ; extra == 'dev'
|
|
61
|
-
Requires-Dist: black ; extra == 'dev'
|
|
62
|
-
Requires-Dist: flake8 ; extra == 'dev'
|
|
63
|
-
Requires-Dist: flake8-isort ; extra == 'dev'
|
|
64
|
-
Requires-Dist: Flake8-pyproject ; extra == 'dev'
|
|
65
61
|
Requires-Dist: inflection ; extra == 'dev'
|
|
66
62
|
Requires-Dist: ipython ; extra == 'dev'
|
|
67
63
|
Requires-Dist: ipywidgets ; extra == 'dev'
|
|
@@ -104,9 +100,9 @@ Requires-Dist: pytango >=10.0.0 ; extra == 'tango'
|
|
|
104
100
|
[](https://github.com/bluesky/ophyd-async/actions/workflows/ci.yml)
|
|
105
101
|
[](https://codecov.io/gh/bluesky/ophyd-async)
|
|
106
102
|
[](https://pypi.org/project/ophyd-async)
|
|
107
|
-
[](https://
|
|
103
|
+
[](https://choosealicense.com/licenses/bsd-3-clause)
|
|
108
104
|
|
|
109
|
-
# ophyd-async
|
|
105
|
+
# 
|
|
110
106
|
|
|
111
107
|
Asynchronous Bluesky hardware abstraction code, compatible with control systems like EPICS and Tango.
|
|
112
108
|
|
|
@@ -116,7 +112,7 @@ Asynchronous Bluesky hardware abstraction code, compatible with control systems
|
|
|
116
112
|
| Documentation | <https://bluesky.github.io/ophyd-async> |
|
|
117
113
|
| Releases | <https://github.com/bluesky/ophyd-async/releases> |
|
|
118
114
|
|
|
119
|
-
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to
|
|
115
|
+
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to
|
|
120
116
|
be used as an abstraction layer that enables experiment orchestration and data acquisition code to operate above the specifics of particular devices and control
|
|
121
117
|
systems.
|
|
122
118
|
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
ophyd_async/__init__.py,sha256=tEfgj45lRItQ-_u8SRFPM-mpBh3gWvHXr3emhiJJG_M,225
|
|
2
|
+
ophyd_async/__main__.py,sha256=n_U4O9bgm97OuboUB_9eK7eFiwy8BZSgXJ0OzbE0DqU,481
|
|
3
|
+
ophyd_async/_version.py,sha256=89ACrxBz6ayPyRUoZiAmc28ARp-c3Nyrpb31qenCm-Y,413
|
|
4
|
+
ophyd_async/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
ophyd_async/core/__init__.py,sha256=j1QNO04b_uYqIJzEo7dGgyQq5h1VT0cFMHcimpCX6zs,4178
|
|
6
|
+
ophyd_async/core/_detector.py,sha256=bKLekM2J3GzLXsKwe8qXQjNP_sAVsa8EtwFEWD-8MeA,14307
|
|
7
|
+
ophyd_async/core/_device.py,sha256=bKFE-RG3SS966FRcZSSfOZnAWcz1At6FFBcpKMeGxi8,10956
|
|
8
|
+
ophyd_async/core/_device_filler.py,sha256=YoBhH_r9xEFrLPOCaIOTZdlrmSsosyn3np69RJsk-6Q,8345
|
|
9
|
+
ophyd_async/core/_device_save_loader.py,sha256=OViN9_LWNOLuajzrHDKYEqd5I47u5npQACdGceKcIGY,8375
|
|
10
|
+
ophyd_async/core/_flyer.py,sha256=us5z6MNGCvIfgPDTmFTxNERSP37g0WVRkRD0Z2JiMgM,1701
|
|
11
|
+
ophyd_async/core/_hdf_dataset.py,sha256=wW_OL8OYLGOsE01ny3hGaapOrxK7BzhWTxKgz8CIXK0,2492
|
|
12
|
+
ophyd_async/core/_log.py,sha256=UbL9AtnHVUg7r9LofzgmuKEtBESy03usCp7ejmDltG4,3679
|
|
13
|
+
ophyd_async/core/_mock_signal_backend.py,sha256=E8YMLJJyAt8UAwX-5PMQCuAuHuVVs5ko7vJtY5qR9P8,2656
|
|
14
|
+
ophyd_async/core/_mock_signal_utils.py,sha256=i7CCFeB6JkTpdAe32Jtap2nrvFL-gbz_3zrnlK7Lbow,5139
|
|
15
|
+
ophyd_async/core/_protocol.py,sha256=MuYRqSfakdry9RllX7G9UTzp4lw3eDjtkdGPpnbNb34,4040
|
|
16
|
+
ophyd_async/core/_providers.py,sha256=ff9ZT5-PZ6rhTTdE-q8w9l_k9DuZqLWLebsKZLeJ0Ds,7112
|
|
17
|
+
ophyd_async/core/_readable.py,sha256=KC5n-LXKzFyYkhZ7KXwFlHM05pe8iDCnyldfS1pel3s,9075
|
|
18
|
+
ophyd_async/core/_signal.py,sha256=4Umj1EXgz89ZO1Ej-b5TEkmr72pdw3Jbyk-nIsYIYpo,20011
|
|
19
|
+
ophyd_async/core/_signal_backend.py,sha256=YWPgLSPbfPnWIUDHvP1ArCVK8zKXJxzzbloqQe_ucCI,5040
|
|
20
|
+
ophyd_async/core/_soft_signal_backend.py,sha256=VBemKbSM397zhtjm6zLKozhJ8cY3XhDu42OagBc_d64,5663
|
|
21
|
+
ophyd_async/core/_status.py,sha256=OUKhblRQ4KU5PDsWbpvYduM7G60JMk1NqeV4eqyPtKc,5131
|
|
22
|
+
ophyd_async/core/_table.py,sha256=ZToBVmAPDmhrVDgjx0f8SErxVdKhvGdGwQ-fXxGCtN8,5386
|
|
23
|
+
ophyd_async/core/_utils.py,sha256=e5zmHkkCvMYJRWGIMGMww18YSyOhSsdNYTta3FQzdQY,7515
|
|
24
|
+
ophyd_async/epics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
ophyd_async/epics/motor.py,sha256=mOrFiTt6WrXJM4d5Stksrxc_j9Vcd3L3w1QLCX_K0zM,8752
|
|
26
|
+
ophyd_async/epics/adaravis/__init__.py,sha256=u979_9nQTYB0TvDOTXFN4qMrbDP8-xQFfXYMGzLVBo4,207
|
|
27
|
+
ophyd_async/epics/adaravis/_aravis.py,sha256=XBuLQBZYj2tptY39bVzXjl6t-ZpPwqrUOwpR54l-hSo,1952
|
|
28
|
+
ophyd_async/epics/adaravis/_aravis_controller.py,sha256=t4vuMsQ_67tNsAYPFFtBKq3YIHhRnK08DwPzi8Am_-k,2831
|
|
29
|
+
ophyd_async/epics/adaravis/_aravis_io.py,sha256=wjeN3qYVyy-HsLKJH0SZLC663AERKYPD38vvL71BRAQ,1605
|
|
30
|
+
ophyd_async/epics/adcore/__init__.py,sha256=3wMOyFGaq1X61LqK4iY4pq-m_BjhOgYZD2-mNCAjpzk,1086
|
|
31
|
+
ophyd_async/epics/adcore/_core_io.py,sha256=Tgi9djvG5z-dgxO6Jq2-kAi-dAE5VOntL88xRrLLP8I,6078
|
|
32
|
+
ophyd_async/epics/adcore/_core_logic.py,sha256=JjrSmKErRFSv1C98or1Upwi01k3NWDRMi2fPHVWMmWw,3561
|
|
33
|
+
ophyd_async/epics/adcore/_hdf_writer.py,sha256=eWT9SH7uegf9rpCWRmVCZTsOxF1drPaOAMmoXm99mVk,7215
|
|
34
|
+
ophyd_async/epics/adcore/_single_trigger.py,sha256=NaTOHKDD0nzAPPrva-4dR-h102khpJ3cPKqEmS3HzY8,1168
|
|
35
|
+
ophyd_async/epics/adcore/_utils.py,sha256=MZBKeSPIRzyo6f84MpzPp28KwOLa9qgrkMIFc618wOE,3932
|
|
36
|
+
ophyd_async/epics/adkinetix/__init__.py,sha256=cvnwOqbvEENf70eFp6bPGwayP0u14UTIhs3WiZEcF_Q,262
|
|
37
|
+
ophyd_async/epics/adkinetix/_kinetix.py,sha256=JsQVc4d7lRCnVObJlM775hHLfp3rYRSRgOoIyRvrSek,1184
|
|
38
|
+
ophyd_async/epics/adkinetix/_kinetix_controller.py,sha256=LyK-CWkEV1l_RVhCOHf2lLgo1FRIkDCa4P8JnAGZ4us,1701
|
|
39
|
+
ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=KcNqmt0ejNR6zqJ0opRuAP4DGvryzar4j-03eba090o,912
|
|
40
|
+
ophyd_async/epics/adpilatus/__init__.py,sha256=daimScOCCMHR2eb8VbezHOcGOkd6uIRZQiyeTQsaAx4,308
|
|
41
|
+
ophyd_async/epics/adpilatus/_pilatus.py,sha256=AbWfxEds8ESB73kRXz56FzRPYqy67Ue0m11HRaNUqZY,1751
|
|
42
|
+
ophyd_async/epics/adpilatus/_pilatus_controller.py,sha256=eBZnNPHJosYAMdD-efLNgAmTYaqONLJ3qKX-2RW13fg,2676
|
|
43
|
+
ophyd_async/epics/adpilatus/_pilatus_io.py,sha256=0cqv1eXe11Oiz69C0CGEWf6saboC6OJj6cHHJ6fK8Z8,740
|
|
44
|
+
ophyd_async/epics/adsimdetector/__init__.py,sha256=t3crUgTEvVJGI8o6FsfN42k0A-l4v9ZBwXIYtixoE-M,128
|
|
45
|
+
ophyd_async/epics/adsimdetector/_sim.py,sha256=jzsPJdcwdciR2mVPbvg9KhGHWWGNDQwK5TwPcS7_tco,1009
|
|
46
|
+
ophyd_async/epics/adsimdetector/_sim_controller.py,sha256=lxBCJtREDOySrpLNl7_9DbuIw2IhRpSOBK_CvJ5XBs4,1677
|
|
47
|
+
ophyd_async/epics/advimba/__init__.py,sha256=l0ElP3Zyff_pzrTRdj9oUO9xigCfmzo3pMVjstlVsJY,320
|
|
48
|
+
ophyd_async/epics/advimba/_vimba.py,sha256=E_RJ0uJQt-RWAY7uFTNkHaOdGYS5sa7ZbRgAe6ngXTA,1125
|
|
49
|
+
ophyd_async/epics/advimba/_vimba_controller.py,sha256=Ej7irxTab9cfjmqz4G4Zxv3CjhJw_eRmIb3E62YWh6g,2226
|
|
50
|
+
ophyd_async/epics/advimba/_vimba_io.py,sha256=HlMFKv9lTDk1085Zy4n5XGriUNBAfsGd4AqLj8wyjJI,1866
|
|
51
|
+
ophyd_async/epics/demo/__init__.py,sha256=wCrgemEo-zR4TTvaqCKnQ-AIUHorotV5jhftbq1tXz0,1368
|
|
52
|
+
ophyd_async/epics/demo/_mover.py,sha256=2bNfaLZzP1MMzsaLgDEQLf9_uWeOR9fcYzKiGVM2Ze8,3531
|
|
53
|
+
ophyd_async/epics/demo/_sensor.py,sha256=0wICt8888vS5iNQCy8NWBfQPwUhyMo6g0GwQf8cJOs0,1180
|
|
54
|
+
ophyd_async/epics/demo/mover.db,sha256=RFz0rxZue689Wh1sWTZwWeFMUrH04ttPq2u5xJH_Fp4,998
|
|
55
|
+
ophyd_async/epics/demo/sensor.db,sha256=AstyG9E0R4KZBz2FZQSrV_QlrfLoU6M2cvYc15Lf548,553
|
|
56
|
+
ophyd_async/epics/eiger/__init__.py,sha256=b3Tt4pVLk23Giyj50R4e94d2MxWDDmNHWhWwNq2jlaw,221
|
|
57
|
+
ophyd_async/epics/eiger/_eiger.py,sha256=hkMsjVwrzDcE1u5BRIQtn8RSR2e0b1JMpDvuIONoNaI,1133
|
|
58
|
+
ophyd_async/epics/eiger/_eiger_controller.py,sha256=GCoZ40BGCFkxDUrgYk9_CwzSr86l-CALw9nUILJVaZA,2251
|
|
59
|
+
ophyd_async/epics/eiger/_eiger_io.py,sha256=It4BvSSbpfKlxuWqRrOe9MaQ5Z0yznoV6yEFjq6OXNM,1808
|
|
60
|
+
ophyd_async/epics/eiger/_odin_io.py,sha256=MC0WVHHfVlpeeHixh5LcstZIuGxRAmOSBpn3qtzOj28,4155
|
|
61
|
+
ophyd_async/epics/pvi/__init__.py,sha256=cTt0ixrEPUTXyOs7A_yscsVOvWUEDKwU94BOvhjxVy0,71
|
|
62
|
+
ophyd_async/epics/pvi/_pvi.py,sha256=2gAuujZyAW5KiSXJrlbs-YokW_sgZJrtKi9sfBNr3-k,2697
|
|
63
|
+
ophyd_async/epics/signal/__init__.py,sha256=e6CVNlEhxXPzruTItHFALk2JyHc5a1zJYCzoFFeqd5o,437
|
|
64
|
+
ophyd_async/epics/signal/_aioca.py,sha256=zOIF6ca9ombRLS0QghPSheHF_lC_mxp0bShFll8bLfs,11666
|
|
65
|
+
ophyd_async/epics/signal/_common.py,sha256=xQBoZQs1lPmocpBokxFle-BxVGq2mVjtRoe7TYZMZNw,1462
|
|
66
|
+
ophyd_async/epics/signal/_p4p.py,sha256=eHVl7ifjdOu55K701d_Gf2TlFgJ9tDCnJQhp2ag98HA,14660
|
|
67
|
+
ophyd_async/epics/signal/_signal.py,sha256=h8iUqXOInhJ6M-xw3KJlU3srRPFwmfdHqlohy-uHRS8,4148
|
|
68
|
+
ophyd_async/fastcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
+
ophyd_async/fastcs/core.py,sha256=0t9fvXeqfP8V4Qz1LIjsh6HqLxZO0R62dbThy1ruWDI,349
|
|
70
|
+
ophyd_async/fastcs/odin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
+
ophyd_async/fastcs/panda/__init__.py,sha256=_o7n7ckoTM6hTRHpLphpL7r_9sADE59MRNM0gq_ut2o,980
|
|
72
|
+
ophyd_async/fastcs/panda/_block.py,sha256=STQo6NJAqIVfxyMf-2pxINPyr9_nKtXSdicp92a25xo,1709
|
|
73
|
+
ophyd_async/fastcs/panda/_control.py,sha256=61vcJMjYQiUGAM5J0SfkfthFs7U28m9Pe9mgmGGf0-w,1021
|
|
74
|
+
ophyd_async/fastcs/panda/_hdf_panda.py,sha256=WdgWgdrU2yT4keH70VG-ZBVOmT-IpKVyukEuKk7QnJs,1049
|
|
75
|
+
ophyd_async/fastcs/panda/_table.py,sha256=8XkfpdZETflzoZE4qB5Y5ySi8JFxxZulDszVccgY_w4,2293
|
|
76
|
+
ophyd_async/fastcs/panda/_trigger.py,sha256=forImtdnDnaZ0KKhqSxCqwHWXq13SJ4mn9wdM4yqNLY,3056
|
|
77
|
+
ophyd_async/fastcs/panda/_utils.py,sha256=NdvzdKy0SOG1eCVMQo_nwRXpBo0wyi6lM5Xw3HvssOw,508
|
|
78
|
+
ophyd_async/fastcs/panda/_writer.py,sha256=wDN6uWX1ENofmI3JBXJ7_CGooI7WsZP-JJQrRiSc6sM,6000
|
|
79
|
+
ophyd_async/plan_stubs/__init__.py,sha256=wjpEj_BoBZJ9x2fhUPY6BzWMqyYH96JrBlJvV7frdN4,524
|
|
80
|
+
ophyd_async/plan_stubs/_ensure_connected.py,sha256=MIn-aWKiaGI0k7ac-_Ca40uouoGsyRX1gAHY-A-ifGI,750
|
|
81
|
+
ophyd_async/plan_stubs/_fly.py,sha256=WxghBAHsF-8xFrILCm44jeHIu9udLhm-tj4JXd9kZjY,6208
|
|
82
|
+
ophyd_async/plan_stubs/_nd_attributes.py,sha256=TVfy3bhnrLFBXZ6b2bREBj0LzEviEGzuGvgWK3I7tII,2198
|
|
83
|
+
ophyd_async/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
+
ophyd_async/sim/demo/__init__.py,sha256=JKWFnHqmFuRRMvvU0aBuclke3OdF0iq89yvHEd4J7Bg,371
|
|
85
|
+
ophyd_async/sim/demo/_sim_motor.py,sha256=13mswR9ybIHD00BFlmrqR7c4v_3in5FBv33cVfu8Uyc,3623
|
|
86
|
+
ophyd_async/sim/demo/_pattern_detector/__init__.py,sha256=o_dSZDIl_CyS3YPSNKpGiQiR9UaC4cNzZ8_ByEN9dIk,402
|
|
87
|
+
ophyd_async/sim/demo/_pattern_detector/_pattern_detector.py,sha256=R-UbcxHLFfCK9tBryKZN5Dit0IjYeJGP-QKV2ssKFoQ,1275
|
|
88
|
+
ophyd_async/sim/demo/_pattern_detector/_pattern_detector_controller.py,sha256=HqlKNgjd_9pjy6pc74xdJ7JtV1Iko6cNxB2aZReJozw,1999
|
|
89
|
+
ophyd_async/sim/demo/_pattern_detector/_pattern_detector_writer.py,sha256=nQOks4EK1Ax0Ib1pkCrmJPF8Jqr7tPusMnby-HGUnP0,1370
|
|
90
|
+
ophyd_async/sim/demo/_pattern_detector/_pattern_generator.py,sha256=gP0Q1-1p_3KOH7mWZc5m-8OUEx_jb7SAdRXcpleRqX4,7096
|
|
91
|
+
ophyd_async/sim/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
|
+
ophyd_async/tango/__init__.py,sha256=2XxSpJWvvAlCs0GLPv6sEnUUD40fWq9OzKuiBEZ_MEs,861
|
|
93
|
+
ophyd_async/tango/base_devices/__init__.py,sha256=fbn1-rfK8MCErpSmjAJuQioDikbjOobd4sDvAB9Xupw,157
|
|
94
|
+
ophyd_async/tango/base_devices/_base_device.py,sha256=aMhDB2REBFRLX6R1nyHEvA9xUNbOV9STI1qldfdnkLE,5924
|
|
95
|
+
ophyd_async/tango/base_devices/_tango_readable.py,sha256=J-XeR2fmQU5RTdsNhRvzNPJD8xZRVJ6-qXt09vfpVtI,951
|
|
96
|
+
ophyd_async/tango/demo/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
|
|
97
|
+
ophyd_async/tango/demo/_counter.py,sha256=u4abG9AMpiz_Xlomu05AHFEjb9YKzSFolanm8NdqnOE,1262
|
|
98
|
+
ophyd_async/tango/demo/_detector.py,sha256=0wwk7Y-Dl9QF1YsCIU_BxqI6-PQ40qN_0gknrYBkxsY,1292
|
|
99
|
+
ophyd_async/tango/demo/_mover.py,sha256=aag8J-8Vd_wX3HitrTwh17caUAg1rq-YHfCMkEYAyy0,2659
|
|
100
|
+
ophyd_async/tango/demo/_tango/__init__.py,sha256=FfONT7vM49nNo3a1Lv-LcMZO9EHv6bv91yY-RnxIib4,85
|
|
101
|
+
ophyd_async/tango/demo/_tango/_servers.py,sha256=MwkkoZWJQm_cgafCBBXeQfwyAiOgU8cE90_uNfcdcGA,2916
|
|
102
|
+
ophyd_async/tango/signal/__init__.py,sha256=-_wBvhSPb58h_XSeGVaJ6gMFOY8TQNsVYfZxQuxGB1c,750
|
|
103
|
+
ophyd_async/tango/signal/_signal.py,sha256=72iOxCt6HkyaYPgE402h5fd1KryyVUarR0exV2A3UbU,6277
|
|
104
|
+
ophyd_async/tango/signal/_tango_transport.py,sha256=DVTdLu8C19k-QzYaKUzFK2WMbaSd6dIO77k99ugD8U4,28990
|
|
105
|
+
ophyd_async-0.8.0a2.dist-info/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
|
|
106
|
+
ophyd_async-0.8.0a2.dist-info/METADATA,sha256=sCPoZNdh3J_MsprPjPLEqfHPcsY88R9FBgWbE4DcGXY,6708
|
|
107
|
+
ophyd_async-0.8.0a2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
108
|
+
ophyd_async-0.8.0a2.dist-info/entry_points.txt,sha256=O0YNJTEufO0w9BozXi-JurTy2U1_o0ypeCgJLQ727Jk,58
|
|
109
|
+
ophyd_async-0.8.0a2.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
|
|
110
|
+
ophyd_async-0.8.0a2.dist-info/RECORD,,
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"""EPICS Signals over CA or PVA"""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from enum import Enum
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def _make_unavailable_class(error: Exception) -> type:
|
|
9
|
-
class TransportNotAvailable:
|
|
10
|
-
def __init__(*args, **kwargs):
|
|
11
|
-
raise NotImplementedError("Transport not available") from error
|
|
12
|
-
|
|
13
|
-
return TransportNotAvailable
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
try:
|
|
17
|
-
from ._aioca import CaSignalBackend
|
|
18
|
-
except ImportError as ca_error:
|
|
19
|
-
CaSignalBackend = _make_unavailable_class(ca_error)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
try:
|
|
23
|
-
from ._p4p import PvaSignalBackend
|
|
24
|
-
except ImportError as pva_error:
|
|
25
|
-
PvaSignalBackend = _make_unavailable_class(pva_error)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class _EpicsTransport(Enum):
|
|
29
|
-
"""The sorts of transport EPICS support"""
|
|
30
|
-
|
|
31
|
-
#: Use Channel Access (using aioca library)
|
|
32
|
-
ca = CaSignalBackend
|
|
33
|
-
#: Use PVAccess (using p4p library)
|
|
34
|
-
pva = PvaSignalBackend
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
ophyd_async/__init__.py,sha256=tEfgj45lRItQ-_u8SRFPM-mpBh3gWvHXr3emhiJJG_M,225
|
|
2
|
-
ophyd_async/__main__.py,sha256=n_U4O9bgm97OuboUB_9eK7eFiwy8BZSgXJ0OzbE0DqU,481
|
|
3
|
-
ophyd_async/_version.py,sha256=akvr8ObxvMF-aaLBzW41juT4_KL3BjQUrjbwkIuQXMk,411
|
|
4
|
-
ophyd_async/core/__init__.py,sha256=KxYHMQxnbA9J00pSCQKmu80RP8CgEbbTeSh5xu99iKY,3911
|
|
5
|
-
ophyd_async/core/_detector.py,sha256=5QtOcBc3lA_RD6bK4gEG9EPhA5XvlDPvUN72N_cZQK4,14284
|
|
6
|
-
ophyd_async/core/_device.py,sha256=uT0tXZhl4m-IkV-Hb1QEeN1OXEFS7xZUQwwOh4vG3Tw,7952
|
|
7
|
-
ophyd_async/core/_device_save_loader.py,sha256=o1BXzLZJA2a3NoHXrvYQ6jhaak4QB_CdH1hX1hFQZK8,8450
|
|
8
|
-
ophyd_async/core/_flyer.py,sha256=us5z6MNGCvIfgPDTmFTxNERSP37g0WVRkRD0Z2JiMgM,1701
|
|
9
|
-
ophyd_async/core/_hdf_dataset.py,sha256=wW_OL8OYLGOsE01ny3hGaapOrxK7BzhWTxKgz8CIXK0,2492
|
|
10
|
-
ophyd_async/core/_log.py,sha256=UbL9AtnHVUg7r9LofzgmuKEtBESy03usCp7ejmDltG4,3679
|
|
11
|
-
ophyd_async/core/_mock_signal_backend.py,sha256=Ga3ajwnePjV9oN-ZJUkUh6U7um1suY4CbMVYNfCmGF0,2882
|
|
12
|
-
ophyd_async/core/_mock_signal_utils.py,sha256=HKAqQPqSUC9hbvXkrxKzrY-FlDbxj1FtbMB_zABOdog,4809
|
|
13
|
-
ophyd_async/core/_protocol.py,sha256=GNcnsFfHmvrsXJ9l25l6KXTaUWsAh7MGu0y2f6rsRdA,3413
|
|
14
|
-
ophyd_async/core/_providers.py,sha256=ff9ZT5-PZ6rhTTdE-q8w9l_k9DuZqLWLebsKZLeJ0Ds,7112
|
|
15
|
-
ophyd_async/core/_readable.py,sha256=mbKTlnjRa7ez7zRHiXvii7EGxmym8FeP5kcnB8luSo0,9097
|
|
16
|
-
ophyd_async/core/_signal.py,sha256=q4ttdHuzhS5Z2vmc9wwFnx2JrHG8ztYcjzhnbn2CFDM,19914
|
|
17
|
-
ophyd_async/core/_signal_backend.py,sha256=PNR7GrzWp9mTZaHSFRhPuNAEWeaYb919YJ3rV3l70sY,2851
|
|
18
|
-
ophyd_async/core/_soft_signal_backend.py,sha256=Z9WCMDbrTrHuFdab0fyHm5CVlVZHvkMXofT6yW-6rPE,7593
|
|
19
|
-
ophyd_async/core/_status.py,sha256=7jaxc2WkY8LCTwfEsjNMqxLKuWfiFWmEentmp7oSU5s,4594
|
|
20
|
-
ophyd_async/core/_table.py,sha256=qHXCSAMSDfDVNAPi2oPIeHepi0FgYM7sQjNeFysPVKg,5497
|
|
21
|
-
ophyd_async/core/_utils.py,sha256=QYH4wMQFJWkE21eS_IX-7uwuvJ1VTeEpghe8trxyvvU,5949
|
|
22
|
-
ophyd_async/epics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
ophyd_async/epics/motor.py,sha256=mOrFiTt6WrXJM4d5Stksrxc_j9Vcd3L3w1QLCX_K0zM,8752
|
|
24
|
-
ophyd_async/epics/adaravis/__init__.py,sha256=u979_9nQTYB0TvDOTXFN4qMrbDP8-xQFfXYMGzLVBo4,207
|
|
25
|
-
ophyd_async/epics/adaravis/_aravis.py,sha256=XBuLQBZYj2tptY39bVzXjl6t-ZpPwqrUOwpR54l-hSo,1952
|
|
26
|
-
ophyd_async/epics/adaravis/_aravis_controller.py,sha256=wzigo8fL5zl8XymRahdzI_kmbRg-WflKgzzGrV-cW5A,2845
|
|
27
|
-
ophyd_async/epics/adaravis/_aravis_io.py,sha256=c6esqJO_86NTv3Mo9BKmQD74kGYLpCXelxcEGZcbKa0,1583
|
|
28
|
-
ophyd_async/epics/adcore/__init__.py,sha256=3wMOyFGaq1X61LqK4iY4pq-m_BjhOgYZD2-mNCAjpzk,1086
|
|
29
|
-
ophyd_async/epics/adcore/_core_io.py,sha256=s0vqTOzQ94IZU0z2K3fgTYEaOtwWHgk--WViAgKqXVY,6086
|
|
30
|
-
ophyd_async/epics/adcore/_core_logic.py,sha256=JjrSmKErRFSv1C98or1Upwi01k3NWDRMi2fPHVWMmWw,3561
|
|
31
|
-
ophyd_async/epics/adcore/_hdf_writer.py,sha256=4ezsPHHt2OWj9H6t4yk-mV9jkwv5vmIRrq5zGsfpGRc,7225
|
|
32
|
-
ophyd_async/epics/adcore/_single_trigger.py,sha256=NaTOHKDD0nzAPPrva-4dR-h102khpJ3cPKqEmS3HzY8,1168
|
|
33
|
-
ophyd_async/epics/adcore/_utils.py,sha256=MRgLwfta-1Dl45aJP_yLScAcxVll0WWR7GGCv3qNqZY,3902
|
|
34
|
-
ophyd_async/epics/adkinetix/__init__.py,sha256=QEft12PURied6LRzjw-NhUmngjAm1XNA3k-5o5aMXDQ,216
|
|
35
|
-
ophyd_async/epics/adkinetix/_kinetix.py,sha256=JsQVc4d7lRCnVObJlM775hHLfp3rYRSRgOoIyRvrSek,1184
|
|
36
|
-
ophyd_async/epics/adkinetix/_kinetix_controller.py,sha256=UHdMSrKmJhq0A5wrnHHkqFZEDiIYnImYMYSA5n-szkQ,1754
|
|
37
|
-
ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=AbCoYliAobU3I6z3NaswQnExwGTgV458zF3uwkBEQPc,893
|
|
38
|
-
ophyd_async/epics/adpilatus/__init__.py,sha256=daimScOCCMHR2eb8VbezHOcGOkd6uIRZQiyeTQsaAx4,308
|
|
39
|
-
ophyd_async/epics/adpilatus/_pilatus.py,sha256=AbWfxEds8ESB73kRXz56FzRPYqy67Ue0m11HRaNUqZY,1751
|
|
40
|
-
ophyd_async/epics/adpilatus/_pilatus_controller.py,sha256=K0xzw1hrOdSRb_TlTIZK7t5uPyC1ivbSuhb1GwnzLX0,2742
|
|
41
|
-
ophyd_async/epics/adpilatus/_pilatus_io.py,sha256=WB_N2RRpcFCFI6i57PRqjIdpK6hzLpWxn71cWUHUZnc,722
|
|
42
|
-
ophyd_async/epics/adsimdetector/__init__.py,sha256=t3crUgTEvVJGI8o6FsfN42k0A-l4v9ZBwXIYtixoE-M,128
|
|
43
|
-
ophyd_async/epics/adsimdetector/_sim.py,sha256=jzsPJdcwdciR2mVPbvg9KhGHWWGNDQwK5TwPcS7_tco,1009
|
|
44
|
-
ophyd_async/epics/adsimdetector/_sim_controller.py,sha256=R_Ya3HoKsUo69WjofcoT9Oy08Pi1zPjDoUfePM0SXOw,1743
|
|
45
|
-
ophyd_async/epics/advimba/__init__.py,sha256=GSnFWGPNJsCJZ-Tgyv-L38Smwzp2bWC64U_4uD2TLvs,198
|
|
46
|
-
ophyd_async/epics/advimba/_vimba.py,sha256=E_RJ0uJQt-RWAY7uFTNkHaOdGYS5sa7ZbRgAe6ngXTA,1125
|
|
47
|
-
ophyd_async/epics/advimba/_vimba_controller.py,sha256=F3zZEgAYKvACkcKtxE7TKqHO8f-SMSALq0_DFB_OUXA,2279
|
|
48
|
-
ophyd_async/epics/advimba/_vimba_io.py,sha256=nf1BdIWey4RR7KuqyZhH6X5yB8Msg0oOtkVLOuwn6Uc,1843
|
|
49
|
-
ophyd_async/epics/demo/__init__.py,sha256=wCrgemEo-zR4TTvaqCKnQ-AIUHorotV5jhftbq1tXz0,1368
|
|
50
|
-
ophyd_async/epics/demo/_mover.py,sha256=2bNfaLZzP1MMzsaLgDEQLf9_uWeOR9fcYzKiGVM2Ze8,3531
|
|
51
|
-
ophyd_async/epics/demo/_sensor.py,sha256=8OyFAsB3EXMzrQreOIg_TGHrseUtI5rxXpfwwUaC76I,1165
|
|
52
|
-
ophyd_async/epics/demo/mover.db,sha256=RFz0rxZue689Wh1sWTZwWeFMUrH04ttPq2u5xJH_Fp4,998
|
|
53
|
-
ophyd_async/epics/demo/sensor.db,sha256=AstyG9E0R4KZBz2FZQSrV_QlrfLoU6M2cvYc15Lf548,553
|
|
54
|
-
ophyd_async/epics/eiger/__init__.py,sha256=b3Tt4pVLk23Giyj50R4e94d2MxWDDmNHWhWwNq2jlaw,221
|
|
55
|
-
ophyd_async/epics/eiger/_eiger.py,sha256=_t0E6s0IVcV1IQcnxclJM5ZNOP74N_bakFO_pItO1VA,1171
|
|
56
|
-
ophyd_async/epics/eiger/_eiger_controller.py,sha256=Yq5pNHmeGfubDZFoCn0mtOHgxF-byIVAwCN1h2C_YIY,2285
|
|
57
|
-
ophyd_async/epics/eiger/_eiger_io.py,sha256=MlvLWEZ-n-Lf7y9e_WVoPFdw5YoHVWw_8LxSLajnkk8,1818
|
|
58
|
-
ophyd_async/epics/eiger/_odin_io.py,sha256=8EQcnGLJFsgRFtwFIG3PV5vH6Fjg2xqjExZ6RqIb6ew,4170
|
|
59
|
-
ophyd_async/epics/pvi/__init__.py,sha256=ZvJO69ApL7N9rWT9-hD-JZMC_KsHxgeEqxe-01jNUVw,137
|
|
60
|
-
ophyd_async/epics/pvi/_pvi.py,sha256=lbgZRR_Wl1gZWEjmoTzVIOv_1il4ulLU7UCDDetoZ-0,12136
|
|
61
|
-
ophyd_async/epics/signal/__init__.py,sha256=cJGvTnJxHNzpWyWIYXU4UGMoz3uqZ88UVXNvG-TGngo,441
|
|
62
|
-
ophyd_async/epics/signal/_aioca.py,sha256=vmAAywEzLjbL40V7P5MmxhQhII6E70zdizNk9TGnoTI,12703
|
|
63
|
-
ophyd_async/epics/signal/_common.py,sha256=BFz1leFG5VLeDZc8Ndni4GBqFUzvYVs0iIYUiLHS5AE,1624
|
|
64
|
-
ophyd_async/epics/signal/_epics_transport.py,sha256=lMOOg8E1JQu1MDWtp6zFqSdhO5gNKcPn_uYXyWUxofw,824
|
|
65
|
-
ophyd_async/epics/signal/_p4p.py,sha256=l8BcU6fbxs4CN9Hio3VNN5n6WaCx9AP8TfQT-xnaevM,17631
|
|
66
|
-
ophyd_async/epics/signal/_signal.py,sha256=76a8V0qIjV6VKfh-3-SLcD3GZF3dd_2lQt_6mTKe_bA,3204
|
|
67
|
-
ophyd_async/fastcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
ophyd_async/fastcs/odin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
-
ophyd_async/fastcs/panda/__init__.py,sha256=4ct9vmLafK0fSWQ_HjxmT3jRhWz_8CAFpKStgah2RJY,1022
|
|
70
|
-
ophyd_async/fastcs/panda/_block.py,sha256=sqUWLpxIapXd7-jh4l4KtLN4Ex_b1T5PnfVrXM3bswI,1756
|
|
71
|
-
ophyd_async/fastcs/panda/_control.py,sha256=JfZVf-Xl3NYg6uLYZ6iL-n0NlyPT3eut_p0FWh17c7s,1119
|
|
72
|
-
ophyd_async/fastcs/panda/_hdf_panda.py,sha256=nCGXOiVbvQnVRftEF5PNFeOoLO85F2leg0DVl4MDJFw,1526
|
|
73
|
-
ophyd_async/fastcs/panda/_table.py,sha256=GLwAkepKaAHloJN57UFGrEfp8GkruY743ADIGQhNQ4M,3085
|
|
74
|
-
ophyd_async/fastcs/panda/_trigger.py,sha256=32nGv_g7vucHEl4yRzJtAlRKLH0wrEuEKyqqE2URPXs,3032
|
|
75
|
-
ophyd_async/fastcs/panda/_utils.py,sha256=NdvzdKy0SOG1eCVMQo_nwRXpBo0wyi6lM5Xw3HvssOw,508
|
|
76
|
-
ophyd_async/fastcs/panda/_writer.py,sha256=r1rdzzBal_9Osh0vCX0KbvXPU9JXiRbIh0mFatgUlfk,6162
|
|
77
|
-
ophyd_async/plan_stubs/__init__.py,sha256=wjpEj_BoBZJ9x2fhUPY6BzWMqyYH96JrBlJvV7frdN4,524
|
|
78
|
-
ophyd_async/plan_stubs/_ensure_connected.py,sha256=6Q7_UWQ-UQ0awe6mnN4PdNCAOGRm4GZR9X2M-ghQCeI,711
|
|
79
|
-
ophyd_async/plan_stubs/_fly.py,sha256=WJherYDc4_SUGmtJ4QhJNz7b_HDzJncQ2_0RanQtiVI,6222
|
|
80
|
-
ophyd_async/plan_stubs/_nd_attributes.py,sha256=w26G2k3FU1nv-s3Bytwuu_K3lBrbdRYlaJ2TMLgUu7w,2141
|
|
81
|
-
ophyd_async/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
|
-
ophyd_async/sim/demo/__init__.py,sha256=JKWFnHqmFuRRMvvU0aBuclke3OdF0iq89yvHEd4J7Bg,371
|
|
83
|
-
ophyd_async/sim/demo/_sim_motor.py,sha256=13mswR9ybIHD00BFlmrqR7c4v_3in5FBv33cVfu8Uyc,3623
|
|
84
|
-
ophyd_async/sim/demo/_pattern_detector/__init__.py,sha256=o_dSZDIl_CyS3YPSNKpGiQiR9UaC4cNzZ8_ByEN9dIk,402
|
|
85
|
-
ophyd_async/sim/demo/_pattern_detector/_pattern_detector.py,sha256=R-UbcxHLFfCK9tBryKZN5Dit0IjYeJGP-QKV2ssKFoQ,1275
|
|
86
|
-
ophyd_async/sim/demo/_pattern_detector/_pattern_detector_controller.py,sha256=B1XtzRsZM-8_8TTyUHUiEsqaHjLglEUMIhZMwzOXiPo,2037
|
|
87
|
-
ophyd_async/sim/demo/_pattern_detector/_pattern_detector_writer.py,sha256=nQOks4EK1Ax0Ib1pkCrmJPF8Jqr7tPusMnby-HGUnP0,1370
|
|
88
|
-
ophyd_async/sim/demo/_pattern_detector/_pattern_generator.py,sha256=gP0Q1-1p_3KOH7mWZc5m-8OUEx_jb7SAdRXcpleRqX4,7096
|
|
89
|
-
ophyd_async/sim/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
ophyd_async/tango/__init__.py,sha256=sy1mNNe1H5obPhuontHCy6oKzj4f7B6gFprDCGkVL48,923
|
|
91
|
-
ophyd_async/tango/base_devices/__init__.py,sha256=fbn1-rfK8MCErpSmjAJuQioDikbjOobd4sDvAB9Xupw,157
|
|
92
|
-
ophyd_async/tango/base_devices/_base_device.py,sha256=OZqzqLleL9cepq60z-g7KDCTOrK2F0rL1oRdovt984M,8201
|
|
93
|
-
ophyd_async/tango/base_devices/_tango_readable.py,sha256=J-XeR2fmQU5RTdsNhRvzNPJD8xZRVJ6-qXt09vfpVtI,951
|
|
94
|
-
ophyd_async/tango/demo/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
|
|
95
|
-
ophyd_async/tango/demo/_counter.py,sha256=7tz84_uEYBaI3hoFWGXf6UdXK435D7R-eMqT_8U8lpY,1262
|
|
96
|
-
ophyd_async/tango/demo/_detector.py,sha256=0wwk7Y-Dl9QF1YsCIU_BxqI6-PQ40qN_0gknrYBkxsY,1292
|
|
97
|
-
ophyd_async/tango/demo/_mover.py,sha256=VTsEZVrY5p8-lQrEsfIV3UDBXbFxyuvwvilq69ySaKo,2659
|
|
98
|
-
ophyd_async/tango/demo/_tango/__init__.py,sha256=FfONT7vM49nNo3a1Lv-LcMZO9EHv6bv91yY-RnxIib4,85
|
|
99
|
-
ophyd_async/tango/demo/_tango/_servers.py,sha256=MwkkoZWJQm_cgafCBBXeQfwyAiOgU8cE90_uNfcdcGA,2916
|
|
100
|
-
ophyd_async/tango/signal/__init__.py,sha256=bM2ETdQgPQHUij9pQXwKggcj1-f2_RZxquRk8uiF67E,812
|
|
101
|
-
ophyd_async/tango/signal/_signal.py,sha256=2QoqS4drR_Qf1WYpqykNXP5HWr_RU3c4D3Z028er6TM,7106
|
|
102
|
-
ophyd_async/tango/signal/_tango_transport.py,sha256=7zui5Pq347v9DPqfjLSaRW_vORTkflE_IQLBRs-jLoY,28988
|
|
103
|
-
ophyd_async-0.7.0.dist-info/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
|
|
104
|
-
ophyd_async-0.7.0.dist-info/METADATA,sha256=cndLjrpwfhjAY4JfRtcec4GqlZjRELynHIsAQhyK6pY,6770
|
|
105
|
-
ophyd_async-0.7.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
106
|
-
ophyd_async-0.7.0.dist-info/entry_points.txt,sha256=O0YNJTEufO0w9BozXi-JurTy2U1_o0ypeCgJLQ727Jk,58
|
|
107
|
-
ophyd_async-0.7.0.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
|
|
108
|
-
ophyd_async-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|