Repository navigation
ci: run every extra on the py3.15 leg and document the OB3 context pin - #331
Merged
Merged
Conversation
lxml 6.1.3, librt 0.16.0 and MarkupSafe 3.0.4 now ship cp315 wheels, so the advisory 3.15 job no longer has to stop at [eudi]. It installs the same extras as a test leg (still --only-binary :all:) and runs flake8, mypy and pytest with the REQUIRE flags and the coverage gate. It stays continue-on-error and outside the publish gate until 3.15.0 is GA. Verified locally on CPython 3.15.0rc2: wheels-only install of [dev,ldp,eudi,ldp-sd,oid4vci], pip check clean, flake8 clean, mypy --strict clean (57 files), 1793 passed, coverage 93.12% (gate 93%). Refs #243
…ored The unversioned v3p0/context.json resolves to the bundled 3.0.3 revision. 1EdTech's live endpoint serves an older revision (sha256 b077fa13…dd48ac10, re-checked 2026-10-04) whose top-level name and description redefine terms the VC 2.0 context marks @Protected: pyld refuses to expand a VC 2.0 credential against it ("tried to redefine a protected term"). Tracking those bytes would break every credential naming the URL, so the pin stays and is now documented in the load_context docstring (API reference) and the Security Model wiki page: a third-party credential naming the unversioned URL verifies only if its issuer signed against definitions equivalent to 3.0.3 for the terms it uses, otherwise it fails closed with a signature mismatch. Badges this library issues name context-3.0.3.json and are unaffected. Fixes #324
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.
Two small, independent changes from the 2026-10-04 task review (#249).
ci: run every extra and gate on the Python 3.15 pre-release leg (#243)
lxml 6.1.3, librt 0.16.0 (mypy) and MarkupSafe 3.0.4 (pdoc) now ship cp315 wheels, so the advisory 3.15 job no longer has to stop at
[eudi]. It now runs what atestleg runs:[dev,ldp,eudi,ldp-sd,oid4vci], still--only-binary :all:, so the next missing wheel is a loud install failure rather than a silent source build;mypy, and pytest withOPENBADGES_REQUIRE_LDP_SD=1/OPENBADGES_REQUIRE_OID4VCI=1and the coverage gate.It stays
continue-on-errorand outside the publish gate. CPython 3.15.0 final slipped to 2026-10-09 (PEP 790; rc3 on 2026-10-02). After that, folding it into thetestmatrix and adding the trove classifier is the remainingbuild:step of #243.docs: explain why the unversioned OB3 context URL is pinned, not mirrored (#324)
https://purl.imsglobal.org/spec/ob/v3p0/context.jsonresolves to the bundled 3.0.3 revision. I re-checked 1EdTech's live endpoint on 2026-10-04: it serves an older revision (sha256b077fa13…dd48ac10, closest to 3.0.1 but byte-identical to none of 3.0.1–3.0.3). Its top-levelnameanddescriptionredefine terms the VC 2.0 context marks@protected, so pyld refuses to expand a VC 2.0 credential against it ("tried to redefine a protected term"). Tracking those bytes would break every credential naming the URL, so the pin stays. It is now documented in:load_contextdocstring (the pdoc API reference), plus the provenance comment above the alias;Invalid Data Integrity proof (signature mismatch). Badges this library issues namecontext-3.0.3.jsonand are unaffected.Fixes #324
Refs #243
Verification
.venv, all extras, openvc-core 1.26.0): flake8 clean,mypy --strictclean (57 files), 1793 passed, 6 deselected (conformance_docker), 0 skipped, under bothREQUIREflags; gitlint clean on both commits.[dev,ldp,eudi,ldp-sd,oid4vci],pip checkclean, flake8 andmypy --strictclean, 1793 passed with coverage 93.12% (gate 93%). The one skip is the Docker conformance module (norequests), which the default marker deselects anyway. Linux cp315 wheels for lxml/cffi exist on PyPI; this PR's own py3.15 run is the first Linux check.