Skip to content

ci: run the test suite on every supported Python version - #253

Open
karpovantonme wants to merge 1 commit into
mlco2:mainfrom
karpovantonme:ci/test-supported-python-versions
Open

ci: run the test suite on every supported Python version#253
karpovantonme wants to merge 1 commit into
mlco2:mainfrom
karpovantonme:ci/test-supported-python-versions

Conversation

@karpovantonme

@karpovantonme karpovantonme commented Aug 4, 2026

Copy link
Copy Markdown

Describe your changes

pyproject.toml promises five Python versions, in the classifiers and in requires-python = ">=3.10,<4":

Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: 3.13
Programming Language :: Python :: 3.14

pytest.yaml pins python-version: '3.13', and there is no tox or nox picking up the rest. So four of the five promised versions are never exercised, and a 3.10-only break would ship unnoticed.

This adds a matrix over exactly the versions the classifiers list, with fail-fast: false so one red version does not hide the state of the others.

I ran the suite on all five before proposing this, so this is not a guess about whether they still work:

Python Result
3.10 188 passed, 5 skipped
3.11 188 passed, 5 skipped
3.12 188 passed, 5 skipped
3.13 188 passed, 5 skipped
3.14 188 passed, 5 skipped

The support is real. It just was not guarded, which is the part this fixes.

On CI minutes: this turns one job into five, and the suite takes well under a minute, so it should be cheap. If that is still too much on every PR, the other shape is a full matrix on push to main and a single version on pull requests. Either works for me, your call.

No issue opened for this, since it is a one file change. Can open one if you track things that way.

Checklist:

  • I have read and followed the contribution guide.
  • I have performed a self-review of my code.
  • I have added tests that prove my fix is effective or that my feature works. — this change is test configuration, there is nothing to add a test for
  • I have successfully run all tests with make test. — run on all five versions, table above
  • I have successfully run pre-commit with make pre-commit. — not run, this touches only a workflow file
  • I have written documentation for the changes. — no user facing change
  • I have rebased my branch onto the target branch (usually main).

The classifiers and requires-python promise 3.10 through 3.14, and the
test workflow pinned 3.13, so four of the five promised versions were
never exercised.

Ran the suite locally on all five first: 188 passed, 5 skipped on each
of 3.10, 3.11, 3.12 and 3.14, same as on 3.13. Nothing is broken, the
support is real, it just was not guarded.

fail-fast is off so one failing version does not hide the others.
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