ophyd-async 0.9.0a2__py3-none-any.whl → 0.10.0a1__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 (151) hide show
  1. ophyd_async/__init__.py +5 -8
  2. ophyd_async/_docs_parser.py +12 -0
  3. ophyd_async/_version.py +9 -4
  4. ophyd_async/core/__init__.py +97 -62
  5. ophyd_async/core/_derived_signal.py +271 -0
  6. ophyd_async/core/_derived_signal_backend.py +300 -0
  7. ophyd_async/core/_detector.py +106 -125
  8. ophyd_async/core/_device.py +69 -63
  9. ophyd_async/core/_device_filler.py +65 -1
  10. ophyd_async/core/_flyer.py +14 -5
  11. ophyd_async/core/_hdf_dataset.py +29 -22
  12. ophyd_async/core/_log.py +14 -23
  13. ophyd_async/core/_mock_signal_backend.py +11 -3
  14. ophyd_async/core/_protocol.py +65 -45
  15. ophyd_async/core/_providers.py +28 -9
  16. ophyd_async/core/_readable.py +44 -35
  17. ophyd_async/core/_settings.py +36 -27
  18. ophyd_async/core/_signal.py +262 -170
  19. ophyd_async/core/_signal_backend.py +56 -13
  20. ophyd_async/core/_soft_signal_backend.py +16 -11
  21. ophyd_async/core/_status.py +72 -24
  22. ophyd_async/core/_table.py +37 -8
  23. ophyd_async/core/_utils.py +96 -49
  24. ophyd_async/core/_yaml_settings.py +2 -0
  25. ophyd_async/epics/__init__.py +1 -0
  26. ophyd_async/epics/adandor/_andor.py +2 -2
  27. ophyd_async/epics/adandor/_andor_controller.py +4 -2
  28. ophyd_async/epics/adandor/_andor_io.py +2 -4
  29. ophyd_async/epics/adaravis/__init__.py +5 -0
  30. ophyd_async/epics/adaravis/_aravis.py +4 -8
  31. ophyd_async/epics/adaravis/_aravis_controller.py +20 -43
  32. ophyd_async/epics/adaravis/_aravis_io.py +13 -28
  33. ophyd_async/epics/adcore/__init__.py +23 -8
  34. ophyd_async/epics/adcore/_core_detector.py +42 -2
  35. ophyd_async/epics/adcore/_core_io.py +124 -99
  36. ophyd_async/epics/adcore/_core_logic.py +106 -27
  37. ophyd_async/epics/adcore/_core_writer.py +12 -8
  38. ophyd_async/epics/adcore/_hdf_writer.py +21 -38
  39. ophyd_async/epics/adcore/_single_trigger.py +2 -2
  40. ophyd_async/epics/adcore/_utils.py +2 -2
  41. ophyd_async/epics/adkinetix/__init__.py +2 -1
  42. ophyd_async/epics/adkinetix/_kinetix.py +3 -3
  43. ophyd_async/epics/adkinetix/_kinetix_controller.py +4 -2
  44. ophyd_async/epics/adkinetix/_kinetix_io.py +12 -13
  45. ophyd_async/epics/adpilatus/__init__.py +5 -0
  46. ophyd_async/epics/adpilatus/_pilatus.py +1 -1
  47. ophyd_async/epics/adpilatus/_pilatus_controller.py +5 -24
  48. ophyd_async/epics/adpilatus/_pilatus_io.py +11 -9
  49. ophyd_async/epics/adsimdetector/__init__.py +8 -1
  50. ophyd_async/epics/adsimdetector/_sim.py +4 -14
  51. ophyd_async/epics/adsimdetector/_sim_controller.py +17 -0
  52. ophyd_async/epics/adsimdetector/_sim_io.py +10 -0
  53. ophyd_async/epics/advimba/__init__.py +10 -1
  54. ophyd_async/epics/advimba/_vimba.py +3 -2
  55. ophyd_async/epics/advimba/_vimba_controller.py +4 -2
  56. ophyd_async/epics/advimba/_vimba_io.py +23 -28
  57. ophyd_async/epics/core/_aioca.py +35 -16
  58. ophyd_async/epics/core/_epics_connector.py +4 -0
  59. ophyd_async/epics/core/_epics_device.py +2 -0
  60. ophyd_async/epics/core/_p4p.py +10 -2
  61. ophyd_async/epics/core/_pvi_connector.py +65 -8
  62. ophyd_async/epics/core/_signal.py +51 -51
  63. ophyd_async/epics/core/_util.py +4 -4
  64. ophyd_async/epics/demo/__init__.py +16 -0
  65. ophyd_async/epics/demo/__main__.py +31 -0
  66. ophyd_async/epics/demo/_ioc.py +32 -0
  67. ophyd_async/epics/demo/_motor.py +82 -0
  68. ophyd_async/epics/demo/_point_detector.py +42 -0
  69. ophyd_async/epics/demo/_point_detector_channel.py +22 -0
  70. ophyd_async/epics/demo/_stage.py +15 -0
  71. ophyd_async/epics/{sim/mover.db → demo/motor.db} +2 -1
  72. ophyd_async/epics/demo/point_detector.db +59 -0
  73. ophyd_async/epics/demo/point_detector_channel.db +21 -0
  74. ophyd_async/epics/eiger/_eiger.py +1 -3
  75. ophyd_async/epics/eiger/_eiger_controller.py +11 -4
  76. ophyd_async/epics/eiger/_eiger_io.py +2 -0
  77. ophyd_async/epics/eiger/_odin_io.py +1 -2
  78. ophyd_async/epics/motor.py +65 -28
  79. ophyd_async/epics/signal.py +4 -1
  80. ophyd_async/epics/testing/_example_ioc.py +21 -9
  81. ophyd_async/epics/testing/_utils.py +3 -0
  82. ophyd_async/epics/testing/test_records.db +8 -0
  83. ophyd_async/epics/testing/test_records_pva.db +17 -16
  84. ophyd_async/fastcs/__init__.py +1 -0
  85. ophyd_async/fastcs/core.py +6 -0
  86. ophyd_async/fastcs/odin/__init__.py +1 -0
  87. ophyd_async/fastcs/panda/__init__.py +8 -6
  88. ophyd_async/fastcs/panda/_block.py +29 -9
  89. ophyd_async/fastcs/panda/_control.py +5 -0
  90. ophyd_async/fastcs/panda/_hdf_panda.py +2 -0
  91. ophyd_async/fastcs/panda/_table.py +9 -6
  92. ophyd_async/fastcs/panda/_trigger.py +23 -9
  93. ophyd_async/fastcs/panda/_writer.py +27 -30
  94. ophyd_async/plan_stubs/__init__.py +2 -0
  95. ophyd_async/plan_stubs/_ensure_connected.py +1 -0
  96. ophyd_async/plan_stubs/_fly.py +2 -4
  97. ophyd_async/plan_stubs/_nd_attributes.py +2 -0
  98. ophyd_async/plan_stubs/_panda.py +1 -0
  99. ophyd_async/plan_stubs/_settings.py +43 -16
  100. ophyd_async/plan_stubs/_utils.py +3 -0
  101. ophyd_async/plan_stubs/_wait_for_awaitable.py +1 -1
  102. ophyd_async/sim/__init__.py +24 -14
  103. ophyd_async/sim/__main__.py +43 -0
  104. ophyd_async/sim/_blob_detector.py +33 -0
  105. ophyd_async/sim/_blob_detector_controller.py +48 -0
  106. ophyd_async/sim/_blob_detector_writer.py +105 -0
  107. ophyd_async/sim/_mirror_horizontal.py +46 -0
  108. ophyd_async/sim/_mirror_vertical.py +74 -0
  109. ophyd_async/sim/_motor.py +233 -0
  110. ophyd_async/sim/_pattern_generator.py +124 -0
  111. ophyd_async/sim/_point_detector.py +86 -0
  112. ophyd_async/sim/_stage.py +19 -0
  113. ophyd_async/tango/__init__.py +1 -0
  114. ophyd_async/tango/core/__init__.py +6 -1
  115. ophyd_async/tango/core/_base_device.py +41 -33
  116. ophyd_async/tango/core/_converters.py +81 -0
  117. ophyd_async/tango/core/_signal.py +18 -32
  118. ophyd_async/tango/core/_tango_readable.py +2 -19
  119. ophyd_async/tango/core/_tango_transport.py +136 -60
  120. ophyd_async/tango/core/_utils.py +47 -0
  121. ophyd_async/tango/{sim → demo}/_counter.py +2 -0
  122. ophyd_async/tango/{sim → demo}/_detector.py +2 -0
  123. ophyd_async/tango/{sim → demo}/_mover.py +5 -4
  124. ophyd_async/tango/{sim → demo}/_tango/_servers.py +4 -0
  125. ophyd_async/tango/testing/__init__.py +6 -0
  126. ophyd_async/tango/testing/_one_of_everything.py +200 -0
  127. ophyd_async/testing/__init__.py +29 -7
  128. ophyd_async/testing/_assert.py +137 -81
  129. ophyd_async/testing/_mock_signal_utils.py +56 -70
  130. ophyd_async/testing/_one_of_everything.py +41 -21
  131. ophyd_async/testing/_single_derived.py +87 -0
  132. ophyd_async/testing/_utils.py +3 -0
  133. {ophyd_async-0.9.0a2.dist-info → ophyd_async-0.10.0a1.dist-info}/METADATA +25 -26
  134. ophyd_async-0.10.0a1.dist-info/RECORD +149 -0
  135. {ophyd_async-0.9.0a2.dist-info → ophyd_async-0.10.0a1.dist-info}/WHEEL +1 -1
  136. ophyd_async/epics/sim/__init__.py +0 -54
  137. ophyd_async/epics/sim/_ioc.py +0 -29
  138. ophyd_async/epics/sim/_mover.py +0 -101
  139. ophyd_async/epics/sim/_sensor.py +0 -37
  140. ophyd_async/epics/sim/sensor.db +0 -19
  141. ophyd_async/sim/_pattern_detector/__init__.py +0 -13
  142. ophyd_async/sim/_pattern_detector/_pattern_detector.py +0 -42
  143. ophyd_async/sim/_pattern_detector/_pattern_detector_controller.py +0 -69
  144. ophyd_async/sim/_pattern_detector/_pattern_detector_writer.py +0 -41
  145. ophyd_async/sim/_pattern_detector/_pattern_generator.py +0 -214
  146. ophyd_async/sim/_sim_motor.py +0 -107
  147. ophyd_async-0.9.0a2.dist-info/RECORD +0 -129
  148. /ophyd_async/tango/{sim → demo}/__init__.py +0 -0
  149. /ophyd_async/tango/{sim → demo}/_tango/__init__.py +0 -0
  150. {ophyd_async-0.9.0a2.dist-info → ophyd_async-0.10.0a1.dist-info/licenses}/LICENSE +0 -0
  151. {ophyd_async-0.9.0a2.dist-info → ophyd_async-0.10.0a1.dist-info}/top_level.txt +0 -0
@@ -1,107 +0,0 @@
1
- import asyncio
2
- import contextlib
3
- import time
4
-
5
- import numpy as np
6
- from bluesky.protocols import Movable, Stoppable
7
-
8
- from ophyd_async.core import (
9
- AsyncStatus,
10
- StandardReadable,
11
- WatchableAsyncStatus,
12
- WatcherUpdate,
13
- observe_value,
14
- soft_signal_r_and_setter,
15
- soft_signal_rw,
16
- )
17
- from ophyd_async.core import StandardReadableFormat as Format
18
-
19
-
20
- class SimMotor(StandardReadable, Movable, Stoppable):
21
- def __init__(self, name="", instant=True) -> None:
22
- """
23
- Simulated motor device
24
-
25
- args:
26
- - prefix: str: Signal names prefix
27
- - name: str: name of device
28
- - instant: bool: whether to move instantly, or with a delay
29
- """
30
- # Define some signals
31
- with self.add_children_as_readables(Format.HINTED_SIGNAL):
32
- self.user_readback, self._user_readback_set = soft_signal_r_and_setter(
33
- float, 0
34
- )
35
- with self.add_children_as_readables(Format.CONFIG_SIGNAL):
36
- self.velocity = soft_signal_rw(float, 0 if instant else 1.0)
37
- self.units = soft_signal_rw(str, "mm")
38
- self.user_setpoint = soft_signal_rw(float, 0)
39
-
40
- # Whether set() should complete successfully or not
41
- self._set_success = True
42
- self._move_status: AsyncStatus | None = None
43
-
44
- super().__init__(name=name)
45
-
46
- async def _move(self, old_position: float, new_position: float, move_time: float):
47
- start = time.monotonic()
48
- # Make an array of relative update times at 10Hz intervals
49
- update_times = np.arange(0.1, move_time, 0.1)
50
- # With the end position appended
51
- update_times = np.concatenate((update_times, [move_time]))
52
- # Interpolate the [old, new] position array with those update times
53
- new_positions = np.interp(
54
- update_times, [0, move_time], [old_position, new_position]
55
- )
56
- for update_time, new_position in zip(update_times, new_positions, strict=True):
57
- # Calculate how long to wait to get there
58
- relative_time = time.monotonic() - start
59
- await asyncio.sleep(update_time - relative_time)
60
- # Update the readback position
61
- self._user_readback_set(new_position)
62
-
63
- @WatchableAsyncStatus.wrap
64
- async def set(self, value: float):
65
- """
66
- Asynchronously move the motor to a new position.
67
- """
68
- new_position = value
69
- # Make sure any existing move tasks are stopped
70
- await self.stop()
71
- old_position, units, velocity = await asyncio.gather(
72
- self.user_setpoint.get_value(),
73
- self.units.get_value(),
74
- self.velocity.get_value(),
75
- )
76
- # If zero velocity, do instant move
77
- if velocity == 0:
78
- self._user_readback_set(new_position)
79
- else:
80
- move_time = abs(new_position - old_position) / velocity
81
- self._move_status = AsyncStatus(
82
- self._move(old_position, new_position, move_time)
83
- )
84
- # If stop is called then this will raise a CancelledError, ignore it
85
- with contextlib.suppress(asyncio.CancelledError):
86
- async for current_position in observe_value(
87
- self.user_readback, done_status=self._move_status
88
- ):
89
- yield WatcherUpdate(
90
- current=current_position,
91
- initial=old_position,
92
- target=new_position,
93
- name=self.name,
94
- unit=units,
95
- )
96
- if not self._set_success:
97
- raise RuntimeError("Motor was stopped")
98
-
99
- async def stop(self, success=True):
100
- """
101
- Stop the motor if it is moving
102
- """
103
- self._set_success = success
104
- if self._move_status:
105
- self._move_status.task.cancel()
106
- self._move_status = None
107
- await self.user_setpoint.set(await self.user_readback.get_value())
@@ -1,129 +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=WoGvWoWzvgTP0yQKepGyKWmDn7k5WHXOtFan55CTGSc,413
4
- ophyd_async/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- ophyd_async/core/__init__.py,sha256=jNna-9AJLt9ZLpkjnNpE1im8Kv_IT5t4ftjsRMrVcgI,3739
6
- ophyd_async/core/_detector.py,sha256=ZpoBmTmPqrOQZ8Y8zyMmsHz78VJVeAcZU7AHrdQf8lM,15241
7
- ophyd_async/core/_device.py,sha256=OZlz4xeVvqM3l85OBXYpcv47TTe6HiahDLu4LNKaw9o,13731
8
- ophyd_async/core/_device_filler.py,sha256=8pxE-TjWM4fyidE_GAZNw9tEaZKYV-sFTBuQUzJ_sfk,11796
9
- ophyd_async/core/_flyer.py,sha256=PmVikIGaw_HcU9_M6rfQOclgNt7GQ7qNaZX_AoI9WFg,1713
10
- ophyd_async/core/_hdf_dataset.py,sha256=wW_OL8OYLGOsE01ny3hGaapOrxK7BzhWTxKgz8CIXK0,2492
11
- ophyd_async/core/_log.py,sha256=UbL9AtnHVUg7r9LofzgmuKEtBESy03usCp7ejmDltG4,3679
12
- ophyd_async/core/_mock_signal_backend.py,sha256=8Upnz6QrSigeDXemjZ-jB4sV2yIPUzid-6GOfTZ-7Io,2805
13
- ophyd_async/core/_protocol.py,sha256=0pwF_EUu7LZjr-Hg6LKy6B1-5y4gpsU81JsPiNI5g_s,3317
14
- ophyd_async/core/_providers.py,sha256=ff9ZT5-PZ6rhTTdE-q8w9l_k9DuZqLWLebsKZLeJ0Ds,7112
15
- ophyd_async/core/_readable.py,sha256=DNst8B6Yai2A4TLjn3TMUzhBz6cS7MqT6-hPZG1IXns,10938
16
- ophyd_async/core/_settings.py,sha256=RGr9MqiF9ifKBBVIAXPLvkHzrJ5qGqFW5Hr_GL1WzdY,3707
17
- ophyd_async/core/_signal.py,sha256=uPv4kKD_SOggRTdHNrQusGU2nJdWTJenRuLsPdEgE-4,21856
18
- ophyd_async/core/_signal_backend.py,sha256=LweJnF3n5cucpBX8XV20Pbh0k5pBnXhMg3GQeTwK9Ns,5252
19
- ophyd_async/core/_soft_signal_backend.py,sha256=IJp2Teu8WGRG9To6PBmkp_sVOlxh_vfLbJYkKop9zZg,5959
20
- ophyd_async/core/_status.py,sha256=OUKhblRQ4KU5PDsWbpvYduM7G60JMk1NqeV4eqyPtKc,5131
21
- ophyd_async/core/_table.py,sha256=BSlLrgYA2rAeJl5J1bdZvGDB-YFqXUIUMiAtCWcy0xw,5897
22
- ophyd_async/core/_utils.py,sha256=EIgbR5weOSBoRd75mxGZqWHx2qj8uPbIl5NuE9_mKSo,9925
23
- ophyd_async/core/_yaml_settings.py,sha256=nfnebGXrnLKJgzd5D9In3ZPi2hATsgrehjrR0XRHTsk,2022
24
- ophyd_async/epics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- ophyd_async/epics/motor.py,sha256=Sz3bxIKxxlCd8r-25eZgF81QvoetKPY0At8d4h0yi7Q,9352
26
- ophyd_async/epics/signal.py,sha256=hJCGIIWjRVhjEHkeL1I_oPEaaN7dDFKmm7G7ZmgoTYQ,219
27
- ophyd_async/epics/adandor/__init__.py,sha256=qsBoZdljSaqM-kJSvTf0uq5TNwXAih9lP3yOZpKxOFQ,204
28
- ophyd_async/epics/adandor/_andor.py,sha256=lrTyYTBjs_4f4K_Te0Wwt9je2OMofShpeZt52xtM2ho,1285
29
- ophyd_async/epics/adandor/_andor_controller.py,sha256=MYnpi1-yGIW1SG9oOEL08o8dbr2PiZilHcGgEVYHfzM,1712
30
- ophyd_async/epics/adandor/_andor_io.py,sha256=taRJXTISVG_yzFxKr78Cfxv-wOdGxp-pjP15xM2Pu04,1029
31
- ophyd_async/epics/adaravis/__init__.py,sha256=B7xOTKud0TIZRQ-gI_BpX1piRW2jCdAspMqAgBUXKVc,299
32
- ophyd_async/epics/adaravis/_aravis.py,sha256=WUCS5JMe-eSBSmw_LyLtz3x8FYgKkipJ0pVjRF5OF5w,1449
33
- ophyd_async/epics/adaravis/_aravis_controller.py,sha256=8yMnZtvcfEIoq6iv4jrdPxuLPyjHbijIzjoYri0qj6o,2579
34
- ophyd_async/epics/adaravis/_aravis_io.py,sha256=_RViDrTDaTutitRbHlJ5VV23X70lvfhyY3DTzgXy6yI,1603
35
- ophyd_async/epics/adcore/__init__.py,sha256=bB7V1pdNpFH1pkCsym6jYtHchvqMYXWisbRrcmHH7Ks,1217
36
- ophyd_async/epics/adcore/_core_detector.py,sha256=-c5FDeMTJWniogtiyA9-8Yu67e7UgZjC7QBj8iwbU5U,1258
37
- ophyd_async/epics/adcore/_core_io.py,sha256=VNlpOL7cN8hExk_cIeushgDrUwDz33gm0K4iSpNB15w,6956
38
- ophyd_async/epics/adcore/_core_logic.py,sha256=wevdDKYcoXiwAxchb__KjAPNtJe2g8Z6k9OzzGzP9p8,4356
39
- ophyd_async/epics/adcore/_core_writer.py,sha256=JuEe4INxHW5SC37orhh8Q0sbI3RUdX1kaa0f2536Gr4,8010
40
- ophyd_async/epics/adcore/_hdf_writer.py,sha256=tWOgbY4a9afD5QhyhR4lfzdJm1qCPFU2UpJ-OYNRPRg,6000
41
- ophyd_async/epics/adcore/_jpeg_writer.py,sha256=DFv3YdqKjNq0QCb-bLBlxTaGzmHSvdU_rLB29beI46w,748
42
- ophyd_async/epics/adcore/_single_trigger.py,sha256=OGgZCQnicHr6IZ69nHCwzlA4YLUo3O-Zkgl6fQTZ0eg,1271
43
- ophyd_async/epics/adcore/_tiff_writer.py,sha256=5WXdW0thL9nv2jSMSqF-bMGQjztQZEnx3enY-nGsLiY,749
44
- ophyd_async/epics/adcore/_utils.py,sha256=EDHbtldcae701sovFmhBPr_uKo7Hh34-AHq2sk7aL_U,3948
45
- ophyd_async/epics/adkinetix/__init__.py,sha256=cvnwOqbvEENf70eFp6bPGwayP0u14UTIhs3WiZEcF_Q,262
46
- ophyd_async/epics/adkinetix/_kinetix.py,sha256=uTbkeDyveCayrtrLNw2ENmCZ7XQ8wwLLeUSdu76AmSE,1305
47
- ophyd_async/epics/adkinetix/_kinetix_controller.py,sha256=PjZ6fWvzGdh0zBa8re55vmHElI-d3LTjKldYpCkMYyY,1438
48
- ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=3zqfmoTCTkhd7kiqD4wiYrnu5EADzzegaCRJFBaZuVk,910
49
- ophyd_async/epics/adpilatus/__init__.py,sha256=UKpd8qRRbFFhCo8fgUwPHqIobNVA-i_3fyvZoac_Ms0,308
50
- ophyd_async/epics/adpilatus/_pilatus.py,sha256=0iA9Yrm-qJ73CC0W_y8F7tpVaaJL-1KHVlU-4kU59a8,1510
51
- ophyd_async/epics/adpilatus/_pilatus_controller.py,sha256=Udq3Z8Gom4HgKUFXBMvWFTFoc4JLyp89YfvlA9N9q-8,3701
52
- ophyd_async/epics/adpilatus/_pilatus_io.py,sha256=Jznmhwidmr_YaUdWXazWFYNQq4wn_sI1dXeo9Zhyf0M,738
53
- ophyd_async/epics/adsimdetector/__init__.py,sha256=2TLBnXxEb1Ik1rFA3voROgbmnPPn_6q_8xLxwykdZPs,132
54
- ophyd_async/epics/adsimdetector/_sim.py,sha256=-aPpU7xlT4ykgHzpFVN_LKgBbU6ptAdaMX1TCJd__h0,1425
55
- ophyd_async/epics/advimba/__init__.py,sha256=l0ElP3Zyff_pzrTRdj9oUO9xigCfmzo3pMVjstlVsJY,320
56
- ophyd_async/epics/advimba/_vimba.py,sha256=1ccSakYY4J-5dSw8Ttzvf4HzRk0hSrpOjAgkMfHGHOU,1201
57
- ophyd_async/epics/advimba/_vimba_controller.py,sha256=NW_QNxTTWjiGmZNZY_nNcdZlOCfgOhZ3U0GcQzAZw8g,1937
58
- ophyd_async/epics/advimba/_vimba_io.py,sha256=il-SZSiApx5OUQCYHUGoa0Ywu9pY01DSDvOttU15khQ,1864
59
- ophyd_async/epics/core/__init__.py,sha256=8NoQxEEc2Ny_L9nrD2fnGSf_2gJr1wCR1LwUeLNcIJo,588
60
- ophyd_async/epics/core/_aioca.py,sha256=Fg2g9OUWcS2ebFt3TtLET7Yr44RRLbhpRk0t6WENyiI,12046
61
- ophyd_async/epics/core/_epics_connector.py,sha256=n1FlQYui8HdobPxaX3VAflrzi2UT7QCe3cFasssmVLw,1789
62
- ophyd_async/epics/core/_epics_device.py,sha256=kshNiKQhevsL2OZXa-r093L_sQGvGK_0J4PWVLg3Eqw,437
63
- ophyd_async/epics/core/_p4p.py,sha256=axxV8iKpFJl9fNEW54IkXz32ki6_IOcilwnxQFnb0Vo,16169
64
- ophyd_async/epics/core/_pvi_connector.py,sha256=wi9PiiWtWWE8mlHAfgDd6zKHvXn35E5DaqDvk4k5KD0,3755
65
- ophyd_async/epics/core/_signal.py,sha256=0_g2dd60tUl1inEY9hUQvWrEka4uvNW8hylrhnB76Q8,4842
66
- ophyd_async/epics/core/_util.py,sha256=kSTjrVZQA1mb2RbTaiVgBKleDMJtRdC2vRcQMgHwoRg,2062
67
- ophyd_async/epics/eiger/__init__.py,sha256=b3Tt4pVLk23Giyj50R4e94d2MxWDDmNHWhWwNq2jlaw,221
68
- ophyd_async/epics/eiger/_eiger.py,sha256=hkMsjVwrzDcE1u5BRIQtn8RSR2e0b1JMpDvuIONoNaI,1133
69
- ophyd_async/epics/eiger/_eiger_controller.py,sha256=ZJGTwSjQam15mtgG4GQ9nPNv_cA-lSLMFgTMkTK79Gg,2343
70
- ophyd_async/epics/eiger/_eiger_io.py,sha256=qTBT0SebqzlcNXtLQywSoTmAbVC2wl4i0Wn2fbcEISM,1806
71
- ophyd_async/epics/eiger/_odin_io.py,sha256=3E33ysvMlf8t0bbSVPnzUrvPgUwA7491uoViWpivpf8,4153
72
- ophyd_async/epics/sim/__init__.py,sha256=wCrgemEo-zR4TTvaqCKnQ-AIUHorotV5jhftbq1tXz0,1368
73
- ophyd_async/epics/sim/_ioc.py,sha256=izVXHEpsk2bRF67EdUoghsGL-PxGuKtSuaJJSS-ySpo,926
74
- ophyd_async/epics/sim/_mover.py,sha256=LEemFN_S07c9aeTSschA5k3fFXLXBOOIbpOJn9HRiQY,3831
75
- ophyd_async/epics/sim/_sensor.py,sha256=VMxsjLV_V3LeLqnSqIsDHVJgpu5SmASV-rlzok_lLws,1040
76
- ophyd_async/epics/sim/mover.db,sha256=RFz0rxZue689Wh1sWTZwWeFMUrH04ttPq2u5xJH_Fp4,998
77
- ophyd_async/epics/sim/sensor.db,sha256=AstyG9E0R4KZBz2FZQSrV_QlrfLoU6M2cvYc15Lf548,553
78
- ophyd_async/epics/testing/__init__.py,sha256=aTIv4D2DYrpnGco5RQF8QuLG1SfFkIlTyM2uYEKXltA,522
79
- ophyd_async/epics/testing/_example_ioc.py,sha256=_crB_NVSVAwQTptU-upl3MVm0i8UsfA0QDBi9NPemoc,3505
80
- ophyd_async/epics/testing/_utils.py,sha256=Y5aokH545rJfu-0JDZCha91Y8p08KYiIfxDc2wnq9CQ,1599
81
- ophyd_async/epics/testing/test_records.db,sha256=zQ8QZ5OVMVFfLj7kSsjL7HTMcm74dzqypL0F4_6JkN8,3342
82
- ophyd_async/epics/testing/test_records_pva.db,sha256=NyceNGaCZXNYaXjH2VLhvKl8Z-L6dwfE_kYZKqdIcTU,4054
83
- ophyd_async/fastcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- ophyd_async/fastcs/core.py,sha256=MpbRLaPJwmaAuunnIV34oq1AUjT1nfv5ggtgw4I42vY,376
85
- ophyd_async/fastcs/odin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- ophyd_async/fastcs/panda/__init__.py,sha256=YwmF5yjfa7TxfIqjNfajIHYbxcfdfpR04eFcDCM8RmA,927
87
- ophyd_async/fastcs/panda/_block.py,sha256=UZBWos3g4yhxGhX9oB3g_GU7jGGelgoQ2Yt2sm1MPJM,1709
88
- ophyd_async/fastcs/panda/_control.py,sha256=b2BWhjKDHgUV1ggalvwBEbAELWsrDWK3EsMozog_a6w,1124
89
- ophyd_async/fastcs/panda/_hdf_panda.py,sha256=7uGEFw5Jvjk4IxzSQx9LBSOfqtG_7HCcRuzxLvxclKI,1215
90
- ophyd_async/fastcs/panda/_table.py,sha256=Ct4Ur4F_kEvBeUURrGKVpSxp_pnyRK-xv6uqzrJ39Ho,2368
91
- ophyd_async/fastcs/panda/_trigger.py,sha256=z9VGb4XPaw3xrOsvTbgpLHbduDbQJB0M4HP3w5YPB_E,3056
92
- ophyd_async/fastcs/panda/_writer.py,sha256=wDN6uWX1ENofmI3JBXJ7_CGooI7WsZP-JJQrRiSc6sM,6000
93
- ophyd_async/plan_stubs/__init__.py,sha256=qW9xqnzKyR7W1-oQH34sLPV9aEAesIS5of9oq3IWGdk,874
94
- ophyd_async/plan_stubs/_ensure_connected.py,sha256=yUFDqmTauoI-1A4QT0be8m1Ta-A-jyadOd0jZn2FVq0,820
95
- ophyd_async/plan_stubs/_fly.py,sha256=sJf-JQk57-WSwU-iH8Ab-l3kB2j-vDGslRJej2OBwkw,6225
96
- ophyd_async/plan_stubs/_nd_attributes.py,sha256=RBooW9E-UgqwKqe3INmfdZH9dGy-PyWKSLfEWJINv5I,2260
97
- ophyd_async/plan_stubs/_panda.py,sha256=2DoJK26K68MOFPN2bqdbhKE6XNCTnXOvEJoOeAhfKfU,413
98
- ophyd_async/plan_stubs/_settings.py,sha256=edAgaGqPaBxfHkplakWqB0_OFt-yUNxK910LMoJ9JWU,4397
99
- ophyd_async/plan_stubs/_wait_for_awaitable.py,sha256=QttArcYwi9TPF8r0r_5VoHdsNexV8O-1a4up0jU9Jkg,373
100
- ophyd_async/sim/__init__.py,sha256=JKWFnHqmFuRRMvvU0aBuclke3OdF0iq89yvHEd4J7Bg,371
101
- ophyd_async/sim/_sim_motor.py,sha256=gfvhW9TSgolAf5iAk30GviuHh680pT_RcxxTviZCzvk,3997
102
- ophyd_async/sim/_pattern_detector/__init__.py,sha256=o_dSZDIl_CyS3YPSNKpGiQiR9UaC4cNzZ8_ByEN9dIk,402
103
- ophyd_async/sim/_pattern_detector/_pattern_detector.py,sha256=R-UbcxHLFfCK9tBryKZN5Dit0IjYeJGP-QKV2ssKFoQ,1275
104
- ophyd_async/sim/_pattern_detector/_pattern_detector_controller.py,sha256=BLBFMri5IQiQfddpoYFelgj_FEZ2AMcTiz8MHKaUEaU,2341
105
- ophyd_async/sim/_pattern_detector/_pattern_detector_writer.py,sha256=nQOks4EK1Ax0Ib1pkCrmJPF8Jqr7tPusMnby-HGUnP0,1370
106
- ophyd_async/sim/_pattern_detector/_pattern_generator.py,sha256=gYBjE0tl_4oTb1qn5dGMS7nLS_a3vY6e5Z-OvpPbFXY,7330
107
- ophyd_async/tango/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- ophyd_async/tango/core/__init__.py,sha256=pBslTNkIt22-g-CDbG9N7pKLQVJqFe6DYXHFFYJZIo8,905
109
- ophyd_async/tango/core/_base_device.py,sha256=IN1HF1DOf9W9_FhVlzWyuU58gBFu86rYOD1vDZ_a7Wc,4717
110
- ophyd_async/tango/core/_signal.py,sha256=Shuyjt31dnTGzkzGa0CthisSwnLJ0pNI9ABEx5GuFus,6463
111
- ophyd_async/tango/core/_tango_readable.py,sha256=c6xVH56oBp5o3C3y3PuHA5MftvmjKm20BBvrgsTO260,913
112
- ophyd_async/tango/core/_tango_transport.py,sha256=5m_4TPya3Mn4WviLA9fUh2zd_PTxEzkPguFRKgOluhs,28922
113
- ophyd_async/tango/sim/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
114
- ophyd_async/tango/sim/_counter.py,sha256=efBqrFj6ejzDh1aggtPXpn1iub1zB4XocRvHqBEiwcs,1105
115
- ophyd_async/tango/sim/_detector.py,sha256=0wwk7Y-Dl9QF1YsCIU_BxqI6-PQ40qN_0gknrYBkxsY,1292
116
- ophyd_async/tango/sim/_mover.py,sha256=8MCorX6e5AaIXP00kwLOwu2smE4Y5RhbeMA_4mGbcFQ,2957
117
- ophyd_async/tango/sim/_tango/__init__.py,sha256=FfONT7vM49nNo3a1Lv-LcMZO9EHv6bv91yY-RnxIib4,85
118
- ophyd_async/tango/sim/_tango/_servers.py,sha256=MwkkoZWJQm_cgafCBBXeQfwyAiOgU8cE90_uNfcdcGA,2916
119
- ophyd_async/testing/__init__.py,sha256=UqU_3GH0th3s4jwgDRqxJn8mqq9My8jzk55Q-69OeeQ,1156
120
- ophyd_async/testing/__pytest_assert_rewrite.py,sha256=_SU2UfChPgEf7CFY7aYH2B7MLp-07_qYnVLyu6QtDL8,129
121
- ophyd_async/testing/_assert.py,sha256=FvGhGVoYPul2-2ByM5U0AAdrIKc1y6gqLRK_CfYut-Y,4941
122
- ophyd_async/testing/_mock_signal_utils.py,sha256=PABE_2Hexx5mtINuaVLASHKJEYulO-nUqiI20vE9j6s,5212
123
- ophyd_async/testing/_one_of_everything.py,sha256=pzj4-yM3buOKQJyUNfpMCKlg57cdALFY6hr0NDHQYZU,4160
124
- ophyd_async/testing/_wait_for_pending.py,sha256=YZAR48n-CW0GsPey3zFRzMJ4byDAr3HvMIoawjmTrHw,732
125
- ophyd_async-0.9.0a2.dist-info/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
126
- ophyd_async-0.9.0a2.dist-info/METADATA,sha256=xleA5naK9np7q1T2ZXQgc3MiDFrVccBt_XTL-ReHprM,6753
127
- ophyd_async-0.9.0a2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
128
- ophyd_async-0.9.0a2.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
129
- ophyd_async-0.9.0a2.dist-info/RECORD,,
File without changes
File without changes