Skip to content

Add Django 6.1 support - #1

Merged
mpasternak merged 2 commits into
mainfrom
feat/django-61
Aug 7, 2026
Merged

mpasternak merged 2 commits into
mainfrom
feat/django-61

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Adds Django 6.1 (released 2026-08-05) as an additional supported/tested target.

Changes

  • .github/workflows/tests.yml — three new matrix entries: Django 6.1 × Python 3.12 / 3.13 / 3.14, mirroring the existing Django 6.0 block. Install step is unchanged: django~=${DJANGO_VERSION}.0 resolves ~=6.1.0 to >=6.1.0,<6.2.
  • pyproject.toml — added the Framework :: Django :: 6.1 classifier. No dependency change was needed: the requirement is already django>=5.2 with no upper bound.
  • README.md — Django badge and the "Django × Python" support table now list 6.1.
  • CLAUDE.md — supported matrix section updated.
  • CHANGELOG.md — Unreleased / Added entry.

Python requirement

Django 6.1 requires Python >= 3.12, exactly like 6.0. The matrix uses include: (explicit combinations, no cross-product), so no exclude: entries are needed — Python 3.10 / 3.11 simply never get paired with 6.1.

django-model-utils compatibility

The package pins django-model-utils>=5,<6 and relies on SplitField's auto-injected excerpt column (see the SeparateDatabaseAndState dance in 0001_initial). Verified locally on Python 3.13 with Django 6.1 + django-model-utils 5.0.0:

  • pytest — 17 passed
  • manage.py check on example/ — no issues
  • makemigrations --check --dry-run — no changes detected
  • ruff check / ruff format --check — clean

No code changes were required; there were no Django 6.1 incompatibilities to fix.

🤖 Generated with Claude Code

mpasternak and others added 2 commits August 6, 2026 19:28
Django 6.1 (released 2026-08-05) requires Python >= 3.12, so the new CI
entries mirror the existing Django 6.0 rows: Python 3.12 / 3.13 / 3.14.

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

The test jobs pinned a Django series with `uv pip install "Django~=X.Y.0"`
and then invoked `uv run`, which re-syncs the environment from the project
metadata before executing. That silently reinstalled the newest Django and
discarded the pin, so every matrix cell ran the same (latest) version
regardless of matrix.django-version.

Reproduced locally:

    uv sync && uv pip install "Django~=5.2.0"
    .venv/bin/python -c "import django; print(django.get_version())"   # 5.2.17
    uv run           python -c "import django; print(django.get_version())"  # 6.1  <- pin lost
    uv run --no-sync python -c "import django; print(django.get_version())"  # 5.2.17

Without this, adding Django 6.1 to the matrix would not have tested it.
Lint jobs are untouched: they do not pin Django.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mpasternak
mpasternak merged commit 345efed into main Aug 7, 2026
13 checks passed
@mpasternak
mpasternak deleted the feat/django-61 branch August 7, 2026 07:16
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