From 9927ccc5a8aeb7d8eae35a89a820ed9cde88ecc4 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 27 Mar 2026 19:55:25 +0100 Subject: [PATCH] python3Packages.django-waffle: init at 5.0.0 Introduced as a new dependency for lausite-docs. Co-Authored-By: Martin Weinelt --- .../python-modules/django-waffle/default.nix | 48 +++++++++++++++++++ .../django-waffle/middleware-compat.patch | 31 ++++++++++++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 81 insertions(+) create mode 100644 pkgs/development/python-modules/django-waffle/default.nix create mode 100644 pkgs/development/python-modules/django-waffle/middleware-compat.patch diff --git a/pkgs/development/python-modules/django-waffle/default.nix b/pkgs/development/python-modules/django-waffle/default.nix new file mode 100644 index 000000000000..95cdf739e689 --- /dev/null +++ b/pkgs/development/python-modules/django-waffle/default.nix @@ -0,0 +1,48 @@ +{ + buildPythonPackage, + fetchFromGitHub, + django, + lib, + setuptools, + pytestCheckHook, + pytest-django, +}: + +buildPythonPackage (finalAttrs: { + pname = "django-waffle"; + version = "5.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "django-waffle"; + repo = "django-waffle"; + tag = "v${finalAttrs.version}"; + hash = "sha256-wirB2Y4iONmAMVt9o8aTkeB1WQzcvktQOAMEeXMM1x8="; + }; + + patches = [ + # Middleware object requires a request -> response callable + ./middleware-compat.patch + ]; + + build-system = [ setuptools ]; + + dependencies = [ django ]; + + nativeCheckInputs = [ + pytest-django + pytestCheckHook + ]; + + preCheck = '' + export DJANGO_SETTINGS_MODULE=test_settings + ''; + + meta = { + changelog = "https://github.com/django-waffle/django-waffle/releases/tag/${finalAttrs.src.tag}"; + description = "Feature flipper for Django"; + homepage = "https://waffle.readthedocs.io/en/stable/"; + maintainers = [ lib.maintainers.ma27 ]; + license = lib.licenses.bsd3; + }; +}) diff --git a/pkgs/development/python-modules/django-waffle/middleware-compat.patch b/pkgs/development/python-modules/django-waffle/middleware-compat.patch new file mode 100644 index 000000000000..133159cb1fac --- /dev/null +++ b/pkgs/development/python-modules/django-waffle/middleware-compat.patch @@ -0,0 +1,31 @@ +diff --git a/waffle/tests/test_middleware.py b/waffle/tests/test_middleware.py +index 11af7c9..27293df 100644 +--- a/waffle/tests/test_middleware.py ++++ b/waffle/tests/test_middleware.py +@@ -13,7 +13,7 @@ def test_set_cookies(): + assert 'dwf_foo' not in resp.cookies + assert 'dwf_bar' not in resp.cookies + +- resp = WaffleMiddleware().process_response(get, resp) ++ resp = WaffleMiddleware(lambda request: HttpResponse()).process_response(get, resp) + assert 'dwf_foo' in resp.cookies + assert 'dwf_bar' in resp.cookies + +@@ -27,7 +27,7 @@ def test_rollout_cookies(): + 'baz': [True, False], + 'qux': [False, False]} + resp = HttpResponse() +- resp = WaffleMiddleware().process_response(get, resp) ++ resp = WaffleMiddleware(lambda request: HttpResponse()).process_response(get, resp) + for k in get.waffles: + cookie = f'dwf_{k}' + assert cookie in resp.cookies +@@ -42,7 +42,7 @@ def test_testing_cookies(): + get.waffles = {} + get.waffle_tests = {'foo': True, 'bar': False} + resp = HttpResponse() +- resp = WaffleMiddleware().process_response(get, resp) ++ resp = WaffleMiddleware(lambda request: HttpResponse()).process_response(get, resp) + for k in get.waffle_tests: + cookie = f'dwft_{k}' + assert str(get.waffle_tests[k]) == resp.cookies[cookie].value diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 361b7833be50..48d7b5751628 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4426,6 +4426,8 @@ self: super: with self; { django-vite = callPackage ../development/python-modules/django-vite { }; + django-waffle = callPackage ../development/python-modules/django-waffle { }; + django-weasyprint = callPackage ../development/python-modules/django-weasyprint { }; django-webpack-loader = callPackage ../development/python-modules/django-webpack-loader { };