Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / django / 5.nix
blobfc4ba20245fce911e5b0ad2be78666ade44ab19f
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , fetchPypi
5 , fetchpatch2
6 , pythonAtLeast
7 , pythonOlder
8 , substituteAll
10 # build-system
11 , setuptools
13 # patched in
14 , geos
15 , gdal
16 , withGdal ? false
18 # dependencies
19 , asgiref
20 , sqlparse
22 # optional-dependencies
23 , argon2-cffi
24 , bcrypt
26 # tests
27 , aiosmtpd
28 , docutils
29 , geoip2
30 , jinja2
31 , numpy
32 , pillow
33 , pylibmc
34 , pymemcache
35 , python
36 , pywatchman
37 , pyyaml
38 , pytz
39 , redis
40 , selenium
41 , tblib
42 , tzdata
45 buildPythonPackage rec {
46   pname = "django";
47   version = "5.0.4";
48   pyproject = true;
50   disabled = pythonOlder "3.10";
52   src = fetchPypi {
53     pname = "Django";
54     inherit version;
55     hash = "sha256-S9AajIMLt3qKOw59iyW4h+U2rReoG6Lc5UdhNcczEr0=";
56   };
58   patches = [
59     (substituteAll {
60       src = ./django_5_set_zoneinfo_dir.patch;
61       zoneinfo = tzdata + "/share/zoneinfo";
62     })
63     # prevent tests from messing with our pythonpath
64     ./django_5_tests_pythonpath.patch
65     # disable test that excpects timezone issues
66     ./django_5_disable_failing_tests.patch
68     (fetchpatch2 {
69       # https://github.com/django/django/pull/17979
70       name = "django-mime-utf8-surrogates.patch";
71       url = "https://github.com/django/django/commit/b231bcd19e57267ce1fc21d42d46f0b65fdcfcf8.patch";
72       hash = "sha256-HhmRwi24VkoPoh+NygAThCoMywoMwrLijU4ZsDfVU34=";
73     })
75   ] ++ lib.optionals withGdal [
76     (substituteAll {
77       src = ./django_5_set_geos_gdal_lib.patch;
78       geos = geos;
79       gdal = gdal;
80       extension = stdenv.hostPlatform.extensions.sharedLibrary;
81     })
82   ];
84   postPatch = ''
85     substituteInPlace tests/utils_tests/test_autoreload.py \
86       --replace "/usr/bin/python" "${python.interpreter}"
87   '' + lib.optionalString (pythonAtLeast "3.12" && stdenv.hostPlatform.system == "aarch64-linux") ''
88     # Test regression after xz was reverted from 5.6.0 to 5.4.6
89     # https://hydra.nixos.org/build/254532197
90     substituteInPlace tests/view_tests/tests/test_debug.py \
91       --replace-fail "test_files" "dont_test_files"
92   '';
94   build-system = [
95     setuptools
96   ];
98   dependencies = [
99     asgiref
100     sqlparse
101   ];
103   optional-dependencies = {
104     argon2 = [
105       argon2-cffi
106     ];
107     bcrypt = [
108       bcrypt
109     ];
110   };
112   nativeCheckInputs = [
113     # tests/requirements/py3.txt
114     aiosmtpd
115     docutils
116     geoip2
117     jinja2
118     numpy
119     pillow
120     pylibmc
121     pymemcache
122     pywatchman
123     pyyaml
124     pytz
125     redis
126     selenium
127     tblib
128     tzdata
129   ] ++ lib.flatten (lib.attrValues optional-dependencies);
131   doCheck = !stdenv.isDarwin;
133   preCheck = ''
134     # make sure the installed library gets imported
135     rm -rf django
137     # provide timezone data, works only on linux
138     export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
139   '';
141   checkPhase = ''
142     runHook preCheck
144     pushd tests
145     ${python.interpreter} runtests.py --settings=test_sqlite
146     popd
148     runHook postCheck
149   '';
151   __darwinAllowLocalNetworking = true;
153   meta = with lib; {
154     changelog = "https://docs.djangoproject.com/en/${lib.versions.majorMinor version}/releases/${version}/";
155     description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.";
156     homepage = "https://www.djangoproject.com";
157     license = licenses.bsd3;
158     maintainers = with maintainers; [ hexa ];
159   };