Refs #29546 -- Removed django.utils.timezone.FixedOffset per deprecation timeline.

This commit is contained in:
Mariusz Felisiak 2019-09-06 07:59:06 +02:00
parent 3d716467a9
commit cb2be9d5d5
4 changed files with 3 additions and 69 deletions

View File

@ -3,7 +3,6 @@ Timezone-related classes and functions.
""" """
import functools import functools
import warnings
from contextlib import ContextDecorator from contextlib import ContextDecorator
from datetime import datetime, timedelta, timezone, tzinfo from datetime import datetime, timedelta, timezone, tzinfo
@ -11,7 +10,6 @@ import pytz
from asgiref.local import Local from asgiref.local import Local
from django.conf import settings from django.conf import settings
from django.utils.deprecation import RemovedInDjango31Warning
__all__ = [ __all__ = [
'utc', 'get_fixed_timezone', 'utc', 'get_fixed_timezone',
@ -23,40 +21,6 @@ __all__ = [
] ]
# UTC and local time zones
ZERO = timedelta(0)
class FixedOffset(tzinfo):
"""
Fixed offset in minutes east from UTC. Taken from Python's docs.
Kept as close as possible to the reference version. __init__ was changed
to make its arguments optional, according to Python's requirement that
tzinfo subclasses can be instantiated without arguments.
"""
def __init__(self, offset=None, name=None):
warnings.warn(
'FixedOffset is deprecated in favor of datetime.timezone',
RemovedInDjango31Warning, stacklevel=2,
)
if offset is not None:
self.__offset = timedelta(minutes=offset)
if name is not None:
self.__name = name
def utcoffset(self, dt):
return self.__offset
def tzname(self, dt):
return self.__name
def dst(self, dt):
return ZERO
# UTC time zone as a tzinfo instance. # UTC time zone as a tzinfo instance.
utc = pytz.utc utc = pytz.utc

View File

@ -835,15 +835,6 @@ appropriate entities.
:class:`~datetime.tzinfo` instance that represents UTC. :class:`~datetime.tzinfo` instance that represents UTC.
.. class:: FixedOffset(offset=None, name=None)
A :class:`~datetime.tzinfo` subclass modeling a fixed offset from UTC.
``offset`` is an integer number of minutes east of UTC.
.. deprecated:: 2.2
Use :class:`datetime.timezone` instead.
.. function:: get_fixed_timezone(offset) .. function:: get_fixed_timezone(offset)
Returns a :class:`~datetime.tzinfo` instance that represents a time zone Returns a :class:`~datetime.tzinfo` instance that represents a time zone

View File

@ -230,6 +230,8 @@ in Django 3.1.
See :ref:`deprecated-features-2.2` for details on these changes, including how See :ref:`deprecated-features-2.2` for details on these changes, including how
to remove usage of these features. to remove usage of these features.
* ``django.utils.timezone.FixedOffset`` is removed.
* ``django.contrib.postgres.fields.FloatRangeField`` and * ``django.contrib.postgres.fields.FloatRangeField`` and
``django.contrib.postgres.forms.FloatRangeField`` are removed. ``django.contrib.postgres.forms.FloatRangeField`` are removed.

View File

@ -1,12 +1,10 @@
import datetime import datetime
import pickle
from unittest import mock from unittest import mock
import pytz import pytz
from django.test import SimpleTestCase, ignore_warnings, override_settings from django.test import SimpleTestCase, override_settings
from django.utils import timezone from django.utils import timezone
from django.utils.deprecation import RemovedInDjango31Warning
CET = pytz.timezone("Europe/Paris") CET = pytz.timezone("Europe/Paris")
EAT = timezone.get_fixed_timezone(180) # Africa/Nairobi EAT = timezone.get_fixed_timezone(180) # Africa/Nairobi
@ -202,24 +200,3 @@ class TimezoneTests(SimpleTestCase):
def test_fixedoffset_negative_timedelta(self): def test_fixedoffset_negative_timedelta(self):
delta = datetime.timedelta(hours=-2) delta = datetime.timedelta(hours=-2)
self.assertEqual(timezone.get_fixed_timezone(delta).utcoffset(None), delta) self.assertEqual(timezone.get_fixed_timezone(delta).utcoffset(None), delta)
@ignore_warnings(category=RemovedInDjango31Warning)
def test_fixedoffset_pickle(self):
self.assertEqual(pickle.loads(pickle.dumps(timezone.FixedOffset(0, 'tzname'))).tzname(''), 'tzname')
def test_fixedoffset_deprecation(self):
msg = 'FixedOffset is deprecated in favor of datetime.timezone'
with self.assertWarnsMessage(RemovedInDjango31Warning, msg) as cm:
timezone.FixedOffset()
self.assertEqual(cm.filename, __file__)
@ignore_warnings(category=RemovedInDjango31Warning)
def test_fixedoffset_utcoffset(self):
delta = datetime.timedelta(minutes=1)
self.assertEqual(timezone.FixedOffset(1).utcoffset(None), delta)
@ignore_warnings(category=RemovedInDjango31Warning)
def test_fixedoffset_dst(self):
ZERO = datetime.timedelta(minutes=0)
delta = datetime.timedelta(hours=0)
self.assertEqual(timezone.FixedOffset().dst(delta), ZERO)