summary refs log tree commit diff
path: root/pkgs/development/python-modules/django/5.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/django/5.nix')
-rw-r--r--pkgs/development/python-modules/django/5.nix144
1 files changed, 144 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/django/5.nix b/pkgs/development/python-modules/django/5.nix
new file mode 100644
index 00000000000..0ea8de9a4c7
--- /dev/null
+++ b/pkgs/development/python-modules/django/5.nix
@@ -0,0 +1,144 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, substituteAll
+
+# build
+, setuptools
+
+# patched in
+, geos
+, gdal
+, withGdal ? false
+
+# propagates
+, asgiref
+, sqlparse
+
+# extras
+, argon2-cffi
+, bcrypt
+
+# tests
+, aiosmtpd
+, docutils
+, geoip2
+, jinja2
+, numpy
+, pillow
+, pylibmc
+, pymemcache
+, python
+, pywatchman
+, pyyaml
+, pytz
+, redis
+, selenium
+, tblib
+, tzdata
+}:
+
+buildPythonPackage rec {
+  pname = "Django";
+  version = "5.0b1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-yIY15zPwoO9GwhljXiHI9ZeOsqFMORgiRlRUG8XVcDA=";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./django_5_set_zoneinfo_dir.patch;
+      zoneinfo = tzdata + "/share/zoneinfo";
+    })
+    # prevent tests from messing with our pythonpath
+    ./django_5_tests_pythonpath.patch
+    # disable test that excpects timezone issues
+    ./django_5_disable_failing_tests.patch
+  ] ++ lib.optionals withGdal [
+    (substituteAll {
+      src = ./django_5_set_geos_gdal_lib.patch;
+      geos = geos;
+      gdal = gdal;
+      extension = stdenv.hostPlatform.extensions.sharedLibrary;
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace tests/utils_tests/test_autoreload.py \
+      --replace "/usr/bin/python" "${python.interpreter}"
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    asgiref
+    sqlparse
+  ];
+
+  passthru.optional-dependencies = {
+    argon2 = [
+      argon2-cffi
+    ];
+    bcrypt = [
+      bcrypt
+    ];
+  };
+
+  nativeCheckInputs = [
+    # tests/requirements/py3.txt
+    aiosmtpd
+    docutils
+    geoip2
+    jinja2
+    numpy
+    pillow
+    pylibmc
+    pymemcache
+    pywatchman
+    pyyaml
+    pytz
+    redis
+    selenium
+    tblib
+    tzdata
+  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+
+  doCheck = !stdenv.isDarwin;
+
+  preCheck = ''
+    # make sure the installed library gets imported
+    rm -rf django
+
+    # provide timezone data, works only on linux
+    export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+
+    pushd tests
+    ${python.interpreter} runtests.py --settings=test_sqlite
+    popd
+
+    runHook postCheck
+  '';
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = with lib; {
+    changelog = "https://docs.djangoproject.com/en/${lib.versions.majorMinor version}/releases/${version}/";
+    description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.";
+    homepage = "https://www.djangoproject.com";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hexa ];
+  };
+}