From 58b811854cfa3b819b2a4173b1796a5076bd4f70 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 13 May 2025 02:56:40 +0200 Subject: [PATCH 1/9] python3Packages.django-jinja: fix build with django 5.2 Also migrate to PEP517 builder and use pytest for tests. --- .../python-modules/django-jinja2/default.nix | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/django-jinja2/default.nix b/pkgs/development/python-modules/django-jinja2/default.nix index 0bbaf6e0699d..079a6ab677c1 100644 --- a/pkgs/development/python-modules/django-jinja2/default.nix +++ b/pkgs/development/python-modules/django-jinja2/default.nix @@ -3,19 +3,26 @@ buildPythonPackage, pythonOlder, fetchFromGitHub, + + # build-system + setuptools, + + # dependencies django, jinja2, - python, + + # tests + pytest-django, + pytestCheckHook }: buildPythonPackage rec { pname = "django-jinja"; version = "2.11.0"; + pyproject = true; disabled = pythonOlder "3.8"; - format = "setuptools"; - src = fetchFromGitHub { owner = "niwinz"; repo = "django-jinja"; @@ -23,17 +30,34 @@ buildPythonPackage rec { hash = "sha256-0gkv9xinHux8TRiNBLl/JgcimXU3CzysxzGR2jn7OZ4="; }; + build-system = [ setuptools ]; + propagatedBuildInputs = [ django jinja2 ]; - checkPhase = '' - runHook preCheck + nativeCheckInputs = [ + pytestCheckHook + pytest-django + ]; - ${python.interpreter} testing/runtests.py + preCheck = '' + pushd testing + export DJANGO_SETTINGS_MODULE=settings + ''; - runHook postCheck + pytestFlagsArray = [ + "testapp/tests.py" + ]; + + disabledTests = lib.optionals (lib.versionAtLeast django.version "5.2") [ + # https://github.com/niwinz/django-jinja/issues/317 + "test_autoscape_with_form_errors" + ]; + + postCheck = '' + popd ''; meta = { From 08276b73ca1c99fc761feb93f5d36021941efb93 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 13 May 2025 02:58:04 +0200 Subject: [PATCH 2/9] python3Packages.django-jinja: normalize package directory and cleanup --- .../{django-jinja2 => django-jinja}/default.nix | 7 ++----- pkgs/top-level/python-packages.nix | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) rename pkgs/development/python-modules/{django-jinja2 => django-jinja}/default.nix (92%) diff --git a/pkgs/development/python-modules/django-jinja2/default.nix b/pkgs/development/python-modules/django-jinja/default.nix similarity index 92% rename from pkgs/development/python-modules/django-jinja2/default.nix rename to pkgs/development/python-modules/django-jinja/default.nix index 079a6ab677c1..20f88ca5ac2c 100644 --- a/pkgs/development/python-modules/django-jinja2/default.nix +++ b/pkgs/development/python-modules/django-jinja/default.nix @@ -1,7 +1,6 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, # build-system @@ -13,7 +12,7 @@ # tests pytest-django, - pytestCheckHook + pytestCheckHook, }: buildPythonPackage rec { @@ -21,8 +20,6 @@ buildPythonPackage rec { version = "2.11.0"; pyproject = true; - disabled = pythonOlder "3.8"; - src = fetchFromGitHub { owner = "niwinz"; repo = "django-jinja"; @@ -32,7 +29,7 @@ buildPythonPackage rec { build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ django jinja2 ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 396a8a1c0f79..e5d023c680ce 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4093,7 +4093,7 @@ self: super: with self; { django-ipware = callPackage ../development/python-modules/django-ipware { }; - django-jinja = callPackage ../development/python-modules/django-jinja2 { }; + django-jinja = callPackage ../development/python-modules/django-jinja { }; django-jquery-js = callPackage ../development/python-modules/django-jquery-js { }; From 5c5a120b4e2c2b7a853c5ba6a98b184169d2d04f Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 13 May 2025 03:12:36 +0200 Subject: [PATCH 3/9] python3Packages.django-cryptography: 1.1 -> 1.1-unstable-2024-02-16 Upstream author has apparently vanished, so this is probably it until a fork appears. --- .../django-cryptography/default.nix | 45 +++++++++++-------- .../django-cryptography/fix-setup-cfg.patch | 16 ------- 2 files changed, 26 insertions(+), 35 deletions(-) delete mode 100644 pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch diff --git a/pkgs/development/python-modules/django-cryptography/default.nix b/pkgs/development/python-modules/django-cryptography/default.nix index 7f4d2804c4dd..1d2c375e2749 100644 --- a/pkgs/development/python-modules/django-cryptography/default.nix +++ b/pkgs/development/python-modules/django-cryptography/default.nix @@ -5,45 +5,52 @@ django-appconf, fetchFromGitHub, lib, - python, - pythonOlder, + pytestCheckHook, + pytest-django, setuptools, }: -buildPythonPackage rec { +buildPythonPackage { pname = "django-cryptography"; - version = "1.1"; - disabled = pythonOlder "3.7"; - format = "pyproject"; + version = "1.1-unstable-2024-02-16"; + pyproject = true; src = fetchFromGitHub { owner = "georgemarshall"; repo = "django-cryptography"; - tag = version; - hash = "sha256-C3E2iT9JdLvF+1g+xhZ8dPDjjh25JUxLAtTMnalIxPk="; + rev = "a5cde9beed707a14a2ef2f1f7f1fee172feb8b5e"; + hash = "sha256-Xj/fw8EapsYvVbZPRQ81yeE9QpIQ1TIuk+ASOCGh/Uc="; }; - nativeBuildInputs = [ setuptools ]; + postPatch = '' + substituteInPlace setup.cfg \ + --replace-fail "packages = django_cryptography" "packages = find:" + ''; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ cryptography django django-appconf ]; - patches = [ - # See: https://github.com/georgemarshall/django-cryptography/pull/88 - ./fix-setup-cfg.patch - ]; - pythonImportsCheck = [ "django_cryptography" ]; - checkPhase = '' - runHook preCheck - ${python.interpreter} ./runtests.py - runHook postCheck + nativeCheckInputs = [ + pytest-django + pytestCheckHook + ]; + + preCheck = '' + export DJANGO_SETTINGS_MODULE=tests.settings ''; + disabledTests = [ + # self.assertEqual(len(errors), 1) - AssertionError: 0 != 1 + "test_field_checks" + ]; + meta = with lib; { homepage = "https://github.com/georgemarshall/django-cryptography"; description = "Set of primitives for performing cryptography in Django"; diff --git a/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch b/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch deleted file mode 100644 index 0cb7b9dba2aa..000000000000 --- a/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/setup.cfg b/setup.cfg -index 865b4c3..577d917 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -35,7 +35,10 @@ project_urls = - Documentation = https://django-cryptography.readthedocs.io - - [options] --packages = django_cryptography -+packages = -+ django_cryptography -+ django_cryptography.core -+ django_cryptography.utils - python_requires = >=3.6 - include_package_data = True - install_requires = From 6a1f7d4003962a21247a8624f0df22b288b90437 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 13 May 2025 03:34:49 +0200 Subject: [PATCH 4/9] python3Packages.django-scheduler: fix build with django 5.2 --- .../django-scheduler/default.nix | 20 +++++- .../django-scheduler/index_together.patch | 65 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/python-modules/django-scheduler/index_together.patch diff --git a/pkgs/development/python-modules/django-scheduler/default.nix b/pkgs/development/python-modules/django-scheduler/default.nix index 3ffe10f0d65c..2c1d48a428a0 100644 --- a/pkgs/development/python-modules/django-scheduler/default.nix +++ b/pkgs/development/python-modules/django-scheduler/default.nix @@ -30,9 +30,9 @@ buildPythonPackage rec { dependencies = [ django + icalendar python-dateutil pytz - icalendar ]; nativeCheckInputs = [ @@ -44,6 +44,24 @@ buildPythonPackage rec { export DJANGO_SETTINGS_MODULE=tests.settings ''; + patches = [ + # Remove in Django 5.1 + # https://github.com/llazzaro/django-scheduler/pull/567 + ./index_together.patch + ]; + + postPatch = '' + # Remove in Django 5.1 + substituteInPlace tests/settings.py \ + --replace-fail "SHA1PasswordHasher" "PBKDF2PasswordHasher" + ''; + + disabledTests = lib.optionals (lib.versionAtLeast django.version "5.1") [ + # test_delete_event_authenticated_user - AssertionError: 302 != 200 + "test_delete_event_authenticated_user" + "test_event_creation_authenticated_user" + ]; + pythonImportsCheck = [ "schedule" ]; meta = with lib; { diff --git a/pkgs/development/python-modules/django-scheduler/index_together.patch b/pkgs/development/python-modules/django-scheduler/index_together.patch new file mode 100644 index 000000000000..5777410eca67 --- /dev/null +++ b/pkgs/development/python-modules/django-scheduler/index_together.patch @@ -0,0 +1,65 @@ +From d691550163941db6dbcec2f347fee4d3941615a0 Mon Sep 17 00:00:00 2001 +From: Robin +Date: Wed, 1 Jan 2025 10:31:44 -0500 +Subject: [PATCH 1/2] Update calendars.py + +Django 5.1 ... index_together deprecated. +--- + schedule/models/calendars.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/schedule/models/calendars.py b/schedule/models/calendars.py +index 81f8a7de..d37097a7 100644 +--- a/schedule/models/calendars.py ++++ b/schedule/models/calendars.py +@@ -231,7 +231,7 @@ class CalendarRelation(models.Model): + class Meta: + verbose_name = _("calendar relation") + verbose_name_plural = _("calendar relations") +- index_together = [("content_type", "object_id")] ++ indexes = [models.Index(fields=["content_type", "object_id"])] + + def __str__(self): + return "{} - {}".format(self.calendar, self.content_object) + +From 768d2d3842ce6af8115741ef5758a72ab4659491 Mon Sep 17 00:00:00 2001 +From: Robin +Date: Wed, 1 Jan 2025 10:32:56 -0500 +Subject: [PATCH 2/2] Update events.py + +Django 5.1 .... index_together deprecated +--- + schedule/models/events.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/schedule/models/events.py b/schedule/models/events.py +index bf6fa5f1..bc9671c5 100644 +--- a/schedule/models/events.py ++++ b/schedule/models/events.py +@@ -92,7 +92,7 @@ class Event(models.Model): + class Meta: + verbose_name = _("event") + verbose_name_plural = _("events") +- index_together = (("start", "end"),) ++ indexes = [models.Index(fields=["start", "end"])] + + def __str__(self): + return gettext("%(title)s: %(start)s - %(end)s") % { +@@ -571,7 +571,7 @@ class EventRelation(models.Model): + class Meta: + verbose_name = _("event relation") + verbose_name_plural = _("event relations") +- index_together = [("content_type", "object_id")] ++ indexes = [models.Index(fields=["content_type", "object_id"])] + + def __str__(self): + return "{}({})-{}".format( +@@ -594,7 +594,7 @@ class Occurrence(models.Model): + class Meta: + verbose_name = _("occurrence") + verbose_name_plural = _("occurrences") +- index_together = (("start", "end"),) ++ indexes = [models.Index(fields=["start", "end"])] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) From 1b3d5b91c2608da9272679bb9223ebaa2f2fe30a Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 3 Dec 2025 16:27:44 +0100 Subject: [PATCH 5/9] mailman: pin to django 4.2 --- pkgs/servers/mail/mailman/python.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/servers/mail/mailman/python.nix b/pkgs/servers/mail/mailman/python.nix index f99f5a9bc825..c8fd7159f717 100644 --- a/pkgs/servers/mail/mailman/python.nix +++ b/pkgs/servers/mail/mailman/python.nix @@ -26,6 +26,7 @@ lib.fix ( [1] 72a14ea563a3f5bf85db659349a533fe75a8b0ce [2] f931bc81d63f5cfda55ac73d754c87b3fd63b291 */ + # https://gitlab.com/mailman/hyperkitty/-/merge_requests/681 django = super.django_4; django-allauth = super.django-allauth.overrideAttrs ( From ce41ef26fa6b4dfb7590dc7cb41cbd80ab2a0be2 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 3 Dec 2025 17:29:17 +0100 Subject: [PATCH 6/9] python3Packages.django-rest-registration: fix build Wrong jwt dependency broke a test. Accelerate the otherwise slow tests with xdist and clean up and reannotate failing tests. --- .../django-rest-registration/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/django-rest-registration/default.nix b/pkgs/development/python-modules/django-rest-registration/default.nix index 695da5c5470c..bd3f7ff6e52c 100644 --- a/pkgs/development/python-modules/django-rest-registration/default.nix +++ b/pkgs/development/python-modules/django-rest-registration/default.nix @@ -5,9 +5,10 @@ djangorestframework, fetchFromGitHub, pytest-django, + pytest-xdist, pytestCheckHook, pythonOlder, - jwt, + pyjwt, setuptools, }: @@ -35,16 +36,15 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook pytest-django - jwt + pytest-xdist + pyjwt ]; pythonImportsCheck = [ "rest_registration" ]; disabledTests = [ - # This test fails on Python 3.10 + # Failed: DID NOT RAISE "test_convert_html_to_text_fails" - # This test is broken and was removed after 0.7.3. Remove this line once version > 0.7.3 - "test_coreapi_autoschema_success" ]; meta = { From 35f9c62497bdc2a50bb9e3049538fdf2389606a5 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Fri, 5 Dec 2025 01:08:07 +0100 Subject: [PATCH 7/9] python3Packages.mezzanine: mark broken with django>=5 --- pkgs/development/python-modules/mezzanine/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/mezzanine/default.nix b/pkgs/development/python-modules/mezzanine/default.nix index e96d65184f84..800b5ba4e421 100644 --- a/pkgs/development/python-modules/mezzanine/default.nix +++ b/pkgs/development/python-modules/mezzanine/default.nix @@ -68,6 +68,8 @@ buildPythonPackage rec { ]; meta = with lib; { + # not updated to django 5.x + broken = lib.versionAtLeast django.version "5"; description = "Content management platform built using the Django framework"; mainProgram = "mezzanine-project"; longDescription = '' From 794e77e0966fa9b8addc4612472e68898e43373f Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Fri, 5 Dec 2025 01:19:05 +0100 Subject: [PATCH 8/9] python3Packages.pylint-django: 2.6.1 -> 2.6.1-unstable-2025-11-09 Fast-forward for Django 5.2 support. --- .../development/python-modules/pylint-django/default.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pkgs/development/python-modules/pylint-django/default.nix b/pkgs/development/python-modules/pylint-django/default.nix index 01aa04f0817a..f18ca729a808 100644 --- a/pkgs/development/python-modules/pylint-django/default.nix +++ b/pkgs/development/python-modules/pylint-django/default.nix @@ -9,21 +9,18 @@ poetry-core, pylint-plugin-utils, pytestCheckHook, - pythonOlder, }: buildPythonPackage rec { pname = "pylint-django"; - version = "2.6.1"; + version = "2.6.1-unstable-2025-11-09"; pyproject = true; - disabled = pythonOlder "3.9"; - src = fetchFromGitHub { owner = "PyCQA"; repo = "pylint-django"; - tag = "v${version}"; - hash = "sha256-9b0Sbo6E036UmUmP/CVPrS9cxxKtkMMZtqJsI53g4sU="; + rev = "e40d785abbf26af0738c14247fb4ac0aa7265b24"; + hash = "sha256-INQSQjubcwQwspaxevXQOF92L2K9WRLMLYsP18Ffhos="; }; build-system = [ poetry-core ]; From 3793aae7bd3f8cfbe2bf40dfb3fcb8eeba197040 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Fri, 5 Dec 2025 01:26:45 +0100 Subject: [PATCH 9/9] python3Packages.pyscaffoldext-django: relax django, modernize, cleanup --- .../pyscaffoldext-django/default.nix | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/pkgs/development/python-modules/pyscaffoldext-django/default.nix b/pkgs/development/python-modules/pyscaffoldext-django/default.nix index e0e9ca4cf69f..b86594b4e8f1 100644 --- a/pkgs/development/python-modules/pyscaffoldext-django/default.nix +++ b/pkgs/development/python-modules/pyscaffoldext-django/default.nix @@ -2,18 +2,14 @@ lib, buildPythonPackage, fetchPypi, + + # build-system setuptools, setuptools-scm, - wheel, + + # dependencies django, pyscaffold, - configupdater, - pre-commit, - pytest, - pytest-cov, - pytest-xdist, - tox, - virtualenv, }: buildPythonPackage rec { @@ -26,29 +22,19 @@ buildPythonPackage rec { hash = "sha256-5yzF3VK/9VlCSrRsRJWX4arr9n34G2R6O5A51jTpLhg="; }; - nativeBuildInputs = [ + build-system = [ setuptools setuptools-scm - wheel ]; - propagatedBuildInputs = [ + dependencies = [ django pyscaffold ]; - optional-dependencies = { - testing = [ - configupdater - pre-commit - pytest - pytest-cov - pytest-xdist - setuptools-scm - tox - virtualenv - ]; - }; + pythonRelaxDeps = [ "django" ]; + + doCheck = false; # tests require git checkout pythonImportsCheck = [ "pyscaffoldext.django" ];