Skip to content

ci: sync ci.yml from django-marina (Python 3.15, gate every job) - #878

Open
dyve wants to merge 2 commits into
mainfrom
ci-python-3.15-and-gate
Open

dyve wants to merge 2 commits into
mainfrom
ci-python-3.15-and-gate

Conversation

@dyve

@dyve dyve commented Sep 21, 2026

Copy link
Copy Markdown
Member

Stacked on #877. It branches from release-26.4 so its changelog entries land in a fresh Unreleased section rather than inside the released one. Merge #877 first and this reduces to the four files below.

Two changes propagated from django-marina (#681 and #682), both landing in ci.yml, so they travel as one review rather than two.

Python 3.15. 3.15.0rc2 is installable through uv, so the matrix reports on it well before the October release. The legs run with continue-on-error and cannot fail the build. No Django release claims 3.15 yet, 5.2, 6.0 and 6.1 all stop their classifiers at 3.14, so it pairs with 6.1 and main only. uv sync now pins the interpreter with --python, because uv skips pre-release interpreters when resolving by discovery, and that flag applies to every leg, so it is the line to look at hardest. Classifiers in pyproject.toml stay at 3.14: a classifier is a promise and a job that cannot fail the build does not back one. MAINTAINING.md records that rule.

The CI gate. tests is the only required status check on main and it only failed on the test matrix. docs and build feed nothing, so a failure in either left the matrix green and the gate green with it, meaning a broken docs build or a failing packaging preflight could be merged. It now reads every job it needs. The if: always() stays, because a job skipped after a failed need reports success to branch protection, so dropping it would reintroduce the hole through the front door.

Worth knowing for this package specifically: MAINTAINING.md names Pillow as the C-extension dependency that gates making a pre-release job blocking, and Pillow 12.3.0 already publishes cp315 wheels. That gate is open whenever 3.15 goes final. The bullet stays as policy rather than recording today's state, which would go stale.

The GDAL install steps and the jinja extra stay where they are, as PACKAGING.md requires here. Apart from those, ci.yml and tox.ini are byte-identical to django-marina after this.

Verified locally: py315-6.1 and py315-main pass here on 3.15.0rc2, 172 tests.

🤖 Generated with Claude Code

dyve and others added 2 commits September 21, 2026 09:01
Three commits have touched src/ since v26.3 on 2026-08-28: addon support on
floating-label fields, week/search/color inputs recognised as form controls,
and the BOOTSTRAP5 system check.

The test dependency group listed coverage[toml]>=7.6.1 twice. The duplicate is
dropped and the group sorted alphabetically, matching the docs group next to
it. Resolution does not change, only the lockfile's version of this package.

Entries are reordered to the convention in MAINTAINING.md: the missing
inline_field_class default first as a fix, then the three features, then
tooling, then documentation.

Verified with just lint and just build: check-manifest clean, pyroma 10/10, and
both the wheel and the sdist smoke-test against an isolated environment.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two changes propagated from django-marina, both in ci.yml, so they travel
together rather than as two rounds of review.

Python 3.15.0rc2 runs as a non-blocking matrix job against Django 6.1 and main.
No Django release claims 3.15 yet, so pairing it with 5.2 or 6.0 would park
permanent red legs that say nothing about this package. uv sync now pins the
interpreter with --python, because uv skips pre-release interpreters when it
resolves by discovery and the 3.15 leg would otherwise test on whatever else
the runner had.

The tests job is the only required status check on main, and it only failed on
the test matrix. docs and build feed nothing, so a failure in either left the
matrix green and the gate green with it: a broken docs build or a failing
packaging preflight could be merged. It now reads every job it needs. always()
stays because a job skipped after a failed need reports success to branch
protection, which is GitHub's documented behaviour and the reason the condition
is spelled out.

MAINTAINING.md names Pillow as the C-extension dependency that gates making a
pre-release job blocking. Pillow 12.3.0 already publishes cp315 wheels, so that
gate is open whenever 3.15 goes final. The bullet stays as policy rather than
recording today's state, which would go stale.

The GDAL install steps and the jinja extra stay where they are, as PACKAGING.md
requires for this package. Apart from those, ci.yml and tox.ini are now
byte-identical to django-marina.

Verified: py315-6.1 and py315-main pass here on 3.15.0rc2, 172 tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 35582349385

Coverage remained the same at 96.208%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 709
Covered Lines: 687
Line Coverage: 96.9%
Relevant Branches: 214
Covered Branches: 201
Branch Coverage: 93.93%
Branches in Coverage %: Yes
Coverage Strength: 15.5 hits per line

💛 - Coveralls

This branch has not been deployed

No deployments
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.

2 participants