Skip to content

chore: drop python 3.10 support - #1965

Merged
spydon merged 1 commit into
mainfrom
chore/drop-python-3.10
Nov 4, 2026
Merged

spydon merged 1 commit into
mainfrom
chore/drop-python-3.10

Conversation

@spydon

@spydon spydon commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

What

Drops Python 3.10 support across every package. The minimum supported version is now Python 3.11.

Changes

  • requires-python is >=3.11 in every package, and mypy python_version is 3.11 for auth and realtime.
  • Ruff target-version is py311. Ruff's pyupgrade fixes were applied (asyncio.TimeoutError to TimeoutError, timezone.utc to UTC).
  • Removed the strenum dependency from functions and postgrest, and use enum.StrEnum directly.
  • Import Self and assert_never from typing instead of typing_extensions.
  • CI matrix tests 3.11 to 3.14, and the lowest-direct resolution jobs run on 3.11.
  • Devcontainers default to 3.11-bullseye.
  • Updated AGENTS.md, sdk-compliance.yaml notes and uv.lock.

Breaking change

Users on Python 3.10 can no longer install v3 of these packages.

Verification

  • make ruff and make mypy pass for all packages.
  • Infra-free tests for functions, postgrest, storage and realtime pass locally.

@coderabbitai

coderabbitai Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • Compatibility
    • The minimum supported Python version is now 3.11 across the SDK packages; Python 3.10 is no longer supported.
    • Development environments and automated tests now use Python 3.11 or newer, with CI coverage spanning Python 3.11–3.14.
  • Documentation
    • Updated timeout guidance to refer to Python’s standard timeout API without a version restriction.

The minimum supported Python version changes from 3.10 to 3.11 across package metadata, CI, and development containers. Code replaces compatibility imports for StrEnum, Self, and assert_never with standard-library imports, and removes related conditional dependencies. Realtime timeout handling now catches built-in TimeoutError. Tests and timeout guidance are updated.

Possibly related PRs

Change: Other

Merge Risk: Minimal · up to 76614

The migration consistently drops Python 3.10 support. No merge-blocking issue is identified; merge after normal checks pass.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: aff0d4e1-2b89-42aa-99cb-0cbb885a7d25
Commits

Reviewing files that changed from the base of the PR and between 9470ff7 and 76614d1.

Files ignored due to path filters: 1
  • uv.lock is excluded by !**/*.lock
Files selected for processing: 26
  • .devcontainer/Dockerfile
  • .devcontainer/devcontainer.json
  • .github/workflows/ci.yml
  • AGENTS.md
  • pyproject.toml
  • sdk-compliance.yaml
  • src/auth/.devcontainer/Dockerfile
  • src/auth/.devcontainer/devcontainer.json
  • src/auth/pyproject.toml
  • src/functions/pyproject.toml
  • src/functions/src/supabase_functions/utils.py
  • src/functions/tests/test_utils.py
  • src/postgrest/.devcontainer/Dockerfile
  • src/postgrest/.devcontainer/devcontainer.json
  • src/postgrest/pyproject.toml
  • src/postgrest/src/postgrest/client.py
  • src/postgrest/src/postgrest/request_builder.py
  • src/postgrest/src/postgrest/types.py
  • src/realtime/pyproject.toml
  • src/realtime/src/realtime/channel.py
  • src/realtime/src/realtime/client.py
  • src/storage/pyproject.toml
  • src/storage/tests/test_vector_index.py
  • src/supabase/pyproject.toml
  • src/utils/pyproject.toml
  • src/utils/src/supabase_utils/http/io.py

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 4 remain after this review.

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