Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.15 Release #9210

Merged
merged 71 commits into from
Mar 16, 2024
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
988bc3a
Release Notes for 3.15
math-a3k Dec 7, 2022
965e9bc
Release date pending
tomchristie Jan 4, 2024
18f7567
Merge branch '315_rn' of https://github.com/math-a3k/django-rest-fram…
tomchristie Jan 4, 2024
428b584
Merge branch 'master' into math-a3k-315_rn
tomchristie Jan 4, 2024
5313ae6
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
7b57ec4
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
7f55921
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
631b8c1
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
7848ffd
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
ff803c8
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
f5b08ff
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
3fc4baa
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
d7df722
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
9324a23
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
088f912
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
8aaf97f
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
42b78d0
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
3ef5fe2
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
5d0c331
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
9765941
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
aa27efb
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
1a61130
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
7a374ea
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
0e73dfb
Fix typo
tomchristie Jan 4, 2024
98a5b9a
Changes to tests should not be included in release notes.
tomchristie Jan 4, 2024
555b2ef
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
5d1be7e
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
398aa1e
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
3e88e65
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
ba2bb6e
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
d428aed
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
ab7bb95
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
2b27c85
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
bfbb04a
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
402b0f4
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
40f2289
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
f0b6150
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
c8b935e
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
fecd1bf
Changes to tests should not be included in release notes.
tomchristie Jan 4, 2024
1b7e0bd
Changes to tests should not be included in release notes.
tomchristie Jan 4, 2024
e32b879
Fix typo in release notes.
tomchristie Jan 4, 2024
cc5b572
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
1ae36c5
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
3017b72
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
1a2323a
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
50ff175
Changes to tests should not be included in release notes.
tomchristie Jan 4, 2024
c4044d4
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
60b9ca6
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
8a0382c
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
fd0edb3
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
81a5487
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
914002b
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
cda0ec6
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
0660d66
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
70a4432
Improve changelog entry
tomchristie Jan 4, 2024
09325ac
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
da6e6dc
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
af6313a
Changes to project workflow should not be included in release notes.
tomchristie Jan 4, 2024
f2dc192
Changes to docs should not be included in release notes.
tomchristie Jan 4, 2024
9e0003c
Update docs/community/3.15-announcement.md
tomchristie Jan 4, 2024
53b5f62
Update docs/community/3.15-announcement.md
tomchristie Mar 7, 2024
69baf94
Update docs/community/3.15-announcement.md
tomchristie Mar 7, 2024
dbba90a
Update docs/community/release-notes.md
tomchristie Mar 7, 2024
204ef05
Update docs/community/release-notes.md
tomchristie Mar 8, 2024
7549bdc
Update docs/community/release-notes.md
tomchristie Mar 8, 2024
b42d1ae
Update docs/community/3.15-announcement.md
tomchristie Mar 12, 2024
4b74fe0
Update docs/community/release-notes.md
tomchristie Mar 12, 2024
a45dd07
Update docs/community/release-notes.md
tomchristie Mar 13, 2024
51fd06e
Update release version
tomchristie Mar 15, 2024
de2407f
Update supported Python and Django versions
tomchristie Mar 15, 2024
79cc4a6
Merge branch 'master' into math-a3k-315_rn
tomchristie Mar 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/community/3.15-announcement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<style>
.promo li a {
float: left;
width: 130px;
height: 20px;
text-align: center;
margin: 10px 30px;
padding: 150px 0 0 0;
background-position: 0 50%;
background-size: 130px auto;
background-repeat: no-repeat;
font-size: 120%;
color: black;
}
.promo li {
list-style: none;
}
</style>

# Django REST framework 3.15

At the Internet, on January 12th, 2024, with 135 commits 107 authors, we are happy to announce the release of Django REST framework 3.15.
auvipy marked this conversation as resolved.
Show resolved Hide resolved
tomchristie marked this conversation as resolved.
Show resolved Hide resolved

## Django 5.0 and Python 3.12 support

The latest release now fully supports Django 5.0 and Python 3.12.

The current minimum versions of Django still is 3.0 and Python 3.6.
Copy link
Contributor

@math-a3k math-a3k Jan 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current minimum versions of Django is 3.0 and Python 3.7.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That was, given that my 3.6 removal PR was taken into this release. But the PR now removes 3.6 and 3.7, and given DRF still officialy supports django 3.0. which supports python 3.6 and 3.7, we can't take it for the 3.15 release.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think Django 3.0 can be supported with Python 3.7 only, it doesn't seems a bad thing to me

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the point of doing that?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would alleviate the CI while still accepting bugs from Django 3.0.

Dropping support for a version means "no bugs on that stack will be addressed nor the backward compatibility will be checked" to me.

In the case of a bug arising from Django 3 and Python 3.6, it should be encouraged to upgrade Python and see if it persists.

It would still be compatible with your PR as Django 3 supports Python 3.6-3.9 (https://docs.djangoproject.com/en/5.0/releases/3.0/). With your PR, the minimum version of the stack checked (or fully supported) would be Django >= 3, Python >= 3.8

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving to Django 4.0+ and Python 3.8+ would prob be sensible.

3.2 LTS is almost at EOL... https://www.djangoproject.com/download/#supported-versions

We could then tie into their release cadence.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think keeping support of django 3.2 LTS would be a good idea now. we should keep two LTS working for easier upgrades from existing projects.


## Primary Support of UniqueConstraint

`ModelSerializer` generates validators for [UniqueConstraint](https://docs.djangoproject.com/en/4.0/ref/models/constraints/#uniqueconstraint) (both UniqueValidator and UniqueTogetherValidator)

## ValidationErrors improvements

The `ValidationError` has been aligned with Django's, currently supporting the same style (signature) and nesting.

## SimpleRouter non-regex matching support

By default the URLs created by `SimpleRouter` use regular expressions. This behavior can be modified by setting the `use_regex_path` argument to `False` when instantiating the router.

## ZoneInfo as the primary source of timezone data

Dependency on pytz has been removed and deprecation warnings have been added, Django will provide ZoneInfo instances as long as USE_DEPRECATED_PYTZ is not enabled. More info on the migration can be found [in this guide](https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html).

## Align `SearchFilter` behaviour to `django.contrib.admin` search

Searches now may contain _quoted phrases_ with spaces, each phrase is considered as a single search term, and it will raise a validation error if any null-character is provided in search. See the [Filtering API guide](../api-guide/filtering.md) for more information.

## Default values propagation

Model fields' default values are now propagated to serializer fields, for more information see the [Serializer fields API guide](../api-guide/fields.md#default).

## Other fixes and improvements

There are a number of fixes and minor improvements in this release, ranging from documentation, internal infrastructure (typing, testing, requirements, deprecation, etc.), security and overall behaviour.

See the [release notes](release-notes.md) page for a complete listing.
85 changes: 85 additions & 0 deletions docs/community/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,91 @@ You can determine your currently installed version using `pip show`:

---

## 3.15.x series

### 3.15.0

Date: ...
tomchristie marked this conversation as resolved.
Show resolved Hide resolved

* Django 5.0 and Python 3.12 support [[#9157] (https://github.com/encode/django-rest-framework/pull/9157)]
* Use POST method instead of GET to perform logout in browsable API [[9208] (https://github.com/encode/django-rest-framework/pull/9208)]
* Added jQuery 3.7.1 support & dropped previous version [[#9094](https://github.com/encode/django-rest-framework/pull/9094)]
tomchristie marked this conversation as resolved.
Show resolved Hide resolved
tomchristie marked this conversation as resolved.
Show resolved Hide resolved
* Use str as default path converter [[#9066](https://github.com/encode/django-rest-framework/pull/9066)]
* Document support for http.HTTPMethod in the @action decorator added in Python 3.11 [[#9067](https://github.com/encode/django-rest-framework/pull/9067)]
* Update exceptions.md [[#9071](https://github.com/encode/django-rest-framework/pull/9071)]
* Partial serializer should not have required fields [[#7563](https://github.com/encode/django-rest-framework/pull/7563)]
* Propagate 'default' from model field to serializer field. [[#9030](https://github.com/encode/django-rest-framework/pull/9030)]
* Allow to override child.run_validation call in ListSerializer [[#8035](https://github.com/encode/django-rest-framework/pull/8035)]
* Align SearchFilter behaviour to django.contrib.admin search [[#9017](https://github.com/encode/django-rest-framework/pull/9017)]
* Class name added to unknown field error [[#9019](https://github.com/encode/django-rest-framework/pull/9019)]
* Fix: Pagination response schemas. [[#9049](https://github.com/encode/django-rest-framework/pull/9049)]
* Fix choices in ChoiceField to support IntEnum [[#8955](https://github.com/encode/django-rest-framework/pull/8955)]
* Fix `SearchFilter` rendering search field with invalid value [[#9023](https://github.com/encode/django-rest-framework/pull/9023)]
* Fix OpenAPI Schema yaml rendering for `timedelta` [[#9007](https://github.com/encode/django-rest-framework/pull/9007)]
* Fix `NamespaceVersioning` ignoring `DEFAULT_VERSION` on non-None namespaces [[#7278](https://github.com/encode/django-rest-framework/pull/7278)]
* Added Deprecation Warnings for CoreAPI [[#7519](https://github.com/encode/django-rest-framework/pull/7519)]
* Removed usage of `field.choices` that triggered full table load [[#8950](https://github.com/encode/django-rest-framework/pull/8950)]
* Permit mixed casing of string values for `BooleanField` validation [[#8970](https://github.com/encode/django-rest-framework/pull/8970)]
* Fixes `BrowsableAPIRenderer` for usage with `ListSerializer`. [[#7530](https://github.com/encode/django-rest-framework/pull/7530)]
* Change semantic of `OR` of two permission classes [[#7522](https://github.com/encode/django-rest-framework/pull/7522)]
* Remove dependency on `pytz` [[#8984](https://github.com/encode/django-rest-framework/pull/8984)]
* Fix validation for ListSerializer [[#8979](https://github.com/encode/django-rest-framework/pull/8979)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#8979 is marked as "breaking change" and the fix for that (#9244) is not merged yet. It should be noted in the release notes this is a breaking-change.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#8979 is marked as "breaking change" and the fix for that (#9244) is not merged yet. It should be noted in the release notes this is a breaking-change.

@TGoddessana please see same implemented @, thank you,

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although I'm not a maintainer, I'm very interested in the maintenance of the project, so I took a look at the issues.

  1. one PR (Fix validation for ListSerializer #8979) that solves the original issue (Invalid self.instance when validating the serializer using many=True #8926) seems to have been merged already, but the better implementation (Improve ListSerializer #9244) is still not fully resolved based on the last comment in the issue.

  2. so which decision do we make?

Would love to hear your thoughts @tomchristie 🥲

Copy link
Contributor

@sevdog sevdog Mar 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO the problem is that #8926 was addressed ignoring the advice regarding "Customizing multiple update"

By default the ListSerializer class does not support multiple updates. This is because the behavior that should be expected for insertions and deletions is ambiguous.

To support multiple updates you'll need to do so explicitly. When writing your multiple update code make sure to keep the following in mind:

  • How do you determine which instance should be updated for each item in the list of data?
  • How should insertions be handled? Are they invalid, or do they create new objects?
  • How should removals be handled? Do they imply object deletion, or removing a relationship? Should they be silently ignored, or are they invalid?
  • How should ordering be handled? Does changing the position of two items imply any state change or is it ignored?

You will need to add an explicit id field to the instance serializer. The default implicitly-generated id field is marked as read_only. This causes it to be removed on updates. Once you declare it explicitly, it will be available in the list serializer's update method.

Thus the proposed solution (#8979) only addesses a single use case while ignoring out many others which are now not supported by the framework. For example: using ListSerializer to perform in a bulk request a "create-update-delete" of a list of objects which was possible before this change.

PS: there is also an issue with the current implementation of ListSerializer when validating instances and just use "index" to choose which instance will be associated to which data.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking about reverting that for this release

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#9283 let me know your thoughts, and we can wait for a better fix in future

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this change is not released in 3.15, which release do you think is the right one to fix and release it in: 3.16 or 3.15.1?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it is just reverted it will not be included in 3.15, as it is a big thing, it should be included in a major release like 3.16/3.17

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just want to avoid including any not fully functional feature for 3.15

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just want to avoid including any not fully functional feature for 3.15

I agree with you. Thank you for your efforts!

tomchristie marked this conversation as resolved.
Show resolved Hide resolved
* Make set_value a method within `Serializer` [[#8001](https://github.com/encode/django-rest-framework/pull/8001)]
* Fix URLPathVersioning reverse fallback [[#7247](https://github.com/encode/django-rest-framework/pull/7247)]
* Warn about Decimal type in min_value and max_value arguments of DecimalField [[#8972](https://github.com/encode/django-rest-framework/pull/8972)]
* Fix mapping for choice values [[#8968](https://github.com/encode/django-rest-framework/pull/8968)]
* Refactor read function to use context manager for file handling [[#8967](https://github.com/encode/django-rest-framework/pull/8967)]
* Fix: fallback on CursorPagination ordering if unset on the view [[#8954](https://github.com/encode/django-rest-framework/pull/8954)]
* Replaced `OrderedDict` with `dict` [[#8964](https://github.com/encode/django-rest-framework/pull/8964)]
* Refactor get_field_info method to include max_digits and decimal_places attributes in SimpleMetadata class [[#8943](https://github.com/encode/django-rest-framework/pull/8943)]
* Implement `__eq__` for validators [[#8925](https://github.com/encode/django-rest-framework/pull/8925)]
* Ensure CursorPagination respects nulls in the ordering field [[#8912](https://github.com/encode/django-rest-framework/pull/8912)]
* Use ZoneInfo as primary source of timezone data [[#8924](https://github.com/encode/django-rest-framework/pull/8924)]
* Add username search field for TokenAdmin (#8927) [[#8934](https://github.com/encode/django-rest-framework/pull/8934)]
* Handle Nested Relation in SlugRelatedField when many=False [[#8922](https://github.com/encode/django-rest-framework/pull/8922)]
* Bump version of jQuery to 3.6.4 & updated ref links [[#8909](https://github.com/encode/django-rest-framework/pull/8909)]
* Support UniqueConstraint [[#7438](https://github.com/encode/django-rest-framework/pull/7438)]
* Allow Request, Response, Field, and GenericAPIView to be subscriptable. This allows the classes to be made generic for type checking. [[#8825](https://github.com/encode/django-rest-framework/pull/8825)]
* Feat: Add some changes to ValidationError to support django style validation errors [[#8863](https://github.com/encode/django-rest-framework/pull/8863)]
* Fix Respect `can_read_model` permission in DjangoModelPermissions [[#8009](https://github.com/encode/django-rest-framework/pull/8009)]
* Add SimplePathRouter [[#6789](https://github.com/encode/django-rest-framework/pull/6789)]
* Re-prefetch related objects after updating [[#8043](https://github.com/encode/django-rest-framework/pull/8043)]
* Fix FilePathField required argument [[#8805](https://github.com/encode/django-rest-framework/pull/8805)]
* Raise ImproperlyConfigured exception if `basename` is not unique [[#8438](https://github.com/encode/django-rest-framework/pull/8438)]
* Use PrimaryKeyRelatedField pkfield in openapi [[#8315](https://github.com/encode/django-rest-framework/pull/8315)]
* replace partition with split in BasicAuthentication [[#8790](https://github.com/encode/django-rest-framework/pull/8790)]
* Fix BooleanField's allow_null behavior [[#8614](https://github.com/encode/django-rest-framework/pull/8614)]
* Handle Django's ValidationErrors in ListField [[#6423](https://github.com/encode/django-rest-framework/pull/6423)]
* Remove a bit of inline CSS. Add CSP nonce where it might be required and is available [[#8783](https://github.com/encode/django-rest-framework/pull/8783)]
* Use autocomplete widget for user selection in Token admin [[#8534](https://github.com/encode/django-rest-framework/pull/8534)]
* Make browsable API compatible with strong CSP [[#8784](https://github.com/encode/django-rest-framework/pull/8784)]
* Avoid inline script execution for injecting CSRF token [[#7016](https://github.com/encode/django-rest-framework/pull/7016)]
* Mitigate global dependency on inflection #8017 [[#8017](https://github.com/encode/django-rest-framework/pull/8017)] [[#8781](https://github.com/encode/django-rest-framework/pull/8781)]
* Register Django urls [[#8778](https://github.com/encode/django-rest-framework/pull/8778)]
* Implemented Verbose Name Translation for TokenProxy [[#8713](https://github.com/encode/django-rest-framework/pull/8713)]
* Properly handle OverflowError in DurationField deserialization [[#8042](https://github.com/encode/django-rest-framework/pull/8042)]
* Fix OpenAPI operation name plural appropriately [[#8017](https://github.com/encode/django-rest-framework/pull/8017)]
* Represent SafeString as plain string on schema rendering [[#8429](https://github.com/encode/django-rest-framework/pull/8429)]
* Fix #8771 - Checking for authentication even if `_ignore_model_permissions = True` [[#8772](https://github.com/encode/django-rest-framework/pull/8772)]
* Fix 404 when page query parameter is empty string [[#8578](https://github.com/encode/django-rest-framework/pull/8578)]
* Fixes instance check in ListSerializer.to_representation [[#8726](https://github.com/encode/django-rest-framework/pull/8726)] [[#8727](https://github.com/encode/django-rest-framework/pull/8727)]
* FloatField will crash if the input is a number that is too big [[#8725](https://github.com/encode/django-rest-framework/pull/8725)]
* Add missing DurationField to SimpleMetada label_lookup [[#8702](https://github.com/encode/django-rest-framework/pull/8702)]
* Add support for Python 3.11 [[#8752](https://github.com/encode/django-rest-framework/pull/8752)]
* Make request consistently available in pagination classes [[#8764](https://github.com/encode/django-rest-framework/pull/9764)]
* Possibility to remove trailing zeros on DecimalFields representation [[#6514](https://github.com/encode/django-rest-framework/pull/6514)]
* Add a method for getting serializer field name (OpenAPI) [[#7493](https://github.com/encode/django-rest-framework/pull/7493)]
* Add `__eq__` method for `OperandHolder` class [[#8710](https://github.com/encode/django-rest-framework/pull/8710)]
* Avoid importing `django.test` package when not testing [[#8699](https://github.com/encode/django-rest-framework/pull/8699)]
* Preserve exception messages for wrapped Django exceptions [[#8051](https://github.com/encode/django-rest-framework/pull/8051)]
* Include `examples` and `format` to OpenAPI schema of CursorPagination [[#8687] (https://github.com/encode/django-rest-framework/pull/8687)] [[#8686](https://github.com/encode/django-rest-framework/pull/8686)]
* Fix infinite recursion with deepcopy on Request [[#8684](https://github.com/encode/django-rest-framework/pull/8684)]
* Refactor: Replace try/except with contextlib.suppress() [[#8676](https://github.com/encode/django-rest-framework/pull/8676)]
* Minor fix to SerializeMethodField docstring [[#8629](https://github.com/encode/django-rest-framework/pull/8629)]
* Minor refactor: Unnecessary use of list() function [[#8672](https://github.com/encode/django-rest-framework/pull/8672)]
* Unnecessary list comprehension [[#8670](https://github.com/encode/django-rest-framework/pull/8670)]
* Use correct class to indicate present deprecation [[#8665](https://github.com/encode/django-rest-framework/pull/8665)]

## 3.14.x series

### 3.14.0
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ nav:
- 'Contributing to REST framework': 'community/contributing.md'
- 'Project management': 'community/project-management.md'
- 'Release Notes': 'community/release-notes.md'
- '3.15 Announcement': 'community/3.15-announcement.md'
- '3.14 Announcement': 'community/3.14-announcement.md'
- '3.13 Announcement': 'community/3.13-announcement.md'
- '3.12 Announcement': 'community/3.12-announcement.md'
Expand Down
Loading