From e66e503499170d802a809ee6f3649a68f208c185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Dost=C3=A1l?= Date: Thu, 15 Oct 2026 11:22:12 +0200 Subject: [PATCH 1/3] KNJ-24165 Release migration states held by post_save receivers --- enumfields/fields.py | 3 ++- tests/test_migration_state.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/test_migration_state.py diff --git a/enumfields/fields.py b/enumfields/fields.py index 29a77b2..f3989ae 100644 --- a/enumfields/fields.py +++ b/enumfields/fields.py @@ -130,7 +130,8 @@ def refresh_from_db(instance, using=None, fields=None, *args, **kwargs): cls.refresh_from_db = refresh_from_db setattr(cls, name, CastOnAssignDescriptor(self)) - post_save.connect(update_initial_field, sender=cls, weak=False) + self._update_initial_field = update_initial_field + post_save.connect(update_initial_field, sender=cls) def to_python(self, value): if isinstance(value, self.enum): diff --git a/tests/test_migration_state.py b/tests/test_migration_state.py new file mode 100644 index 0000000..a21da6b --- /dev/null +++ b/tests/test_migration_state.py @@ -0,0 +1,17 @@ +import gc +import weakref + +from django.db.migrations.state import ModelState, ProjectState + +from .models import MyModel + + +def test_rendered_migration_state_is_released(): + project_state = ProjectState() + project_state.add_model(ModelState.from_model(MyModel)) + rendered_model = weakref.ref(project_state.apps.get_model('tests', 'MyModel')) + + del project_state + gc.collect() + + assert rendered_model() is None From e3f353855d76b4b7eda3f39f6aab35f482a30f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Dost=C3=A1l?= Date: Thu, 15 Oct 2026 11:22:12 +0200 Subject: [PATCH 2/3] 2.0.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9f36c21..7d0563c 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ def run_tests(self): setup( name='skip-django-choice-enumfields', - version='2.0.0', + version='2.0.1', author='HZDG, Lubos Matl', author_email='matllubos@gmail.com', description='Real Python Enums for Django.', From 425c6a4651576f1b3b9f07cf38cad5e0dd48c18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Dost=C3=A1l?= Date: Fri, 16 Oct 2026 12:06:50 +0200 Subject: [PATCH 3/3] KNJ-24165 Run tests with pytest --- tox.ini | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index e4d2e21..4317657 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,10 @@ envlist = [testenv] setenv = PYTHONPATH = {toxinidir} -commands = python setup.py test +commands = pytest tests deps = + pytest + pytest-django + djangorestframework + pytz django4.2: Django>=4.2,<5.0