@@ -26,6 +26,10 @@ def test_constants(self):
2626
2727class FixedOffset (tzinfo ):
2828 def __init__ (self , offset , name , dstoffset = 42 ):
29+ if isinstance (offset , int ):
30+ offset = timedelta (minutes = offset )
31+ if isinstance (dstoffset , int ):
32+ dstoffset = timedelta (minutes = dstoffset )
2933 self .__offset = offset
3034 self .__name = name
3135 self .__dstoffset = dstoffset
@@ -72,9 +76,9 @@ def test_normal(self):
7276 fo = FixedOffset (3 , "Three" )
7377 self .failUnless (isinstance (fo , tzinfo ))
7478 for dt in datetime .now (), None :
75- self .assertEqual (fo .utcoffset (dt ), 3 )
79+ self .assertEqual (fo .utcoffset (dt ), timedelta ( minutes = 3 ) )
7680 self .assertEqual (fo .tzname (dt ), "Three" )
77- self .assertEqual (fo .dst (dt ), 42 )
81+ self .assertEqual (fo .dst (dt ), timedelta ( minutes = 42 ) )
7882
7983 def test_pickling_base (self ):
8084 import pickle , cPickle
@@ -94,18 +98,19 @@ def test_pickling_subclass(self):
9498 import pickle , cPickle
9599
96100 # Make sure we can pickle/unpickle an instance of a subclass.
97- orig = PicklableFixedOffset (- 300 , 'cookie' )
101+ offset = timedelta (minutes = - 300 )
102+ orig = PicklableFixedOffset (offset , 'cookie' )
98103 self .failUnless (isinstance (orig , tzinfo ))
99104 self .failUnless (type (orig ) is PicklableFixedOffset )
100- self .assertEqual (orig .utcoffset (None ), - 300 )
105+ self .assertEqual (orig .utcoffset (None ), offset )
101106 self .assertEqual (orig .tzname (None ), 'cookie' )
102107 for pickler in pickle , cPickle :
103108 for binary in 0 , 1 :
104109 green = pickler .dumps (orig , binary )
105110 derived = pickler .loads (green )
106111 self .failUnless (isinstance (derived , tzinfo ))
107112 self .failUnless (type (derived ) is PicklableFixedOffset )
108- self .assertEqual (derived .utcoffset (None ), - 300 )
113+ self .assertEqual (derived .utcoffset (None ), offset )
109114 self .assertEqual (derived .tzname (None ), 'cookie' )
110115
111116#############################################################################
@@ -1562,7 +1567,8 @@ def test_argument_passing(self):
15621567 # A datetimetz passes itself on, a timetz passes None.
15631568 class introspective (tzinfo ):
15641569 def tzname (self , dt ): return dt and "real" or "none"
1565- def utcoffset (self , dt ): return dt and 42 or - 42
1570+ def utcoffset (self , dt ):
1571+ return timedelta (minutes = dt and 42 or - 42 )
15661572 dst = utcoffset
15671573
15681574 obj = cls (1 , 2 , 3 , tzinfo = introspective ())
@@ -1593,7 +1599,7 @@ def utcoffset(self, dt): pass
15931599 def test_utc_offset_out_of_bounds (self ):
15941600 class Edgy (tzinfo ):
15951601 def __init__ (self , offset ):
1596- self .offset = offset
1602+ self .offset = timedelta ( minutes = offset )
15971603 def utcoffset (self , dt ):
15981604 return self .offset
15991605
@@ -1629,39 +1635,32 @@ def tzname(self, dt): return None
16291635 self .failUnless (t .dst () is None )
16301636 self .failUnless (t .tzname () is None )
16311637
1632- class C2 (tzinfo ):
1633- def utcoffset (self , dt ): return - 1439
1634- def dst (self , dt ): return 1439
1635- def tzname (self , dt ): return "aname"
16361638 class C3 (tzinfo ):
16371639 def utcoffset (self , dt ): return timedelta (minutes = - 1439 )
16381640 def dst (self , dt ): return timedelta (minutes = 1439 )
16391641 def tzname (self , dt ): return "aname"
1640- for t in cls ( 1 , 1 , 1 , tzinfo = C2 ()), cls (1 , 1 , 1 , tzinfo = C3 ()):
1641- self .assertEqual (t .utcoffset (), timedelta (minutes = - 1439 ))
1642- self .assertEqual (t .dst (), timedelta (minutes = 1439 ))
1643- self .assertEqual (t .tzname (), "aname" )
1642+ t = cls (1 , 1 , 1 , tzinfo = C3 ())
1643+ self .assertEqual (t .utcoffset (), timedelta (minutes = - 1439 ))
1644+ self .assertEqual (t .dst (), timedelta (minutes = 1439 ))
1645+ self .assertEqual (t .tzname (), "aname" )
16441646
16451647 # Wrong types.
16461648 class C4 (tzinfo ):
16471649 def utcoffset (self , dt ): return "aname"
1648- def dst (self , dt ): return ()
1650+ def dst (self , dt ): return 7
16491651 def tzname (self , dt ): return 0
16501652 t = cls (1 , 1 , 1 , tzinfo = C4 ())
16511653 self .assertRaises (TypeError , t .utcoffset )
16521654 self .assertRaises (TypeError , t .dst )
16531655 self .assertRaises (TypeError , t .tzname )
16541656
16551657 # Offset out of range.
1656- class C5 (tzinfo ):
1657- def utcoffset (self , dt ): return - 1440
1658- def dst (self , dt ): return 1440
16591658 class C6 (tzinfo ):
16601659 def utcoffset (self , dt ): return timedelta (hours = - 24 )
16611660 def dst (self , dt ): return timedelta (hours = 24 )
1662- for t in cls ( 1 , 1 , 1 , tzinfo = C5 ()), cls (1 , 1 , 1 , tzinfo = C6 ()):
1663- self .assertRaises (ValueError , t .utcoffset )
1664- self .assertRaises (ValueError , t .dst )
1661+ t = cls (1 , 1 , 1 , tzinfo = C6 ())
1662+ self .assertRaises (ValueError , t .utcoffset )
1663+ self .assertRaises (ValueError , t .dst )
16651664
16661665 # Not a whole number of minutes.
16671666 class C7 (tzinfo ):
@@ -1679,9 +1678,11 @@ def test_aware_compare(self):
16791678 class OperandDependentOffset (tzinfo ):
16801679 def utcoffset (self , t ):
16811680 if t .minute < 10 :
1682- return t .minute # d0 and d1 equal after adjustment
1681+ # d0 and d1 equal after adjustment
1682+ return timedelta (minutes = t .minute )
16831683 else :
1684- return 59 # d2 off in the weeds
1684+ # d2 off in the weeds
1685+ return timedelta (minutes = 59 )
16851686
16861687 base = cls (8 , 9 , 10 , tzinfo = OperandDependentOffset ())
16871688 d0 = base .replace (minute = 3 )
@@ -1937,9 +1938,9 @@ def test_mixed_compare(self):
19371938 # In timetz w/ identical tzinfo objects, utcoffset is ignored.
19381939 class Varies (tzinfo ):
19391940 def __init__ (self ):
1940- self .offset = 22
1941+ self .offset = timedelta ( minutes = 22 )
19411942 def utcoffset (self , t ):
1942- self .offset += 1
1943+ self .offset += timedelta ( minutes = 1 )
19431944 return self .offset
19441945
19451946 v = Varies ()
@@ -2028,7 +2029,8 @@ def utcoffset(self, dt): return None
20282029
20292030 # Try a bogus uctoffset.
20302031 class Bogus (tzinfo ):
2031- def utcoffset (self , dt ): return 1440 # out of bounds
2032+ def utcoffset (self , dt ):
2033+ return timedelta (minutes = 1440 ) # out of bounds
20322034 t1 = self .theclass (2 , 2 , 2 , tzinfo = Bogus ())
20332035 t2 = self .theclass (2 , 2 , 2 , tzinfo = FixedOffset (0 , "" ))
20342036 self .assertRaises (ValueError , lambda : t1 == t2 )
@@ -2259,6 +2261,8 @@ def test_tzinfo_timetuple(self):
22592261 # DST flag.
22602262 class DST (tzinfo ):
22612263 def __init__ (self , dstvalue ):
2264+ if isinstance (dstvalue , int ):
2265+ dstvalue = timedelta (minutes = dstvalue )
22622266 self .dstvalue = dstvalue
22632267 def dst (self , dt ):
22642268 return self .dstvalue
@@ -2291,6 +2295,8 @@ def dst(self, dt):
22912295 def test_utctimetuple (self ):
22922296 class DST (tzinfo ):
22932297 def __init__ (self , dstvalue ):
2298+ if isinstance (dstvalue , int ):
2299+ dstvalue = timedelta (minutes = dstvalue )
22942300 self .dstvalue = dstvalue
22952301 def dst (self , dt ):
22962302 return self .dstvalue
@@ -2303,7 +2309,7 @@ def dst(self, dt):
23032309 class UOFS (DST ):
23042310 def __init__ (self , uofs , dofs = None ):
23052311 DST .__init__ (self , dofs )
2306- self .uofs = uofs
2312+ self .uofs = timedelta ( minutes = uofs )
23072313 def utcoffset (self , dt ):
23082314 return self .uofs
23092315
@@ -2454,9 +2460,11 @@ def test_aware_subtract(self):
24542460 class OperandDependentOffset (tzinfo ):
24552461 def utcoffset (self , t ):
24562462 if t .minute < 10 :
2457- return t .minute # d0 and d1 equal after adjustment
2463+ # d0 and d1 equal after adjustment
2464+ return timedelta (minutes = t .minute )
24582465 else :
2459- return 59 # d2 off in the weeds
2466+ # d2 off in the weeds
2467+ return timedelta (minutes = 59 )
24602468
24612469 base = cls (8 , 9 , 10 , 11 , 12 , 13 , 14 , tzinfo = OperandDependentOffset ())
24622470 d0 = base .replace (minute = 3 )
@@ -2502,9 +2510,9 @@ def test_mixed_compare(self):
25022510 # In datetimetz w/ identical tzinfo objects, utcoffset is ignored.
25032511 class Varies (tzinfo ):
25042512 def __init__ (self ):
2505- self .offset = 22
2513+ self .offset = timedelta ( minutes = 22 )
25062514 def utcoffset (self , t ):
2507- self .offset += 1
2515+ self .offset += timedelta ( minutes = 1 )
25082516 return self .offset
25092517
25102518 v = Varies ()
0 commit comments