1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6
7 # build-system
8 setuptools,
9
10 # dependencies
11 django,
12 pytz,
13
14 # optional-dependencies
15 coreapi,
16 coreschema,
17 django-guardian,
18 inflection,
19 psycopg2,
20 pygments,
21 pyyaml,
22
23 # tests
24 pytestCheckHook,
25 pytest-django,
26}:
27
28buildPythonPackage rec {
29 pname = "djangorestframework";
30 version = "3.16.0";
31 pyproject = true;
32 disabled = pythonOlder "3.6";
33
34 src = fetchFromGitHub {
35 owner = "encode";
36 repo = "django-rest-framework";
37 rev = version;
38 hash = "sha256-LFq8mUx+jAFFnQTfysYs+DSN941p+8h9mDDOp+LO7VU=";
39 };
40
41 build-system = [ setuptools ];
42
43 dependencies = [
44 django
45 pygments
46 ]
47 ++ (lib.optional (lib.versionOlder django.version "5.0.0") pytz);
48
49 optional-dependencies = {
50 complete = [
51 coreschema
52 django-guardian
53 inflection
54 psycopg2
55 pygments
56 pyyaml
57 ]
58 ++ lib.optionals (pythonOlder "3.13") [
59 # broken on 3.13
60 coreapi
61 ];
62 };
63
64 nativeCheckInputs = [
65 pytest-django
66 pytestCheckHook
67 ]
68 ++ optional-dependencies.complete;
69
70 disabledTests = [
71 # https://github.com/encode/django-rest-framework/issues/9422
72 "test_urlpatterns"
73 ];
74
75 pythonImportsCheck = [ "rest_framework" ];
76
77 meta = with lib; {
78 changelog = "https://github.com/encode/django-rest-framework/releases/tag/3.15.1";
79 description = "Web APIs for Django, made easy";
80 homepage = "https://www.django-rest-framework.org/";
81 license = licenses.bsd2;
82 };
83}