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
feat(github): give GitHubClient both a sync and an async call form
Wraps the 25 client methods with flyte's @Syncify, matching how the SDK
itself exposes Run.listall, flyte.run and flyte.serve. Each method now has
two forms: `client.foo(...)` blocks, `await client.foo.aio(...)` does not.
- Adds __enter__/__exit__ so the blocking form is actually usable. They run
__aenter__/__aexit__ on syncify's background loop -- the same loop the
syncified methods run on -- so the httpx.AsyncClient is created and used
on a single loop.
- Internal self-calls use .aio(). The blocking form would deadlock when
called from syncify's own loop thread.
- The MCP tool bridge uses .aio(). `await getattr(client, name)(...)` would
otherwise raise TypeError on the returned value, and would stall the MCP
server's event loop for the duration of every tool call.
- Tests, examples and READMEs use .aio() on async paths, and document both
forms plus when not to reach for the blocking one.
The syncified client type-checks clean: mypy resolves methods to
SyncFunction[...] and the error count on the package is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VKZrTNjjWVzTZUxDFbn4Nk
0 commit comments