Skip to content

Extend Python support to 3.14; test min/max in CI#1490

Open
dimitri-yatsenko wants to merge 1 commit into
masterfrom
chore/python-version-support
Open

Extend Python support to 3.14; test min/max in CI#1490
dimitri-yatsenko wants to merge 1 commit into
masterfrom
chore/python-version-support

Conversation

@dimitri-yatsenko

Copy link
Copy Markdown
Member

Motivation

An audit of supported Python versions against the official EOL schedule found two gaps:

Version EOL Status before this PR
3.9 2025-10 Already excluded (>=3.10) ✅
3.10 (floor) 2026-10 Supported; EOL in ~3 months ⚠️
3.11 2027-10 Supported
3.12 2028-10 Supported
3.13 2029-10 Supported; the only version CI tested
3.14 2030-10 Released 2025-10 — was excluded ⚠️

Two problems: (1) the ceiling lagged a full release behind — 3.14 has been out since Oct 2025 but requires-python = ">=3.10,<3.14" blocked it; and (2) although the package claimed 3.10–3.13, the pixi-based test job resolved a single interpreter (3.13), so the declared floor was never exercised.

Changes

  • pyproject.toml
    • requires-python and the pixi python dependency → >=3.10,<3.15 (adds 3.14).
    • Add per-version PyPI classifiers for 3.10–3.14 (previously only a generic Programming Language :: Python), so the supported range is discoverable on PyPI.
    • Add version-pinned pixi test environments test-py310 and test-py314 (each solves independently — a solve-group can't span Python versions).
  • .github/workflows/test.yaml — run the containerized test job as a matrix over [test-py310, test-py314], so both ends of the supported range are validated on every push/PR.

Notes / follow-ups

  • 3.10 reaches EOL 2026-10. Dropping it (min → 3.11, and retargeting ruff target-version/mypy python_version) is a small breaking bump left as a follow-up rather than folded in here.
  • The single-version unit-tests job (fast feedback) now resolves to the highest supported version (3.14); the full matrix covers min+max.
  • pixi.lock is re-solved in CI (locked: false), so no committed lock update is needed; the PR's own CI run validates that all dependencies resolve on both 3.10 and 3.14.

Verification

  • pyproject.toml parses as valid TOML with the intended requires-python, classifiers, and pixi environments.
  • check-yaml, check-toml, and actionlint pre-commit hooks pass on the changed files. Cross-Python dependency resolution is validated by this PR's CI matrix.

datajoint-python declared support for 3.10–3.13 but CI (a single pixi
environment) only exercised 3.13, and 3.14 — released 2025-10 — was
excluded. This closes the ceiling gap and makes the declared range
actually tested.

- pyproject.toml: bump requires-python and the pixi python dependency to
  ">=3.10,<3.15" (adds 3.14); add per-version PyPI classifiers for
  3.10–3.14.
- pyproject.toml: add version-pinned pixi test environments (test-py310,
  test-py314) so CI can run the suite on both ends of the range. Each
  solves independently, since a solve-group cannot span Python versions.
- .github/workflows/test.yaml: run the containerized test job as a matrix
  over [test-py310, test-py314].

Note: 3.10 reaches end-of-life 2026-10; dropping it (min → 3.11) is a
follow-up, kept out of this change to avoid a breaking bump.
@dimitri-yatsenko dimitri-yatsenko added the enhancement Indicates new improvements label Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Indicates new improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant