Skip to content

Commit ba0e9eb

Browse files
GuessWhoSamFooalanbato
authored andcommitted
Moved timezones and offset_types to conftest (pandas-dev#17825)
1 parent 50128e5 commit ba0e9eb

File tree

2 files changed

+105
-108
lines changed

2 files changed

+105
-108
lines changed

pandas/tests/tseries/conftest.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import pytest
2+
import pandas.tseries.offsets as offsets
3+
4+
5+
@pytest.fixture(params=[getattr(offsets, o) for o in offsets.__all__])
6+
def offset_types(request):
7+
return request.param
8+
9+
10+
@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', 'US/Eastern',
11+
'dateutil/Asia/Tokyo', 'dateutil/US/Pacific'])
12+
def tz(request):
13+
return request.param

pandas/tests/tseries/test_offsets.py

+92-108
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,9 @@ def test_to_m8():
101101
class 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

Comments
 (0)