Skip to content

Release Python SDK 2.0 with asyncio and Python 3.12+ - #56

Merged
kvz merged 5 commits into
mainfrom
py310-v2
Oct 11, 2026
Merged

kvz merged 5 commits into
mainfrom
py310-v2

Conversation

@kvz

@kvz kvz commented May 20, 2026 •

Copy link
Copy Markdown
Member

Why

Python SDK 2.0 gives asyncio applications a native client and raises the supported runtime floor to Python 3.12+. The existing handwritten sync client surface stays available. The dependency refresh already shipped in 1.0.4; users on Python 3.9–3.11 can keep pytransloadit<2.

Closes #9.

Changes

  • Prepared package/module/request-header version 2.0.0 and Sphinx 2.0/2.0.0, enforced Requires-Python: >=3.12, and updated Poetry metadata/tooling, CI, Docker and tox to Python 3.12/3.13/3.14.
  • Added AsyncTransloadit and matching handwritten Assembly/Template/billing helpers by squash-merging Add asyncio support to the Python SDK #57. Async polling uses asyncio.sleep; tuspy uploads run in workers with file/session cleanup.
  • README, Sphinx and CHANGELOG document migration, request handling, canonical response fields and recovery through AssemblyPollingError.
  • Aligned Read the Docs installation and release instructions; the release helper rejects an Unreleased changelog for publication while allowing dry-run builds.

Contract-generated endpoints are outside 2.0. #61 preserves that deferred work and links #60. It waits for API2-owned SDK emitters in api2#9252, owned by the existing studio1 ~/code/api2 session.

Validation and review

  • The combined tree is identical to reviewed Add asyncio support to the Python SDK #57 head 3c0a3a3: 167 tests pass on each Python 3.12/3.13/3.14, with 12 opt-in skips, 94.22% coverage and Node CLI signature parity.
  • All 24 live upload, Template lifecycle and runnable-example checks pass.
  • Poetry metadata, strict Sphinx, wheel/sdist build/scope checks, release-helper dry run, shell syntax and diff checks pass. The runtime preparation also passed installed-wheel/minimum-dependency/build-backend and Python 3.11 rejection checks.
  • Runtime council rounds fixed the RST heading and prepared-release publication guard. Three final narrowed council rounds reviewed both the stacked and combined diff: repaired polling/query/response behavior and migration notes, then preserved error recovery/query formats and serialization. The last arbitration returned No issues found. Details and fail-first evidence are in Add asyncio support to the Python SDK #57.
  • Add asyncio support to the Python SDK #57 passed all seven Ubuntu/Windows/live jobs at CI 38162453747. Combined Release Python SDK 2.0 with asyncio and Python 3.12+ #56 CI passed all seven jobs at 38162905479, including Windows and live E2E. tim-kos remains requested.

Release

Released on 2026-10-11 after the approved squash sequence #57 → #56 → main. The release commit and v2.0.0 tag are 46a98f3bf48762839b7f14a378beb359d74c0a8e.

  • GitHub release and PyPI 2.0.0 are published. Both uploaded artifacts match local SHA-256 hashes. A clean Python 3.12 install from PyPI passed sync/async surface, session/factory and polling-recovery serialization checks.
  • Release-commit CI passed all seven jobs, including Windows 3.12/3.13/3.14 and live E2E.
  • Read the Docs built the release commit successfully for both latest and stable; the served docs include 2.0.0, asyncio and the Python 3.12+ floor.
  • The required Dependabot check fell from 64 to 29 open alerts; one critical development-only anyio alert remains, with an automated update PR already open. The fresh PyPI install resolved patched runtime dependencies (aiohttp 3.14.5, urllib3 2.8.0). Existing dependency follow-ups remain outside this release-scope change.

tim-kos remains requested; both cards are Done. Contract generation remains deferred in #61, blocked by api2#9252 and linked to #60.

Friction: council found polling/query recovery gaps that needed behavioral fixes and fresh CI batches. Restricted review sandboxes could not run all network tests; the local Docker/live suite and real seven-job CI supply that runtime validation.

🤖 Claimed by kvz on framework1/python-sdk since 2026-10-11 · resume: codex resume 01a12c04-6ff8-7a91-9987-654db44d852e

@kvz kvz self-assigned this May 20, 2026
@codecov-commenter

codecov-commenter commented May 20, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.49437% with 36 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.71%. Comparing base (a9f606d) to head (eecb1cc).

Files with missing lines Patch % Lines
transloadit/assembly.py 88.65% 11 Missing ⚠️
transloadit/async_request.py 95.81% 9 Missing ⚠️
transloadit/async_client.py 95.12% 4 Missing ⚠️
transloadit/client.py 91.48% 4 Missing ⚠️
transloadit/api_url.py 94.11% 2 Missing ⚠️
transloadit/request.py 93.54% 2 Missing ⚠️
transloadit/upload.py 93.10% 2 Missing ⚠️
transloadit/async_template.py 94.11% 1 Missing ⚠️
transloadit/template.py 87.50% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #56      +/-   ##
==========================================
+ Coverage   86.60%   95.71%   +9.10%     
==========================================
  Files           7       15       +8     
  Lines         209      933     +724     
  Branches       19      130     +111     
==========================================
+ Hits          181      893     +712     
- Misses         28       40      +12     
Flag Coverage Δ
unittests 95.71% <95.49%> (+9.10%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@kvz kvz changed the title Prepare Python SDK v2 runtime refresh Prepare Python SDK 2.0 with Python 3.12+ Oct 10, 2026
Add asyncio over the handwritten SDK client surface, with owned aiohttp sessions, worker-backed resumable uploads, recoverable polling errors and canonical response examples.

Contract generation is deferred to #61, waiting for API2-owned SDK emitters in transloadit/api2#9252.

Closes #9.
@kvz kvz changed the title Prepare Python SDK 2.0 with Python 3.12+ Release Python SDK 2.0 with asyncio and Python 3.12+ Oct 11, 2026
@kvz
kvz merged commit acb3c24 into main Oct 11, 2026
7 checks passed
@kvz
kvz deleted the py310-v2 branch October 11, 2026 18:17
@kvz kvz mentioned this pull request Oct 11, 2026
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.

Add Asyncio support

2 participants