@@ -101,15 +101,9 @@ def test_to_m8():
101
101
class Base (object ):
102
102
_offset = None
103
103
104
- _offset_types = [getattr (offsets , o ) for o in offsets .__all__ ]
105
-
106
104
timezones = [None , 'UTC' , 'Asia/Tokyo' , 'US/Eastern' ,
107
105
'dateutil/Asia/Tokyo' , 'dateutil/US/Pacific' ]
108
106
109
- @property
110
- def offset_types (self ):
111
- return self ._offset_types
112
-
113
107
def _get_offset (self , klass , value = 1 , normalize = False ):
114
108
# create instance from offset class
115
109
if klass is FY5253 :
@@ -134,7 +128,7 @@ def _get_offset(self, klass, value=1, normalize=False):
134
128
klass = klass (normalize = normalize )
135
129
return klass
136
130
137
- def test_apply_out_of_range (self ):
131
+ def test_apply_out_of_range (self , tz ):
138
132
if self ._offset is None :
139
133
return
140
134
@@ -153,11 +147,10 @@ def test_apply_out_of_range(self):
153
147
assert result .tzinfo is None
154
148
155
149
# 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
161
154
162
155
except tslib .OutOfBoundsDatetime :
163
156
raise
@@ -214,42 +207,39 @@ def setup_method(self, method):
214
207
'Nano' : Timestamp (np_datetime64_compat (
215
208
'2011-01-01T09:00:00.000000001Z' ))}
216
209
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 )
220
212
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 )
224
216
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
228
220
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
231
223
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
236
227
237
- neg_offset = offset * - 1
238
- assert neg_offset .n == - 1
228
+ neg_offset = offset * - 1
229
+ assert neg_offset .n == - 1
239
230
240
- mul_offset = offset * 3
241
- assert mul_offset .n == 3
231
+ mul_offset = offset * 3
232
+ assert mul_offset .n == 3
242
233
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 )
246
236
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
253
243
254
244
def _check_offsetfunc_works (self , offset , funcname , dt , expected ,
255
245
normalize = False ):
@@ -319,20 +309,19 @@ def _check_offsetfunc_works(self, offset, funcname, dt, expected,
319
309
else :
320
310
assert result == expected_localize
321
311
322
- def test_apply (self ):
312
+ def test_apply (self , offset_types ):
323
313
sdt = datetime (2011 , 1 , 1 , 9 , 0 )
324
314
ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
325
315
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 )
330
319
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 )
334
323
335
- def test_rollforward (self ):
324
+ def test_rollforward (self , offset_types ):
336
325
expecteds = self .expecteds .copy ()
337
326
338
327
# result will not be changed if the target is on the offset
@@ -366,16 +355,15 @@ def test_rollforward(self):
366
355
sdt = datetime (2011 , 1 , 1 , 9 , 0 )
367
356
ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
368
357
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 )
377
365
378
- def test_rollback (self ):
366
+ def test_rollback (self , offset_types ):
379
367
expecteds = {'BusinessDay' : Timestamp ('2010-12-31 09:00:00' ),
380
368
'CustomBusinessDay' : Timestamp ('2010-12-31 09:00:00' ),
381
369
'CustomBusinessMonthEnd' :
@@ -428,66 +416,62 @@ def test_rollback(self):
428
416
sdt = datetime (2011 , 1 , 1 , 9 , 0 )
429
417
ndt = np_datetime64_compat ('2011-01-01 09:00Z' )
430
418
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 )
435
423
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 )
439
427
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 )
456
436
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 ):
458
445
dt = datetime (2011 , 1 , 1 , 9 , 0 )
459
446
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__ ]
463
449
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
469
455
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
475
460
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 ())
479
464
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
485
470
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
491
475
492
476
def test_pickle_v0_15_2 (self ):
493
477
offsets = {'DateOffset' : DateOffset (years = 1 ),
0 commit comments