pymmcore-plus 0.10.0__py3-none-any.whl → 0.10.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.
@@ -1,11 +1,11 @@
1
- from psygnal import Signal, SignalInstance
1
+ from psygnal import Signal, SignalGroup, SignalInstance
2
2
 
3
3
  from pymmcore_plus.mda import MDAEngine
4
4
 
5
5
  from ._prop_event_mixin import _DevicePropertyEventMixin
6
6
 
7
7
 
8
- class CMMCoreSignaler(_DevicePropertyEventMixin):
8
+ class CMMCoreSignaler(SignalGroup, _DevicePropertyEventMixin):
9
9
  """Signals that will be emitted from CMMCorePlus objects."""
10
10
 
11
11
  # native MMCore callback events
@@ -329,6 +329,8 @@ class MDAEngine(PMDAEngine):
329
329
  core = self._mmc
330
330
  if not event.keep_shutter_open and self._autoshutter_was_set:
331
331
  core.setAutoShutter(True)
332
+ # FIXME: this may not be hitting as intended...
333
+ # https://github.com/pymmcore-plus/pymmcore-plus/pull/353#issuecomment-2159176491
332
334
  if isinstance(event, SequencedEvent):
333
335
  if event.exposure_sequence:
334
336
  core.stopExposureSequence(self._mmc.getCameraDevice())
@@ -356,15 +358,23 @@ class MDAEngine(PMDAEngine):
356
358
  cam_device = self._mmc.getCameraDevice()
357
359
 
358
360
  if event.exposure_sequence:
361
+ with suppress(RuntimeError):
362
+ core.stopExposureSequence(cam_device)
359
363
  core.loadExposureSequence(cam_device, event.exposure_sequence)
360
364
  if event.x_sequence: # y_sequence is implied and will be the same length
361
365
  stage = core.getXYStageDevice()
366
+ with suppress(RuntimeError):
367
+ core.stopXYStageSequence(stage)
362
368
  core.loadXYStageSequence(stage, event.x_sequence, event.y_sequence)
363
369
  if event.z_sequence:
364
370
  zstage = core.getFocusDevice()
371
+ with suppress(RuntimeError):
372
+ core.stopStageSequence(zstage)
365
373
  core.loadStageSequence(zstage, event.z_sequence)
366
374
  if prop_seqs := event.property_sequences(core):
367
375
  for (dev, prop), value_sequence in prop_seqs.items():
376
+ with suppress(RuntimeError):
377
+ core.stopPropertySequence(dev, prop)
368
378
  core.loadPropertySequence(dev, prop, value_sequence)
369
379
 
370
380
  # TODO: SLM
@@ -1,9 +1,9 @@
1
1
  import numpy as np
2
- from psygnal import Signal
2
+ from psygnal import Signal, SignalGroup
3
3
  from useq import MDAEvent, MDASequence
4
4
 
5
5
 
6
- class MDASignaler:
6
+ class MDASignaler(SignalGroup):
7
7
  sequenceStarted = Signal(MDASequence, dict) # at the start of an MDA sequence
8
8
  sequencePauseToggled = Signal(bool) # when MDA is paused/unpaused
9
9
  sequenceCanceled = Signal(MDASequence) # when mda is canceled
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymmcore-plus
3
- Version: 0.10.0
3
+ Version: 0.10.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
@@ -22,16 +22,16 @@ pymmcore_plus/core/events/_device_signal_view.py,sha256=st_di51xOmKKOM9-yY8ouKlT
22
22
  pymmcore_plus/core/events/_norm_slot.py,sha256=cp6VeH5h98G7bPWrKzTsHJmzCIbi2D4sv6bSdywQbsk,2937
23
23
  pymmcore_plus/core/events/_prop_event_mixin.py,sha256=XfoXrMjRRXPHv6XkavBmSuz-6nItpJ8oG60DqK2WBEA,3939
24
24
  pymmcore_plus/core/events/_protocol.py,sha256=Cf9uGZe_uP8nIa8rsaDIX5RCW5pNQQt2juLL-rriRn4,7448
25
- pymmcore_plus/core/events/_psygnal.py,sha256=NNM-MrUOKJPF4_fiNgidQb2r_tK21Sqs1qIY_AcnxlA,1620
25
+ pymmcore_plus/core/events/_psygnal.py,sha256=owaKlW2zpvocXDbAW4kHovBoVv4Fjfn-S5oUJrVWsD4,1646
26
26
  pymmcore_plus/core/events/_qsignals.py,sha256=gr-GDiSVLhFhSfaoKrdTz2y3I_2IUg62bYDGuGrB3j0,3018
27
27
  pymmcore_plus/mda/__init__.py,sha256=MrRYE2rYuIw4dQib4KiRgVbTkjdsE-6tcTjns68Grzk,298
28
- pymmcore_plus/mda/_engine.py,sha256=NSbKLVJ43gyNzYldPdxkjhRdpHp3KO7LljdliiDoG5w,21433
28
+ pymmcore_plus/mda/_engine.py,sha256=vHkMyrOAj7glNgdvltINOzFVOmhnJ1dSmp-S-GJapBE,21953
29
29
  pymmcore_plus/mda/_protocol.py,sha256=p98OkG390Q2Rj05Cl5mza6BUTscPol_cgTxXXMkpNcI,3182
30
30
  pymmcore_plus/mda/_runner.py,sha256=1U39sfI7g29K7fkrNLqDGyWYSjStIWLymVrp2Kj_HF8,15365
31
31
  pymmcore_plus/mda/_thread_relay.py,sha256=wjP1tag7nN2Sr0RzaPnYRqHl8XjAQg2MpXOt0ONLcQ8,6112
32
32
  pymmcore_plus/mda/events/__init__.py,sha256=UZFBlIzTmKqgMw_vVSZSSAN1tkAu8qccYb-aXXBRc3I,1192
33
33
  pymmcore_plus/mda/events/_protocol.py,sha256=Ve4RbjcdHyDob-GZ2ny4gmw46JhahvI4XbXUwVZ-7zc,1315
34
- pymmcore_plus/mda/events/_psygnal.py,sha256=SDorjfCsyt6GrEjDCCvwifKO8BR3ZhLjEuJ8lUaWhKo,614
34
+ pymmcore_plus/mda/events/_psygnal.py,sha256=TdN1mFGpTPXmEs9iwFKSC1svv87PDZkT2JZvl0tEGrQ,640
35
35
  pymmcore_plus/mda/events/_qsignals.py,sha256=tULQg-e_NX197DxJXaWHn1zLJ-4tzc9QyOAnsobEDtA,554
36
36
  pymmcore_plus/mda/handlers/_5d_writer_base.py,sha256=9hBW8TH9mLh318QQk4knpCJZuhgKZOPv2X_UVZcDH-c,11515
37
37
  pymmcore_plus/mda/handlers/__init__.py,sha256=yQFRVDdCyu5t2JilobHGPC8lgCY4htNF5dzctrteSZA,305
@@ -49,8 +49,8 @@ pymmcore_plus/model/_device.py,sha256=cQngFxQ6tufrT9G46oO5iX9wh-44zZraaIFNQCyzML
49
49
  pymmcore_plus/model/_microscope.py,sha256=-soGj918ue_71mrROQ5_7cbjexKp41wPn7im0l2BfaY,9822
50
50
  pymmcore_plus/model/_pixel_size_config.py,sha256=J4qJmPZsN9dwEkoMtct5Ik-8zEC-v0aKxOBKGFH7kOE,2718
51
51
  pymmcore_plus/model/_property.py,sha256=gJM7SFjLB2HnN0E8HOn4qVlB2wAxmkEFxSJFjKauZEk,3328
52
- pymmcore_plus-0.10.0.dist-info/METADATA,sha256=Eu4ALcglK__g6Zf-gB-rsByKcCgDz3PxuEQ7EJBgXQ8,9220
53
- pymmcore_plus-0.10.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
54
- pymmcore_plus-0.10.0.dist-info/entry_points.txt,sha256=NtFyndrQzBpUNJyil-8e5hMGke2utAf7mkGavTLcLOY,51
55
- pymmcore_plus-0.10.0.dist-info/licenses/LICENSE,sha256=OHJjRpOPKKRc7FEnpehNWdR5LRBdBhUtIFG-ZI0dCEA,1522
56
- pymmcore_plus-0.10.0.dist-info/RECORD,,
52
+ pymmcore_plus-0.10.2.dist-info/METADATA,sha256=qUaNdtH932kT10tVTpK_tsOIu52o9j3TVC-33DzKoNI,9220
53
+ pymmcore_plus-0.10.2.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
54
+ pymmcore_plus-0.10.2.dist-info/entry_points.txt,sha256=NtFyndrQzBpUNJyil-8e5hMGke2utAf7mkGavTLcLOY,51
55
+ pymmcore_plus-0.10.2.dist-info/licenses/LICENSE,sha256=OHJjRpOPKKRc7FEnpehNWdR5LRBdBhUtIFG-ZI0dCEA,1522
56
+ pymmcore_plus-0.10.2.dist-info/RECORD,,