@@ -101,15 +101,9 @@ def test_to_m8():
101101class Base (object ):
102102 _offset = None
103103
104- _offset_types = [getattr (offsets , o ) for o in offsets .__all__ ]
105-
106104 timezones = [None , 'UTC' , 'Asia/Tokyo' , 'US/Eastern' ,
107105 'dateutil/Asia/Tokyo' , 'dateutil/US/Pacific' ]
108106
109- @property
110- def offset_types (self ):
111- return self ._offset_types
112-
113107 def _get_offset (self , klass , value = 1 , normalize = False ):
114108 # create instance from offset class
115109 if klass is FY5253 :
@@ -134,7 +128,7 @@ def _get_offset(self, klass, value=1, normalize=False):
134128 klass = klass (normalize = normalize )
135129 return klass
136130
137- def test_apply_out_of_range (self ):
131+ def test_apply_out_of_range (self , tz ):
138132 if self ._offset is None :
139133 return
140134
@@ -153,11 +147,10 @@ def test_apply_out_of_range(self):
153147 assert result .tzinfo is None
154148
155149 # Check tz is preserved
156- for tz in self .timezones :
157- t = Timestamp ('20080101' , tz = tz )
158- result = t + offset
159- assert isinstance (result , datetime )
160- assert t .tzinfo == result .tzinfo
150+ t = Timestamp ('20080101' , tz = tz )
151+ result = t + offset
152+ assert isinstance (result , datetime )
153+ assert t .tzinfo == result .tzinfo
161154
162155 except tslib .OutOfBoundsDatetime :
163156 raise
@@ -214,42 +207,39 @@ def setup_method(self, method):
214207 'Nano' : Timestamp (np_datetime64_compat (
215208 '2011-01-01T09:00:00.000000001Z' ))}
216209
217- def test_return_type (self ):
218- for offset in self .offset_types :
219- offset = self ._get_offset (offset )
210+ def test_return_type (self , offset_types ):
211+ offset = self ._get_offset (offset_types )
220212
221- # make sure that we are returning a Timestamp
222- result = Timestamp ('20080101' ) + offset
223- assert isinstance (result , Timestamp )
213+ # make sure that we are returning a Timestamp
214+ result = Timestamp ('20080101' ) + offset
215+ assert isinstance (result , Timestamp )
224216
225- # make sure that we are returning NaT
226- assert NaT + offset is NaT
227- assert offset + NaT is NaT
217+ # make sure that we are returning NaT
218+ assert NaT + offset is NaT
219+ assert offset + NaT is NaT
228220
229- assert NaT - offset is NaT
230- assert (- offset ).apply (NaT ) is NaT
221+ assert NaT - offset is NaT
222+ assert (- offset ).apply (NaT ) is NaT
231223
232- def test_offset_n (self ):
233- for offset_klass in self .offset_types :
234- offset = self ._get_offset (offset_klass )
235- assert offset .n == 1
224+ def test_offset_n (self , offset_types ):
225+ offset = self ._get_offset (offset_types )
226+ assert offset .n == 1
236227
237- neg_offset = offset * - 1
238- assert neg_offset .n == - 1
228+ neg_offset = offset * - 1
229+ assert neg_offset .n == - 1
239230
240- mul_offset = offset * 3
241- assert mul_offset .n == 3
231+ mul_offset = offset * 3
232+ assert mul_offset .n == 3
242233
243- def test_offset_freqstr (self ):
244- for offset_klass in self .offset_types :
245- offset = self ._get_offset (offset_klass )
234+ def test_offset_freqstr (self , offset_types ):
235+ offset = self ._get_offset (offset_types )
246236
247- freqstr = offset .freqstr
248- if freqstr not in ('<Easter>' ,
249- "<DateOffset: kwds={'days': 1}>" ,
250- 'LWOM-SAT' , ):
251- code = get_offset (freqstr )
252- assert offset .rule_code == code
237+ freqstr = offset .freqstr
238+ if freqstr not in ('<Easter>' ,
239+ "<DateOffset: kwds={'days': 1}>" ,
240+ 'LWOM-SAT' , ):
241+ code = get_offset (freqstr )
242+ assert offset .rule_code == code
253243
254244 def _check_offsetfunc_works (self , offset , funcname , dt , expected ,
255245 normalize = False ):
@@ -319,20 +309,19 @@ def _check_offsetfunc_works(self, offset, funcname, dt, expected,
319309 else :
320310 assert result == expected_localize
321311
322- def test_apply (self ):
312+ def test_apply (self , offset_types ):
323313 sdt = datetime (2011 , 1 , 1 , 9 , 0 )
324314 ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
325315
326- for offset in self .offset_types :
327- for dt in [sdt , ndt ]:
328- expected = self .expecteds [offset .__name__ ]
329- self ._check_offsetfunc_works (offset , 'apply' , dt , expected )
316+ for dt in [sdt , ndt ]:
317+ expected = self .expecteds [offset_types .__name__ ]
318+ self ._check_offsetfunc_works (offset_types , 'apply' , dt , expected )
330319
331- expected = Timestamp (expected .date ())
332- self ._check_offsetfunc_works (offset , 'apply' , dt , expected ,
333- normalize = True )
320+ expected = Timestamp (expected .date ())
321+ self ._check_offsetfunc_works (offset_types , 'apply' , dt , expected ,
322+ normalize = True )
334323
335- def test_rollforward (self ):
324+ def test_rollforward (self , offset_types ):
336325 expecteds = self .expecteds .copy ()
337326
338327 # result will not be changed if the target is on the offset
@@ -366,16 +355,15 @@ def test_rollforward(self):
366355 sdt = datetime (2011 , 1 , 1 , 9 , 0 )
367356 ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
368357
369- for offset in self .offset_types :
370- for dt in [sdt , ndt ]:
371- expected = expecteds [offset .__name__ ]
372- self ._check_offsetfunc_works (offset , 'rollforward' , dt ,
373- expected )
374- expected = norm_expected [offset .__name__ ]
375- self ._check_offsetfunc_works (offset , 'rollforward' , dt ,
376- expected , normalize = True )
358+ for dt in [sdt , ndt ]:
359+ expected = expecteds [offset_types .__name__ ]
360+ self ._check_offsetfunc_works (offset_types , 'rollforward' , dt ,
361+ expected )
362+ expected = norm_expected [offset_types .__name__ ]
363+ self ._check_offsetfunc_works (offset_types , 'rollforward' , dt ,
364+ expected , normalize = True )
377365
378- def test_rollback (self ):
366+ def test_rollback (self , offset_types ):
379367 expecteds = {'BusinessDay' : Timestamp ('2010-12-31 09:00:00' ),
380368 'CustomBusinessDay' : Timestamp ('2010-12-31 09:00:00' ),
381369 'CustomBusinessMonthEnd' :
@@ -428,66 +416,62 @@ def test_rollback(self):
428416 sdt = datetime (2011 , 1 , 1 , 9 , 0 )
429417 ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
430418
431- for offset in self . offset_types :
432- for dt in [ sdt , ndt ]:
433- expected = expecteds [ offset . __name__ ]
434- self . _check_offsetfunc_works ( offset , 'rollback' , dt , expected )
419+ for dt in [ sdt , ndt ] :
420+ expected = expecteds [ offset_types . __name__ ]
421+ self . _check_offsetfunc_works ( offset_types , 'rollback' , dt ,
422+ expected )
435423
436- expected = norm_expected [offset .__name__ ]
437- self ._check_offsetfunc_works (offset , 'rollback' , dt , expected ,
438- normalize = True )
424+ expected = norm_expected [offset_types .__name__ ]
425+ self ._check_offsetfunc_works (offset_types , 'rollback' , dt ,
426+ expected , normalize = True )
439427
440- def test_onOffset (self ):
441- for offset in self .offset_types :
442- dt = self .expecteds [offset .__name__ ]
443- offset_s = self ._get_offset (offset )
444- assert offset_s .onOffset (dt )
445-
446- # when normalize=True, onOffset checks time is 00:00:00
447- offset_n = self ._get_offset (offset , normalize = True )
448- assert not offset_n .onOffset (dt )
449-
450- if offset in (BusinessHour , CustomBusinessHour ):
451- # In default BusinessHour (9:00-17:00), normalized time
452- # cannot be in business hour range
453- continue
454- date = datetime (dt .year , dt .month , dt .day )
455- assert offset_n .onOffset (date )
428+ def test_onOffset (self , offset_types ):
429+ dt = self .expecteds [offset_types .__name__ ]
430+ offset_s = self ._get_offset (offset_types )
431+ assert offset_s .onOffset (dt )
432+
433+ # when normalize=True, onOffset checks time is 00:00:00
434+ offset_n = self ._get_offset (offset_types , normalize = True )
435+ assert not offset_n .onOffset (dt )
456436
457- def test_add (self ):
437+ if offset_types in (BusinessHour , CustomBusinessHour ):
438+ # In default BusinessHour (9:00-17:00), normalized time
439+ # cannot be in business hour range
440+ return
441+ date = datetime (dt .year , dt .month , dt .day )
442+ assert offset_n .onOffset (date )
443+
444+ def test_add (self , offset_types , tz ):
458445 dt = datetime (2011 , 1 , 1 , 9 , 0 )
459446
460- for offset in self .offset_types :
461- offset_s = self ._get_offset (offset )
462- expected = self .expecteds [offset .__name__ ]
447+ offset_s = self ._get_offset (offset_types )
448+ expected = self .expecteds [offset_types .__name__ ]
463449
464- result_dt = dt + offset_s
465- result_ts = Timestamp (dt ) + offset_s
466- for result in [result_dt , result_ts ]:
467- assert isinstance (result , Timestamp )
468- assert result == expected
450+ result_dt = dt + offset_s
451+ result_ts = Timestamp (dt ) + offset_s
452+ for result in [result_dt , result_ts ]:
453+ assert isinstance (result , Timestamp )
454+ assert result == expected
469455
470- for tz in self .timezones :
471- expected_localize = expected .tz_localize (tz )
472- result = Timestamp (dt , tz = tz ) + offset_s
473- assert isinstance (result , Timestamp )
474- assert result == expected_localize
456+ expected_localize = expected .tz_localize (tz )
457+ result = Timestamp (dt , tz = tz ) + offset_s
458+ assert isinstance (result , Timestamp )
459+ assert result == expected_localize
475460
476- # normalize=True
477- offset_s = self ._get_offset (offset , normalize = True )
478- expected = Timestamp (expected .date ())
461+ # normalize=True
462+ offset_s = self ._get_offset (offset_types , normalize = True )
463+ expected = Timestamp (expected .date ())
479464
480- result_dt = dt + offset_s
481- result_ts = Timestamp (dt ) + offset_s
482- for result in [result_dt , result_ts ]:
483- assert isinstance (result , Timestamp )
484- assert result == expected
465+ result_dt = dt + offset_s
466+ result_ts = Timestamp (dt ) + offset_s
467+ for result in [result_dt , result_ts ]:
468+ assert isinstance (result , Timestamp )
469+ assert result == expected
485470
486- for tz in self .timezones :
487- expected_localize = expected .tz_localize (tz )
488- result = Timestamp (dt , tz = tz ) + offset_s
489- assert isinstance (result , Timestamp )
490- assert result == expected_localize
471+ expected_localize = expected .tz_localize (tz )
472+ result = Timestamp (dt , tz = tz ) + offset_s
473+ assert isinstance (result , Timestamp )
474+ assert result == expected_localize
491475
492476 def test_pickle_v0_15_2 (self ):
493477 offsets = {'DateOffset' : DateOffset (years = 1 ),
0 commit comments