diff options
Diffstat (limited to 'pkgs/development/python-modules/django/5.nix')
-rw-r--r-- | pkgs/development/python-modules/django/5.nix | 144 |
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 ]; + }; +} |