ophyd-async 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. ophyd_async/_version.py +2 -2
  2. ophyd_async/core/__init__.py +84 -73
  3. ophyd_async/core/{detector.py → _detector.py} +4 -8
  4. ophyd_async/core/{device.py → _device.py} +1 -1
  5. ophyd_async/core/{device_save_loader.py → _device_save_loader.py} +3 -3
  6. ophyd_async/core/{flyer.py → _flyer.py} +6 -8
  7. ophyd_async/{epics/areadetector/writers/general_hdffile.py → core/_hdf_dataset.py} +4 -4
  8. ophyd_async/{log.py → core/_log.py} +11 -3
  9. ophyd_async/core/{mock_signal_backend.py → _mock_signal_backend.py} +3 -3
  10. ophyd_async/core/{mock_signal_utils.py → _mock_signal_utils.py} +3 -4
  11. ophyd_async/{protocols.py → core/_protocol.py} +1 -1
  12. ophyd_async/core/{standard_readable.py → _readable.py} +6 -16
  13. ophyd_async/core/{signal.py → _signal.py} +7 -8
  14. ophyd_async/core/{signal_backend.py → _signal_backend.py} +4 -13
  15. ophyd_async/core/{soft_signal_backend.py → _soft_signal_backend.py} +3 -12
  16. ophyd_async/core/{async_status.py → _status.py} +3 -11
  17. ophyd_async/epics/adaravis/__init__.py +9 -0
  18. ophyd_async/epics/{areadetector/aravis.py → adaravis/_aravis.py} +9 -11
  19. ophyd_async/epics/{areadetector/controllers/aravis_controller.py → adaravis/_aravis_controller.py} +7 -10
  20. ophyd_async/epics/{areadetector/drivers/aravis_driver.py → adaravis/_aravis_io.py} +6 -3
  21. ophyd_async/epics/adcore/__init__.py +36 -0
  22. ophyd_async/epics/adcore/_core_io.py +114 -0
  23. ophyd_async/epics/{areadetector/drivers/ad_base.py → adcore/_core_logic.py} +16 -52
  24. ophyd_async/epics/{areadetector/writers/hdf_writer.py → adcore/_hdf_writer.py} +12 -11
  25. ophyd_async/epics/{areadetector/single_trigger_det.py → adcore/_single_trigger.py} +5 -6
  26. ophyd_async/epics/{areadetector/utils.py → adcore/_utils.py} +29 -0
  27. ophyd_async/epics/adkinetix/__init__.py +9 -0
  28. ophyd_async/epics/{areadetector/kinetix.py → adkinetix/_kinetix.py} +9 -11
  29. ophyd_async/epics/{areadetector/controllers/kinetix_controller.py → adkinetix/_kinetix_controller.py} +6 -9
  30. ophyd_async/epics/{areadetector/drivers/kinetix_driver.py → adkinetix/_kinetix_io.py} +5 -4
  31. ophyd_async/epics/adpilatus/__init__.py +11 -0
  32. ophyd_async/epics/{areadetector/pilatus.py → adpilatus/_pilatus.py} +10 -14
  33. ophyd_async/epics/{areadetector/controllers/pilatus_controller.py → adpilatus/_pilatus_controller.py} +14 -16
  34. ophyd_async/epics/{areadetector/drivers/pilatus_driver.py → adpilatus/_pilatus_io.py} +5 -3
  35. ophyd_async/epics/adsimdetector/__init__.py +7 -0
  36. ophyd_async/epics/{demo/demo_ad_sim_detector.py → adsimdetector/_sim.py} +10 -11
  37. ophyd_async/epics/{areadetector/controllers/ad_sim_controller.py → adsimdetector/_sim_controller.py} +8 -14
  38. ophyd_async/epics/advimba/__init__.py +9 -0
  39. ophyd_async/epics/{areadetector/vimba.py → advimba/_vimba.py} +9 -9
  40. ophyd_async/epics/{areadetector/controllers/vimba_controller.py → advimba/_vimba_controller.py} +6 -14
  41. ophyd_async/epics/{areadetector/drivers/vimba_driver.py → advimba/_vimba_io.py} +5 -4
  42. ophyd_async/epics/demo/__init__.py +9 -132
  43. ophyd_async/epics/demo/_mover.py +97 -0
  44. ophyd_async/epics/demo/_sensor.py +36 -0
  45. ophyd_async/epics/{motion/motor.py → motor.py} +13 -12
  46. ophyd_async/epics/pvi/__init__.py +2 -2
  47. ophyd_async/epics/pvi/{pvi.py → _pvi.py} +17 -14
  48. ophyd_async/epics/signal/__init__.py +7 -1
  49. ophyd_async/epics/{_backend → signal}/_aioca.py +3 -2
  50. ophyd_async/epics/{_backend/common.py → signal/_common.py} +1 -1
  51. ophyd_async/epics/signal/_epics_transport.py +3 -3
  52. ophyd_async/epics/{_backend → signal}/_p4p.py +4 -3
  53. ophyd_async/epics/signal/{signal.py → _signal.py} +10 -9
  54. ophyd_async/fastcs/odin/__init__.py +0 -0
  55. ophyd_async/{panda → fastcs/panda}/__init__.py +18 -13
  56. ophyd_async/{panda → fastcs/panda}/_common_blocks.py +3 -3
  57. ophyd_async/{panda → fastcs/panda}/_hdf_panda.py +2 -7
  58. ophyd_async/{panda/writers → fastcs/panda}/_hdf_writer.py +8 -7
  59. ophyd_async/{panda → fastcs/panda}/_panda_controller.py +2 -1
  60. ophyd_async/{panda → fastcs/panda}/_trigger.py +3 -7
  61. ophyd_async/plan_stubs/__init__.py +2 -2
  62. ophyd_async/plan_stubs/{ensure_connected.py → _ensure_connected.py} +1 -2
  63. ophyd_async/plan_stubs/{fly.py → _fly.py} +13 -9
  64. ophyd_async/sim/__init__.py +0 -11
  65. ophyd_async/sim/demo/__init__.py +18 -2
  66. ophyd_async/sim/demo/_pattern_detector/__init__.py +13 -0
  67. ophyd_async/sim/{sim_pattern_generator.py → demo/_pattern_detector/_pattern_detector.py} +8 -8
  68. ophyd_async/sim/{sim_pattern_detector_control.py → demo/_pattern_detector/_pattern_detector_controller.py} +4 -5
  69. ophyd_async/sim/{sim_pattern_detector_writer.py → demo/_pattern_detector/_pattern_detector_writer.py} +4 -4
  70. ophyd_async/sim/{pattern_generator.py → demo/_pattern_detector/_pattern_generator.py} +12 -8
  71. ophyd_async/sim/demo/{sim_motor.py → _sim_motor.py} +7 -5
  72. ophyd_async/sim/testing/__init__.py +0 -0
  73. ophyd_async/tango/__init__.py +0 -0
  74. {ophyd_async-0.4.0.dist-info → ophyd_async-0.5.0.dist-info}/METADATA +1 -1
  75. ophyd_async-0.5.0.dist-info/RECORD +89 -0
  76. {ophyd_async-0.4.0.dist-info → ophyd_async-0.5.0.dist-info}/WHEEL +1 -1
  77. ophyd_async/epics/areadetector/__init__.py +0 -23
  78. ophyd_async/epics/areadetector/controllers/__init__.py +0 -5
  79. ophyd_async/epics/areadetector/drivers/__init__.py +0 -23
  80. ophyd_async/epics/areadetector/writers/__init__.py +0 -5
  81. ophyd_async/epics/areadetector/writers/nd_file_hdf.py +0 -43
  82. ophyd_async/epics/areadetector/writers/nd_plugin.py +0 -68
  83. ophyd_async/epics/motion/__init__.py +0 -3
  84. ophyd_async/panda/writers/__init__.py +0 -3
  85. ophyd_async-0.4.0.dist-info/RECORD +0 -84
  86. /ophyd_async/core/{utils.py → _utils.py} +0 -0
  87. /ophyd_async/{epics/_backend → fastcs}/__init__.py +0 -0
  88. /ophyd_async/{panda → fastcs/panda}/_table.py +0 -0
  89. /ophyd_async/{panda → fastcs/panda}/_utils.py +0 -0
  90. {ophyd_async-0.4.0.dist-info → ophyd_async-0.5.0.dist-info}/LICENSE +0 -0
  91. {ophyd_async-0.4.0.dist-info → ophyd_async-0.5.0.dist-info}/entry_points.txt +0 -0
  92. {ophyd_async-0.4.0.dist-info → ophyd_async-0.5.0.dist-info}/top_level.txt +0 -0
ophyd_async/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.4.0'
16
- __version_tuple__ = version_tuple = (0, 4, 0)
15
+ __version__ = version = '0.5.0'
16
+ __version_tuple__ = version_tuple = (0, 5, 0)
@@ -1,26 +1,13 @@
1
- from ._providers import (
2
- AutoIncrementFilenameProvider,
3
- AutoIncrementingPathProvider,
4
- FilenameProvider,
5
- NameProvider,
6
- PathInfo,
7
- PathProvider,
8
- ShapeProvider,
9
- StaticFilenameProvider,
10
- StaticPathProvider,
11
- UUIDFilenameProvider,
12
- YMDPathProvider,
13
- )
14
- from .async_status import AsyncStatus, WatchableAsyncStatus
15
- from .detector import (
1
+ from ._detector import (
16
2
  DetectorControl,
17
3
  DetectorTrigger,
18
4
  DetectorWriter,
19
5
  StandardDetector,
20
6
  TriggerInfo,
21
7
  )
22
- from .device import Device, DeviceCollector, DeviceVector
23
- from .device_save_loader import (
8
+ from ._device import Device, DeviceCollector, DeviceVector
9
+ from ._device_save_loader import (
10
+ all_at_once,
24
11
  get_signal_values,
25
12
  load_device,
26
13
  load_from_yaml,
@@ -29,9 +16,11 @@ from .device_save_loader import (
29
16
  set_signal_values,
30
17
  walk_rw_signals,
31
18
  )
32
- from .flyer import HardwareTriggeredFlyable, TriggerLogic
33
- from .mock_signal_backend import MockSignalBackend
34
- from .mock_signal_utils import (
19
+ from ._flyer import StandardFlyer, TriggerLogic
20
+ from ._hdf_dataset import HDFDataset, HDFFile
21
+ from ._log import config_ophyd_async_logging
22
+ from ._mock_signal_backend import MockSignalBackend
23
+ from ._mock_signal_utils import (
35
24
  callback_on_mock_put,
36
25
  get_mock_put,
37
26
  mock_puts_blocked,
@@ -40,7 +29,22 @@ from .mock_signal_utils import (
40
29
  set_mock_value,
41
30
  set_mock_values,
42
31
  )
43
- from .signal import (
32
+ from ._protocol import AsyncConfigurable, AsyncReadable, AsyncStageable
33
+ from ._providers import (
34
+ AutoIncrementFilenameProvider,
35
+ AutoIncrementingPathProvider,
36
+ FilenameProvider,
37
+ NameProvider,
38
+ PathInfo,
39
+ PathProvider,
40
+ ShapeProvider,
41
+ StaticFilenameProvider,
42
+ StaticPathProvider,
43
+ UUIDFilenameProvider,
44
+ YMDPathProvider,
45
+ )
46
+ from ._readable import ConfigSignal, HintedSignal, StandardReadable
47
+ from ._signal import (
44
48
  Signal,
45
49
  SignalR,
46
50
  SignalRW,
@@ -56,93 +60,100 @@ from .signal import (
56
60
  soft_signal_rw,
57
61
  wait_for_value,
58
62
  )
59
- from .signal_backend import RuntimeSubsetEnum, SignalBackend, SubsetEnum
60
- from .soft_signal_backend import SoftSignalBackend
61
- from .standard_readable import ConfigSignal, HintedSignal, StandardReadable
62
- from .utils import (
63
+ from ._signal_backend import RuntimeSubsetEnum, SignalBackend, SubsetEnum
64
+ from ._soft_signal_backend import SignalMetadata, SoftSignalBackend
65
+ from ._status import AsyncStatus, WatchableAsyncStatus
66
+ from ._utils import (
63
67
  DEFAULT_TIMEOUT,
64
68
  CalculatableTimeout,
65
69
  CalculateTimeout,
66
- Callback,
67
70
  NotConnected,
68
71
  ReadingValueCallback,
69
72
  T,
73
+ WatcherUpdate,
70
74
  get_dtype,
71
75
  get_unique,
72
- merge_gathered_dicts,
76
+ in_micros,
73
77
  wait_for_connection,
74
78
  )
75
79
 
76
80
  __all__ = [
77
- "AsyncStatus",
78
- "AutoIncrementFilenameProvider",
79
- "AutoIncrementingPathProvider",
80
- "CalculatableTimeout",
81
- "CalculateTimeout",
82
- "Callback",
83
- "ConfigSignal",
84
- "DEFAULT_TIMEOUT",
85
81
  "DetectorControl",
86
82
  "DetectorTrigger",
87
83
  "DetectorWriter",
84
+ "StandardDetector",
85
+ "TriggerInfo",
88
86
  "Device",
89
87
  "DeviceCollector",
90
88
  "DeviceVector",
91
- "FilenameProvider",
92
- "HardwareTriggeredFlyable",
93
- "HintedSignal",
89
+ "all_at_once",
90
+ "get_signal_values",
91
+ "load_device",
92
+ "load_from_yaml",
93
+ "save_device",
94
+ "save_to_yaml",
95
+ "set_signal_values",
96
+ "walk_rw_signals",
97
+ "StandardFlyer",
98
+ "TriggerLogic",
99
+ "HDFDataset",
100
+ "HDFFile",
101
+ "config_ophyd_async_logging",
94
102
  "MockSignalBackend",
103
+ "callback_on_mock_put",
104
+ "get_mock_put",
105
+ "mock_puts_blocked",
106
+ "reset_mock_put_calls",
107
+ "set_mock_put_proceeds",
108
+ "set_mock_value",
109
+ "set_mock_values",
110
+ "AsyncConfigurable",
111
+ "AsyncReadable",
112
+ "AsyncStageable",
113
+ "AutoIncrementFilenameProvider",
114
+ "AutoIncrementingPathProvider",
115
+ "FilenameProvider",
95
116
  "NameProvider",
96
- "NotConnected",
97
117
  "PathInfo",
98
118
  "PathProvider",
99
- "ReadingValueCallback",
100
- "RuntimeSubsetEnum",
101
119
  "ShapeProvider",
120
+ "StaticFilenameProvider",
121
+ "StaticPathProvider",
122
+ "UUIDFilenameProvider",
123
+ "YMDPathProvider",
124
+ "ConfigSignal",
125
+ "HintedSignal",
126
+ "StandardReadable",
102
127
  "Signal",
103
- "SignalBackend",
104
128
  "SignalR",
105
129
  "SignalRW",
106
130
  "SignalW",
107
131
  "SignalX",
108
- "SoftSignalBackend",
109
- "StandardDetector",
110
- "StandardReadable",
111
- "StaticFilenameProvider",
112
- "StaticPathProvider",
113
- "SubsetEnum",
114
- "T",
115
- "TriggerInfo",
116
- "TriggerLogic",
117
- "UUIDFilenameProvider",
118
- "WatchableAsyncStatus",
119
- "YMDPathProvider",
120
- # Lower-cased imports
121
132
  "assert_configuration",
122
133
  "assert_emitted",
123
134
  "assert_reading",
124
135
  "assert_value",
125
- "callback_on_mock_put",
126
- "get_dtype",
127
- "get_mock_put",
128
- "get_signal_values",
129
- "get_unique",
130
- "load_device",
131
- "load_from_yaml",
132
- "merge_gathered_dicts",
133
- "mock_puts_blocked",
134
136
  "observe_value",
135
- "reset_mock_put_calls",
136
- "save_device",
137
- "save_to_yaml",
138
137
  "set_and_wait_for_value",
139
- "set_mock_put_proceeds",
140
- "set_mock_value",
141
- "set_mock_values",
142
- "set_signal_values",
143
138
  "soft_signal_r_and_setter",
144
139
  "soft_signal_rw",
145
- "wait_for_connection",
146
140
  "wait_for_value",
147
- "walk_rw_signals",
141
+ "RuntimeSubsetEnum",
142
+ "SignalBackend",
143
+ "SubsetEnum",
144
+ "SignalMetadata",
145
+ "SoftSignalBackend",
146
+ "AsyncStatus",
147
+ "WatchableAsyncStatus",
148
+ "DEFAULT_TIMEOUT",
149
+ "CalculatableTimeout",
150
+ "CalculateTimeout",
151
+ "NotConnected",
152
+ "ReadingValueCallback",
153
+ "T",
154
+ "WatcherUpdate",
155
+ "get_dtype",
156
+ "get_unique",
157
+ "in_micros",
158
+ "wait_for_connection",
148
159
  ]
@@ -13,7 +13,6 @@ from typing import (
13
13
  List,
14
14
  Optional,
15
15
  Sequence,
16
- TypeVar,
17
16
  )
18
17
 
19
18
  from bluesky.protocols import (
@@ -29,13 +28,10 @@ from bluesky.protocols import (
29
28
  )
30
29
  from pydantic import BaseModel, Field
31
30
 
32
- from ophyd_async.protocols import AsyncConfigurable, AsyncReadable
33
-
34
- from .async_status import AsyncStatus, WatchableAsyncStatus
35
- from .device import Device
36
- from .utils import DEFAULT_TIMEOUT, WatcherUpdate, merge_gathered_dicts
37
-
38
- T = TypeVar("T")
31
+ from ._device import Device
32
+ from ._protocol import AsyncConfigurable, AsyncReadable
33
+ from ._status import AsyncStatus, WatchableAsyncStatus
34
+ from ._utils import DEFAULT_TIMEOUT, T, WatcherUpdate, merge_gathered_dicts
39
35
 
40
36
 
41
37
  class DetectorTrigger(str, Enum):
@@ -19,7 +19,7 @@ from typing import (
19
19
  from bluesky.protocols import HasName
20
20
  from bluesky.run_engine import call_in_bluesky_event_loop
21
21
 
22
- from .utils import DEFAULT_TIMEOUT, NotConnected, wait_for_connection
22
+ from ._utils import DEFAULT_TIMEOUT, NotConnected, wait_for_connection
23
23
 
24
24
 
25
25
  class Device(HasName):
@@ -8,8 +8,8 @@ from bluesky.plan_stubs import abs_set, wait
8
8
  from bluesky.protocols import Location
9
9
  from bluesky.utils import Msg
10
10
 
11
- from .device import Device
12
- from .signal import SignalRW
11
+ from ._device import Device
12
+ from ._signal import SignalRW
13
13
 
14
14
 
15
15
  def ndarray_representer(dumper: yaml.Dumper, array: npt.NDArray[Any]) -> yaml.Node:
@@ -241,7 +241,7 @@ def save_device(
241
241
  Therefore, users should consider the order of device loading and write their
242
242
  own sorter algorithms accordingly.
243
243
 
244
- See :func:`ophyd_async.panda.phase_sorter` for a valid implementation of the
244
+ See :func:`ophyd_async.fastcs.panda.phase_sorter` for a valid implementation of the
245
245
  sorter.
246
246
 
247
247
  Parameters
@@ -1,14 +1,12 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Dict, Generic, Sequence, TypeVar
2
+ from typing import Dict, Generic, Sequence
3
3
 
4
4
  from bluesky.protocols import DataKey, Flyable, Preparable, Reading, Stageable
5
5
 
6
- from .async_status import AsyncStatus
7
- from .device import Device
8
- from .signal import SignalR
9
- from .utils import merge_gathered_dicts
10
-
11
- T = TypeVar("T")
6
+ from ._device import Device
7
+ from ._signal import SignalR
8
+ from ._status import AsyncStatus
9
+ from ._utils import T, merge_gathered_dicts
12
10
 
13
11
 
14
12
  class TriggerLogic(ABC, Generic[T]):
@@ -29,7 +27,7 @@ class TriggerLogic(ABC, Generic[T]):
29
27
  """Stop flying and wait everything to be stopped"""
30
28
 
31
29
 
32
- class HardwareTriggeredFlyable(
30
+ class StandardFlyer(
33
31
  Device,
34
32
  Stageable,
35
33
  Preparable,
@@ -10,11 +10,11 @@ from event_model import (
10
10
  StreamResource,
11
11
  )
12
12
 
13
- from ophyd_async.core import PathInfo
13
+ from ._providers import PathInfo
14
14
 
15
15
 
16
16
  @dataclass
17
- class _HDFDataset:
17
+ class HDFDataset:
18
18
  data_key: str
19
19
  dataset: str
20
20
  shape: Sequence[int] = field(default_factory=tuple)
@@ -26,7 +26,7 @@ class _HDFDataset:
26
26
  SLICE_NAME = "AD_HDF5_SWMR_SLICE"
27
27
 
28
28
 
29
- class _HDFFile:
29
+ class HDFFile:
30
30
  """
31
31
  :param directory_info: Contains information about how to construct a StreamResource
32
32
  :param full_file_name: Absolute path to the file to be written
@@ -37,7 +37,7 @@ class _HDFFile:
37
37
  self,
38
38
  path_info: PathInfo,
39
39
  full_file_name: Path,
40
- datasets: List[_HDFDataset],
40
+ datasets: List[HDFDataset],
41
41
  hostname: str = "localhost",
42
42
  ) -> None:
43
43
  self._last_emitted = 0
@@ -34,9 +34,7 @@ class ColoredFormatterWithDeviceName(colorlog.ColoredFormatter):
34
34
 
35
35
 
36
36
  def _validate_level(level) -> int:
37
- """
38
- Return an int for level comparison
39
- """
37
+ """Return an int for level comparison."""
40
38
  if isinstance(level, int):
41
39
  levelno = level
42
40
  elif isinstance(level, str):
@@ -80,21 +78,31 @@ def config_ophyd_async_logging(
80
78
  level : str or int
81
79
  Python logging level, given as string or corresponding integer.
82
80
  Default is 'WARNING'.
81
+
83
82
  Returns
84
83
  -------
85
84
  handler : logging.Handler
86
85
  The handler, which has already been added to the 'ophyd_async' logger.
86
+
87
87
  Examples
88
88
  --------
89
89
  Log to a file.
90
+
90
91
  config_ophyd_async_logging(file='/tmp/what_is_happening.txt')
92
+
91
93
  Include the date along with the time. (The log messages will always include
92
94
  microseconds, which are configured separately, not as part of 'datefmt'.)
95
+
93
96
  config_ophyd_async_logging(datefmt="%Y-%m-%d %H:%M:%S")
97
+
94
98
  Turn off ANSI color codes.
99
+
95
100
  config_ophyd_async_logging(color=False)
101
+
96
102
  Increase verbosity: show level DEBUG or higher.
103
+
97
104
  config_ophyd_async_logging(level='DEBUG')
105
+
98
106
  """
99
107
  global current_handler
100
108
 
@@ -5,9 +5,9 @@ from unittest.mock import Mock
5
5
 
6
6
  from bluesky.protocols import Descriptor, Reading
7
7
 
8
- from ophyd_async.core.signal_backend import SignalBackend
9
- from ophyd_async.core.soft_signal_backend import SoftSignalBackend
10
- from ophyd_async.core.utils import DEFAULT_TIMEOUT, ReadingValueCallback, T
8
+ from ._signal_backend import SignalBackend
9
+ from ._soft_signal_backend import SoftSignalBackend
10
+ from ._utils import DEFAULT_TIMEOUT, ReadingValueCallback, T
11
11
 
12
12
 
13
13
  class MockSignalBackend(SignalBackend[T]):
@@ -2,10 +2,9 @@ from contextlib import asynccontextmanager, contextmanager
2
2
  from typing import Any, Callable, Iterable
3
3
  from unittest.mock import Mock
4
4
 
5
- from ophyd_async.core.signal import Signal
6
- from ophyd_async.core.utils import T
7
-
8
- from .mock_signal_backend import MockSignalBackend
5
+ from ._mock_signal_backend import MockSignalBackend
6
+ from ._signal import Signal
7
+ from ._utils import T
9
8
 
10
9
 
11
10
  def _get_mock_signal_backend(signal: Signal) -> MockSignalBackend:
@@ -14,7 +14,7 @@ from typing import (
14
14
  from bluesky.protocols import DataKey, HasName, Reading
15
15
 
16
16
  if TYPE_CHECKING:
17
- from ophyd_async.core.async_status import AsyncStatus
17
+ from ._status import AsyncStatus
18
18
 
19
19
 
20
20
  @runtime_checkable
@@ -1,24 +1,14 @@
1
1
  import warnings
2
2
  from contextlib import contextmanager
3
- from typing import (
4
- Callable,
5
- Dict,
6
- Generator,
7
- Optional,
8
- Sequence,
9
- Tuple,
10
- Type,
11
- Union,
12
- )
3
+ from typing import Callable, Dict, Generator, Optional, Sequence, Tuple, Type, Union
13
4
 
14
5
  from bluesky.protocols import DataKey, HasHints, Hints, Reading
15
6
 
16
- from ophyd_async.protocols import AsyncConfigurable, AsyncReadable, AsyncStageable
17
-
18
- from .async_status import AsyncStatus
19
- from .device import Device, DeviceVector
20
- from .signal import SignalR
21
- from .utils import merge_gathered_dicts
7
+ from ._device import Device, DeviceVector
8
+ from ._protocol import AsyncConfigurable, AsyncReadable, AsyncStageable
9
+ from ._signal import SignalR
10
+ from ._status import AsyncStatus
11
+ from ._utils import merge_gathered_dicts
22
12
 
23
13
  ReadableChild = Union[AsyncReadable, AsyncConfigurable, AsyncStageable, HasHints]
24
14
  ReadableChildWrapper = Union[
@@ -25,14 +25,13 @@ from bluesky.protocols import (
25
25
  Subscribable,
26
26
  )
27
27
 
28
- from ophyd_async.core.mock_signal_backend import MockSignalBackend
29
- from ophyd_async.protocols import AsyncConfigurable, AsyncReadable, AsyncStageable
30
-
31
- from .async_status import AsyncStatus
32
- from .device import Device
33
- from .signal_backend import SignalBackend
34
- from .soft_signal_backend import SignalMetadata, SoftSignalBackend
35
- from .utils import DEFAULT_TIMEOUT, CalculatableTimeout, CalculateTimeout, Callback, T
28
+ from ._device import Device
29
+ from ._mock_signal_backend import MockSignalBackend
30
+ from ._protocol import AsyncConfigurable, AsyncReadable, AsyncStageable
31
+ from ._signal_backend import SignalBackend
32
+ from ._soft_signal_backend import SignalMetadata, SoftSignalBackend
33
+ from ._status import AsyncStatus
34
+ from ._utils import DEFAULT_TIMEOUT, CalculatableTimeout, CalculateTimeout, Callback, T
36
35
 
37
36
 
38
37
  def _add_timeout(func):
@@ -1,17 +1,8 @@
1
1
  from abc import abstractmethod
2
- from typing import (
3
- TYPE_CHECKING,
4
- ClassVar,
5
- Generic,
6
- Literal,
7
- Optional,
8
- Tuple,
9
- Type,
10
- )
11
-
12
- from bluesky.protocols import DataKey, Reading
13
-
14
- from .utils import DEFAULT_TIMEOUT, ReadingValueCallback, T
2
+ from typing import TYPE_CHECKING, ClassVar, Generic, Literal, Optional, Tuple, Type
3
+
4
+ from ._protocol import DataKey, Reading
5
+ from ._utils import DEFAULT_TIMEOUT, ReadingValueCallback, T
15
6
 
16
7
 
17
8
  class SignalBackend(Generic[T]):
@@ -4,23 +4,14 @@ import inspect
4
4
  import time
5
5
  from collections import abc
6
6
  from enum import Enum
7
- from typing import (
8
- Dict,
9
- Generic,
10
- Optional,
11
- Tuple,
12
- Type,
13
- Union,
14
- cast,
15
- get_origin,
16
- )
7
+ from typing import Dict, Generic, Optional, Tuple, Type, Union, cast, get_origin
17
8
 
18
9
  import numpy as np
19
10
  from bluesky.protocols import DataKey, Dtype, Reading
20
11
  from typing_extensions import TypedDict
21
12
 
22
- from .signal_backend import RuntimeSubsetEnum, SignalBackend
23
- from .utils import DEFAULT_TIMEOUT, ReadingValueCallback, T, get_dtype
13
+ from ._signal_backend import RuntimeSubsetEnum, SignalBackend
14
+ from ._utils import DEFAULT_TIMEOUT, ReadingValueCallback, T, get_dtype
24
15
 
25
16
  primitive_dtypes: Dict[type, Dtype] = {
26
17
  str: "string",
@@ -4,20 +4,12 @@ import asyncio
4
4
  import functools
5
5
  import time
6
6
  from dataclasses import asdict, replace
7
- from typing import (
8
- AsyncIterator,
9
- Awaitable,
10
- Callable,
11
- Generic,
12
- Type,
13
- TypeVar,
14
- cast,
15
- )
7
+ from typing import AsyncIterator, Awaitable, Callable, Generic, Type, TypeVar, cast
16
8
 
17
9
  from bluesky.protocols import Status
18
10
 
19
- from ..protocols import Watcher
20
- from .utils import Callback, P, T, WatcherUpdate
11
+ from ._protocol import Watcher
12
+ from ._utils import Callback, P, T, WatcherUpdate
21
13
 
22
14
  AS = TypeVar("AS", bound="AsyncStatus")
23
15
  WAS = TypeVar("WAS", bound="WatchableAsyncStatus")
@@ -0,0 +1,9 @@
1
+ from ._aravis import AravisDetector
2
+ from ._aravis_controller import AravisController
3
+ from ._aravis_io import AravisDriverIO
4
+
5
+ __all__ = [
6
+ "AravisDetector",
7
+ "AravisController",
8
+ "AravisDriverIO",
9
+ ]
@@ -3,12 +3,10 @@ from typing import get_args
3
3
  from bluesky.protocols import HasHints, Hints
4
4
 
5
5
  from ophyd_async.core import PathProvider, StandardDetector
6
- from ophyd_async.epics.areadetector.controllers.aravis_controller import (
7
- AravisController,
8
- )
9
- from ophyd_async.epics.areadetector.drivers import ADBaseShapeProvider
10
- from ophyd_async.epics.areadetector.drivers.aravis_driver import AravisDriver
11
- from ophyd_async.epics.areadetector.writers import HDFWriter, NDFileHDF
6
+ from ophyd_async.epics import adcore
7
+
8
+ from ._aravis_controller import AravisController
9
+ from ._aravis_io import AravisDriverIO
12
10
 
13
11
 
14
12
  class AravisDetector(StandardDetector, HasHints):
@@ -19,7 +17,7 @@ class AravisDetector(StandardDetector, HasHints):
19
17
  """
20
18
 
21
19
  _controller: AravisController
22
- _writer: HDFWriter
20
+ _writer: adcore.ADHDFWriter
23
21
 
24
22
  def __init__(
25
23
  self,
@@ -30,16 +28,16 @@ class AravisDetector(StandardDetector, HasHints):
30
28
  name="",
31
29
  gpio_number: AravisController.GPIO_NUMBER = 1,
32
30
  ):
33
- self.drv = AravisDriver(prefix + drv_suffix)
34
- self.hdf = NDFileHDF(prefix + hdf_suffix)
31
+ self.drv = AravisDriverIO(prefix + drv_suffix)
32
+ self.hdf = adcore.NDFileHDFIO(prefix + hdf_suffix)
35
33
 
36
34
  super().__init__(
37
35
  AravisController(self.drv, gpio_number=gpio_number),
38
- HDFWriter(
36
+ adcore.ADHDFWriter(
39
37
  self.hdf,
40
38
  path_provider,
41
39
  lambda: self.name,
42
- ADBaseShapeProvider(self.drv),
40
+ adcore.ADBaseShapeProvider(self.drv),
43
41
  ),
44
42
  config_sigs=(self.drv.acquire_time,),
45
43
  name=name,
@@ -7,12 +7,9 @@ from ophyd_async.core import (
7
7
  DetectorTrigger,
8
8
  set_and_wait_for_value,
9
9
  )
10
- from ophyd_async.epics.areadetector.drivers.aravis_driver import (
11
- AravisDriver,
12
- AravisTriggerMode,
13
- AravisTriggerSource,
14
- )
15
- from ophyd_async.epics.areadetector.utils import ImageMode, stop_busy_record
10
+ from ophyd_async.epics import adcore
11
+
12
+ from ._aravis_io import AravisDriverIO, AravisTriggerMode, AravisTriggerSource
16
13
 
17
14
  # The deadtime of an ADaravis controller varies depending on the exact model of camera.
18
15
  # Ideally we would maximize performance by dynamically retrieving the deadtime at
@@ -23,7 +20,7 @@ _HIGHEST_POSSIBLE_DEADTIME = 1961e-6
23
20
  class AravisController(DetectorControl):
24
21
  GPIO_NUMBER = Literal[1, 2, 3, 4]
25
22
 
26
- def __init__(self, driver: AravisDriver, gpio_number: GPIO_NUMBER) -> None:
23
+ def __init__(self, driver: AravisDriverIO, gpio_number: GPIO_NUMBER) -> None:
27
24
  self._drv = driver
28
25
  self.gpio_number = gpio_number
29
26
 
@@ -37,9 +34,9 @@ class AravisController(DetectorControl):
37
34
  exposure: Optional[float] = None,
38
35
  ) -> AsyncStatus:
39
36
  if num == 0:
40
- image_mode = ImageMode.continuous
37
+ image_mode = adcore.ImageMode.continuous
41
38
  else:
42
- image_mode = ImageMode.multiple
39
+ image_mode = adcore.ImageMode.multiple
43
40
  if exposure is not None:
44
41
  await self._drv.acquire_time.set(exposure)
45
42
 
@@ -76,4 +73,4 @@ class AravisController(DetectorControl):
76
73
  return (AravisTriggerMode.on, f"Line{self.gpio_number}")
77
74
 
78
75
  async def disarm(self):
79
- await stop_busy_record(self._drv.acquire, False, timeout=1)
76
+ await adcore.stop_busy_record(self._drv.acquire, False, timeout=1)