Skip to content

Mark 4.0.0 as the final release, add migration guide - #28

Open
lukeburden wants to merge 3 commits into
masterfrom
sunset-deprecation-notice
Open

lukeburden wants to merge 3 commits into
masterfrom
sunset-deprecation-notice

Conversation

@lukeburden

Copy link
Copy Markdown
Owner

Summary

  • Bumps to 4.0.0 and marks it as the final planned release: dependents on old Python/Django now have a supported version to land on before this project is sunset.
  • Adds a deprecation banner to the README explaining why: Django's own IntegerChoices/TextChoices (enum.Enum-based, since Django 3.0) now cover what this library was for.
  • Adds a full migration guide mapping each konst feature (constants, model fields, group membership, forms, JSON serialization, DRF exposure) to its modern Django equivalent, including a copy-paste DRF field for the one bit of behavior stock DRF doesn't provide (exposing an enum by name rather than value).
  • Updates the PyPI classifier to Development Status :: 7 - Inactive.

Test plan

  • ruff check / ruff format --check pass
  • tox -e py312-dj52 passes (28 tests)
  • python -m build succeeds, producing django_konst-4.0.0
  • Once merged: tag/create the GitHub Release to trigger publish.yml (requires PyPI trusted-publisher registration first, per the earlier CI modernization PR)

🤖 Generated with Claude Code

lukeburden and others added 3 commits July 9, 2026 23:29
Django's own IntegerChoices/TextChoices (enum.Enum-based, available
since Django 3.0) now cover what this library exists for, with better
IDE/type-checker support and no dependency. Rather than continue
maintaining a parallel constants system, mark this as the last planned
release: it gives existing dependents a version compatible with
currently-supported Python/Django, and the README now documents the
modern equivalent for every feature (including a copy-paste DRF field
for the one bit of behavior -- exposing an enum by name -- that stock
DRF doesn't provide out of the box).

Update the PyPI classifier to Development Status :: 7 - Inactive.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
django-konst's dynamic __getattr__/setattr-based attributes are
invisible to type checkers and IDE autocomplete; Choices enum members
are real declared attributes, so they work with every type checker/IDE
out of the box.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Choices doesn't replicate konst's boolean-attribute and group-membership
sugar (apple.purpose.cooking, apple.purpose.culinary) -- those become
explicit ==/in checks. State that honestly instead of implying full
feature parity.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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