Notes for maintainers. For how to submit a contribution, see CONTRIBUTING.md.
This package is in maintenance mode (see AGENTS.md and CONTRIBUTING.md) — only bug fixes, security updates, and Python/Django compatibility are in scope. The policy below still applies to compatibility work even though the package accepts no new features.
These are rules, not a snapshot of current versions — the current matrix lives in tox.ini
(envlist), .github/workflows/ci.yml (the python_django_matrix job), and pyproject.toml
(classifiers + dependencies). Those three files are the source of truth and must agree with
each other. Don't restate the matrix as a table in prose docs (AGENTS.md, README, etc.) — a
copy always drifts out of sync with the files that actually enforce it.
- Support every Python and Django release cycle that is not end-of-life, per endoflife.date/python and endoflife.date/django. Drop a cycle from the matrix as soon as it goes EOL — don't wait for a scheduled release to do it.
- Always track Django's
mainbranch in the matrix. Add a new Django release series (e.g. 6.1) alongsidemainas soon asmainhas diverged from it — i.e. once upstream cuts astable/X.Y.xbranch andmainitself moves on to the next alpha. Don't wait for the new series' final release. - Add a new Python pre-release as a non-blocking CI job (
continue-on-error: true) as soon as it's installable —uv python installcan usually fetch a new CPython the same day it's cut, so the interpreter itself is rarely the blocker. Only make the job blocking once test dependencies with C extensions publish wheels for it, if any are in use.
The default CDN URL is pinned to Bootstrap 3.4.1 — confirmed to be the final 3.x release (Bootstrap itself has moved on to 5.x, no further 3.x releases are expected). Nothing to monitor here under normal circumstances; only revisit if upstream unexpectedly cuts a new 3.x patch.
- Update
CHANGELOG.mdand bumpversioninpyproject.toml - Commit and push to
main just build— builds wheel + tarball, runs packaging checks, and smoke-tests both against an isolated envjust release-tag— creates and pushes the version tag; GitHub Actions publishes to PyPI
just release-tag requires a clean working directory and the current branch to be main. It will fail otherwise.