- Breaking Change: Raised the supported Python runtime floor from 3.9+ to 3.12+ so the SDK no longer has to retain vulnerable locked dependency versions for EOL Python 3.9 or depend on tooling lines that are already dropping older runtime support.
- Expanded low-level API endpoint coverage for Assemblies, Assembly Notifications, Templates, Template Credentials, Priority Job Slots, and Billing, with sync and async methods generated from the API2 endpoint contract.
- Added explicit asyncio support with
AsyncTransloadit, async request/assembly/template helpers, andasyncio.sleep-based polling. Resumable uploads stay on the existing TUS client, but run throughasyncio.to_thread()so the event loop remains responsive instead of pretending the sync uploader is natively async. - Hardened upload and response edge cases: invalid service URLs and empty template IDs now fail fast, external absolute API URLs are no longer signed, sync TUS uploads now handle nameless streams and submit rate limits before uploading, sync non-resumable retries rewind seekable files and reject non-seekable retry streams, sync/async polling rate-limit retries reset after successful polls and cap repeated rate limits, async form fields match sync boolean serialization, async TUS cancellation waits for worker cleanup, async rate-limit backoff honors server
retryIn, Smart CDN signing rejects invalid workspace slugs/reserved query keys, and sync non-JSON responses fall back to response text. - Hardened sync and async request handling by preserving custom
authconstraints, quoting path IDs, and keeping explicit/custom service URLs compatible with local, CI, and Transloadit Gateway deployments. - Fixed sync and async template creation to send the current API
templatepayload shape. - Raised the runtime HTTP stack to patched versions by requiring
requests2.33+ and adding an expliciturllib32.7+ floor. - Updated development and documentation tooling, including
pytest9.0.3,Sphinx9.1,sphinx-autobuild2025.8,coverage7.14,tox4.54, andrequests-mock1.12. - Updated CI and local Docker test coverage to a representative Python 3.12, 3.13, and 3.14 matrix.
- Migrated package metadata to the modern
[project]format used by Poetry 2. - Refreshed GitHub Actions, release documentation, and Sphinx docs that still referenced older runtime/tooling assumptions.
- Refreshed locked runtime and development dependencies, including
aiohttp3.13.5,idna3.15,pygments2.20.0, Python-version-specificrequestsupdates, andtuspy1.1.0. - Updated development tooling to Python 3.9-compatible majors:
pytest8.4,pytest-cov7.1,Sphinx7.4, andsphinx-autobuild2024.10. - Kept SDK runtime support at Python 3.9+ to match package metadata, README, and CI, and held back newer tooling majors that require a higher Python floor.
- Removed obsolete compatibility and documentation tooling from the dependency surface, including
six,livereload, andtornado.
- Added a Docker-based test harness (
scripts/test-in-docker.sh) that mirrors our GitHub Actions matrix locally, including optional Smart CDN parity checks via the official Transloadit CLI. - Introduced an opt-in end-to-end image resize test (
tests/test_e2e_upload.py) plus supportingchameleon.jpgfixture; enable by settingPYTHON_SDK_E2E=1along withTRANSLOADIT_KEY/TRANSLOADIT_SECRET. - Updated CI to run the E2E upload on Python 3.12 with guarded secrets and to skip coverage for that targeted job.
- Documented the new workflows and ensured the Transloadit CLI integration replaces the legacy TypeScript helper.
- Add support for Python 3.13
- Added SDK support for signed Smart CDN URLs (see https://transloadit.com/docs/topics/signature-authentication/#smart-cdn). This is shipped within the new client#get_signed_smart_cdn_url() method.
- Version updates for dependencies.
- Breaking Change: Python versions prior to 3.9 have been deleted as they are no longer supported.
- Updating packages versions.
- Added
sha_384as hash algorithm for the signature authentication. - Drop Python 3.6 from CI. It has been unsupported since December 2021 and github actions runner don't support anymore (actions/setup-python#544)
- Add documentation on publishing releases
- Avoid creating a new Assembly when a rate limit error is received from fetching an Assembly too frequently
- Drop Python versions before 3.7 as they are unsupported
- Update code to Python 3 syntax
- Prevent rate limiting when polling Assembly status
- Send
transloadit-clientheader along with requests
- Drop the use of requirements.txt for dependencies
- Update dependency versions
- Loosen request module's version
- Update tuspy version
- Increase upload chunk size