ci: add an advisory Python 3.15 pre-release leg to the matrix (#126)#132
Merged
Conversation
CPython 3.15 is final on 2026-10-01; 3.15.0-beta.3 is already in the setup-python manifest. The leg runs continue-on-error so a pre-release regression reports without blocking a merge, and allow-prereleases only falls back to a pre-release while a version line has no GA build — so when 3.15.0 ships the same pin resolves to it with no edit; only the continue-on-error line and the trove classifier are left to flip. The supported floor is untouched: >=3.10 for all of 1.x (the raise to >=3.11 belongs to the 2.0 window, #74). No CHANGELOG entry: CI-only, the published artifact is unchanged — matching the precedent set when 3.14 joined the matrix. Closes #126
… override The first run of the new leg failed at install: lxml (pulled by signxml and by pyld 3.x) publishes no cp315 wheel, so pip fell back to building it from source and died for want of libxml2 headers. That is an ecosystem lag in an optional transitive dep, not an openvc signal — and a permanently-red advisory leg teaches everyone to ignore CI. The leg now installs [ebsi,dev] instead of [all], so it actually exercises openvc's own hand-rolled core (JOSE, CBOR/COSE, codecs, status lists, DIDs) on the new interpreter: 1028 of 1107 tests run, the rest importorskip. Coverage on that subset is 82%, so the leg is held to the local gate's floor of 80 rather than the full-matrix 85. Verified in a venv built with exactly those extras. That same venv surfaced a latent config bug: signxml was missing from mypy's ignore_missing_imports overrides, so `mypy` failed for ANYONE working without the [trustlist] extra installed, not just on 3.15. Added; mypy is now clean both with and without the optional extras.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #126 — CPython 3.15 (final 2026-10-01) now has a CI leg.
continue-on-error, so a pre-release regression reports without holding up a merge.3.15.0-beta.3is already in theactions/python-versionsmanifest, so the leg has something real to run against today.allow-prereleases: trueonly falls back to a pre-release while a version line has no GA build — when 3.15.0 ships, the same'3.15'pin resolves to the GA automatically. Only two things are left to flip then: thecontinue-on-errorline (documented in a comment right above it) and the trove classifier.>=3.10for all of 1.x; the raise to>=3.11belongs to the 2.0 window (refactor!: openvc 2.0 — deprecation removals, Python >=3.11, RFC 9864 alg naming, the W3C 1.1/2.1 wave #74).CONTRIBUTING.mdupdated: the CI description now mentions the advisory 3.15 leg and thepyldfloor leg from chore(deps): pyld 3.x — run the DI goldens against 3.1, decide the floor, evaluate FrozenDocumentLoader #124.No CHANGELOG entry and no release: this is CI-only — the published artifact is byte-identical, and no trove classifier changes yet. That matches the precedent from when 3.14 joined the matrix (
2da5a98), which carried neither. The entry and classifier land with the October follow-up.Local gate green: flake8, mypy, pytest 1217 passed / 20 skipped, build + twine. Workflow YAML validated: the matrix resolves to 7 legs (3.10–3.15 + the pyld 2.0.4 floor leg).