diff --git a/pandas/conftest.py b/pandas/conftest.py index 255e0e165041b..a497bddaa3d09 100644 --- a/pandas/conftest.py +++ b/pandas/conftest.py @@ -218,7 +218,8 @@ def nulls_fixture(request): nulls_fixture2 = nulls_fixture # Generate cartesian product of nulls_fixture -TIMEZONES = [None, 'UTC', 'US/Eastern', 'Asia/Tokyo', 'dateutil/US/Pacific'] +TIMEZONES = [None, 'UTC', 'US/Eastern', 'Asia/Tokyo', 'dateutil/US/Pacific', + 'dateutil/Asia/Singapore'] @td.parametrize_fixture_doc(str(TIMEZONES)) diff --git a/pandas/tests/indexes/datetimes/test_arithmetic.py b/pandas/tests/indexes/datetimes/test_arithmetic.py index 555f804800588..4ce2b1dd4fd86 100644 --- a/pandas/tests/indexes/datetimes/test_arithmetic.py +++ b/pandas/tests/indexes/datetimes/test_arithmetic.py @@ -19,13 +19,6 @@ from pandas._libs.tslibs.offsets import shift_months -@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', - 'US/Eastern', 'dateutil/Asia/Singapore', - 'dateutil/US/Pacific']) -def tz(request): - return request.param - - @pytest.fixture(params=[pd.offsets.Hour(2), timedelta(hours=2), np.timedelta64(2, 'h'), Timedelta(hours=2)], ids=str) @@ -50,7 +43,8 @@ class TestDatetimeIndexComparisons(object): @pytest.mark.parametrize('other', [datetime(2016, 1, 1), Timestamp('2016-01-01'), np.datetime64('2016-01-01')]) - def test_dti_cmp_datetimelike(self, other, tz): + def test_dti_cmp_datetimelike(self, other, tz_naive_fixture): + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=2, tz=tz) if tz is not None: if isinstance(other, np.datetime64): @@ -78,9 +72,10 @@ def test_dti_cmp_datetimelike(self, other, tz): expected = np.array([True, False]) tm.assert_numpy_array_equal(result, expected) - def dti_cmp_non_datetime(self, tz): + def dti_cmp_non_datetime(self, tz_naive_fixture): # GH#19301 by convention datetime.date is not considered comparable # to Timestamp or DatetimeIndex. This may change in the future. + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=2, tz=tz) other = datetime(2016, 1, 1).date() @@ -96,20 +91,23 @@ def dti_cmp_non_datetime(self, tz): dti >= other @pytest.mark.parametrize('other', [None, np.nan, pd.NaT]) - def test_dti_eq_null_scalar(self, other, tz): + def test_dti_eq_null_scalar(self, other, tz_naive_fixture): # GH#19301 + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=2, tz=tz) assert not (dti == other).any() @pytest.mark.parametrize('other', [None, np.nan, pd.NaT]) - def test_dti_ne_null_scalar(self, other, tz): + def test_dti_ne_null_scalar(self, other, tz_naive_fixture): # GH#19301 + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=2, tz=tz) assert (dti != other).all() @pytest.mark.parametrize('other', [None, np.nan]) - def test_dti_cmp_null_scalar_inequality(self, tz, other): + def test_dti_cmp_null_scalar_inequality(self, tz_naive_fixture, other): # GH#19301 + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=2, tz=tz) with pytest.raises(TypeError): @@ -335,8 +333,9 @@ def test_dti_radd_timestamp_raises(self): # ------------------------------------------------------------- # Binary operations DatetimeIndex and int - def test_dti_add_int(self, tz, one): + def test_dti_add_int(self, tz_naive_fixture, one): # Variants of `one` for #19012 + tz = tz_naive_fixture rng = pd.date_range('2000-01-01 09:00', freq='H', periods=10, tz=tz) result = rng + one @@ -344,7 +343,8 @@ def test_dti_add_int(self, tz, one): periods=10, tz=tz) tm.assert_index_equal(result, expected) - def test_dti_iadd_int(self, tz, one): + def test_dti_iadd_int(self, tz_naive_fixture, one): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01 09:00', freq='H', periods=10, tz=tz) expected = pd.date_range('2000-01-01 10:00', freq='H', @@ -352,7 +352,8 @@ def test_dti_iadd_int(self, tz, one): rng += one tm.assert_index_equal(rng, expected) - def test_dti_sub_int(self, tz, one): + def test_dti_sub_int(self, tz_naive_fixture, one): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01 09:00', freq='H', periods=10, tz=tz) result = rng - one @@ -360,7 +361,8 @@ def test_dti_sub_int(self, tz, one): periods=10, tz=tz) tm.assert_index_equal(result, expected) - def test_dti_isub_int(self, tz, one): + def test_dti_isub_int(self, tz_naive_fixture, one): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01 09:00', freq='H', periods=10, tz=tz) expected = pd.date_range('2000-01-01 08:00', freq='H', @@ -414,8 +416,9 @@ def test_dti_add_intarray_no_freq(self, box): # ------------------------------------------------------------- # DatetimeIndex.shift is used in integer addition - def test_dti_shift_tzaware(self, tz): + def test_dti_shift_tzaware(self, tz_naive_fixture): # GH#9903 + tz = tz_naive_fixture idx = pd.DatetimeIndex([], name='xxx', tz=tz) tm.assert_index_equal(idx.shift(0, freq='H'), idx) tm.assert_index_equal(idx.shift(3, freq='H'), idx) @@ -502,28 +505,32 @@ def test_dti_shift_near_midnight(self, shift, result_time): # ------------------------------------------------------------- # Binary operations DatetimeIndex and timedelta-like - def test_dti_add_timedeltalike(self, tz, delta): + def test_dti_add_timedeltalike(self, tz_naive_fixture, delta): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01', '2000-02-01', tz=tz) result = rng + delta expected = pd.date_range('2000-01-01 02:00', '2000-02-01 02:00', tz=tz) tm.assert_index_equal(result, expected) - def test_dti_iadd_timedeltalike(self, tz, delta): + def test_dti_iadd_timedeltalike(self, tz_naive_fixture, delta): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01', '2000-02-01', tz=tz) expected = pd.date_range('2000-01-01 02:00', '2000-02-01 02:00', tz=tz) rng += delta tm.assert_index_equal(rng, expected) - def test_dti_sub_timedeltalike(self, tz, delta): + def test_dti_sub_timedeltalike(self, tz_naive_fixture, delta): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01', '2000-02-01', tz=tz) expected = pd.date_range('1999-12-31 22:00', '2000-01-31 22:00', tz=tz) result = rng - delta tm.assert_index_equal(result, expected) - def test_dti_isub_timedeltalike(self, tz, delta): + def test_dti_isub_timedeltalike(self, tz_naive_fixture, delta): + tz = tz_naive_fixture rng = pd.date_range('2000-01-01', '2000-02-01', tz=tz) expected = pd.date_range('1999-12-31 22:00', '2000-01-31 22:00', tz=tz) @@ -532,8 +539,9 @@ def test_dti_isub_timedeltalike(self, tz, delta): # ------------------------------------------------------------- # Binary operations DatetimeIndex and TimedeltaIndex/array - def test_dti_add_tdi(self, tz): + def test_dti_add_tdi(self, tz_naive_fixture): # GH 17558 + tz = tz_naive_fixture dti = DatetimeIndex([Timestamp('2017-01-01', tz=tz)] * 10) tdi = pd.timedelta_range('0 days', periods=10) expected = pd.date_range('2017-01-01', periods=10, tz=tz) @@ -552,8 +560,9 @@ def test_dti_add_tdi(self, tz): result = tdi.values + dti tm.assert_index_equal(result, expected) - def test_dti_iadd_tdi(self, tz): + def test_dti_iadd_tdi(self, tz_naive_fixture): # GH 17558 + tz = tz_naive_fixture dti = DatetimeIndex([Timestamp('2017-01-01', tz=tz)] * 10) tdi = pd.timedelta_range('0 days', periods=10) expected = pd.date_range('2017-01-01', periods=10, tz=tz) @@ -576,8 +585,9 @@ def test_dti_iadd_tdi(self, tz): result += dti tm.assert_index_equal(result, expected) - def test_dti_sub_tdi(self, tz): + def test_dti_sub_tdi(self, tz_naive_fixture): # GH 17558 + tz = tz_naive_fixture dti = DatetimeIndex([Timestamp('2017-01-01', tz=tz)] * 10) tdi = pd.timedelta_range('0 days', periods=10) expected = pd.date_range('2017-01-01', periods=10, tz=tz, freq='-1D') @@ -598,8 +608,9 @@ def test_dti_sub_tdi(self, tz): with tm.assert_raises_regex(TypeError, msg): tdi.values - dti - def test_dti_isub_tdi(self, tz): + def test_dti_isub_tdi(self, tz_naive_fixture): # GH 17558 + tz = tz_naive_fixture dti = DatetimeIndex([Timestamp('2017-01-01', tz=tz)] * 10) tdi = pd.timedelta_range('0 days', periods=10) expected = pd.date_range('2017-01-01', periods=10, tz=tz, freq='-1D') @@ -653,7 +664,8 @@ def test_add_datetimelike_and_dti_tz(self, addend): # ------------------------------------------------------------- # __add__/__sub__ with ndarray[datetime64] and ndarray[timedelta64] - def test_dti_add_dt64_array_raises(self, tz): + def test_dti_add_dt64_array_raises(self, tz_naive_fixture): + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=3, tz=tz) dtarr = dti.values @@ -672,7 +684,8 @@ def test_dti_sub_dt64_array_naive(self): result = dtarr - dti tm.assert_index_equal(result, expected) - def test_dti_sub_dt64_array_aware_raises(self, tz): + def test_dti_sub_dt64_array_aware_raises(self, tz_naive_fixture): + tz = tz_naive_fixture if tz is None: return dti = pd.date_range('2016-01-01', periods=3, tz=tz) @@ -683,7 +696,8 @@ def test_dti_sub_dt64_array_aware_raises(self, tz): with pytest.raises(TypeError): dtarr - dti - def test_dti_add_td64_array(self, tz): + def test_dti_add_td64_array(self, tz_naive_fixture): + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=3, tz=tz) tdi = dti - dti.shift(1) tdarr = tdi.values @@ -694,7 +708,8 @@ def test_dti_add_td64_array(self, tz): result = tdarr + dti tm.assert_index_equal(result, expected) - def test_dti_sub_td64_array(self, tz): + def test_dti_sub_td64_array(self, tz_naive_fixture): + tz = tz_naive_fixture dti = pd.date_range('2016-01-01', periods=3, tz=tz) tdi = dti - dti.shift(1) tdarr = tdi.values @@ -867,8 +882,9 @@ def test_dti_add_series(self, tz, names): result4 = index + ser.values tm.assert_index_equal(result4, expected) - def test_dti_add_offset_array(self, tz): + def test_dti_add_offset_array(self, tz_naive_fixture): # GH#18849 + tz = tz_naive_fixture dti = pd.date_range('2017-01-01', periods=2, tz=tz) other = np.array([pd.offsets.MonthEnd(), pd.offsets.Day(n=2)]) @@ -885,8 +901,9 @@ def test_dti_add_offset_array(self, tz): @pytest.mark.parametrize('names', [(None, None, None), ('foo', 'bar', None), ('foo', 'foo', 'foo')]) - def test_dti_add_offset_index(self, tz, names): + def test_dti_add_offset_index(self, tz_naive_fixture, names): # GH#18849, GH#19744 + tz = tz_naive_fixture dti = pd.date_range('2017-01-01', periods=2, tz=tz, name=names[0]) other = pd.Index([pd.offsets.MonthEnd(), pd.offsets.Day(n=2)], name=names[1]) @@ -901,8 +918,9 @@ def test_dti_add_offset_index(self, tz, names): res2 = other + dti tm.assert_index_equal(res2, expected) - def test_dti_sub_offset_array(self, tz): + def test_dti_sub_offset_array(self, tz_naive_fixture): # GH#18824 + tz = tz_naive_fixture dti = pd.date_range('2017-01-01', periods=2, tz=tz) other = np.array([pd.offsets.MonthEnd(), pd.offsets.Day(n=2)]) @@ -915,8 +933,9 @@ def test_dti_sub_offset_array(self, tz): @pytest.mark.parametrize('names', [(None, None, None), ('foo', 'bar', None), ('foo', 'foo', 'foo')]) - def test_dti_sub_offset_index(self, tz, names): + def test_dti_sub_offset_index(self, tz_naive_fixture, names): # GH#18824, GH#19744 + tz = tz_naive_fixture dti = pd.date_range('2017-01-01', periods=2, tz=tz, name=names[0]) other = pd.Index([pd.offsets.MonthEnd(), pd.offsets.Day(n=2)], name=names[1]) @@ -930,8 +949,9 @@ def test_dti_sub_offset_index(self, tz, names): @pytest.mark.parametrize('names', [(None, None, None), ('foo', 'bar', None), ('foo', 'foo', 'foo')]) - def test_dti_with_offset_series(self, tz, names): + def test_dti_with_offset_series(self, tz_naive_fixture, names): # GH#18849 + tz = tz_naive_fixture dti = pd.date_range('2017-01-01', periods=2, tz=tz, name=names[0]) other = Series([pd.offsets.MonthEnd(), pd.offsets.Day(n=2)], name=names[1]) diff --git a/pandas/tests/indexes/datetimes/test_ops.py b/pandas/tests/indexes/datetimes/test_ops.py index c6334e70a1d2c..6ccd310f33bbd 100644 --- a/pandas/tests/indexes/datetimes/test_ops.py +++ b/pandas/tests/indexes/datetimes/test_ops.py @@ -14,13 +14,6 @@ from pandas.core.dtypes.generic import ABCDateOffset -@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', 'US/Eastern', - 'dateutil/Asia/Singapore', - 'dateutil/US/Pacific']) -def tz_fixture(request): - return request.param - - START, END = datetime(2009, 1, 1), datetime(2010, 1, 1) @@ -53,8 +46,8 @@ def test_ops_properties_basic(self): assert s.day == 10 pytest.raises(AttributeError, lambda: s.weekday) - def test_minmax_tz(self, tz_fixture): - tz = tz_fixture + def test_minmax_tz(self, tz_naive_fixture): + tz = tz_naive_fixture # monotonic idx1 = pd.DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03'], tz=tz) @@ -103,8 +96,8 @@ def test_numpy_minmax(self): tm.assert_raises_regex( ValueError, errmsg, np.argmax, dr, out=0) - def test_repeat_range(self, tz_fixture): - tz = tz_fixture + def test_repeat_range(self, tz_naive_fixture): + tz = tz_naive_fixture rng = date_range('1/1/2000', '1/1/2001') result = rng.repeat(5) @@ -135,8 +128,8 @@ def test_repeat_range(self, tz_fixture): tm.assert_index_equal(res, exp) assert res.freq is None - def test_repeat(self, tz_fixture): - tz = tz_fixture + def test_repeat(self, tz_naive_fixture): + tz = tz_naive_fixture reps = 2 msg = "the 'axis' parameter is not supported" @@ -158,8 +151,8 @@ def test_repeat(self, tz_fixture): tm.assert_raises_regex(ValueError, msg, np.repeat, rng, reps, axis=1) - def test_resolution(self, tz_fixture): - tz = tz_fixture + def test_resolution(self, tz_naive_fixture): + tz = tz_naive_fixture for freq, expected in zip(['A', 'Q', 'M', 'D', 'H', 'T', 'S', 'L', 'U'], ['day', 'day', 'day', 'day', 'hour', @@ -169,8 +162,8 @@ def test_resolution(self, tz_fixture): tz=tz) assert idx.resolution == expected - def test_value_counts_unique(self, tz_fixture): - tz = tz_fixture + def test_value_counts_unique(self, tz_naive_fixture): + tz = tz_naive_fixture # GH 7735 idx = pd.date_range('2011-01-01 09:00', freq='H', periods=10) # create repeated values, 'n'th element is repeated by n+1 times @@ -270,8 +263,9 @@ def test_order_with_freq(self, idx): [pd.NaT, pd.NaT, '2011-01-02', '2011-01-03', '2011-01-05']) ]) - def test_order_without_freq(self, index_dates, expected_dates, tz_fixture): - tz = tz_fixture + def test_order_without_freq(self, index_dates, expected_dates, + tz_naive_fixture): + tz = tz_naive_fixture # without freq index = DatetimeIndex(index_dates, tz=tz, name='idx') @@ -356,11 +350,11 @@ def test_nat_new(self): tm.assert_numpy_array_equal(result, exp) def test_nat(self, tz_naive_fixture): - timezone = tz_naive_fixture + tz = tz_naive_fixture assert pd.DatetimeIndex._na_value is pd.NaT assert pd.DatetimeIndex([])._na_value is pd.NaT - idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], tz=timezone) + idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], tz=tz) assert idx._can_hold_na tm.assert_numpy_array_equal(idx._isnan, np.array([False, False])) @@ -368,7 +362,7 @@ def test_nat(self, tz_naive_fixture): tm.assert_numpy_array_equal(idx._nan_idxs, np.array([], dtype=np.intp)) - idx = pd.DatetimeIndex(['2011-01-01', 'NaT'], tz=timezone) + idx = pd.DatetimeIndex(['2011-01-01', 'NaT'], tz=tz) assert idx._can_hold_na tm.assert_numpy_array_equal(idx._isnan, np.array([False, True])) diff --git a/pandas/tests/indexes/datetimes/test_scalar_compat.py b/pandas/tests/indexes/datetimes/test_scalar_compat.py index f0442d9d40ef1..6f6f4eb8d24e3 100644 --- a/pandas/tests/indexes/datetimes/test_scalar_compat.py +++ b/pandas/tests/indexes/datetimes/test_scalar_compat.py @@ -13,13 +13,6 @@ from pandas import date_range, Timestamp, DatetimeIndex -@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', - 'US/Eastern', 'dateutil/Asia/Singapore', - 'dateutil/US/Pacific']) -def tz(request): - return request.param - - class TestDatetimeIndexOps(object): def test_dti_time(self): rng = date_range('1/1/2000', freq='12min', periods=10) @@ -84,7 +77,8 @@ def test_round_daily(self): for freq in ['Y', 'M', 'foobar']: pytest.raises(ValueError, lambda: dti.round(freq)) - def test_round(self, tz): + def test_round(self, tz_naive_fixture): + tz = tz_naive_fixture rng = date_range(start='2016-01-01', periods=5, freq='30Min', tz=tz) elt = rng[1] @@ -134,8 +128,9 @@ def test_round(self, tz): ts = '2016-10-17 12:00:00.001501031' DatetimeIndex([ts]).round('1010ns') - def test_no_rounding_occurs(self, tz): + def test_no_rounding_occurs(self, tz_naive_fixture): # GH 21262 + tz = tz_naive_fixture rng = date_range(start='2016-01-01', periods=5, freq='2Min', tz=tz) @@ -167,7 +162,7 @@ def test_no_rounding_occurs(self, tz): (('NaT', '1823-01-01 00:00:01'), 'ceil', '1s', ('NaT', '1823-01-01 00:00:01')) ]) - def test_ceil_floor_edge(self, tz, test_input, rounder, freq, expected): + def test_ceil_floor_edge(self, test_input, rounder, freq, expected): dt = DatetimeIndex(list(test_input)) func = getattr(dt, rounder) result = func(freq) diff --git a/pandas/tests/tseries/conftest.py b/pandas/tests/tseries/conftest.py deleted file mode 100644 index fc1ecf21c5446..0000000000000 --- a/pandas/tests/tseries/conftest.py +++ /dev/null @@ -1,7 +0,0 @@ -import pytest - - -@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', 'US/Eastern', - 'dateutil/Asia/Tokyo', 'dateutil/US/Pacific']) -def tz(request): - return request.param diff --git a/pandas/tests/tseries/offsets/conftest.py b/pandas/tests/tseries/offsets/conftest.py index 76f24123ea0e1..4766e7e277b13 100644 --- a/pandas/tests/tseries/offsets/conftest.py +++ b/pandas/tests/tseries/offsets/conftest.py @@ -4,6 +4,9 @@ @pytest.fixture(params=[getattr(offsets, o) for o in offsets.__all__]) def offset_types(request): + """ + Fixture for all the datetime offsets available for a time series. + """ return request.param @@ -11,16 +14,16 @@ def offset_types(request): issubclass(getattr(offsets, o), offsets.MonthOffset) and o != 'MonthOffset']) def month_classes(request): + """ + Fixture for month based datetime offsets available for a time series. + """ return request.param @pytest.fixture(params=[getattr(offsets, o) for o in offsets.__all__ if issubclass(getattr(offsets, o), offsets.Tick)]) def tick_classes(request): - return request.param - - -@pytest.fixture(params=[None, 'UTC', 'Asia/Tokyo', 'US/Eastern', - 'dateutil/Asia/Tokyo', 'dateutil/US/Pacific']) -def tz(request): + """ + Fixture for Tick based datetime offsets available for a time series. + """ return request.param diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index a5cd839c1472f..db69bfadfcf49 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -40,7 +40,6 @@ from .common import assert_offset_equal, assert_onOffset - #### # Misc function tests #### @@ -107,7 +106,8 @@ def _get_offset(self, klass, value=1, normalize=False): klass = klass(normalize=normalize) return klass - def test_apply_out_of_range(self, tz): + def test_apply_out_of_range(self, tz_naive_fixture): + tz = tz_naive_fixture if self._offset is None: return @@ -479,7 +479,8 @@ def test_onOffset(self, offset_types): date = datetime(dt.year, dt.month, dt.day) assert offset_n.onOffset(date) - def test_add(self, offset_types, tz): + def test_add(self, offset_types, tz_naive_fixture): + tz = tz_naive_fixture dt = datetime(2011, 1, 1, 9, 0) offset_s = self._get_offset(offset_types)