pymmcore-plus 0.14.0__py3-none-any.whl → 0.15.2__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 (31) hide show
  1. pymmcore_plus/__init__.py +25 -0
  2. pymmcore_plus/_ipy_completion.py +363 -0
  3. pymmcore_plus/_pymmcore.py +4 -2
  4. pymmcore_plus/core/_constants.py +25 -3
  5. pymmcore_plus/core/_mmcore_plus.py +110 -55
  6. pymmcore_plus/core/_sequencing.py +1 -1
  7. pymmcore_plus/core/events/_deprecated.py +67 -0
  8. pymmcore_plus/core/events/_protocol.py +64 -39
  9. pymmcore_plus/core/events/_psygnal.py +35 -6
  10. pymmcore_plus/core/events/_qsignals.py +34 -6
  11. pymmcore_plus/experimental/unicore/__init__.py +12 -2
  12. pymmcore_plus/experimental/unicore/_device_manager.py +1 -1
  13. pymmcore_plus/experimental/unicore/_proxy.py +20 -3
  14. pymmcore_plus/experimental/unicore/core/__init__.py +0 -0
  15. pymmcore_plus/experimental/unicore/core/_sequence_buffer.py +314 -0
  16. pymmcore_plus/experimental/unicore/core/_unicore.py +1769 -0
  17. pymmcore_plus/experimental/unicore/devices/_camera.py +201 -0
  18. pymmcore_plus/experimental/unicore/devices/{_device.py → _device_base.py} +54 -28
  19. pymmcore_plus/experimental/unicore/devices/_generic_device.py +12 -0
  20. pymmcore_plus/experimental/unicore/devices/_properties.py +9 -2
  21. pymmcore_plus/experimental/unicore/devices/_shutter.py +30 -0
  22. pymmcore_plus/experimental/unicore/devices/_slm.py +82 -0
  23. pymmcore_plus/experimental/unicore/devices/_stage.py +1 -1
  24. pymmcore_plus/experimental/unicore/devices/_state.py +152 -0
  25. pymmcore_plus/mda/events/_protocol.py +8 -8
  26. {pymmcore_plus-0.14.0.dist-info → pymmcore_plus-0.15.2.dist-info}/METADATA +2 -2
  27. {pymmcore_plus-0.14.0.dist-info → pymmcore_plus-0.15.2.dist-info}/RECORD +30 -21
  28. pymmcore_plus/experimental/unicore/_unicore.py +0 -703
  29. {pymmcore_plus-0.14.0.dist-info → pymmcore_plus-0.15.2.dist-info}/WHEEL +0 -0
  30. {pymmcore_plus-0.14.0.dist-info → pymmcore_plus-0.15.2.dist-info}/entry_points.txt +0 -0
  31. {pymmcore_plus-0.14.0.dist-info → pymmcore_plus-0.15.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- from typing import Protocol, runtime_checkable
1
+ from typing import ClassVar, Protocol, runtime_checkable
2
2
 
3
3
  from pymmcore_plus.core.events._protocol import PSignal
4
4
 
@@ -7,29 +7,29 @@ from pymmcore_plus.core.events._protocol import PSignal
7
7
  class PMDASignaler(Protocol):
8
8
  """Declares the protocol for all signals that will be emitted from [`pymmcore_plus.mda.MDARunner`][].""" # noqa: E501
9
9
 
10
- sequenceStarted: PSignal
10
+ sequenceStarted: ClassVar[PSignal]
11
11
  """Emits `(sequence: MDASequence, metadata: dict)` when an acquisition sequence is started.
12
12
 
13
13
  For the default [`MDAEngine`][pymmcore_plus.mda.MDAEngine], the metadata `dict` will
14
14
  be of type [`SummaryMetaV1`][pymmcore_plus.metadata.schema.SummaryMetaV1].
15
15
  """ # noqa: E501
16
- sequencePauseToggled: PSignal
16
+ sequencePauseToggled: ClassVar[PSignal]
17
17
  """Emits `(paused: bool)` when an acquisition sequence is paused or unpaused."""
18
- sequenceCanceled: PSignal
18
+ sequenceCanceled: ClassVar[PSignal]
19
19
  """Emits `(sequence: MDASequence)` when an acquisition sequence is canceled."""
20
- sequenceFinished: PSignal
20
+ sequenceFinished: ClassVar[PSignal]
21
21
  """Emits `(sequence: MDASequence)` when an acquisition sequence is finished."""
22
- frameReady: PSignal
22
+ frameReady: ClassVar[PSignal]
23
23
  """Emits `(img: np.ndarray, event: MDAEvent, metadata: dict)` after an image is acquired during an acquisition sequence.
24
24
 
25
25
  For the default [`MDAEngine`][pymmcore_plus.mda.MDAEngine], the metadata `dict` will
26
26
  be of type [`FrameMetaV1`][pymmcore_plus.metadata.schema.FrameMetaV1].
27
27
  """ # noqa: E501
28
- awaitingEvent: PSignal
28
+ awaitingEvent: ClassVar[PSignal]
29
29
  """Emits `(event: MDAEvent, remaining_sec: float)` when the runner is waiting to start an event.
30
30
 
31
31
  Note: Not all events in a sequence will emit this signal. This will only be emitted
32
32
  if the wait time is non-zero.
33
33
  """ # noqa: E501
34
- eventStarted: PSignal
34
+ eventStarted: ClassVar[PSignal]
35
35
  """Emits `(event: MDAEvent)` immediately before event setup and execution."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymmcore-plus
3
- Version: 0.14.0
3
+ Version: 0.15.2
4
4
  Summary: pymmcore superset providing improved APIs, event handling, and a pure python acquisition engine
5
5
  Project-URL: Source, https://github.com/pymmcore-plus/pymmcore-plus
6
6
  Project-URL: Tracker, https://github.com/pymmcore-plus/pymmcore-plus/issues
@@ -30,7 +30,7 @@ Requires-Dist: numpy>=1.26.0; python_version >= '3.12'
30
30
  Requires-Dist: numpy>=2.1.0; python_version >= '3.13'
31
31
  Requires-Dist: platformdirs>=3.0.0
32
32
  Requires-Dist: psygnal>=0.10
33
- Requires-Dist: pymmcore>=11.2.1.71.0
33
+ Requires-Dist: pymmcore>=11.9.0.73.0
34
34
  Requires-Dist: rich>=10.2.0
35
35
  Requires-Dist: tensorstore!=0.1.72,>=0.1.67
36
36
  Requires-Dist: tensorstore!=0.1.72,>=0.1.71; python_version >= '3.13'
@@ -1,10 +1,11 @@
1
- pymmcore_plus/__init__.py,sha256=EEwtq7bwQ1NC0-wu1DoyA9kJQS7nHqZOlUoYmK3-FQI,1500
1
+ pymmcore_plus/__init__.py,sha256=trTkp3YbM8nahgsl1_N8snC5bs0GY7CX1v1ssVgBh2c,2243
2
2
  pymmcore_plus/_accumulator.py,sha256=WUgCrLW0U8_kWXfmhSRrC17ubWZNQNckkGVBiTp72F8,9205
3
3
  pymmcore_plus/_benchmark.py,sha256=YJICxXleFQVbOluJdq4OujnIcTkkuMVzeB8GJ8nUv5I,6011
4
4
  pymmcore_plus/_build.py,sha256=RPTAuwCZWGL5IDJj4JZo1DIIouUsIqS3vnbPbG2_bRE,10993
5
5
  pymmcore_plus/_cli.py,sha256=wmqlG8UGBNiTefRppSnRHwnD3w-5DAhN168lIBujbRA,16831
6
+ pymmcore_plus/_ipy_completion.py,sha256=K__bKTJZukzz0RhNr3KZ2urpQGxQrW8ySUQtHDoKfLA,17936
6
7
  pymmcore_plus/_logger.py,sha256=d7ldqxY0rGWORKdIzNUiFc9BW6cFBx57kHWtXyY1HE0,5416
7
- pymmcore_plus/_pymmcore.py,sha256=tcWtTRte9AFQznLGn6CmwLW0W3Rsse8N8NQ5L7JwKCc,630
8
+ pymmcore_plus/_pymmcore.py,sha256=hy0gfEhvQ84o7SFIB2nQp6A1w2L4U7VQrV5_qKsJoLQ,699
8
9
  pymmcore_plus/_util.py,sha256=VGcb_nQu6BBWZsQihed0TrCHdTRADKlBo_qSnIbeF0Q,22814
9
10
  pymmcore_plus/install.py,sha256=U4TbQXbUc12aMtGRF_SkinNOTDCuuzIhME5Oup_4ds0,10768
10
11
  pymmcore_plus/mocks.py,sha256=jNUfmffD1OArtIvEmqWsy7GCrtTpssVF03flH8cEYx8,1867
@@ -14,35 +15,43 @@ pymmcore_plus/core/__init__.py,sha256=gCZMmUjvCh4GX3dwKPxiPzt6NQokFtuHl0-tBUG7B9
14
15
  pymmcore_plus/core/_adapter.py,sha256=eu2BhGe_dnoQrIsh-u3poxWXsiF2Y8pfbKIGWbUgOk8,2857
15
16
  pymmcore_plus/core/_config.py,sha256=yWwOnW6f37lLt83MnodNce04az-g8YDjyo7BvMiTc8s,10672
16
17
  pymmcore_plus/core/_config_group.py,sha256=R-o4xuPDBPQAC3s-mFsiKwHVKWR38L9qq_aoWdPrAq8,8542
17
- pymmcore_plus/core/_constants.py,sha256=yS_YVRZQkpvTuQdOPFJdetaFpvXh4CTvd7i0qDIiAuA,13200
18
+ pymmcore_plus/core/_constants.py,sha256=tpXCn4CdhevGabUwOSvn7klMRoiXiVPmsPlAofL6Ai4,14122
18
19
  pymmcore_plus/core/_device.py,sha256=v58TcROSuvxE5ALBjzS474Dx430e0iMA61OuBSnc2rE,33197
19
20
  pymmcore_plus/core/_metadata.py,sha256=L8x1gX_zXPz02BUqc7eqJM_Bey2G0RyX30SOBs2aBNc,2755
20
- pymmcore_plus/core/_mmcore_plus.py,sha256=Qel61qHKIo-CM4fhji-PZusjs_YuSSkm5n37EO6ESPY,100368
21
+ pymmcore_plus/core/_mmcore_plus.py,sha256=uNphVZdOqNIcvZpkyMVkekQhOKZlSJm6J01M2XZ3XHI,102486
21
22
  pymmcore_plus/core/_property.py,sha256=QsQEzqOAedR24zEJ1Ge4kwScfT_7NOApVcgz6QxBJrI,8265
22
- pymmcore_plus/core/_sequencing.py,sha256=QmaCoyWzR9lX-3ldZxGYqAiEqOn8gts3X0qmskZXzQo,16887
23
+ pymmcore_plus/core/_sequencing.py,sha256=pOydKOsHjQOlYGp51hrSjHz02s4NoSEzQwTTSh3R4_Q,16887
23
24
  pymmcore_plus/core/events/__init__.py,sha256=F8r10LEBLrAV8qfkXScSkpqfExdT2XoOx92OqSturpc,1078
25
+ pymmcore_plus/core/events/_deprecated.py,sha256=H_Sd63ZyV3Hkq8Imozi8OE7FIa_hhSRpEyhjLj4xTB8,2241
24
26
  pymmcore_plus/core/events/_device_signal_view.py,sha256=t-NfBdg3E4rms4vDFxkkR5XtrpLxaBT7mfPwkpIsbVk,1079
25
27
  pymmcore_plus/core/events/_norm_slot.py,sha256=8DCBoLHGh7cbB1OB19IJYwL6sFBFmkD8IakfBOvFbw8,2907
26
28
  pymmcore_plus/core/events/_prop_event_mixin.py,sha256=FvJJnpEKrOR-_Sp3-NNCwFoUUHwmNKiHruo0Y1vybsY,4042
27
- pymmcore_plus/core/events/_protocol.py,sha256=Zp_8rldyNca3RUOsgnxYj8Bxmo9rLsruTX-ORHBNw9E,8043
28
- pymmcore_plus/core/events/_psygnal.py,sha256=9xsTY9wysrUlis5_29CesgyEXGDv8kwgZOZjaN_V7bc,1763
29
- pymmcore_plus/core/events/_qsignals.py,sha256=pN87k6XEIrgtbJTJWjwKWRR3j-RIGGwnaX-9iHPB-q0,3135
29
+ pymmcore_plus/core/events/_protocol.py,sha256=LSS2ns1XZqByB61nx_zdwMxqQuHmRj4BrbJ392f6Z30,8944
30
+ pymmcore_plus/core/events/_psygnal.py,sha256=GZGLU-L9lE-l-_24ABKhT8_OUw0yvu9QxNIk6mAVwL8,2709
31
+ pymmcore_plus/core/events/_qsignals.py,sha256=d1-J2ISo09JovLrZ6Tn3b5DHrmbRMbvqfFaH_Hsb0Os,4009
30
32
  pymmcore_plus/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- pymmcore_plus/experimental/unicore/__init__.py,sha256=OcjUZ4tq-NtWDR5R3JFivsRePliQSIQ7Z92k_8Gfz2Q,361
32
- pymmcore_plus/experimental/unicore/_device_manager.py,sha256=c5DAMsnK06xOy6G7YjHdUughc7xdFtzeo10woO5G_KE,6418
33
- pymmcore_plus/experimental/unicore/_proxy.py,sha256=Sl_Jiwd4RlcKgmsrEUNZT38YPFGlQonELAg_n3sfbdo,4020
34
- pymmcore_plus/experimental/unicore/_unicore.py,sha256=3-HkZbbrQxrUgvEx3A6XEStDH9C3c6NdG_Kb8y1KubY,29029
33
+ pymmcore_plus/experimental/unicore/__init__.py,sha256=2jjw8K3DZ8NSY5mFn4YBTrYp78Zc9EbGIZCiyG7PujQ,682
34
+ pymmcore_plus/experimental/unicore/_device_manager.py,sha256=I0kbIsxxT3tyeeSElK4l4kUd16hbw81fJv3UZCQPW2Q,6423
35
+ pymmcore_plus/experimental/unicore/_proxy.py,sha256=QPFnG9Mw6WCFSui8nUCabJTJL-Xyvyo-fbLM1Q949is,4703
36
+ pymmcore_plus/experimental/unicore/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ pymmcore_plus/experimental/unicore/core/_sequence_buffer.py,sha256=uyTKacCZNgxmsssBoAt62TvZjtv892YaTojyIDicgRI,12050
38
+ pymmcore_plus/experimental/unicore/core/_unicore.py,sha256=6invaoXaCpvPKqPGa2g5IKXjP5C6hKs0hDuihPs4lfc,72387
35
39
  pymmcore_plus/experimental/unicore/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- pymmcore_plus/experimental/unicore/devices/_device.py,sha256=PfX4BSpVMPXyNCNWkZ0Xy1-72ZZdME5zm7NgtCRu8ts,9751
37
- pymmcore_plus/experimental/unicore/devices/_properties.py,sha256=KuHlSNNpmfj_Q1m1uyfycpE5C63jLg5Mm_D57In2oPo,15389
38
- pymmcore_plus/experimental/unicore/devices/_stage.py,sha256=Ab4uibYq1cjIBtwcthCxH2FudGq9UMjub-qVeRpApQY,7892
40
+ pymmcore_plus/experimental/unicore/devices/_camera.py,sha256=Ef0VATVVNldZoYlQv7Qykgw1I6G-jk2usk7qhjJFXJ8,8538
41
+ pymmcore_plus/experimental/unicore/devices/_device_base.py,sha256=rmxzP-Cghn9bOA0m3I2a-7CspJAsp3OwTY6mv3bYzE0,10870
42
+ pymmcore_plus/experimental/unicore/devices/_generic_device.py,sha256=mp5vHTh3pJI6PJjBc90198KvRJ2eE8GARdYrj9zs27k,317
43
+ pymmcore_plus/experimental/unicore/devices/_properties.py,sha256=O57Y0dGvYCe5D7FlO74J_n9Ov6yr0A02ccCo3M6aNyc,15610
44
+ pymmcore_plus/experimental/unicore/devices/_shutter.py,sha256=UwOkKMZ2j2npr1W8v2Kyp2fCPECHAU3RFlIoDMpRlts,744
45
+ pymmcore_plus/experimental/unicore/devices/_slm.py,sha256=L2axjzcNQlCSADkuYFwJlZFt2HvC3mCGfqk7VF72KJE,3018
46
+ pymmcore_plus/experimental/unicore/devices/_stage.py,sha256=NO96VqeLTdtEWBQ3fPerdQhvGK6Nmu57ZKSq5g9jMiA,7897
47
+ pymmcore_plus/experimental/unicore/devices/_state.py,sha256=EpZAI9jYEQ9hU-H873ow9xY1u0oEXCs5lq6Op8-e-Xs,6091
39
48
  pymmcore_plus/mda/__init__.py,sha256=7VH-MqOcuK1JNSOG9HhES6Ac-Z-LuT8a0f2xPbGEt7w,344
40
49
  pymmcore_plus/mda/_engine.py,sha256=U83PnmbaWChxUCEskKqHVy-Xa8KAZAMuvwPSVTAwsKg,31205
41
50
  pymmcore_plus/mda/_protocol.py,sha256=10CDJ9H57oX1z0oqK3eShXyQhufHvvu3_8wdaCYpPIg,3254
42
51
  pymmcore_plus/mda/_runner.py,sha256=NSOhpll6_WxDLO19FTs19dASJcHcOoVOCy7q_QzX_Ms,18523
43
52
  pymmcore_plus/mda/_thread_relay.py,sha256=Ww-9gyvLEzwRhnpL1dpze71wL7IRlhH8K3Q1dmJIxgs,6193
44
53
  pymmcore_plus/mda/events/__init__.py,sha256=v7YsVXzd3cTavFs2v3_PEhjqP4CtuRE0nWUoJA3CvYU,1176
45
- pymmcore_plus/mda/events/_protocol.py,sha256=9Q7LjYOgEWQGS8gHMV97UXM9bhoVW2OeyoPyNsQbwzw,1659
54
+ pymmcore_plus/mda/events/_protocol.py,sha256=9xs9sRaCGtOQcAPChsB_NxXs4g8eaEKuJHBzNRRtiII,1739
46
55
  pymmcore_plus/mda/events/_psygnal.py,sha256=TdN1mFGpTPXmEs9iwFKSC1svv87PDZkT2JZvl0tEGrQ,640
47
56
  pymmcore_plus/mda/events/_qsignals.py,sha256=tULQg-e_NX197DxJXaWHn1zLJ-4tzc9QyOAnsobEDtA,554
48
57
  pymmcore_plus/mda/handlers/_5d_writer_base.py,sha256=c9cA0n8DOBoZcy9asue5eV7jW8hFVC0XEewroFgDNHA,11925
@@ -65,8 +74,8 @@ pymmcore_plus/model/_device.py,sha256=AX3rO2gbY7AXJyMN3FfI_n2jl2V0IAPuBh7MiDA5Sq
65
74
  pymmcore_plus/model/_microscope.py,sha256=69VV6cuevinOK_LhYEkQygHGesvCZefdn9YNt3mV618,11353
66
75
  pymmcore_plus/model/_pixel_size_config.py,sha256=RXk8AAwARe8clsXue0GZfOTb1bxyXIsO0ibcDLHM4_s,3889
67
76
  pymmcore_plus/model/_property.py,sha256=NQzNtnEzSCR9ogwx1cfi8X-qbJ_cBSJKdSBAaoKoPQ0,3720
68
- pymmcore_plus-0.14.0.dist-info/METADATA,sha256=OzbM7QxgZUlFrhCR3w4lpdchrL7i4AGeANeLqwvl8J0,8835
69
- pymmcore_plus-0.14.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- pymmcore_plus-0.14.0.dist-info/entry_points.txt,sha256=NtFyndrQzBpUNJyil-8e5hMGke2utAf7mkGavTLcLOY,51
71
- pymmcore_plus-0.14.0.dist-info/licenses/LICENSE,sha256=OHJjRpOPKKRc7FEnpehNWdR5LRBdBhUtIFG-ZI0dCEA,1522
72
- pymmcore_plus-0.14.0.dist-info/RECORD,,
77
+ pymmcore_plus-0.15.2.dist-info/METADATA,sha256=YxrpoW8j0NccoGNVcU8phM-vNTAQgh6jmm8US4pwCn4,8835
78
+ pymmcore_plus-0.15.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
79
+ pymmcore_plus-0.15.2.dist-info/entry_points.txt,sha256=NtFyndrQzBpUNJyil-8e5hMGke2utAf7mkGavTLcLOY,51
80
+ pymmcore_plus-0.15.2.dist-info/licenses/LICENSE,sha256=OHJjRpOPKKRc7FEnpehNWdR5LRBdBhUtIFG-ZI0dCEA,1522
81
+ pymmcore_plus-0.15.2.dist-info/RECORD,,