Conversation
Partial progress on #65. Lays the async Python API foundation: - Add pyo3-async-runtimes = 0.22 with the tokio-runtime feature. - Introduce AsyncSerialMonitor as a new pyclass alongside the existing sync SerialMonitor. The async class is purely additive — no change to the sync API. - Expose `async reset_device(board=None)` as the first native-async method. Reset is stateless (pure HTTP) so it ports cleanly without needing to refactor the WebSocket state machine first. Future work: migrate read_lines, write, and write_json_rpc as the shared WebSocket state is refactored to be Send + Sync across await points. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 30 minutes and 13 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Next incremental step on #65 (native async API). Adds AsyncDaemon as a counterpart to the sync Daemon class, mirroring the AsyncSerialMonitor pattern from PR #73. - AsyncDaemon is purely additive — the sync Daemon class keeps all its methods and behavior. - Exposes async status() as the first method. Like reset_device on AsyncSerialMonitor, status is stateless HTTP so it ports without needing the cross-await state refactor. Future work on #65: async ensure_running(), async stop(), and then the WebSocket-backed AsyncSerialMonitor methods once the shared state is Send + Sync across await points. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Next incremental step on #65 (native async API). Adds AsyncDaemon as a counterpart to the sync Daemon class, mirroring the AsyncSerialMonitor pattern from PR #73. - AsyncDaemon is purely additive — the sync Daemon class keeps all its methods and behavior. - Exposes async status() as the first method. Like reset_device on AsyncSerialMonitor, status is stateless HTTP so it ports without needing the cross-await state refactor. Future work on #65: async ensure_running(), async stop(), and then the WebSocket-backed AsyncSerialMonitor methods once the shared state is Send + Sync across await points. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Partial progress on #65. Lays the async Python API foundation so future work can migrate methods incrementally rather than landing a single sweeping refactor.
Follow-up (tracked in #65)
The WebSocket-backed methods (`read_lines`, `write`, `write_json_rpc`, `aenter/aexit`) need the shared WebSocket state to be `Send + Sync` across `await` points before they can be exposed as async. That refactor is the bulk of remaining work on this issue.
Test plan
🤖 Generated with Claude Code