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
I propose implementing native asyncio support for the Python SDK using a Unified Client architecture. Instead of introducing a separate AsyncClient or a package.aio submodule (which stalled previous attempts like PR #453), asynchronous capabilities should be integrated directly into the existing Client and Service classes.
Core Implementation:
A single Client object handles both workflows.
Every service method is generated in a "Dual-Mode" pair directly alongside each other:
Synchronous: def list(self, ...):
Asynchronous: async def list_async(self, ...):
We transition the underlying HTTP engine from requests to httpx, which natively supports both synchronous and asynchronous operations using an identical API shape, making the dual-mode generator templates trivial to maintain.
🎤 Pitch
The community has requested native Python async support for over two years (Issue #26). Implementing a unified "Dual-Mode" pattern solves the architectural friction that halted previous PRs:
Maintainer Alignment: It addresses the exact feedback provided by core contributors in PR Async Support in Python SDK #453, who requested that async methods live alongside sync methods without requiring users to instantiate a whole new AsyncClient class.
Modern Developer Experience: Frameworks like FastAPI, Starlette, and Sanic are now standard. Developers must be able to await client.users.list_async() natively without blocking the event loop or hacking together ThreadPoolExecutors.
Zero Maintenance Drift: By utilizing Twig parameterDispatchBlock filters in the generator (similar to the new dual-mode C++ SDK), the synchronous and asynchronous methods are generated from the exact same spec source. They will never fall out of sync as the API evolves.
100% Backwards Compatible: Existing code using requests semantics remains totally unaffected since standard def methods will work exactly as they did before.
👀 Have you spent some time to check if this issue has been raised before?
🔖 Feature description
I propose implementing native
asynciosupport for the Python SDK using a Unified Client architecture. Instead of introducing a separateAsyncClientor apackage.aiosubmodule (which stalled previous attempts like PR #453), asynchronous capabilities should be integrated directly into the existingClientand Service classes.Core Implementation:
Clientobject handles both workflows.def list(self, ...):async def list_async(self, ...):requeststohttpx, which natively supports both synchronous and asynchronous operations using an identical API shape, making the dual-mode generator templates trivial to maintain.🎤 Pitch
The community has requested native Python async support for over two years (Issue #26). Implementing a unified "Dual-Mode" pattern solves the architectural friction that halted previous PRs:
AsyncClientclass.await client.users.list_async()natively without blocking the event loop or hacking togetherThreadPoolExecutors.parameterDispatchBlockfilters in the generator (similar to the new dual-mode C++ SDK), the synchronous and asynchronous methods are generated from the exact same spec source. They will never fall out of sync as the API evolves.requestssemantics remains totally unaffected since standarddefmethods will work exactly as they did before.👀 Have you spent some time to check if this issue has been raised before?
🏢 Have you read the Code of Conduct?