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 warnings
from contextlib import ContextDecorator
from datetime import datetime, timedelta, timezone, tzinfo
@ -11,7 +10,6 @@ import pytz
from asgiref.local import Local
from django.conf import settings
from django.utils.deprecation import RemovedInDjango31Warning
__all__ = [
'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 = pytz.utc

View File

@ -835,15 +835,6 @@ appropriate entities.
: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)
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
to remove usage of these features.
* ``django.utils.timezone.FixedOffset`` is removed.
* ``django.contrib.postgres.fields.FloatRangeField`` and
``django.contrib.postgres.forms.FloatRangeField`` are removed.

View File

@ -1,12 +1,10 @@
import datetime
import pickle
from unittest import mock
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.deprecation import RemovedInDjango31Warning
CET = pytz.timezone("Europe/Paris")
EAT = timezone.get_fixed_timezone(180) # Africa/Nairobi
@ -202,24 +200,3 @@ class TimezoneTests(SimpleTestCase):
def test_fixedoffset_negative_timedelta(self):
delta = datetime.timedelta(hours=-2)
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)