Skip to content

Release 2.0.0: Django 4.2-7.0 support with async-safe operations#1

Merged
meteozond merged 1 commit intomasterfrom
release-2.0.0
Feb 7, 2026
Merged

Release 2.0.0: Django 4.2-7.0 support with async-safe operations#1
meteozond merged 1 commit intomasterfrom
release-2.0.0

Conversation

@meteozond
Copy link
Owner

Major version upgrade with breaking changes and modern Django support:

Breaking Changes:

  • Minimum Django version: 4.2 LTS (supports Django 4.2-5.2, experimental Django 6.0, tested with Django 7.0 dev)
  • Minimum Python version: 3.10 (supports 3.10, 3.11, 3.12)
  • Dropped Django 1.x, 2.x, 3.x support
  • Dropped Python 2.7, 3.4-3.9 support
  • Removed django-model-utils dependency

Async Support (New):

  • Refactored from thread-local variables to contextvars for async-safe operation
  • All deletion and query context handling now supports asyncio
  • Context managers (deletion_context, show_all_context) are fully async-safe
  • Works correctly with Django's async QuerySet API (acount, afirst, aget, etc.)
  • Future-proof for Django 6.0 and 7.0 async expansion

New Features:

  • Added Django System Check (W001) to detect problematic PermanentModel configurations
  • Warns when PermanentModel has CASCADE ForeignKey to non-PermanentModel
  • Comprehensive documentation (README.md)

Infrastructure:

  • Migrated CI/CD from Travis CI to GitHub Actions
  • All 33 tests passing with Django 4.2-7.0 dev - 100% pass rate, NO SKIPS
  • Converted documentation from RST to Markdown
  • Added explicit LICENSE file (BSD)

CI/CD Enhancements:

  • Added automated PyPI publishing workflow (GitHub Actions)
  • Automatically publishes to PyPI when version tag is pushed
  • Creates GitHub releases with release notes
  • Auto-updates CHANGES.md with next version template after release
  • Improved test infrastructure with extras_require for test/dev dependencies
  • Added TEST_VERBOSITY environment variable support for flexible test output
  • Enhanced coverage reporting and Coveralls integration

Technical Improvements:

  • Modernized codebase for Django 4.2+
  • Removed Python 2/six dependencies
  • Removed 15+ version compatibility checks
  • Simplified QuerySet and Manager implementations
  • Updated for Django 5.2+ API changes (Collector.delete, ForeignObject.get_extra_restriction, Signal)
  • Enhanced async deletion and lazy reference handling

@meteozond meteozond force-pushed the release-2.0.0 branch 2 times, most recently from 3b2cfd4 to 2083033 Compare February 7, 2026 19:38
Major version upgrade with breaking changes and modern Django support:

Breaking Changes:
- Minimum Django version: 4.2 LTS (supports Django 4.2-5.2, experimental Django 6.0, tested with Django 7.0 dev)
- Minimum Python version: 3.10 (supports 3.10, 3.11, 3.12)
- Dropped Django 1.x, 2.x, 3.x support
- Dropped Python 2.7, 3.4-3.9 support
- Removed django-model-utils dependency

Async Support (New):
- Refactored from thread-local variables to contextvars for async-safe operation
- All deletion and query context handling now supports asyncio
- Context managers (deletion_context, show_all_context) are fully async-safe
- Works correctly with Django's async QuerySet API (acount, afirst, aget, etc.)
- Future-proof for Django 6.0 and 7.0 async expansion

New Features:
- Added Django System Check (W001) to detect problematic PermanentModel configurations
- Warns when PermanentModel has CASCADE ForeignKey to non-PermanentModel
- Comprehensive documentation (README.md)

Bug Fixes from MnogoByte Fork:
- Fixed MnogoByte#53: restore() respects user filters on removed field
- Fixed MnogoByte#75: Access deleted related objects via show_all_context()
- Fixed MnogoByte#78: Removed django.utils.six dependency
- Improved documentation (MnogoByte#69, MnogoByte#66, MnogoByte#67)

Infrastructure:
- Migrated CI/CD from Travis CI to GitHub Actions
- All 44 tests passing with Django 4.2-7.0 dev - 100% pass rate, NO SKIPS
- Converted documentation from RST to Markdown
- Added explicit LICENSE file (BSD)

CI/CD Enhancements:
- Added automated PyPI publishing workflow (GitHub Actions)
- Automatically publishes to PyPI when version tag is pushed
- Creates GitHub releases with release notes
- Auto-updates CHANGES.md with next version template after release
- Improved test infrastructure with extras_require for test/dev dependencies
- Added TEST_VERBOSITY environment variable support
- Enhanced coverage reporting and Coveralls integration

Technical Improvements:
- Modernized codebase for Django 4.2+
- Removed Python 2/six dependencies
- Removed 15+ version compatibility checks
- Simplified QuerySet and Manager implementations
- Updated for Django 5.2+ API changes (Collector.delete, ForeignObject.get_extra_restriction, Signal)
- Enhanced async deletion and lazy reference handling
@meteozond meteozond merged commit 1584eeb into master Feb 7, 2026
10 checks passed
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