ophyd-async 0.8.0a5__py3-none-any.whl → 0.9.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 (116) hide show
  1. ophyd_async/_version.py +2 -2
  2. ophyd_async/core/__init__.py +17 -46
  3. ophyd_async/core/_detector.py +68 -44
  4. ophyd_async/core/_device.py +120 -79
  5. ophyd_async/core/_device_filler.py +17 -8
  6. ophyd_async/core/_flyer.py +2 -2
  7. ophyd_async/core/_protocol.py +0 -28
  8. ophyd_async/core/_readable.py +30 -23
  9. ophyd_async/core/_settings.py +104 -0
  10. ophyd_async/core/_signal.py +164 -151
  11. ophyd_async/core/_signal_backend.py +4 -1
  12. ophyd_async/core/_soft_signal_backend.py +2 -1
  13. ophyd_async/core/_table.py +27 -14
  14. ophyd_async/core/_utils.py +30 -5
  15. ophyd_async/core/_yaml_settings.py +64 -0
  16. ophyd_async/epics/adandor/__init__.py +9 -0
  17. ophyd_async/epics/adandor/_andor.py +45 -0
  18. ophyd_async/epics/adandor/_andor_controller.py +49 -0
  19. ophyd_async/epics/adandor/_andor_io.py +36 -0
  20. ophyd_async/epics/adaravis/__init__.py +3 -1
  21. ophyd_async/epics/adaravis/_aravis.py +23 -37
  22. ophyd_async/epics/adaravis/_aravis_controller.py +21 -30
  23. ophyd_async/epics/adaravis/_aravis_io.py +4 -4
  24. ophyd_async/epics/adcore/__init__.py +15 -8
  25. ophyd_async/epics/adcore/_core_detector.py +41 -0
  26. ophyd_async/epics/adcore/_core_io.py +56 -31
  27. ophyd_async/epics/adcore/_core_logic.py +99 -84
  28. ophyd_async/epics/adcore/_core_writer.py +219 -0
  29. ophyd_async/epics/adcore/_hdf_writer.py +33 -59
  30. ophyd_async/epics/adcore/_jpeg_writer.py +26 -0
  31. ophyd_async/epics/adcore/_single_trigger.py +5 -4
  32. ophyd_async/epics/adcore/_tiff_writer.py +26 -0
  33. ophyd_async/epics/adcore/_utils.py +37 -36
  34. ophyd_async/epics/adkinetix/_kinetix.py +29 -24
  35. ophyd_async/epics/adkinetix/_kinetix_controller.py +15 -27
  36. ophyd_async/epics/adkinetix/_kinetix_io.py +7 -7
  37. ophyd_async/epics/adpilatus/__init__.py +2 -2
  38. ophyd_async/epics/adpilatus/_pilatus.py +28 -40
  39. ophyd_async/epics/adpilatus/_pilatus_controller.py +47 -25
  40. ophyd_async/epics/adpilatus/_pilatus_io.py +5 -5
  41. ophyd_async/epics/adsimdetector/__init__.py +3 -3
  42. ophyd_async/epics/adsimdetector/_sim.py +33 -17
  43. ophyd_async/epics/advimba/_vimba.py +23 -23
  44. ophyd_async/epics/advimba/_vimba_controller.py +21 -35
  45. ophyd_async/epics/advimba/_vimba_io.py +23 -23
  46. ophyd_async/epics/core/_aioca.py +52 -21
  47. ophyd_async/epics/core/_p4p.py +59 -16
  48. ophyd_async/epics/core/_pvi_connector.py +4 -2
  49. ophyd_async/epics/core/_signal.py +9 -2
  50. ophyd_async/epics/core/_util.py +10 -1
  51. ophyd_async/epics/eiger/_eiger_controller.py +10 -5
  52. ophyd_async/epics/eiger/_eiger_io.py +3 -3
  53. ophyd_async/epics/motor.py +26 -15
  54. ophyd_async/epics/sim/_ioc.py +29 -0
  55. ophyd_async/epics/{demo → sim}/_mover.py +12 -6
  56. ophyd_async/epics/{demo → sim}/_sensor.py +2 -2
  57. ophyd_async/epics/testing/__init__.py +24 -0
  58. ophyd_async/epics/testing/_example_ioc.py +91 -0
  59. ophyd_async/epics/testing/_utils.py +50 -0
  60. ophyd_async/epics/testing/test_records.db +174 -0
  61. ophyd_async/epics/testing/test_records_pva.db +177 -0
  62. ophyd_async/fastcs/core.py +2 -2
  63. ophyd_async/fastcs/panda/__init__.py +0 -2
  64. ophyd_async/fastcs/panda/_block.py +9 -9
  65. ophyd_async/fastcs/panda/_control.py +9 -4
  66. ophyd_async/fastcs/panda/_hdf_panda.py +7 -2
  67. ophyd_async/fastcs/panda/_table.py +4 -1
  68. ophyd_async/fastcs/panda/_trigger.py +7 -7
  69. ophyd_async/plan_stubs/__init__.py +14 -0
  70. ophyd_async/plan_stubs/_ensure_connected.py +11 -17
  71. ophyd_async/plan_stubs/_fly.py +2 -2
  72. ophyd_async/plan_stubs/_nd_attributes.py +7 -5
  73. ophyd_async/plan_stubs/_panda.py +13 -0
  74. ophyd_async/plan_stubs/_settings.py +125 -0
  75. ophyd_async/plan_stubs/_wait_for_awaitable.py +13 -0
  76. ophyd_async/sim/__init__.py +19 -0
  77. ophyd_async/sim/{demo/_pattern_detector → _pattern_detector}/_pattern_detector_controller.py +9 -2
  78. ophyd_async/sim/{demo/_pattern_detector → _pattern_detector}/_pattern_generator.py +13 -6
  79. ophyd_async/sim/{demo/_sim_motor.py → _sim_motor.py} +34 -32
  80. ophyd_async/tango/__init__.py +0 -43
  81. ophyd_async/tango/{signal → core}/__init__.py +7 -2
  82. ophyd_async/tango/{base_devices → core}/_base_device.py +38 -64
  83. ophyd_async/tango/{signal → core}/_signal.py +16 -4
  84. ophyd_async/tango/{base_devices → core}/_tango_readable.py +3 -4
  85. ophyd_async/tango/{signal → core}/_tango_transport.py +13 -15
  86. ophyd_async/tango/{demo → sim}/_counter.py +6 -7
  87. ophyd_async/tango/{demo → sim}/_mover.py +13 -9
  88. ophyd_async/testing/__init__.py +52 -0
  89. ophyd_async/testing/__pytest_assert_rewrite.py +4 -0
  90. ophyd_async/testing/_assert.py +176 -0
  91. ophyd_async/{core → testing}/_mock_signal_utils.py +15 -11
  92. ophyd_async/testing/_one_of_everything.py +126 -0
  93. ophyd_async/testing/_wait_for_pending.py +22 -0
  94. {ophyd_async-0.8.0a5.dist-info → ophyd_async-0.9.0.dist-info}/METADATA +50 -48
  95. ophyd_async-0.9.0.dist-info/RECORD +129 -0
  96. {ophyd_async-0.8.0a5.dist-info → ophyd_async-0.9.0.dist-info}/WHEEL +1 -1
  97. ophyd_async/core/_device_save_loader.py +0 -274
  98. ophyd_async/epics/adsimdetector/_sim_controller.py +0 -51
  99. ophyd_async/fastcs/panda/_utils.py +0 -16
  100. ophyd_async/sim/demo/__init__.py +0 -19
  101. ophyd_async/sim/testing/__init__.py +0 -0
  102. ophyd_async/tango/base_devices/__init__.py +0 -4
  103. ophyd_async-0.8.0a5.dist-info/RECORD +0 -112
  104. ophyd_async-0.8.0a5.dist-info/entry_points.txt +0 -2
  105. /ophyd_async/epics/{demo → sim}/__init__.py +0 -0
  106. /ophyd_async/epics/{demo → sim}/mover.db +0 -0
  107. /ophyd_async/epics/{demo → sim}/sensor.db +0 -0
  108. /ophyd_async/sim/{demo/_pattern_detector → _pattern_detector}/__init__.py +0 -0
  109. /ophyd_async/sim/{demo/_pattern_detector → _pattern_detector}/_pattern_detector.py +0 -0
  110. /ophyd_async/sim/{demo/_pattern_detector → _pattern_detector}/_pattern_detector_writer.py +0 -0
  111. /ophyd_async/tango/{demo → sim}/__init__.py +0 -0
  112. /ophyd_async/tango/{demo → sim}/_detector.py +0 -0
  113. /ophyd_async/tango/{demo → sim}/_tango/__init__.py +0 -0
  114. /ophyd_async/tango/{demo → sim}/_tango/_servers.py +0 -0
  115. {ophyd_async-0.8.0a5.dist-info → ophyd_async-0.9.0.dist-info}/LICENSE +0 -0
  116. {ophyd_async-0.8.0a5.dist-info → ophyd_async-0.9.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,129 @@
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=dEuABWaRk7ju3R5JrWbpUVQ4xq7RBpvl2clGJceWAS4,411
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=kPi8YO8_OHkCMnfn27qDCu1JrKuOXPcU5YcBC7WCXdg,10526
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=tLu7MKXO7TOBLECdlV-O4IWj6w6fvzZoR6419E7iJVc,5815
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=uVLIyUFiL5abAM__eNYtik3SafQ7YJ9zQvuS43cg__4,12727
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=dv286YeoePB-AuhW6LjTIfghQUz7SHH3ZQ9gVgJOspQ,3576
80
+ ophyd_async/epics/testing/_utils.py,sha256=Y5aokH545rJfu-0JDZCha91Y8p08KYiIfxDc2wnq9CQ,1599
81
+ ophyd_async/epics/testing/test_records.db,sha256=hUD9jIzFmN6DgRDGv4-PkeJxCjRjfjvDq5GoTXMz4Zo,3492
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.0.dist-info/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
126
+ ophyd_async-0.9.0.dist-info/METADATA,sha256=Lnnb3TO75N-BVFdg4txFdhU8CelKsZPOWA0Su1o4Ty0,6751
127
+ ophyd_async-0.9.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
128
+ ophyd_async-0.9.0.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
129
+ ophyd_async-0.9.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,274 +0,0 @@
1
- from collections.abc import Callable, Generator, Sequence
2
- from enum import Enum
3
- from pathlib import Path
4
- from typing import Any
5
-
6
- import numpy as np
7
- import numpy.typing as npt
8
- import yaml
9
- from bluesky.plan_stubs import abs_set, wait
10
- from bluesky.protocols import Location
11
- from bluesky.utils import Msg
12
- from pydantic import BaseModel
13
-
14
- from ._device import Device
15
- from ._signal import SignalRW
16
-
17
-
18
- def ndarray_representer(dumper: yaml.Dumper, array: npt.NDArray[Any]) -> yaml.Node:
19
- return dumper.represent_sequence(
20
- "tag:yaml.org,2002:seq", array.tolist(), flow_style=True
21
- )
22
-
23
-
24
- def pydantic_model_abstraction_representer(
25
- dumper: yaml.Dumper, model: BaseModel
26
- ) -> yaml.Node:
27
- return dumper.represent_data(model.model_dump(mode="python"))
28
-
29
-
30
- def enum_representer(dumper: yaml.Dumper, enum: Enum) -> yaml.Node:
31
- return dumper.represent_data(enum.value)
32
-
33
-
34
- def get_signal_values(
35
- signals: dict[str, SignalRW[Any]], ignore: list[str] | None = None
36
- ) -> Generator[Msg, Sequence[Location[Any]], dict[str, Any]]:
37
- """Get signal values in bulk.
38
-
39
- Used as part of saving the signals of a device to a yaml file.
40
-
41
- Parameters
42
- ----------
43
- signals : Dict[str, SignalRW]
44
- Dictionary with pv names and matching SignalRW values. Often the direct result
45
- of :func:`walk_rw_signals`.
46
-
47
- ignore : Optional[List[str]]
48
- Optional list of PVs that should be ignored.
49
-
50
- Returns
51
- -------
52
- Dict[str, Any]
53
- A dictionary containing pv names and their associated values. Ignored pvs are
54
- set to None.
55
-
56
- See Also
57
- --------
58
- :func:`ophyd_async.core.walk_rw_signals`
59
- :func:`ophyd_async.core.save_to_yaml`
60
- """
61
-
62
- ignore = ignore or []
63
- selected_signals = {
64
- key: signal for key, signal in signals.items() if key not in ignore
65
- }
66
- selected_values = yield Msg("locate", *selected_signals.values())
67
-
68
- assert selected_values is not None, "No signalRW's were able to be located"
69
- named_values = {
70
- key: value["setpoint"]
71
- for key, value in zip(selected_signals, selected_values, strict=False)
72
- }
73
- # Ignored values place in with value None so we know which ones were ignored
74
- named_values.update(dict.fromkeys(ignore))
75
- return named_values
76
-
77
-
78
- def walk_rw_signals(
79
- device: Device, path_prefix: str | None = ""
80
- ) -> dict[str, SignalRW[Any]]:
81
- """Retrieve all SignalRWs from a device.
82
-
83
- Stores retrieved signals with their dotted attribute paths in a dictionary. Used as
84
- part of saving and loading a device.
85
-
86
- Parameters
87
- ----------
88
- device : Device
89
- Ophyd device to retrieve read-write signals from.
90
-
91
- path_prefix : str
92
- For internal use, leave blank when calling the method.
93
-
94
- Returns
95
- -------
96
- SignalRWs : dict
97
- A dictionary matching the string attribute path of a SignalRW with the
98
- signal itself.
99
-
100
- See Also
101
- --------
102
- :func:`ophyd_async.core.get_signal_values`
103
- :func:`ophyd_async.core.save_to_yaml`
104
-
105
- """
106
-
107
- if not path_prefix:
108
- path_prefix = ""
109
-
110
- signals: dict[str, SignalRW[Any]] = {}
111
-
112
- for attr_name, attr in device.children():
113
- dot_path = f"{path_prefix}{attr_name}"
114
- if type(attr) is SignalRW:
115
- signals[dot_path] = attr
116
- attr_signals = walk_rw_signals(attr, path_prefix=dot_path + ".")
117
- signals.update(attr_signals)
118
- return signals
119
-
120
-
121
- def save_to_yaml(phases: Sequence[dict[str, Any]], save_path: str | Path) -> None:
122
- """Plan which serialises a phase or set of phases of SignalRWs to a yaml file.
123
-
124
- Parameters
125
- ----------
126
- phases : dict or list of dicts
127
- The values to save. Each item in the list is a seperate phase used when loading
128
- a device. In general this variable be the return value of `get_signal_values`.
129
-
130
- save_path : str
131
- Path of the yaml file to write to
132
-
133
- See Also
134
- --------
135
- :func:`ophyd_async.core.walk_rw_signals`
136
- :func:`ophyd_async.core.get_signal_values`
137
- :func:`ophyd_async.core.load_from_yaml`
138
- """
139
-
140
- yaml.add_representer(np.ndarray, ndarray_representer, Dumper=yaml.Dumper)
141
- yaml.add_multi_representer(
142
- BaseModel,
143
- pydantic_model_abstraction_representer,
144
- Dumper=yaml.Dumper,
145
- )
146
- yaml.add_multi_representer(Enum, enum_representer, Dumper=yaml.Dumper)
147
-
148
- with open(save_path, "w") as file:
149
- yaml.dump(phases, file)
150
-
151
-
152
- def load_from_yaml(save_path: str) -> Sequence[dict[str, Any]]:
153
- """Plan that returns a list of dicts with saved signal values from a yaml file.
154
-
155
- Parameters
156
- ----------
157
- save_path : str
158
- Path of the yaml file to load from
159
-
160
- See Also
161
- --------
162
- :func:`ophyd_async.core.save_to_yaml`
163
- :func:`ophyd_async.core.set_signal_values`
164
- """
165
- with open(save_path) as file:
166
- return yaml.full_load(file)
167
-
168
-
169
- def set_signal_values(
170
- signals: dict[str, SignalRW[Any]], values: Sequence[dict[str, Any]]
171
- ) -> Generator[Msg, None, None]:
172
- """Maps signals from a yaml file into device signals.
173
-
174
- ``values`` contains signal values in phases, which are loaded in sequentially
175
- into the provided signals, to ensure signals are set in the correct order.
176
-
177
- Parameters
178
- ----------
179
- signals : Dict[str, SignalRW[Any]]
180
- Dictionary of named signals to be updated if value found in values argument.
181
- Can be the output of :func:`walk_rw_signals()` for a device.
182
-
183
- values : Sequence[Dict[str, Any]]
184
- List of dictionaries of signal name and value pairs, if a signal matches
185
- the name of one in the signals argument, sets the signal to that value.
186
- The groups of signals are loaded in their list order.
187
- Can be the output of :func:`load_from_yaml()` for a yaml file.
188
-
189
- See Also
190
- --------
191
- :func:`ophyd_async.core.load_from_yaml`
192
- :func:`ophyd_async.core.walk_rw_signals`
193
- """
194
- # For each phase, set all the signals,
195
- # load them to the correct value and wait for the load to complete
196
- for phase_number, phase in enumerate(values):
197
- # Key is signal name
198
- for key, value in phase.items():
199
- # Skip ignored values
200
- if value is None:
201
- continue
202
-
203
- if key in signals:
204
- yield from abs_set(
205
- signals[key], value, group=f"load-phase{phase_number}"
206
- )
207
-
208
- yield from wait(f"load-phase{phase_number}")
209
-
210
-
211
- def load_device(device: Device, path: str):
212
- """Plan which loads PVs from a yaml file into a device.
213
-
214
- Parameters
215
- ----------
216
- device: Device
217
- The device to load PVs into
218
- path: str
219
- Path of the yaml file to load
220
-
221
- See Also
222
- --------
223
- :func:`ophyd_async.core.save_device`
224
- """
225
- values = load_from_yaml(path)
226
- signals_to_set = walk_rw_signals(device)
227
- yield from set_signal_values(signals_to_set, values)
228
-
229
-
230
- def all_at_once(values: dict[str, Any]) -> Sequence[dict[str, Any]]:
231
- """Sort all the values into a single phase so they are set all at once"""
232
- return [values]
233
-
234
-
235
- def save_device(
236
- device: Device,
237
- path: str,
238
- sorter: Callable[[dict[str, Any]], Sequence[dict[str, Any]]] = all_at_once,
239
- ignore: list[str] | None = None,
240
- ):
241
- """Plan that saves the state of all PV's on a device using a sorter.
242
-
243
- The default sorter assumes all saved PVs can be loaded at once, and therefore
244
- can be saved at one time, i.e. all PVs will appear on one list in the
245
- resulting yaml file.
246
-
247
- This can be a problem, because when the yaml is ingested with
248
- :func:`ophyd_async.core.load_device`, it will set all of those PVs at once.
249
- However, some PV's need to be set before others - this is device specific.
250
-
251
- Therefore, users should consider the order of device loading and write their
252
- own sorter algorithms accordingly.
253
-
254
- See :func:`ophyd_async.fastcs.panda.phase_sorter` for a valid implementation of the
255
- sorter.
256
-
257
- Parameters
258
- ----------
259
- device : Device
260
- The device whose PVs should be saved.
261
-
262
- path : str
263
- The path where the resulting yaml should be saved to
264
-
265
- sorter : Callable[[Dict[str, Any]], Sequence[Dict[str, Any]]]
266
-
267
- ignore : Optional[List[str]]
268
-
269
- See Also
270
- --------
271
- :func:`ophyd_async.core.load_device`
272
- """
273
- values = yield from get_signal_values(walk_rw_signals(device), ignore=ignore)
274
- save_to_yaml(sorter(values), path)
@@ -1,51 +0,0 @@
1
- import asyncio
2
-
3
- from ophyd_async.core import (
4
- DEFAULT_TIMEOUT,
5
- AsyncStatus,
6
- DetectorController,
7
- DetectorTrigger,
8
- TriggerInfo,
9
- )
10
- from ophyd_async.epics import adcore
11
-
12
-
13
- class SimController(DetectorController):
14
- def __init__(
15
- self,
16
- driver: adcore.ADBaseIO,
17
- good_states: frozenset[adcore.DetectorState] = adcore.DEFAULT_GOOD_STATES,
18
- ) -> None:
19
- self.driver = driver
20
- self.good_states = good_states
21
- self.frame_timeout: float
22
- self._arm_status: AsyncStatus | None = None
23
-
24
- def get_deadtime(self, exposure: float | None) -> float:
25
- return 0.002
26
-
27
- async def prepare(self, trigger_info: TriggerInfo):
28
- assert (
29
- trigger_info.trigger == DetectorTrigger.internal
30
- ), "fly scanning (i.e. external triggering) is not supported for this device"
31
- self.frame_timeout = (
32
- DEFAULT_TIMEOUT + await self.driver.acquire_time.get_value()
33
- )
34
- await asyncio.gather(
35
- self.driver.num_images.set(trigger_info.total_number_of_triggers),
36
- self.driver.image_mode.set(adcore.ImageMode.multiple),
37
- )
38
-
39
- async def arm(self):
40
- self._arm_status = await adcore.start_acquiring_driver_and_ensure_status(
41
- self.driver, good_states=self.good_states, timeout=self.frame_timeout
42
- )
43
-
44
- async def wait_for_idle(self):
45
- if self._arm_status:
46
- await self._arm_status
47
-
48
- async def disarm(self):
49
- # We can't use caput callback as we already used it in arm() and we can't have
50
- # 2 or they will deadlock
51
- await adcore.stop_busy_record(self.driver.acquire, False, timeout=1)
@@ -1,16 +0,0 @@
1
- from collections.abc import Sequence
2
- from typing import Any
3
-
4
-
5
- def phase_sorter(panda_signal_values: dict[str, Any]) -> Sequence[dict[str, Any]]:
6
- # Panda has two load phases. If the signal name ends in the string "UNITS",
7
- # it needs to be loaded first so put in first phase
8
- phase_1, phase_2 = {}, {}
9
-
10
- for key, value in panda_signal_values.items():
11
- if key.endswith("units"):
12
- phase_1[key] = value
13
- else:
14
- phase_2[key] = value
15
-
16
- return [phase_1, phase_2]
@@ -1,19 +0,0 @@
1
- from ._pattern_detector import (
2
- DATA_PATH,
3
- SUM_PATH,
4
- PatternDetector,
5
- PatternDetectorController,
6
- PatternDetectorWriter,
7
- PatternGenerator,
8
- )
9
- from ._sim_motor import SimMotor
10
-
11
- __all__ = [
12
- "DATA_PATH",
13
- "SUM_PATH",
14
- "PatternGenerator",
15
- "PatternDetector",
16
- "PatternDetectorController",
17
- "PatternDetectorWriter",
18
- "SimMotor",
19
- ]
File without changes
@@ -1,4 +0,0 @@
1
- from ._base_device import TangoDevice, tango_polling
2
- from ._tango_readable import TangoReadable
3
-
4
- __all__ = ["TangoDevice", "TangoReadable", "tango_polling"]
@@ -1,112 +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=SQdFsQ53whTNOERBL9cmDWrar7r4kVAXQthVKIJB7mU,413
4
- ophyd_async/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- ophyd_async/core/__init__.py,sha256=JBKq2w50jBjxg_2KRL1jXnIzETaj8dPOD47_prgtotU,4283
6
- ophyd_async/core/_detector.py,sha256=bKLekM2J3GzLXsKwe8qXQjNP_sAVsa8EtwFEWD-8MeA,14307
7
- ophyd_async/core/_device.py,sha256=ygXxDKiTO43qDnLeLzrKKyABwlrfGvSVii7PHyCIjHg,12074
8
- ophyd_async/core/_device_filler.py,sha256=Nw-DUyuXYpvt4mmCAQaNVA0LFBBaPK84ubZo3bR39Ak,11407
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=8Upnz6QrSigeDXemjZ-jB4sV2yIPUzid-6GOfTZ-7Io,2805
14
- ophyd_async/core/_mock_signal_utils.py,sha256=YeKjStClwp1etlmHMx1tb_VV1GjeFPg83Hkq7-YPkpg,5306
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=7FxqxhAT1wBQqOEivgnY731zA9QoK1Tt-ZGcH7GBOXM,10623
18
- ophyd_async/core/_signal.py,sha256=IpOyYu1IqpX8sFs9_CLUd1LuFWgAqEaFZgA12BG5tfM,19897
19
- ophyd_async/core/_signal_backend.py,sha256=YWPgLSPbfPnWIUDHvP1ArCVK8zKXJxzzbloqQe_ucCI,5040
20
- ophyd_async/core/_soft_signal_backend.py,sha256=w9zzD4eoD9SsJpORXNSaFOLJrD6biYBbCSVAybLa_7k,5926
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=wzzGL7yPAMuPueGOG1cpTgh0vho5YxI86m8SSX7Z9hw,9494
24
- ophyd_async/epics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- ophyd_async/epics/motor.py,sha256=pujJXV_vslvo3AxsVySTAEoFuduuv5Hp6sz8aRvIbeQ,8792
26
- ophyd_async/epics/signal.py,sha256=hJCGIIWjRVhjEHkeL1I_oPEaaN7dDFKmm7G7ZmgoTYQ,219
27
- ophyd_async/epics/adaravis/__init__.py,sha256=u979_9nQTYB0TvDOTXFN4qMrbDP8-xQFfXYMGzLVBo4,207
28
- ophyd_async/epics/adaravis/_aravis.py,sha256=XBuLQBZYj2tptY39bVzXjl6t-ZpPwqrUOwpR54l-hSo,1952
29
- ophyd_async/epics/adaravis/_aravis_controller.py,sha256=t4vuMsQ_67tNsAYPFFtBKq3YIHhRnK08DwPzi8Am_-k,2831
30
- ophyd_async/epics/adaravis/_aravis_io.py,sha256=KCfylSNGN7rC6W4uJDCVtaQ4-o5_FR_bTyTDXnhmMt4,1603
31
- ophyd_async/epics/adcore/__init__.py,sha256=3wMOyFGaq1X61LqK4iY4pq-m_BjhOgYZD2-mNCAjpzk,1086
32
- ophyd_async/epics/adcore/_core_io.py,sha256=ZQjRLdpFMVS9kwEm5LAh60pxiy7XWyYtc2TzEvCEVYM,6076
33
- ophyd_async/epics/adcore/_core_logic.py,sha256=JjrSmKErRFSv1C98or1Upwi01k3NWDRMi2fPHVWMmWw,3561
34
- ophyd_async/epics/adcore/_hdf_writer.py,sha256=eWT9SH7uegf9rpCWRmVCZTsOxF1drPaOAMmoXm99mVk,7215
35
- ophyd_async/epics/adcore/_single_trigger.py,sha256=7SzmadatWk4zXIweRIhVX5odc__ZZKuGicL7vlW0JbY,1208
36
- ophyd_async/epics/adcore/_utils.py,sha256=MZBKeSPIRzyo6f84MpzPp28KwOLa9qgrkMIFc618wOE,3932
37
- ophyd_async/epics/adkinetix/__init__.py,sha256=cvnwOqbvEENf70eFp6bPGwayP0u14UTIhs3WiZEcF_Q,262
38
- ophyd_async/epics/adkinetix/_kinetix.py,sha256=JsQVc4d7lRCnVObJlM775hHLfp3rYRSRgOoIyRvrSek,1184
39
- ophyd_async/epics/adkinetix/_kinetix_controller.py,sha256=LyK-CWkEV1l_RVhCOHf2lLgo1FRIkDCa4P8JnAGZ4us,1701
40
- ophyd_async/epics/adkinetix/_kinetix_io.py,sha256=D72HNtob74SnhBa3Zsbp37MhqS6kdrCPac7pnTlm0PQ,910
41
- ophyd_async/epics/adpilatus/__init__.py,sha256=daimScOCCMHR2eb8VbezHOcGOkd6uIRZQiyeTQsaAx4,308
42
- ophyd_async/epics/adpilatus/_pilatus.py,sha256=AbWfxEds8ESB73kRXz56FzRPYqy67Ue0m11HRaNUqZY,1751
43
- ophyd_async/epics/adpilatus/_pilatus_controller.py,sha256=eBZnNPHJosYAMdD-efLNgAmTYaqONLJ3qKX-2RW13fg,2676
44
- ophyd_async/epics/adpilatus/_pilatus_io.py,sha256=upIc5mr8RMmPjQMZcG7-Y8C9a5nPl91OTDjZ5JYDVIc,738
45
- ophyd_async/epics/adsimdetector/__init__.py,sha256=t3crUgTEvVJGI8o6FsfN42k0A-l4v9ZBwXIYtixoE-M,128
46
- ophyd_async/epics/adsimdetector/_sim.py,sha256=jzsPJdcwdciR2mVPbvg9KhGHWWGNDQwK5TwPcS7_tco,1009
47
- ophyd_async/epics/adsimdetector/_sim_controller.py,sha256=lxBCJtREDOySrpLNl7_9DbuIw2IhRpSOBK_CvJ5XBs4,1677
48
- ophyd_async/epics/advimba/__init__.py,sha256=l0ElP3Zyff_pzrTRdj9oUO9xigCfmzo3pMVjstlVsJY,320
49
- ophyd_async/epics/advimba/_vimba.py,sha256=E_RJ0uJQt-RWAY7uFTNkHaOdGYS5sa7ZbRgAe6ngXTA,1125
50
- ophyd_async/epics/advimba/_vimba_controller.py,sha256=Ej7irxTab9cfjmqz4G4Zxv3CjhJw_eRmIb3E62YWh6g,2226
51
- ophyd_async/epics/advimba/_vimba_io.py,sha256=F3KUzMN-GMe637za-iRVGGTt8v9F1a79fRcl3MCkfXA,1864
52
- ophyd_async/epics/core/__init__.py,sha256=8NoQxEEc2Ny_L9nrD2fnGSf_2gJr1wCR1LwUeLNcIJo,588
53
- ophyd_async/epics/core/_aioca.py,sha256=iQWiHWYbMJLa7qeBrCz4_e16Y8A-NYYi6oYNi8oOFVY,11617
54
- ophyd_async/epics/core/_epics_connector.py,sha256=n1FlQYui8HdobPxaX3VAflrzi2UT7QCe3cFasssmVLw,1789
55
- ophyd_async/epics/core/_epics_device.py,sha256=kshNiKQhevsL2OZXa-r093L_sQGvGK_0J4PWVLg3Eqw,437
56
- ophyd_async/epics/core/_p4p.py,sha256=S6zXXApRF0454aOcxUI_cd7Y7tXiOnss_ODhjjk0PMo,14691
57
- ophyd_async/epics/core/_pvi_connector.py,sha256=Rjc8g3Rdny_O-4JxhoCpD4L7XWIRq-lnGHXKpsIUrSU,3621
58
- ophyd_async/epics/core/_signal.py,sha256=jHdMXV1-0bd7PC8XV32Sso1xgubZVDhWFNsWV-UuamQ,4642
59
- ophyd_async/epics/core/_util.py,sha256=6CCWDfp54WeBIJdGjg_YBVZTKoNjponWyykMmLPrj7U,1820
60
- ophyd_async/epics/demo/__init__.py,sha256=wCrgemEo-zR4TTvaqCKnQ-AIUHorotV5jhftbq1tXz0,1368
61
- ophyd_async/epics/demo/_mover.py,sha256=uyg60SlL7k2C3KA_05EUFOlDe6RB5QBbw7QGs969ItQ,3571
62
- ophyd_async/epics/demo/_sensor.py,sha256=ATlS5jejoHzpgjHhEienEmRguTzZ7DGvzZkuPCHY49U,1040
63
- ophyd_async/epics/demo/mover.db,sha256=RFz0rxZue689Wh1sWTZwWeFMUrH04ttPq2u5xJH_Fp4,998
64
- ophyd_async/epics/demo/sensor.db,sha256=AstyG9E0R4KZBz2FZQSrV_QlrfLoU6M2cvYc15Lf548,553
65
- ophyd_async/epics/eiger/__init__.py,sha256=b3Tt4pVLk23Giyj50R4e94d2MxWDDmNHWhWwNq2jlaw,221
66
- ophyd_async/epics/eiger/_eiger.py,sha256=hkMsjVwrzDcE1u5BRIQtn8RSR2e0b1JMpDvuIONoNaI,1133
67
- ophyd_async/epics/eiger/_eiger_controller.py,sha256=GCoZ40BGCFkxDUrgYk9_CwzSr86l-CALw9nUILJVaZA,2251
68
- ophyd_async/epics/eiger/_eiger_io.py,sha256=0iimpsa8TI2mJ8hTolQByIhdeKltUGcg6aEkY5GwIyQ,1806
69
- ophyd_async/epics/eiger/_odin_io.py,sha256=3E33ysvMlf8t0bbSVPnzUrvPgUwA7491uoViWpivpf8,4153
70
- ophyd_async/fastcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- ophyd_async/fastcs/core.py,sha256=kykwmblZfj9xfakL8FTAqmPmPA8qRbQ90OS3d8WLyto,342
72
- ophyd_async/fastcs/odin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- ophyd_async/fastcs/panda/__init__.py,sha256=_o7n7ckoTM6hTRHpLphpL7r_9sADE59MRNM0gq_ut2o,980
74
- ophyd_async/fastcs/panda/_block.py,sha256=STQo6NJAqIVfxyMf-2pxINPyr9_nKtXSdicp92a25xo,1709
75
- ophyd_async/fastcs/panda/_control.py,sha256=61vcJMjYQiUGAM5J0SfkfthFs7U28m9Pe9mgmGGf0-w,1021
76
- ophyd_async/fastcs/panda/_hdf_panda.py,sha256=WdgWgdrU2yT4keH70VG-ZBVOmT-IpKVyukEuKk7QnJs,1049
77
- ophyd_async/fastcs/panda/_table.py,sha256=5YyAfsl3H7kxH3bDjUKHuH9DyrWQmAn9dv-v0NYzFNo,2289
78
- ophyd_async/fastcs/panda/_trigger.py,sha256=forImtdnDnaZ0KKhqSxCqwHWXq13SJ4mn9wdM4yqNLY,3056
79
- ophyd_async/fastcs/panda/_utils.py,sha256=NdvzdKy0SOG1eCVMQo_nwRXpBo0wyi6lM5Xw3HvssOw,508
80
- ophyd_async/fastcs/panda/_writer.py,sha256=wDN6uWX1ENofmI3JBXJ7_CGooI7WsZP-JJQrRiSc6sM,6000
81
- ophyd_async/plan_stubs/__init__.py,sha256=wjpEj_BoBZJ9x2fhUPY6BzWMqyYH96JrBlJvV7frdN4,524
82
- ophyd_async/plan_stubs/_ensure_connected.py,sha256=uoqfAzghjifdfD_JM860TvMvj9T2Y12nKPvtI5l6zZc,1021
83
- ophyd_async/plan_stubs/_fly.py,sha256=WxghBAHsF-8xFrILCm44jeHIu9udLhm-tj4JXd9kZjY,6208
84
- ophyd_async/plan_stubs/_nd_attributes.py,sha256=TVfy3bhnrLFBXZ6b2bREBj0LzEviEGzuGvgWK3I7tII,2198
85
- ophyd_async/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- ophyd_async/sim/demo/__init__.py,sha256=JKWFnHqmFuRRMvvU0aBuclke3OdF0iq89yvHEd4J7Bg,371
87
- ophyd_async/sim/demo/_sim_motor.py,sha256=hZAoZniLd-Fh5Ru9v6TyFNJHrQB_l9ljM04vByuz_Ls,3665
88
- ophyd_async/sim/demo/_pattern_detector/__init__.py,sha256=o_dSZDIl_CyS3YPSNKpGiQiR9UaC4cNzZ8_ByEN9dIk,402
89
- ophyd_async/sim/demo/_pattern_detector/_pattern_detector.py,sha256=R-UbcxHLFfCK9tBryKZN5Dit0IjYeJGP-QKV2ssKFoQ,1275
90
- ophyd_async/sim/demo/_pattern_detector/_pattern_detector_controller.py,sha256=HqlKNgjd_9pjy6pc74xdJ7JtV1Iko6cNxB2aZReJozw,1999
91
- ophyd_async/sim/demo/_pattern_detector/_pattern_detector_writer.py,sha256=nQOks4EK1Ax0Ib1pkCrmJPF8Jqr7tPusMnby-HGUnP0,1370
92
- ophyd_async/sim/demo/_pattern_detector/_pattern_generator.py,sha256=gP0Q1-1p_3KOH7mWZc5m-8OUEx_jb7SAdRXcpleRqX4,7096
93
- ophyd_async/sim/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- ophyd_async/tango/__init__.py,sha256=2XxSpJWvvAlCs0GLPv6sEnUUD40fWq9OzKuiBEZ_MEs,861
95
- ophyd_async/tango/base_devices/__init__.py,sha256=fbn1-rfK8MCErpSmjAJuQioDikbjOobd4sDvAB9Xupw,157
96
- ophyd_async/tango/base_devices/_base_device.py,sha256=3GIkU1bUyunA9uTBsEtANmlJBo4WCgQmAWYbCRcjoXM,6016
97
- ophyd_async/tango/base_devices/_tango_readable.py,sha256=J-XeR2fmQU5RTdsNhRvzNPJD8xZRVJ6-qXt09vfpVtI,951
98
- ophyd_async/tango/demo/__init__.py,sha256=_j-UicTnckuIBp8PnieFMOMnLFGivnaKdmo9o0hYtzc,256
99
- ophyd_async/tango/demo/_counter.py,sha256=neKkuepWfpBxMOPnnHJ79SHgwepymG4gTDVacuHE6fA,1134
100
- ophyd_async/tango/demo/_detector.py,sha256=0wwk7Y-Dl9QF1YsCIU_BxqI6-PQ40qN_0gknrYBkxsY,1292
101
- ophyd_async/tango/demo/_mover.py,sha256=hlg0IeR6_1m7ZeavQ1HS_ZFA_MdE0c1kAso6H1Ntz-w,2701
102
- ophyd_async/tango/demo/_tango/__init__.py,sha256=FfONT7vM49nNo3a1Lv-LcMZO9EHv6bv91yY-RnxIib4,85
103
- ophyd_async/tango/demo/_tango/_servers.py,sha256=MwkkoZWJQm_cgafCBBXeQfwyAiOgU8cE90_uNfcdcGA,2916
104
- ophyd_async/tango/signal/__init__.py,sha256=-_wBvhSPb58h_XSeGVaJ6gMFOY8TQNsVYfZxQuxGB1c,750
105
- ophyd_async/tango/signal/_signal.py,sha256=72iOxCt6HkyaYPgE402h5fd1KryyVUarR0exV2A3UbU,6277
106
- ophyd_async/tango/signal/_tango_transport.py,sha256=DVTdLu8C19k-QzYaKUzFK2WMbaSd6dIO77k99ugD8U4,28990
107
- ophyd_async-0.8.0a5.dist-info/LICENSE,sha256=pU5shZcsvWgz701EbT7yjFZ8rMvZcWgRH54CRt8ld_c,1517
108
- ophyd_async-0.8.0a5.dist-info/METADATA,sha256=0uu4GmEt1a33pHw4Oa5BhF22ns92xsqC_0wNmg3nkM0,6708
109
- ophyd_async-0.8.0a5.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
110
- ophyd_async-0.8.0a5.dist-info/entry_points.txt,sha256=O0YNJTEufO0w9BozXi-JurTy2U1_o0ypeCgJLQ727Jk,58
111
- ophyd_async-0.8.0a5.dist-info/top_level.txt,sha256=-hjorMsv5Rmjo3qrgqhjpal1N6kW5vMxZO3lD4iEaXs,12
112
- ophyd_async-0.8.0a5.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- ophyd-async = ophyd_async.__main__:main
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes