Skip to content

feat: add native AsyncDynavec client - #270

Merged
Kaap10 merged 17 commits into
codeforstartups:developmentfrom
Isha-Zaka:feat/async-dynavec
Oct 1, 2026
Merged

Kaap10 merged 17 commits into
codeforstartups:developmentfrom
Isha-Zaka:feat/async-dynavec

Conversation

@Isha-Zaka

Copy link
Copy Markdown
Collaborator

Description

Adds a native AsyncDynavec client backed by aioboto3 for high-concurrency async workloads while keeping the existing synchronous Dynavec API unchanged.

Related issue

Fixes #50

Changes

  • Added async S3 Vectors and DynamoDB stores with async context-manager lifecycle and aclose().
  • Added aupsert(), asearch(), and asearch_stream() using aembed_documents() / aembed_query(), including concurrent S3 and DynamoDB writes.
  • Added the optional async extra, public AsyncDynavec export, async retry/rate-limit support, shared sync/async write preparation, and async/Moto integration coverage.
  • Aligned the async paths with recent development changes for TTL and request rate limiting so sync and async behavior stay consistent.

Testing

  • Full test suite passes locally: 817 passed, 2 skipped
  • Ruff checks pass
  • mypy passes with no issues in 62 source files
  • Documentation updated, if applicable

Notes

Assume-role credentials currently reuse the existing synchronous STS resolution once during client construction, then pass the temporary credentials into the async session. AWS I/O performed by AsyncDynavec uses the async stores.

Checklist

  • My changes are focused and relevant to this pull request.
  • I have added or updated tests where appropriate.
  • I have reviewed my changes for unrelated modifications.
  • I have updated documentation where necessary.

@Kaap10 Kaap10 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM! @Isha-Zaka.

Key highlights:

  • Clean, non-blocking AsyncDynavec client with proper async context manager lifecycle (async with / aclose()).
  • Robust aioboto3 backends for both DynamoDB and S3 Vectors with zero code duplication on shared logic.
  • Full pytest-asyncio coverage (39 tests passed) and 100% clean typecheck and CI runs.

Merging this now.

@Kaap10
Kaap10 merged commit d96f19c into codeforstartups:development Oct 1, 2026
4 checks passed
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.

Native asyncio client (aioboto3)

2 participants