@@ -79,26 +79,32 @@ def dst(self, dt):
7979 """No daylight saving for UTC."""
8080 return datetime .timedelta (hours = 1 )
8181
82- class _FixedOffset (datetime .tzinfo ):
83- """Fixed offset in minutes east from UTC.
84- Copy/pasted from Python doc
85- :param int offset: offset in minutes
86- """
82+ try :
83+ from datetime import timezone as _FixedOffset
84+ except ImportError : # Python 2.7
85+ class _FixedOffset (datetime .tzinfo ): # type: ignore
86+ """Fixed offset in minutes east from UTC.
87+ Copy/pasted from Python doc
88+ :param datetime.timedelta offset: offset in timedelta format
89+ """
8790
88- def __init__ (self , offset ):
89- self .__offset = datetime . timedelta ( minutes = offset )
91+ def __init__ (self , offset ):
92+ self .__offset = offset
9093
91- def utcoffset (self , dt ):
92- return self .__offset
94+ def utcoffset (self , dt ):
95+ return self .__offset
9396
94- def tzname (self , dt ):
95- return str (self .__offset .total_seconds ()/ 3600 )
97+ def tzname (self , dt ):
98+ return str (self .__offset .total_seconds ()/ 3600 )
9699
97- def __repr__ (self ):
98- return "<FixedOffset {}>" .format (self .tzname (None ))
100+ def __repr__ (self ):
101+ return "<FixedOffset {}>" .format (self .tzname (None ))
99102
100- def dst (self , dt ):
101- return datetime .timedelta (0 )
103+ def dst (self , dt ):
104+ return datetime .timedelta (0 )
105+
106+ def __getinitargs__ (self ):
107+ return (self .__offset ,)
102108
103109try :
104110 from datetime import timezone
@@ -1868,7 +1874,7 @@ def deserialize_rfc(attr):
18681874 parsed_date = email .utils .parsedate_tz (attr )
18691875 date_obj = datetime .datetime (
18701876 * parsed_date [:6 ],
1871- tzinfo = _FixedOffset (( parsed_date [9 ] or 0 )/ 60 )
1877+ tzinfo = _FixedOffset (datetime . timedelta ( minutes = ( parsed_date [9 ] or 0 )/ 60 ) )
18721878 )
18731879 if not date_obj .tzinfo :
18741880 date_obj = date_obj .astimezone (tz = TZ_UTC )
0 commit comments