You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(python): native async API via pyo3-async-runtimes (AsyncSerialMonitor, AsyncDaemon) #65
The Python bindings in fbuild-python expose only synchronous methods. FastLED's FbuildSerialAdapter._run_in_thread wraps every call in a thread executor so async callers don't block their event loop, but this generates an asyncio warning under some configurations and adds latency.
Proposed fix
Add AsyncSerialMonitor, AsyncDaemon, etc. that use pyo3-async-runtimes to expose async def-callable methods directly under asyncio.run(...).
Sync API stayed untouched throughout (additive only, per the issue's Non-goals).
Remaining: WebSocket-backed AsyncSerialMonitor methods — read_lines, write, write_json_rpc, __aenter__/__aexit__. Blocked on refactoring the shared WebSocket session state to be Send + Sync across .await points (flagged in PR #73's scaffold doc-comment). Picking that up next.
Activity
feat(python): add AsyncSerialMonitor scaffold via pyo3-async-runtimes
feat(python): add AsyncSerialMonitor scaffold via pyo3-async-runtimes (…
feat(python): add AsyncDaemon with async status() (partial #65)
feat(python): add AsyncDaemon with async status() (partial #65) (#78)
feat(python): async send_op + AsyncDaemonConnection (partial #65)
feat(python): async send_op + AsyncDaemonConnection (partial #65)
zackees commentedon Apr 18, 2026
Progress update — substantial async surface merged:
AsyncSerialMonitorpyclass,pyo3-async-runtimes 0.22dep,async reset_device(board=None)AsyncDaemonpyclass,async status()send_op_async,AsyncDaemon.ensure_running(),AsyncDaemon.stop(), fullAsyncDaemonConnection(build/deploy/monitor+*_resultvariants),__aenter__/__aexit__,connect_daemon_async()factorySync API stayed untouched throughout (additive only, per the issue's Non-goals).
Remaining: WebSocket-backed
AsyncSerialMonitormethods —read_lines,write,write_json_rpc,__aenter__/__aexit__. Blocked on refactoring the shared WebSocket session state to beSend + Syncacross.awaitpoints (flagged in PR #73's scaffold doc-comment). Picking that up next.feat(python): async WebSocket-backed AsyncSerialMonitor methods (closes