pymmcore-plus 0.15.2__tar.gz → 0.15.4__tar.gz

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 (113) hide show
  1. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/PKG-INFO +1 -1
  2. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_mmcore_plus.py +12 -1
  3. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_protocol.py +3 -0
  4. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_psygnal.py +1 -0
  5. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_qsignals.py +1 -0
  6. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/install.py +1 -0
  7. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/events/__init__.py +1 -1
  8. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/.gitignore +0 -0
  9. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/LICENSE +0 -0
  10. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/README.md +0 -0
  11. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/pyproject.toml +0 -0
  12. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/__init__.py +0 -0
  13. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_accumulator.py +0 -0
  14. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_benchmark.py +0 -0
  15. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_build.py +0 -0
  16. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_cli.py +0 -0
  17. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_ipy_completion.py +0 -0
  18. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_logger.py +0 -0
  19. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_pymmcore.py +0 -0
  20. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/_util.py +0 -0
  21. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/__init__.py +0 -0
  22. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_adapter.py +0 -0
  23. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_config.py +0 -0
  24. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_config_group.py +0 -0
  25. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_constants.py +0 -0
  26. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_device.py +0 -0
  27. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_metadata.py +0 -0
  28. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_property.py +0 -0
  29. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/_sequencing.py +0 -0
  30. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/__init__.py +0 -0
  31. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_deprecated.py +0 -0
  32. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_device_signal_view.py +0 -0
  33. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_norm_slot.py +0 -0
  34. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/core/events/_prop_event_mixin.py +0 -0
  35. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/__init__.py +0 -0
  36. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/__init__.py +0 -0
  37. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/_device_manager.py +0 -0
  38. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/_proxy.py +0 -0
  39. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/core/__init__.py +0 -0
  40. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/core/_sequence_buffer.py +0 -0
  41. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/core/_unicore.py +0 -0
  42. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/__init__.py +0 -0
  43. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_camera.py +0 -0
  44. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_device_base.py +0 -0
  45. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_generic_device.py +0 -0
  46. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_properties.py +0 -0
  47. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_shutter.py +0 -0
  48. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_slm.py +0 -0
  49. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_stage.py +0 -0
  50. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/experimental/unicore/devices/_state.py +0 -0
  51. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/__init__.py +0 -0
  52. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/_engine.py +0 -0
  53. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/_protocol.py +0 -0
  54. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/_runner.py +0 -0
  55. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/_thread_relay.py +0 -0
  56. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/events/_protocol.py +0 -0
  57. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/events/_psygnal.py +0 -0
  58. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/events/_qsignals.py +0 -0
  59. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_5d_writer_base.py +0 -0
  60. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/__init__.py +0 -0
  61. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_img_sequence_writer.py +0 -0
  62. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_ome_tiff_writer.py +0 -0
  63. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_ome_zarr_writer.py +0 -0
  64. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_tensorstore_handler.py +0 -0
  65. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mda/handlers/_util.py +0 -0
  66. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/metadata/__init__.py +0 -0
  67. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/metadata/functions.py +0 -0
  68. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/metadata/schema.py +0 -0
  69. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/metadata/serialize.py +0 -0
  70. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/mocks.py +0 -0
  71. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/__init__.py +0 -0
  72. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_config_file.py +0 -0
  73. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_config_group.py +0 -0
  74. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_core_device.py +0 -0
  75. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_core_link.py +0 -0
  76. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_device.py +0 -0
  77. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_microscope.py +0 -0
  78. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_pixel_size_config.py +0 -0
  79. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/model/_property.py +0 -0
  80. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/py.typed +0 -0
  81. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/src/pymmcore_plus/seq_tester.py +0 -0
  82. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/__init__.py +0 -0
  83. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/conftest.py +0 -0
  84. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/io/test_image_sequence_writer.py +0 -0
  85. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/io/test_ome_tiff.py +0 -0
  86. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/io/test_zarr_writers.py +0 -0
  87. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/local_config.cfg +0 -0
  88. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_accumulators.py +0 -0
  89. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_adapter_class.py +0 -0
  90. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_bench.py +0 -0
  91. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_cli.py +0 -0
  92. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_config_group_class.py +0 -0
  93. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_core.py +0 -0
  94. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_device_class.py +0 -0
  95. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_events.py +0 -0
  96. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_ipy_completions.py +0 -0
  97. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_mda.py +0 -0
  98. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_metadata.py +0 -0
  99. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_misc.py +0 -0
  100. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_model.py +0 -0
  101. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_pixel_config_class.py +0 -0
  102. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_property_class.py +0 -0
  103. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_sequencing.py +0 -0
  104. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_slm_image.py +0 -0
  105. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/test_thread_relay.py +0 -0
  106. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/conftest.py +0 -0
  107. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_camera.py +0 -0
  108. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_sequence_buffer.py +0 -0
  109. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_shutter.py +0 -0
  110. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_slm.py +0 -0
  111. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_state.py +0 -0
  112. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_unicore.py +0 -0
  113. {pymmcore_plus-0.15.2 → pymmcore_plus-0.15.4}/tests/unicore/test_xy_stage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymmcore-plus
3
- Version: 0.15.2
3
+ Version: 0.15.4
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
@@ -2541,6 +2541,13 @@ for name in (
2541
2541
  ).strip()
2542
2542
  )
2543
2543
 
2544
+ MMCORE_SIGNAL_NAMES = {n for n in dir(pymmcore.MMEventCallback) if n.startswith("on")}
2545
+ _SKIP = {
2546
+ "onImageSnapped",
2547
+ "onSequenceAcquisitionStopped",
2548
+ "onSequenceAcquisitionStarted",
2549
+ }
2550
+
2544
2551
 
2545
2552
  class _MMCallbackRelay(pymmcore.MMEventCallback):
2546
2553
  """Relays MMEventCallback methods to CMMCorePlus.signal."""
@@ -2551,6 +2558,11 @@ class _MMCallbackRelay(pymmcore.MMEventCallback):
2551
2558
 
2552
2559
  @staticmethod
2553
2560
  def make_reemitter(name: str) -> Callable[..., None]:
2561
+ # until we debug issues passing signals emitted on other threads into Qt,
2562
+ # we skip these signals (which already had their own pymmcore-plus emitters)
2563
+ if name in _SKIP:
2564
+ return lambda self, *args: None
2565
+
2554
2566
  sig_name = name[2].lower() + name[3:]
2555
2567
 
2556
2568
  def reemit(self: _MMCallbackRelay, *args: Any) -> None:
@@ -2564,7 +2576,6 @@ class _MMCallbackRelay(pymmcore.MMEventCallback):
2564
2576
  return reemit
2565
2577
 
2566
2578
 
2567
- MMCORE_SIGNAL_NAMES = {n for n in dir(pymmcore.MMEventCallback) if n.startswith("on")}
2568
2579
  MMCallbackRelay = type(
2569
2580
  "MMCallbackRelay",
2570
2581
  (_MMCallbackRelay,),
@@ -131,6 +131,9 @@ class PCoreSignaler(Protocol):
131
131
  """Emits `(name: str, newExposure: float)` when the exposure of the SLM device changes.""" # noqa: E501
132
132
  sLMExposureChanged: ClassVar[PSignal] # alias
133
133
 
134
+ shutterOpenChanged: ClassVar[PSignal]
135
+ """Emits `(name: str, isOpen: bool)` when the shutter open state has changed."""
136
+
134
137
  # added for CMMCorePlus
135
138
  configSet: ClassVar[PSignal]
136
139
  """Emits `(str, str)` when a config has been set.
@@ -24,6 +24,7 @@ class CMMCoreSignaler(SignalGroup, _DevicePropertyEventMixin):
24
24
  XYStagePositionChanged = Signal(str, float, float)
25
25
  exposureChanged = Signal(str, float)
26
26
  SLMExposureChanged = Signal(str, float)
27
+ shutterOpenChanged = Signal(str, bool)
27
28
 
28
29
  # https://github.com/micro-manager/mmCoreAndDevices/pull/659
29
30
  imageSnapped = Signal(str) # on snapImage()
@@ -25,6 +25,7 @@ class QCoreSignaler(QObject):
25
25
  exposureChanged = Signal(str, float)
26
26
  SLMExposureChanged = Signal(str, float)
27
27
  sLMExposureChanged = SLMExposureChanged # alias
28
+ shutterOpenChanged = Signal(str, bool)
28
29
 
29
30
  # https://github.com/micro-manager/mmCoreAndDevices/pull/659
30
31
  imageSnapped = Signal(str) # on snapImage()
@@ -68,6 +68,7 @@ DOWNLOADS_URL = f"{BASE_URL}/nightly/2.0/{plat}/"
68
68
  # generally running `mmcore install -r <some_date>` will bring in devices with
69
69
  # the NEW interface.
70
70
  INTERFACES: dict[int, str] = {
71
+ 74: "20250815",
71
72
  73: "20250318",
72
73
  72: "20250318",
73
74
  71: "20221031",
@@ -26,7 +26,7 @@ def _get_auto_MDA_callback_class() -> type[PMDASignaler]:
26
26
  return QMDASignaler
27
27
 
28
28
  # (not sure why this type ignore is needed... apparently isn't matching protocol)
29
- return MDASignaler # type: ignore
29
+ return MDASignaler
30
30
 
31
31
 
32
32
  def __dir__() -> list[str]: # pragma: no cover
File without changes
File without changes