Skip to content

Drop Python 3.10: support 3.11 to 3.14 - #48

Merged
tae898 merged 1 commit into
mainfrom
ci/drop-python-3.10
Oct 25, 2026
Merged

tae898 merged 1 commit into
mainfrom
ci/drop-python-3.10

Conversation

@tae898

@tae898 tae898 commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

What

The package now supports Python 3.11 to 3.14. requires-python becomes >=3.11 and the 3.10 classifier is removed. Python 3.10 reaches end of life in October 2026, and the >=3.10 bound was inherited from the first commit of this repository (2231dc5, 2025-11-03) and never decided. humemai/arcadedb-embedded-python already requires >=3.11. Python 3.15 is added later, as a separate change.

Changes

  • pyproject.toml: requires-python = ">=3.11", 3.10 classifier removed. There is no ruff, black, mypy or uv.lock setting that pins 3.10, and no tox or nox file.
  • scripts/select_matrix.py: PYTHONS is 3.11 to 3.14. The full matrix is 4 platforms x 4 Pythons = 16 legs per workflow. A pull request runs linux/amd64 x 3.11-3.14 and linux/arm64, darwin/arm64, windows/amd64 x 3.11 and 3.14 = 10 bindings legs, plus 4 examples legs (all platforms on 3.14).
  • tests/test_select_matrix.py: expectations updated (16 and 10 legs, 3.11 as the oldest). The test now reads pyproject.toml with tomllib (3.11 has it, so the regex workaround for 3.10 is gone), and it also checks that requires-python is >= the oldest Python of the matrix, so the next drop cannot leave the install metadata behind.
  • release.yml and scripts/after_tag_verify.sh need no change: the wheel count is computed from the classifiers (4 Pythons x 4 platforms = 16 wheels), and after_tag_verify.sh already skips cp310 wheels of the previous release when requires-python rises.
  • Docs and comments that state the range or the counts: README.md, docs/.../index.adoc, installation.adoc, development/ci.adoc, CLAUDE.md, the scripts/build.sh help text, the matrix comments in both test workflows, the examples workflow comment about 16 model downloads per release, and the floor-audit comment in test-python-bindings.yml (it named the packages 3.10 pulls in).
  • Left alone on purpose: historical records that describe what happened under 3.10 (the 2026-08-29 certificate incident comments in test-python-examples.yml and examples/download_data.py, the tests/test_bulk_insert.py arm64 note, and the dated plan in docs/superpowers/plans/).

Check counts (counted from the YAML, jobs with a matrix counted per leg)

Event Before After
Non-draft pull request 21 20
Draft pull request (Bandit and Dependency floor audit only) 2 2
Push to main, nightly, dispatch, release 46 38

A non-draft pull request runs 20 checks: 10 + 4 test legs, 2 x Download ArcadeDB JARs, 2 summary jobs, Bandit security scan and Dependency floor audit. The full matrix runs 38: 16 + 16 test legs plus the same 6 other jobs. A merge waiter for a non-draft pull request should now require at least 20 checks (it was 21).

Local checks that ran

  • pytest --noconftest tests/test_select_matrix.py on Python 3.11 and on 3.14: 21 passed each.
  • scripts/select_matrix.py for pull_request and push: bindings 10 and 16 legs, examples 4 and 16 legs.
  • pre-commit run --files on all changed files: black, isort, shfmt, actionlint and the old-package-name check pass (the YAML formatter had nothing to check).
  • uvx --from actionlint-py actionlint on all workflows: clean.
  • The check counts above were computed by reading both workflow files (jobs, if: conditions) together with the script output, not typed by hand.

This does not merge anything; the CI of this pull request is the first run of the 20-check set.

🤖 Generated with Claude Code

Python 3.10 reaches end of life in October 2026, and the lower bound was inherited from the first
commit of this repository, never decided. requires-python becomes >=3.11 and the 3.10 classifier
goes. The CI matrix (scripts/select_matrix.py) lists 3.11 to 3.14, so the full matrix is 16 legs per
workflow and a pull request runs 10 + 4 legs. release.yml and after_tag_verify.sh derive the wheel
count from the classifiers and requires-python, so they need no change.

tests/test_select_matrix.py now reads pyproject.toml with tomllib (3.11 has it) and also checks that
requires-python is the oldest Python of the matrix. README, docs, CLAUDE.md and the build.sh help
state the new range and check counts.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit 4564f44 into main Oct 25, 2026
20 checks passed
@tae898
tae898 deleted the ci/drop-python-3.10 branch October 25, 2026 08:47
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