diff --git a/django/contrib/postgres/fields/ranges.py b/django/contrib/postgres/fields/ranges.py index a4fa20adf3..953d02ac65 100644 --- a/django/contrib/postgres/fields/ranges.py +++ b/django/contrib/postgres/fields/ranges.py @@ -11,7 +11,6 @@ from .utils import AttributeSetter __all__ = [ 'RangeField', 'IntegerRangeField', 'BigIntegerRangeField', 'DecimalRangeField', 'DateTimeRangeField', 'DateRangeField', - 'FloatRangeField', 'RangeBoundary', 'RangeOperators', ] @@ -135,22 +134,6 @@ class DecimalRangeField(RangeField): return 'numrange' -class FloatRangeField(RangeField): - system_check_deprecated_details = { - 'msg': ( - 'FloatRangeField is deprecated and will be removed in Django 3.1.' - ), - 'hint': 'Use DecimalRangeField instead.', - 'id': 'fields.W902', - } - base_field = models.FloatField - range_type = NumericRange - form_field = forms.FloatRangeField - - def db_type(self, connection): - return 'numrange' - - class DateTimeRangeField(RangeField): base_field = models.DateTimeField range_type = DateTimeTZRange diff --git a/django/contrib/postgres/forms/ranges.py b/django/contrib/postgres/forms/ranges.py index c36bec8479..47a16a1bbd 100644 --- a/django/contrib/postgres/forms/ranges.py +++ b/django/contrib/postgres/forms/ranges.py @@ -1,16 +1,13 @@ -import warnings - from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange from django import forms from django.core import exceptions from django.forms.widgets import MultiWidget -from django.utils.deprecation import RemovedInDjango31Warning from django.utils.translation import gettext_lazy as _ __all__ = [ 'BaseRangeField', 'IntegerRangeField', 'DecimalRangeField', - 'DateTimeRangeField', 'DateRangeField', 'FloatRangeField', 'RangeWidget', + 'DateTimeRangeField', 'DateRangeField', 'RangeWidget', ] @@ -75,17 +72,6 @@ class DecimalRangeField(BaseRangeField): range_type = NumericRange -class FloatRangeField(DecimalRangeField): - base_field = forms.FloatField - - def __init__(self, **kwargs): - warnings.warn( - 'FloatRangeField is deprecated in favor of DecimalRangeField.', - RemovedInDjango31Warning, stacklevel=2, - ) - super().__init__(**kwargs) - - class DateTimeRangeField(BaseRangeField): default_error_messages = {'invalid': _('Enter two valid date/times.')} base_field = forms.DateTimeField diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt index 1289ffe1ab..9bcba596fa 100644 --- a/docs/ref/checks.txt +++ b/docs/ref/checks.txt @@ -174,7 +174,7 @@ Model fields * **fields.E901**: ``CommaSeparatedIntegerField`` is removed except for support in historical migrations. * **fields.W902**: ``FloatRangeField`` is deprecated and will be removed in - Django 3.1. + Django 3.1. *This check appeared in Django 2.2 and 3.0*. File fields ~~~~~~~~~~~ diff --git a/docs/ref/contrib/postgres/fields.txt b/docs/ref/contrib/postgres/fields.txt index aa4d797162..27cf6469f1 100644 --- a/docs/ref/contrib/postgres/fields.txt +++ b/docs/ref/contrib/postgres/fields.txt @@ -661,19 +661,6 @@ excluded; that is, ``[)``. the database and a :class:`~psycopg2:psycopg2.extras.NumericRange` in Python. -``FloatRangeField`` -------------------- - -.. class:: FloatRangeField(**options) - - Stores a range of floating point values. Based on a - :class:`~django.db.models.FloatField`. Represented by a ``numrange`` in the - database and a :class:`~psycopg2:psycopg2.extras.NumericRange` in Python. - - .. deprecated:: 2.2 - - Use :class:`DecimalRangeField` instead. - ``DateTimeRangeField`` ---------------------- diff --git a/docs/ref/contrib/postgres/forms.txt b/docs/ref/contrib/postgres/forms.txt index 2f60c7e913..f559ac75cb 100644 --- a/docs/ref/contrib/postgres/forms.txt +++ b/docs/ref/contrib/postgres/forms.txt @@ -201,19 +201,6 @@ not greater than the upper bound. All of these fields use :class:`~psycopg2:psycopg2.extras.NumericRange`. Default for :class:`~django.contrib.postgres.fields.DecimalRangeField`. -``FloatRangeField`` -~~~~~~~~~~~~~~~~~~~ - -.. class:: FloatRangeField - - Based on :class:`~django.forms.FloatField` and translates its input into - :class:`~psycopg2:psycopg2.extras.NumericRange`. Default for - :class:`~django.contrib.postgres.fields.FloatRangeField`. - - .. deprecated:: 2.2 - - Use :class:`DecimalRangeField` instead. - ``DateTimeRangeField`` ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/releases/3.1.txt b/docs/releases/3.1.txt index c0e48341c6..8fb764115e 100644 --- a/docs/releases/3.1.txt +++ b/docs/releases/3.1.txt @@ -230,4 +230,5 @@ in Django 3.1. See :ref:`deprecated-features-2.2` for details on these changes, including how to remove usage of these features. -* ... +* ``django.contrib.postgres.fields.FloatRangeField`` and + ``django.contrib.postgres.forms.FloatRangeField`` are removed. diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py index 89f32ee77c..3e8fd355d3 100644 --- a/tests/postgres_tests/test_ranges.py +++ b/tests/postgres_tests/test_ranges.py @@ -5,9 +5,8 @@ from decimal import Decimal from django import forms from django.core import exceptions, serializers from django.db.models import DateField, DateTimeField, F, Func, Value -from django.test import ignore_warnings, override_settings +from django.test import override_settings from django.utils import timezone -from django.utils.deprecation import RemovedInDjango31Warning from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase from .models import RangeLookupsModel, RangesModel @@ -445,22 +444,11 @@ class TestFormField(PostgreSQLSimpleTestCase): value = field.clean(['1', '2']) self.assertEqual(value, NumericRange(1, 2)) - @ignore_warnings(category=RemovedInDjango31Warning) - def test_valid_floats(self): - field = pg_forms.FloatRangeField() - value = field.clean(['1.12345', '2.001']) - self.assertEqual(value, NumericRange(1.12345, 2.001)) - def test_valid_decimal(self): field = pg_forms.DecimalRangeField() value = field.clean(['1.12345', '2.001']) self.assertEqual(value, NumericRange(Decimal('1.12345'), Decimal('2.001'))) - def test_float_range_field_deprecation(self): - msg = 'FloatRangeField is deprecated in favor of DecimalRangeField.' - with self.assertRaisesMessage(RemovedInDjango31Warning, msg): - pg_forms.FloatRangeField() - def test_valid_timestamps(self): field = pg_forms.DateTimeRangeField() value = field.clean(['01/01/2014 00:00:00', '02/02/2014 12:12:12'])