Skip to content

Commit 70685c9

Browse files
authored
Added support for Django REST framework 3.15 (#1209)
* Added support for Django REST framework 3.15 As per our policy this drops support for 3.13 as we only support two versions of DRF. * Added clarification in changelog about removed compat definitions
1 parent ee86180 commit 70685c9

File tree

9 files changed

+14
-33
lines changed

9 files changed

+14
-33
lines changed

CHANGELOG.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ any parts of the framework not mentioned in the documentation should generally b
1414

1515
* Added support for Python 3.12
1616
* Added support for Django 5.0
17+
* Added support for Django REST framework 3.15
1718

1819
### Fixed
1920

@@ -26,10 +27,12 @@ any parts of the framework not mentioned in the documentation should generally b
2627

2728
* Removed support for Python 3.7.
2829
* Removed support for Django 4.0.
30+
* Removed support for Django REST framework 3.13.
31+
* Removed obsolete compat `NullBooleanField` and `get_reference` definitions.
2932

3033
## [6.1.0] - 2023-08-25
3134

32-
This is the last release supporting Python 3.7 and Django 4.0.
35+
This is the last release supporting Python 3.7, Django 4.0 and Django REST framework 3.13.
3336

3437
### Added
3538

README.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ Requirements
9494

9595
1. Python (3.8, 3.9, 3.10, 3.11, 3.12)
9696
2. Django (3.2, 4.1, 4.2, 5.0)
97-
3. Django REST framework (3.13, 3.14)
97+
3. Django REST framework (3.14, 3.15)
9898

9999
We **highly** recommend and only officially support the latest patch release of each Python, Django and REST framework series.
100100

docs/getting-started.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ like the following:
5353

5454
1. Python (3.8, 3.9, 3.10, 3.11, 3.12)
5555
2. Django (3.2, 4.1, 4.2, 5.0)
56-
3. Django REST framework (3.13, 3.14)
56+
3. Django REST framework (3.14, 3.15)
5757

5858
We **highly** recommend and only officially support the latest patch release of each Python, Django and REST framework series.
5959

rest_framework_json_api/compat.py

-15
Original file line numberDiff line numberDiff line change
@@ -1,15 +0,0 @@
1-
# Django REST framework 3.14 removed NullBooleanField
2-
# can be removed once support for DRF 3.13 is dropped.
3-
try:
4-
from rest_framework.serializers import NullBooleanField
5-
except ImportError: # pragma: no cover
6-
NullBooleanField = object()
7-
8-
9-
# Django REST framework 3.14 deprecates usage of `_get_reference`.
10-
# can be removed once support for DRF 3.13 is dropped.
11-
def get_reference(schema, serializer):
12-
try:
13-
return schema.get_reference(serializer)
14-
except AttributeError: # pragma: no cover
15-
return schema._get_reference(serializer)

rest_framework_json_api/metadata.py

-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from rest_framework.settings import api_settings
66
from rest_framework.utils.field_mapping import ClassLookupDict
77

8-
from rest_framework_json_api.compat import NullBooleanField
98
from rest_framework_json_api.utils import format_field_name, get_related_resource_type
109

1110

@@ -22,7 +21,6 @@ class JSONAPIMetadata(SimpleMetadata):
2221
serializers.Field: "GenericField",
2322
serializers.RelatedField: "Relationship",
2423
serializers.BooleanField: "Boolean",
25-
NullBooleanField: "Boolean",
2624
serializers.CharField: "String",
2725
serializers.URLField: "URL",
2826
serializers.EmailField: "Email",

rest_framework_json_api/schemas/openapi.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from rest_framework.schemas.utils import is_list_view
88

99
from rest_framework_json_api import serializers, views
10-
from rest_framework_json_api.compat import get_reference
1110
from rest_framework_json_api.relations import ManySerializerMethodResourceRelatedField
1211
from rest_framework_json_api.utils import format_field_name
1312

@@ -533,12 +532,10 @@ def _get_toplevel_200_response(self, operation, path, method, collection=True):
533532
if collection:
534533
data = {
535534
"type": "array",
536-
"items": get_reference(
537-
self, self.get_response_serializer(path, method)
538-
),
535+
"items": self.get_reference(self.get_response_serializer(path, method)),
539536
}
540537
else:
541-
data = get_reference(self, self.get_response_serializer(path, method))
538+
data = self.get_reference(self.get_response_serializer(path, method))
542539

543540
return {
544541
"description": operation["operationId"],

setup.cfg

-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ DJANGO_SETTINGS_MODULE=example.settings.test
6363
filterwarnings =
6464
error::DeprecationWarning
6565
error::PendingDeprecationWarning
66-
# Remove when DRF is not depending on it anymore
67-
ignore:The django.utils.timezone.utc alias is deprecated.
6866
# Django filter schema generation. Can be removed once we remove
6967
# schema support
7068
ignore:Built-in schema generation is deprecated.

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def get_package_data(package):
106106
},
107107
install_requires=[
108108
"inflection>=0.5.0",
109-
"djangorestframework>=3.13",
109+
"djangorestframework>=3.14",
110110
"django>=3.2",
111111
],
112112
extras_require={

tox.ini

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[tox]
22
envlist =
3-
py{38,39,310}-django32-drf{313,314,master},
4-
py{38,39,310,311}-django41-drf{314,master},
5-
py{38,39,310,311,312}-django42-drf{314,master},
6-
py{310,311,312}-django50-drf{314,master},
3+
py{38,39,310}-django32-drf{314,315,master},
4+
py{38,39,310,311}-django41-drf{314,315,master},
5+
py{38,39,310,311,312}-django42-drf{314,315,master},
6+
py{310,311,312}-django50-drf{314,315,master},
77
black,
88
docs,
99
lint
@@ -14,8 +14,8 @@ deps =
1414
django41: Django>=4.1,<4.2
1515
django42: Django>=4.2,<4.3
1616
django50: Django>=5.0,<5.1
17-
drf313: djangorestframework>=3.13,<3.14
1817
drf314: djangorestframework>=3.14,<3.15
18+
drf315: djangorestframework>=3.15,<3.16
1919
drfmaster: https://github.com/encode/django-rest-framework/archive/master.zip
2020
-rrequirements/requirements-testing.txt
2121
-rrequirements/requirements-optionals.txt

0 commit comments

Comments
 (0)