From d6b87b0b0ea847d00156936908124051908874d3 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Wed, 7 Sep 2022 09:54:03 -0500 Subject: [PATCH] Remove deprecated NullBooleanField. --- docs/api-guide/fields.md | 8 -------- rest_framework/fields.py | 20 +------------------- rest_framework/metadata.py | 1 - rest_framework/serializers.py | 2 +- tests/test_fields.py | 14 ++------------ 5 files changed, 4 insertions(+), 41 deletions(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index e9ef5c6b6..1e9436213 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -159,14 +159,6 @@ Corresponds to `django.db.models.fields.BooleanField`. **Signature:** `BooleanField()` -## NullBooleanField - -A boolean representation that also accepts `None` as a valid value. - -Corresponds to `django.db.models.fields.NullBooleanField`. - -**Signature:** `NullBooleanField()` - --- # String fields diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 72bfe614d..6374c1ea9 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -5,7 +5,6 @@ import functools import inspect import re import uuid -import warnings from collections import OrderedDict from collections.abc import Mapping @@ -30,7 +29,7 @@ from django.utils.ipv6 import clean_ipv6_address from django.utils.translation import gettext_lazy as _ from pytz.exceptions import InvalidTimeError -from rest_framework import ISO_8601, RemovedInDRF314Warning +from rest_framework import ISO_8601 from rest_framework.exceptions import ErrorDetail, ValidationError from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, json, representation @@ -712,23 +711,6 @@ class BooleanField(Field): return bool(value) -class NullBooleanField(BooleanField): - initial = None - - def __init__(self, **kwargs): - warnings.warn( - "The `NullBooleanField` is deprecated and will be removed starting " - "with 3.14. Instead use the `BooleanField` field and set " - "`allow_null=True` which does the same thing.", - RemovedInDRF314Warning, stacklevel=2 - ) - - assert 'allow_null' not in kwargs, '`allow_null` is not a valid option.' - kwargs['allow_null'] = True - - super().__init__(**kwargs) - - # String types... class CharField(Field): diff --git a/rest_framework/metadata.py b/rest_framework/metadata.py index 8a44f2aad..7708fe0a2 100644 --- a/rest_framework/metadata.py +++ b/rest_framework/metadata.py @@ -36,7 +36,6 @@ class SimpleMetadata(BaseMetadata): label_lookup = ClassLookupDict({ serializers.Field: 'field', serializers.BooleanField: 'boolean', - serializers.NullBooleanField: 'boolean', serializers.CharField: 'string', serializers.UUIDField: 'string', serializers.URLField: 'url', diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 052a766cd..083910174 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -52,7 +52,7 @@ from rest_framework.fields import ( # NOQA # isort:skip BooleanField, CharField, ChoiceField, DateField, DateTimeField, DecimalField, DictField, DurationField, EmailField, Field, FileField, FilePathField, FloatField, HiddenField, HStoreField, IPAddressField, ImageField, IntegerField, JSONField, - ListField, ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, + ListField, ModelField, MultipleChoiceField, ReadOnlyField, RegexField, SerializerMethodField, SlugField, TimeField, URLField, UUIDField, ) from rest_framework.relations import ( # NOQA # isort:skip diff --git a/tests/test_fields.py b/tests/test_fields.py index 56276e6ff..11e293107 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -679,9 +679,9 @@ class TestBooleanField(FieldValues): assert exc_info.value.detail == expected -class TestNullBooleanField(TestBooleanField): +class TestNullableBooleanField(TestBooleanField): """ - Valid and invalid values for `NullBooleanField`. + Valid and invalid values for `BooleanField` when `allow_null=True`. """ valid_inputs = { 'true': True, @@ -706,16 +706,6 @@ class TestNullBooleanField(TestBooleanField): field = serializers.BooleanField(allow_null=True) -class TestNullableBooleanField(TestNullBooleanField): - """ - Valid and invalid values for `BooleanField` when `allow_null=True`. - """ - - @property - def field(self): - return serializers.BooleanField(allow_null=True) - - # String types... class TestCharField(FieldValues):