Skip to content

chore: drop Python 3.10 support#41

Open
tabedzki wants to merge 1 commit into
devfrom
tabedzki/chore/drop-python-310
Open

chore: drop Python 3.10 support#41
tabedzki wants to merge 1 commit into
devfrom
tabedzki/chore/drop-python-310

Conversation

@tabedzki

@tabedzki tabedzki commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI text below 🤖

What

Raises the Python floor from 3.10 to 3.11.

  • pyproject.toml: requires-python = ">=3.11", remove the 3.10 classifier
  • uv.lock: re-locked with a plain uv lock (no --upgrade) — drops all python_full_version < '3.11' markers, the py3.10 wheels, and the tomli backport (stdlib tomllib since 3.11). No package versions were bumped.
  • CI (tests.yml): fix the Codecov upload if: gate that was pinned to '3.10' — which never matched the ['3.12'] matrix, so coverage upload was silently dead. Now gated on '3.12'.
  • Docs / README / tests README: state Python 3.11+ instead of 3.10+

Why

Python 3.10 reaches end-of-life in October 2026. Dropping it now unblocks moving to dependencies that require >=3.11 — notably pandas 3.0, which dropped 3.10 support. (The pandas 3.0 floor bump itself lives in the separate chained-assignment PR #39; this PR only removes the 3.10 constraint that would otherwise make pandas>=3.0 unsatisfiable.)

Verification

  • Full test suite passes: 120 passed (Python 3.14, pandas 2.3.1).
  • uv lock --check passes; lock diff is pure marker/wheel removal (−698 lines), no upgrades.
  • Repo swept for 3.10-era compatibility shims (sys.version_info guards, typing_extensions, tomli imports) — none in source, so no code changes were needed.

Note

This is intentionally scoped to the version drop. It pairs with #39 (pandas 3.0 chained-assignment fix); once both merge, a follow-up can raise the constraint to pandas>=3.0 now that the floor allows it.

Python 3.10 reaches end-of-life in October 2026, and dropping it lets the
project move to dependencies (notably pandas 3.0) that require Python >=3.11.

- pyproject.toml: requires-python >=3.11; remove the 3.10 classifier
- re-lock (plain uv lock, no upgrade): drops all python_full_version < '3.11'
  markers, py3.10 wheels, and the tomli backport; no package versions bumped
- CI: fix the Codecov upload gate that was pinned to the never-matched '3.10'
  (matrix runs 3.12), so coverage actually uploads
- docs/README/tests: state Python 3.11+ instead of 3.10+

Full test suite passes (120 passed) on Python 3.14.

Assisted-by: ClaudeCode:claude-opus-4.8
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