Skip to content

Add asyncio support with async client classes#2878

Merged
adamtheturtle merged 1 commit intomainfrom
adamtheturtle/asyncio-support-analysis
Feb 25, 2026
Merged

Add asyncio support with async client classes#2878
adamtheturtle merged 1 commit intomainfrom
adamtheturtle/asyncio-support-analysis

Conversation

@adamtheturtle
Copy link
Member

@adamtheturtle adamtheturtle commented Feb 24, 2026

Summary

Implements full asyncio support for the vws-python library. Adds three new async client classes (AsyncVWS, AsyncCloudRecoService, AsyncVuMarkService) that mirror their synchronous counterparts. Introduces AsyncTransport protocol and AsyncHTTPXTransport using httpx.AsyncClient, enabling async/await workflows in applications like FastAPI.

Changes

  • New async request helper (_async_vws_request.py)
  • Three new async client classes with complete feature parity
  • Transport abstraction with async variant (AsyncTransport protocol, AsyncHTTPXTransport)
  • 99 new async integration tests with exception coverage
  • Updated exports, documentation, and dependencies (pytest-asyncio)

Testing

All 287 tests pass (188 sync + 99 async). Strict validation: mypy, ruff, pylint, pyright all pass with zero errors.

🤖 Generated with Claude Code


Note

Medium Risk
Adds a large new async API surface (clients + transport) and resource-lifecycle behavior (aclose/async context managers) without changing existing sync clients. Risk is mainly around async request correctness, transport compatibility, and ensuring no regressions in shared response/exception handling.

Overview
Adds full asyncio support by introducing new async client classes (AsyncVWS, AsyncCloudRecoService, AsyncVuMarkService) plus a shared authenticated request helper (_async_vws_request.py) to mirror the existing sync APIs.

Introduces an async transport abstraction (AsyncTransport) and default implementation (AsyncHTTPXTransport using httpx.AsyncClient), exports the new async clients from vws.__init__, and updates Sphinx API docs to include the new modules.

Expands the test suite with async fixtures and comprehensive async integration/exception/transport tests (via pytest-asyncio), and updates tooling config (spelling dict, vulture ignore list) accordingly.

Written by Cursor Bugbot for commit db3fb18. This will update automatically on new commits. Configure here.

@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 1ca99c2 to 6eef236 Compare February 24, 2026 23:39
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 6eef236 to 467562e Compare February 25, 2026 06:59
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 467562e to 0f08696 Compare February 25, 2026 07:04
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 0f08696 to 1820a5e Compare February 25, 2026 07:19
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 1820a5e to d4e323d Compare February 25, 2026 07:42
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from d4e323d to a508525 Compare February 25, 2026 07:50
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from a508525 to 30ad14d Compare February 25, 2026 08:08
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from 30ad14d to e4dd08a Compare February 25, 2026 08:12
Implement async versions of all three client classes (AsyncVWS, AsyncCloudRecoService, AsyncVuMarkService) alongside transport abstraction. Adds AsyncTransport protocol and AsyncHTTPXTransport using httpx.AsyncClient. Includes 99 new async integration tests with complete exception coverage. All 287 tests pass with strict mypy and ruff validation.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@adamtheturtle adamtheturtle force-pushed the adamtheturtle/asyncio-support-analysis branch from e4dd08a to db3fb18 Compare February 25, 2026 08:13
@adamtheturtle adamtheturtle merged commit 0173d50 into main Feb 25, 2026
14 checks passed
@adamtheturtle adamtheturtle deleted the adamtheturtle/asyncio-support-analysis branch February 25, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant