pymmcore-plus
pymmcore-plus
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
refactor: bump ome-writers to use new global_metadata feature (#615) * refactor: Update summary metadata handling in OmeWritersSink and tests * undo example change * fix: Update references from set_summary_metadata to set_global_metadata in OmeWritersSink and related tests * fix: Update ome-writers dependency version to 0.3.2 in pyproject.toml * remove global * bump useq
main
2 days ago
fix: ensure data sink is closed on KeyboardInterrupt Move `_finish_run` into a `finally` block so the data sink is always closed, even when the acquisition is interrupted with Ctrl+C. Previously, `_finish_run` (which calls `sink.close()`) was called after the `except Exception` block but not inside a `finally`. Since `KeyboardInterrupt` inherits from `BaseException`, not `Exception`, an interrupt would skip `_finish_run` entirely, leaving the OMEStream open. This caused an "OMEStream was not closed before garbage collection" warning and risked data loss. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ieivanov:fix/close-sink-on-keyboard-interrupt
6 days ago
refactor: bump ome-writers to use new global_metadata feature (#615) * refactor: Update summary metadata handling in OmeWritersSink and tests * undo example change * fix: Update references from set_summary_metadata to set_global_metadata in OmeWritersSink and related tests * fix: Update ome-writers dependency version to 0.3.2 in pyproject.toml * remove global * bump useq
main
8 days ago
bump useq
tlambert03:clean-summary
9 days ago
remove global
tlambert03:clean-summary
9 days ago
fix: Update ome-writers dependency version to 0.3.2 in pyproject.toml
tlambert03:clean-summary
9 days ago
feat: Add optional rich logging via PYMM_LOG_RICH env var (#613) * feat: add optional rich logging via PYMM_LOG_RICH env var Re-introduce rich logging support as an opt-in feature controlled by the PYMM_LOG_RICH environment variable. When set to 1/true/yes and rich is installed, stderr logging uses RichHandler instead of the plain formatter. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * add note that rich formatting adds overhead --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
main
9 days ago
feat: add per-device waitForDevice timeout and timeout registry Add a `timeout_ms` keyword argument to `CMMCorePlus.waitForDevice()` that overrides the global `getTimeoutMs()` for a single call. When set, the wait uses a Python-side polling loop (10 ms cadence, matching MMCore's `pollingIntervalMs_`) and raises `TimeoutError` on expiry. `timeout_ms=0` checks `deviceBusy()` once and fast-fails if still busy. Also adds a per-device timeout registry via `setDeviceTimeoutMs()` / `getDeviceTimeoutMs()`, and overrides `waitForSystem()` to iterate devices in Python so registry entries are honoured automatically. Timeout resolution order: per-call kwarg > registry > global C++ path. Propagates through `UniMMCore.waitForDevice` for Python devices. UniMMCore.waitForSystem waits for Python devices in parallel via ThreadPoolExecutor, matching the pre-existing behavior.
hinderling:feat/wait-for-device-timeout
12 days ago
Latest Branches
CodSpeed Performance Gauge
0%
fix: ensure data sink is closed on KeyboardInterrupt
#616
6 days ago
6238ff0
ieivanov:fix/close-sink-on-keyboard-interrupt
CodSpeed Performance Gauge
0%
refactor: bump ome-writers to use new global_metadata feature
#615
9 days ago
2a27f97
tlambert03:clean-summary
CodSpeed Performance Gauge
0%
feat: per-device waitForDevice timeout and timeout registry
#614
12 days ago
3ed181d
hinderling:feat/wait-for-device-timeout
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs