Repository navigation
fix(python)!: require patched HTTP dependencies and Python 3.10 - #2145
Conversation
🟢 Tier S · Ready to merge
The Python SDK packaging templates now require Python 3.10+ and enforce minimum versions for Requests and urllib3 in both packaging formats and generated test requirements. The Python 3.9 E2E target was removed, and generation coverage checks the emitted metadata. The README support table now reflects the new Python floor, and the Web lockfile includes updated transitive dependency versions. Latest changes: The newest commits update the repository support table to Python 3.10+ and refresh the Web lockfile's ignore and serialize-javascript dependencies.
📂 Walkthrough · 10
✅ Fixed since the last review · 1
Reviewed the commits since |
Generated Python packages currently permit arbitrary Requests versions and allow Requests to resolve older urllib3 versions. Existing environments can therefore retain dependency versions with known advisories even when installing the latest SDK.
Require Requests >=2.34.2,<3 and urllib3 >=2.8.0,<3 in both packaging formats and the generated test requirements. These patched releases require Python 3.10+, so raise the SDK interpreter minimum consistently in packaging metadata, README, publishing workflow, formatter configuration and CI. Existing Python 3.10–3.13 E2E coverage remains.
Breaking compatibility change: Python 3.9 is no longer supported. The downstream Python SDK rollout must use a major release; this PR does not claim the currently published SDK has been remediated.
Validation:
Requires-PythonandRequires-Dist; both dependency minimums are present.CI follow-up: refreshed the Web lockfile with
./scripts/update-lockfiles.sh webto fix the serialize-javascript audit failure (7.1.2 → 7.1.4; the script also resolves ignore 7.0.14). The root Python support table now matches the 3.10 minimum. Web client and console validation both pass locally, including npm ci, npm audit, formatting, lint, types, build and CDN build. Hansi approved final head at Tier S with the documentation finding resolved and zero remaining findings. Node and React Native register separate lockfile templates and are unaffected by this lockfile refresh.No redirect/TLS transport behavior is changed here; that remains in separately owned #2131. The older Snyk PRs in sdk-for-python target historical exact pins and are not a substitute for enforcing current package minimums.
References: Requests advisory, urllib3 streaming advisory. Applicability depends on affected API usage; no production exploit is claimed.
Security tracker: https://github.com/appwrite-labs/cloud/issues/6887
Tracks appwrite-labs/cloud#6887