From 4c119c77253fa3ff41ad4a519788f832942f7392 Mon Sep 17 00:00:00 2001 From: shaonianche <16186646+shaonianche@users.noreply.github.com> Date: Wed, 28 Oct 2026 11:47:22 +0800 Subject: [PATCH] ci: test on Python 3.15 and advertise 3.15 support Python 3.15.0 shipped on 2026-10-09; the newest release is 3.15.2. - Add "3.15" to the CI test matrix alongside 3.9-3.14. - Add the Python 3.15 trove classifier; requires-python stays >=3.9. - Sync the documented CI baseline in AGENTS.md, docs/RELEASING.md and docs/FIT_CONFORMANCE_DESIGN.md. - Add a news fragment. uv.lock already carries python_full_version >= '3.15' resolution markers, so it needs no update. Amp-Thread-ID: https://ampcode.com/threads/T-01a18099-6bb6-720f-8260-746a40fe7c46 Co-authored-by: Amp --- .github/workflows/ci.yml | 2 +- AGENTS.md | 2 +- docs/FIT_CONFORMANCE_DESIGN.md | 2 +- docs/RELEASING.md | 2 +- news/python-315.misc | 1 + pyproject.toml | 1 + 6 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 news/python-315.misc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ac0cd1..37fcb96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] steps: - uses: actions/checkout@v7.0.1 diff --git a/AGENTS.md b/AGENTS.md index f55f7c4..4b9d8c0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -38,7 +38,7 @@ dependency group already includes those packages so `uv sync --group dev` suppor the full suite and `uv run gen-profile`. For a published package, install with `pip install 'fit-tool[gen]'` or `uv add 'fit-tool[gen]'`. -The CI baseline is a package build plus the full test suite on Python 3.9 through 3.14. Before finishing a normal code change, run the narrowest relevant tests and then the full suite when practical. Run `uv build` for packaging, entry-point, dependency, or metadata changes. +The CI baseline is a package build plus the full test suite on Python 3.9 through 3.15. Before finishing a normal code change, run the narrowest relevant tests and then the full suite when practical. Run `uv build` for packaging, entry-point, dependency, or metadata changes. **Ruff is a CI gate** on the Python 3.12 job (`ruff check fit_tool`). Mypy is configured in `pyproject.toml` and runs in a limited form in CI; core modules are not all under strict mypy yet. Locally: diff --git a/docs/FIT_CONFORMANCE_DESIGN.md b/docs/FIT_CONFORMANCE_DESIGN.md index ffcc65b..3382351 100644 --- a/docs/FIT_CONFORMANCE_DESIGN.md +++ b/docs/FIT_CONFORMANCE_DESIGN.md @@ -670,7 +670,7 @@ allocation based solely on untrusted lengths. ### 9.4 Required CI gates -- Python 3.9-3.14 full tests (package requires Python >=3.9). +- Python 3.9-3.15 full tests (package requires Python >=3.9). - Ruff and progressively expanded mypy. - Garmin conformance corpus. - Generated-profile determinism. diff --git a/docs/RELEASING.md b/docs/RELEASING.md index c72ca81..6cf7c54 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -34,7 +34,7 @@ set). ## Checklist -1. **`main` is green** — CI (Python 3.9–3.14 + Garmin JS interop) passes on the commit you will tag. +1. **`main` is green** — CI (Python 3.9–3.15 + Garmin JS interop) passes on the commit you will tag. 2. **News fragments are ready** — user-visible changes have `news/.` files (see `AGENTS.md`). Do not hand-edit an already-released section of `CHANGELOG.md`. 3. **Choose the version** — e.g. `0.9.16` (patch) or `0.10.0` (broader capability signal). PyPI will not accept re-uploading an existing version. 4. **Bump the package version** in `pyproject.toml`: diff --git a/news/python-315.misc b/news/python-315.misc new file mode 100644 index 0000000..e51e705 --- /dev/null +++ b/news/python-315.misc @@ -0,0 +1 @@ +Add Python 3.15 to the CI test matrix and package classifiers. diff --git a/pyproject.toml b/pyproject.toml index 659920a..9557a8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", ] requires-python = ">=3.9" # Runtime library and fit-tool CLI need no third-party packages.