Skip to content

Commit 01db819

Browse files
committed
TST: fixtures for timezones
1 parent 72eafde commit 01db819

13 files changed

+286
-271
lines changed

pandas/conftest.py

+19
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,22 @@ def join_type(request):
9797
Fixture for trying all types of join operations
9898
"""
9999
return request.param
100+
101+
102+
TIMEZONES = [None, 'UTC', 'US/Eastern', 'Asia/Tokyo', 'dateutil/US/Pacific']
103+
104+
105+
@pytest.fixture(params=TIMEZONES)
106+
def tz_naive(request):
107+
"""
108+
Fixture for trying timezones including default (None)
109+
"""
110+
return request.param
111+
112+
113+
@pytest.fixture(params=TIMEZONES[1::])
114+
def tz_aware(request):
115+
"""
116+
Fixture for trying explicit timezones
117+
"""
118+
return request.param

pandas/tests/dtypes/test_cast.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,6 @@ def testinfer_dtype_from_scalar(self):
144144
dtype, val = infer_dtype_from_scalar(data)
145145
assert dtype == 'm8[ns]'
146146

147-
for tz in ['UTC', 'US/Eastern', 'Asia/Tokyo']:
148-
dt = Timestamp(1, tz=tz)
149-
dtype, val = infer_dtype_from_scalar(dt, pandas_dtype=True)
150-
assert dtype == 'datetime64[ns, {0}]'.format(tz)
151-
assert val == dt.value
152-
153-
dtype, val = infer_dtype_from_scalar(dt)
154-
assert dtype == np.object_
155-
assert val == dt
156-
157147
for freq in ['M', 'D']:
158148
p = Period('2011-01-01', freq=freq)
159149
dtype, val = infer_dtype_from_scalar(p, pandas_dtype=True)
@@ -171,6 +161,17 @@ def testinfer_dtype_from_scalar(self):
171161
dtype, val = infer_dtype_from_scalar(data)
172162
assert dtype == np.object_
173163

164+
@pytest.mark.parametrize('tz', ['UTC', 'US/Eastern', 'Asia/Tokyo'])
165+
def testinfer_from_scalar_tz(self, tz):
166+
dt = Timestamp(1, tz=tz)
167+
dtype, val = infer_dtype_from_scalar(dt, pandas_dtype=True)
168+
assert dtype == 'datetime64[ns, {0}]'.format(tz)
169+
assert val == dt.value
170+
171+
dtype, val = infer_dtype_from_scalar(dt)
172+
assert dtype == np.object_
173+
assert val == dt
174+
174175
def testinfer_dtype_from_scalar_errors(self):
175176
with pytest.raises(ValueError):
176177
infer_dtype_from_scalar(np.array([1]))

pandas/tests/frame/test_alter_axes.py

+18-17
Original file line numberDiff line numberDiff line change
@@ -269,25 +269,26 @@ def test_set_index_cast_datetimeindex(self):
269269
df.pop('ts')
270270
assert_frame_equal(df, expected)
271271

272+
def test_reset_index_tz(self, tz_aware):
272273
# GH 3950
273274
# reset_index with single level
274-
for tz in ['UTC', 'Asia/Tokyo', 'US/Eastern']:
275-
idx = pd.date_range('1/1/2011', periods=5,
276-
freq='D', tz=tz, name='idx')
277-
df = pd.DataFrame(
278-
{'a': range(5), 'b': ['A', 'B', 'C', 'D', 'E']}, index=idx)
279-
280-
expected = pd.DataFrame({'idx': [datetime(2011, 1, 1),
281-
datetime(2011, 1, 2),
282-
datetime(2011, 1, 3),
283-
datetime(2011, 1, 4),
284-
datetime(2011, 1, 5)],
285-
'a': range(5),
286-
'b': ['A', 'B', 'C', 'D', 'E']},
287-
columns=['idx', 'a', 'b'])
288-
expected['idx'] = expected['idx'].apply(
289-
lambda d: pd.Timestamp(d, tz=tz))
290-
assert_frame_equal(df.reset_index(), expected)
275+
tz = tz_aware
276+
idx = pd.date_range('1/1/2011', periods=5,
277+
freq='D', tz=tz, name='idx')
278+
df = pd.DataFrame(
279+
{'a': range(5), 'b': ['A', 'B', 'C', 'D', 'E']}, index=idx)
280+
281+
expected = pd.DataFrame({'idx': [datetime(2011, 1, 1),
282+
datetime(2011, 1, 2),
283+
datetime(2011, 1, 3),
284+
datetime(2011, 1, 4),
285+
datetime(2011, 1, 5)],
286+
'a': range(5),
287+
'b': ['A', 'B', 'C', 'D', 'E']},
288+
columns=['idx', 'a', 'b'])
289+
expected['idx'] = expected['idx'].apply(
290+
lambda d: pd.Timestamp(d, tz=tz))
291+
assert_frame_equal(df.reset_index(), expected)
291292

292293
def test_set_index_timezone(self):
293294
# GH 12358

pandas/tests/indexes/datetimes/test_arithmetic.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -876,23 +876,24 @@ def test_dti_with_offset_series(self, tz, names):
876876
res3 = dti - other
877877
tm.assert_series_equal(res3, expected_sub)
878878

879-
def test_dti_add_offset_tzaware(self):
880-
dates = date_range('2012-11-01', periods=3, tz='US/Pacific')
881-
offset = dates + pd.offsets.Hour(5)
882-
assert dates[0] + pd.offsets.Hour(5) == offset[0]
879+
def test_dti_add_offset_tzaware(self, tz_aware):
880+
timezone = tz_aware
881+
if timezone == 'US/Pacific':
882+
dates = date_range('2012-11-01', periods=3, tz=timezone)
883+
offset = dates + pd.offsets.Hour(5)
884+
assert dates[0] + pd.offsets.Hour(5) == offset[0]
883885

884-
# GH#6818
885-
for tz in ['UTC', 'US/Pacific', 'Asia/Tokyo']:
886-
dates = date_range('2010-11-01 00:00', periods=3, tz=tz, freq='H')
887-
expected = DatetimeIndex(['2010-11-01 05:00', '2010-11-01 06:00',
888-
'2010-11-01 07:00'], freq='H', tz=tz)
886+
dates = date_range('2010-11-01 00:00',
887+
periods=3, tz=timezone, freq='H')
888+
expected = DatetimeIndex(['2010-11-01 05:00', '2010-11-01 06:00',
889+
'2010-11-01 07:00'], freq='H', tz=timezone)
889890

890-
offset = dates + pd.offsets.Hour(5)
891-
tm.assert_index_equal(offset, expected)
892-
offset = dates + np.timedelta64(5, 'h')
893-
tm.assert_index_equal(offset, expected)
894-
offset = dates + timedelta(hours=5)
895-
tm.assert_index_equal(offset, expected)
891+
offset = dates + pd.offsets.Hour(5)
892+
tm.assert_index_equal(offset, expected)
893+
offset = dates + np.timedelta64(5, 'h')
894+
tm.assert_index_equal(offset, expected)
895+
offset = dates + timedelta(hours=5)
896+
tm.assert_index_equal(offset, expected)
896897

897898

898899
@pytest.mark.parametrize('klass,assert_func', [

pandas/tests/indexes/datetimes/test_construction.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -450,9 +450,8 @@ def test_dti_constructor_preserve_dti_freq(self):
450450
rng2 = DatetimeIndex(rng)
451451
assert rng.freq == rng2.freq
452452

453-
@pytest.mark.parametrize('tz', [None, 'UTC', 'Asia/Tokyo',
454-
'dateutil/US/Pacific'])
455-
def test_dti_constructor_years_only(self, tz):
453+
def test_dti_constructor_years_only(self, tz_naive):
454+
tz = tz_naive
456455
# GH 6961
457456
rng1 = date_range('2014', '2015', freq='M', tz=tz)
458457
expected1 = date_range('2014-01-31', '2014-12-31', freq='M', tz=tz)

pandas/tests/indexes/datetimes/test_datetime.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,8 @@ def test_factorize(self):
329329
tm.assert_numpy_array_equal(arr, exp_arr)
330330
tm.assert_index_equal(idx, idx3)
331331

332-
@pytest.mark.parametrize('tz', [None, 'UTC', 'US/Eastern', 'Asia/Tokyo'])
333-
def test_factorize_tz(self, tz):
332+
def test_factorize_tz(self, tz_naive):
333+
tz = tz_naive
334334
# GH#13750
335335
base = pd.date_range('2016-11-05', freq='H', periods=100, tz=tz)
336336
idx = base.repeat(5)

0 commit comments

Comments
 (0)