From d147fcef4595784e24fc1700256439a42cfb9752 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Fri, 22 Dec 2023 19:34:08 -0800 Subject: [PATCH 1/2] Make parameterizations more explicit --- pandas/tests/resample/conftest.py | 56 +------- pandas/tests/resample/test_base.py | 141 +++++++++++++------ pandas/tests/resample/test_datetime_index.py | 61 ++++---- pandas/tests/resample/test_period_index.py | 27 ++-- 4 files changed, 150 insertions(+), 135 deletions(-) diff --git a/pandas/tests/resample/conftest.py b/pandas/tests/resample/conftest.py index 1033d908eb22d..a8aabb825424d 100644 --- a/pandas/tests/resample/conftest.py +++ b/pandas/tests/resample/conftest.py @@ -3,10 +3,7 @@ import numpy as np import pytest -from pandas import ( - DataFrame, - Series, -) +from pandas import Series # The various methods we support downsample_methods = [ @@ -60,18 +57,12 @@ def _index_freq(): @pytest.fixture -def _index_name(): - """Fixture for parametrization of index, series and frame.""" - return None - - -@pytest.fixture -def index(_index_factory, _index_start, _index_end, _index_freq, _index_name): +def index(_index_factory, _index_start, _index_end): """ Fixture for parametrization of date_range, period_range and timedelta_range indexes """ - return _index_factory(_index_start, _index_end, freq=_index_freq, name=_index_name) + return _index_factory(_index_start, _index_end, freq="D", name=None) @pytest.fixture @@ -100,44 +91,3 @@ def series(index, _series_name, _static_values): timedelta_range indexes """ return Series(_static_values, index=index, name=_series_name) - - -@pytest.fixture -def empty_series_dti(series): - """ - Fixture for parametrization of empty Series with date_range, - period_range and timedelta_range indexes - """ - return series[:0] - - -@pytest.fixture -def frame(index, _series_name, _static_values): - """ - Fixture for parametrization of DataFrame with date_range, period_range - and timedelta_range indexes - """ - # _series_name is intentionally unused - return DataFrame({"value": _static_values}, index=index) - - -@pytest.fixture -def empty_frame_dti(series): - """ - Fixture for parametrization of empty DataFrame with date_range, - period_range and timedelta_range indexes - """ - index = series.index[:0] - return DataFrame(index=index) - - -@pytest.fixture -def series_and_frame(frame_or_series, series, frame): - """ - Fixture for parametrization of Series and DataFrame with date_range, - period_range and timedelta_range indexes - """ - if frame_or_series == Series: - return series - if frame_or_series == DataFrame: - return frame diff --git a/pandas/tests/resample/test_base.py b/pandas/tests/resample/test_base.py index 50644e33e45e1..da0859f65d1e9 100644 --- a/pandas/tests/resample/test_base.py +++ b/pandas/tests/resample/test_base.py @@ -48,27 +48,38 @@ def _create_index(*args, **kwargs): @pytest.mark.parametrize("freq", ["2D", "1h"]) @pytest.mark.parametrize( - "_index_factory,_series_name,_index_start,_index_end", [DATE_RANGE, TIMEDELTA_RANGE] + "index", + [ + timedelta_range("1 day", "10 day", freq="D"), + date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + ], ) -def test_asfreq(series_and_frame, freq, create_index): - obj = series_and_frame +@pytest.mark.parametrize("klass", [DataFrame, Series]) +def test_asfreq(klass, index, freq): + obj = klass(range(len(index)), index=index) + idx_range = date_range if isinstance(index, DatetimeIndex) else timedelta_range result = obj.resample(freq).asfreq() - new_index = create_index(obj.index[0], obj.index[-1], freq=freq) + new_index = idx_range(obj.index[0], obj.index[-1], freq=freq) expected = obj.reindex(new_index) tm.assert_almost_equal(result, expected) @pytest.mark.parametrize( - "_index_factory,_series_name,_index_start,_index_end", [DATE_RANGE, TIMEDELTA_RANGE] + "index", + [ + timedelta_range("1 day", "10 day", freq="D"), + date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + ], ) -def test_asfreq_fill_value(series, create_index): +def test_asfreq_fill_value(index): # test for fill value during resampling, issue 3715 - ser = series + ser = Series(range(len(index)), index=index, name="a") + idx_range = date_range if isinstance(index, DatetimeIndex) else timedelta_range result = ser.resample("1h").asfreq() - new_index = create_index(ser.index[0], ser.index[-1], freq="1h") + new_index = idx_range(ser.index[0], ser.index[-1], freq="1h") expected = ser.reindex(new_index) tm.assert_series_equal(result, expected) @@ -76,15 +87,22 @@ def test_asfreq_fill_value(series, create_index): frame = ser.astype("float").to_frame("value") frame.iloc[1] = None result = frame.resample("1h").asfreq(fill_value=4.0) - new_index = create_index(frame.index[0], frame.index[-1], freq="1h") + new_index = idx_range(frame.index[0], frame.index[-1], freq="1h") expected = frame.reindex(new_index, fill_value=4.0) tm.assert_frame_equal(result, expected) -@all_ts -def test_resample_interpolate(frame): +@pytest.mark.parametrize( + "index", + [ + timedelta_range("1 day", "10 day", freq="D"), + date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + period_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + ], +) +def test_resample_interpolate(index): # GH#12925 - df = frame + df = DataFrame(range(len(index)), index=index) warn = None if isinstance(df.index, PeriodIndex): warn = FutureWarning @@ -106,12 +124,19 @@ def test_raises_on_non_datetimelike_index(): xp.resample("YE") -@all_ts +@pytest.mark.parametrize( + "index", + [ + PeriodIndex([], freq="D", name="a"), + DatetimeIndex([], name="a"), + TimedeltaIndex([], name="a"), + ], +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) -def test_resample_empty_series(freq, empty_series_dti, resample_method): +def test_resample_empty_series(freq, index, resample_method): # GH12771 & GH12868 - ser = empty_series_dti + ser = Series(index=index, dtype=float) if freq == "ME" and isinstance(ser.index, TimedeltaIndex): msg = ( "Resampling on a TimedeltaIndex requires fixed-duration `freq`, " @@ -179,12 +204,19 @@ def test_resample_nat_index_series(freq, series, resample_method): assert result.index.freq == expected.index.freq -@all_ts +@pytest.mark.parametrize( + "index", + [ + PeriodIndex([], freq="D", name="a"), + DatetimeIndex([], name="a"), + TimedeltaIndex([], name="a"), + ], +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) @pytest.mark.parametrize("resample_method", ["count", "size"]) -def test_resample_count_empty_series(freq, empty_series_dti, resample_method): +def test_resample_count_empty_series(freq, index, resample_method): # GH28427 - ser = empty_series_dti + ser = Series(index=index) if freq == "ME" and isinstance(ser.index, TimedeltaIndex): msg = ( "Resampling on a TimedeltaIndex requires fixed-duration `freq`, " @@ -213,11 +245,13 @@ def test_resample_count_empty_series(freq, empty_series_dti, resample_method): tm.assert_series_equal(result, expected) -@all_ts +@pytest.mark.parametrize( + "index", [DatetimeIndex([]), TimedeltaIndex([]), PeriodIndex([], freq="D")] +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) -def test_resample_empty_dataframe(empty_frame_dti, freq, resample_method): +def test_resample_empty_dataframe(index, freq, resample_method): # GH13212 - df = empty_frame_dti + df = DataFrame(index=index) # count retains dimensions too if freq == "ME" and isinstance(df.index, TimedeltaIndex): msg = ( @@ -261,12 +295,13 @@ def test_resample_empty_dataframe(empty_frame_dti, freq, resample_method): # test size for GH13212 (currently stays as df) -@all_ts +@pytest.mark.parametrize( + "index", [DatetimeIndex([]), TimedeltaIndex([]), PeriodIndex([], freq="D")] +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) -def test_resample_count_empty_dataframe(freq, empty_frame_dti): +def test_resample_count_empty_dataframe(freq, index): # GH28427 - - empty_frame_dti["a"] = [] + empty_frame_dti = DataFrame(index=index, columns=Index(["a"], dtype=object)) if freq == "ME" and isinstance(empty_frame_dti.index, TimedeltaIndex): msg = ( @@ -295,12 +330,14 @@ def test_resample_count_empty_dataframe(freq, empty_frame_dti): tm.assert_frame_equal(result, expected) -@all_ts +@pytest.mark.parametrize( + "index", [DatetimeIndex([]), TimedeltaIndex([]), PeriodIndex([], freq="D")] +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) -def test_resample_size_empty_dataframe(freq, empty_frame_dti): +def test_resample_size_empty_dataframe(freq, index): # GH28427 - empty_frame_dti["a"] = [] + empty_frame_dti = DataFrame(index=index, columns=Index(["a"], dtype=object)) if freq == "ME" and isinstance(empty_frame_dti.index, TimedeltaIndex): msg = ( @@ -361,27 +398,34 @@ def test_resample_empty_dtypes(index, dtype, resample_method): pass -@all_ts +@pytest.mark.parametrize( + "index", + [ + PeriodIndex([], freq="D", name="a"), + DatetimeIndex([], name="a"), + TimedeltaIndex([], name="a"), + ], +) @pytest.mark.parametrize("freq", ["ME", "D", "h"]) -def test_apply_to_empty_series(empty_series_dti, freq): +def test_apply_to_empty_series(index, freq): # GH 14313 - ser = empty_series_dti + ser = Series(index=index) - if freq == "ME" and isinstance(empty_series_dti.index, TimedeltaIndex): + if freq == "ME" and isinstance(ser.index, TimedeltaIndex): msg = ( "Resampling on a TimedeltaIndex requires fixed-duration `freq`, " "e.g. '24h' or '3D', not " ) with pytest.raises(ValueError, match=msg): - empty_series_dti.resample(freq) + ser.resample(freq) return - elif freq == "ME" and isinstance(empty_series_dti.index, PeriodIndex): + elif freq == "ME" and isinstance(ser.index, PeriodIndex): # index is PeriodIndex, so convert to corresponding Period freq freq = "M" msg = "Resampling with a PeriodIndex" warn = None - if isinstance(empty_series_dti.index, PeriodIndex): + if isinstance(ser.index, PeriodIndex): warn = FutureWarning with tm.assert_produces_warning(warn, match=msg): @@ -394,9 +438,17 @@ def test_apply_to_empty_series(empty_series_dti, freq): tm.assert_series_equal(result, expected, check_dtype=False) -@all_ts -def test_resampler_is_iterable(series): +@pytest.mark.parametrize( + "index", + [ + timedelta_range("1 day", "10 day", freq="D"), + date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + period_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + ], +) +def test_resampler_is_iterable(index): # GH 15314 + series = Series(range(len(index)), index=index) freq = "h" tg = Grouper(freq=freq, convention="start") msg = "Resampling with a PeriodIndex" @@ -414,16 +466,23 @@ def test_resampler_is_iterable(series): tm.assert_series_equal(rv, gv) -@all_ts -def test_resample_quantile(series): +@pytest.mark.parametrize( + "index", + [ + timedelta_range("1 day", "10 day", freq="D"), + date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + period_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D"), + ], +) +def test_resample_quantile(index): # GH 15023 - ser = series + ser = Series(range(len(index)), index=index) q = 0.75 freq = "h" msg = "Resampling with a PeriodIndex" warn = None - if isinstance(series.index, PeriodIndex): + if isinstance(ser.index, PeriodIndex): warn = FutureWarning with tm.assert_produces_warning(warn, match=msg): result = ser.resample(freq).quantile(q) diff --git a/pandas/tests/resample/test_datetime_index.py b/pandas/tests/resample/test_datetime_index.py index 80583f5d3c5f2..164cbbdd798cb 100644 --- a/pandas/tests/resample/test_datetime_index.py +++ b/pandas/tests/resample/test_datetime_index.py @@ -69,7 +69,8 @@ def _simple_date_range_series(start, end, freq="D"): return _simple_date_range_series -def test_custom_grouper(index, unit): +def test_custom_grouper(unit): + index = date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="Min") dti = index.as_unit(unit) s = Series(np.array([1] * len(dti)), index=dti, dtype="int64") @@ -117,10 +118,6 @@ def test_custom_grouper_df(index, unit): assert len(r.index) == 2593 -@pytest.mark.parametrize( - "_index_start,_index_end,_index_name", - [("1/1/2000 00:00:00", "1/1/2000 00:13:00", "index")], -) @pytest.mark.parametrize( "closed, expected", [ @@ -142,8 +139,10 @@ def test_custom_grouper_df(index, unit): ), ], ) -def test_resample_basic(series, closed, expected, unit): - s = series +def test_resample_basic(closed, expected, unit): + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + s = Series(range(len(index)), index=index) + s.index.name = "index" s.index = s.index.as_unit(unit) expected = expected(s) expected.index = expected.index.as_unit(unit) @@ -175,8 +174,10 @@ def test_resample_integerarray(unit): tm.assert_series_equal(result, expected) -def test_resample_basic_grouper(series, unit): - s = series +def test_resample_basic_grouper(unit): + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + s = Series(range(len(index)), index=index) + s.index.name = "index" s.index = s.index.as_unit(unit) result = s.resample("5Min").last() grouper = Grouper(freq=Minute(5), closed="left", label="left") @@ -187,32 +188,28 @@ def test_resample_basic_grouper(series, unit): @pytest.mark.filterwarnings( "ignore:The 'convention' keyword in Series.resample:FutureWarning" ) -@pytest.mark.parametrize( - "_index_start,_index_end,_index_name", - [("1/1/2000 00:00:00", "1/1/2000 00:13:00", "index")], -) @pytest.mark.parametrize( "keyword,value", [("label", "righttt"), ("closed", "righttt"), ("convention", "starttt")], ) -def test_resample_string_kwargs(series, keyword, value, unit): +def test_resample_string_kwargs(keyword, value, unit): # see gh-19303 # Check that wrong keyword argument strings raise an error + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + series = Series(range(len(index)), index=index) + series.index.name = "index" series.index = series.index.as_unit(unit) msg = f"Unsupported value {value} for `{keyword}`" with pytest.raises(ValueError, match=msg): series.resample("5min", **({keyword: value})) -@pytest.mark.parametrize( - "_index_start,_index_end,_index_name", - [("1/1/2000 00:00:00", "1/1/2000 00:13:00", "index")], -) -def test_resample_how(series, downsample_method, unit): +def test_resample_how(downsample_method, unit): if downsample_method == "ohlc": pytest.skip("covered by test_resample_how_ohlc") - - s = series + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + s = Series(range(len(index)), index=index) + s.index.name = "index" s.index = s.index.as_unit(unit) grouplist = np.ones_like(s) grouplist[0] = 0 @@ -230,12 +227,10 @@ def test_resample_how(series, downsample_method, unit): tm.assert_series_equal(result, expected) -@pytest.mark.parametrize( - "_index_start,_index_end,_index_name", - [("1/1/2000 00:00:00", "1/1/2000 00:13:00", "index")], -) -def test_resample_how_ohlc(series, unit): - s = series +def test_resample_how_ohlc(unit): + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + s = Series(range(len(index)), index=index) + s.index.name = "index" s.index = s.index.as_unit(unit) grouplist = np.ones_like(s) grouplist[0] = 0 @@ -558,8 +553,10 @@ def test_nearest_upsample_with_limit(tz_aware_fixture, freq, rule, unit): tm.assert_series_equal(result, expected) -def test_resample_ohlc(series, unit): - s = series +def test_resample_ohlc(unit): + index = date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="Min") + s = Series(range(len(index)), index=index) + s.index.name = "index" s.index = s.index.as_unit(unit) grouper = Grouper(freq=Minute(5)) @@ -1854,8 +1851,12 @@ def test_resample_datetime_values(unit): tm.assert_series_equal(res, exp) -def test_resample_apply_with_additional_args(series, unit): +def test_resample_apply_with_additional_args(unit): # GH 14615 + index = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="Min") + series = Series(range(len(index)), index=index) + series.index.name = "index" + def f(data, add_arg): return np.mean(data) * add_arg diff --git a/pandas/tests/resample/test_period_index.py b/pandas/tests/resample/test_period_index.py index eb80f56dd7d4b..5fb2a17ccc29e 100644 --- a/pandas/tests/resample/test_period_index.py +++ b/pandas/tests/resample/test_period_index.py @@ -69,11 +69,12 @@ def _simple_period_range_series(start, end, freq="D"): class TestPeriodIndex: @pytest.mark.parametrize("freq", ["2D", "1h", "2h"]) @pytest.mark.parametrize("kind", ["period", None, "timestamp"]) - def test_asfreq(self, series_and_frame, freq, kind): + @pytest.mark.parametrize("klass", [DataFrame, Series]) + def test_asfreq(self, klass, freq, kind): # GH 12884, 15944 # make sure .asfreq() returns PeriodIndex (except kind='timestamp') - obj = series_and_frame + obj = klass(range(5), index=period_range("2020-01-01", periods=5)) if kind == "timestamp": expected = obj.to_timestamp().resample(freq).asfreq() else: @@ -86,10 +87,11 @@ def test_asfreq(self, series_and_frame, freq, kind): result = obj.resample(freq, kind=kind).asfreq() tm.assert_almost_equal(result, expected) - def test_asfreq_fill_value(self, series): + def test_asfreq_fill_value(self): # test for fill value during resampling, issue 3715 - s = series + index = period_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D") + s = Series(range(len(index)), index=index) new_index = date_range( s.index[0].to_timestamp(how="start"), (s.index[-1]).to_timestamp(how="start"), @@ -1014,13 +1016,14 @@ def test_resample_t_l_deprecated(self): offsets.BusinessHour(2), ], ) - def test_asfreq_invalid_period_freq(self, offset, series_and_frame): + @pytest.mark.parametrize("klass", [DataFrame, Series]) + def test_asfreq_invalid_period_freq(self, offset, klass): # GH#9586 msg = f"Invalid offset: '{offset.base}' for converting time series " - df = series_and_frame + obj = klass(range(5), index=period_range("2020-01-01", periods=5)) with pytest.raises(ValueError, match=msg): - df.asfreq(freq=offset) + obj.asfreq(freq=offset) @pytest.mark.parametrize( @@ -1033,11 +1036,12 @@ def test_asfreq_invalid_period_freq(self, offset, series_and_frame): ("2Y-MAR", "2YE-MAR"), ], ) -def test_resample_frequency_ME_QE_YE_error_message(series_and_frame, freq, freq_depr): +@pytest.mark.parametrize("klass", [DataFrame, Series]) +def test_resample_frequency_ME_QE_YE_error_message(klass, freq, freq_depr): # GH#9586 msg = f"for Period, please use '{freq[1:]}' instead of '{freq_depr[1:]}'" - obj = series_and_frame + obj = klass(range(5), index=period_range("2020-01-01", periods=5)) with pytest.raises(ValueError, match=msg): obj.resample(freq_depr) @@ -1062,10 +1066,11 @@ def test_corner_cases_period(simple_period_range_series): "2BYE-MAR", ], ) -def test_resample_frequency_invalid_freq(series_and_frame, freq_depr): +@pytest.mark.parametrize("klass", [DataFrame, Series]) +def test_resample_frequency_invalid_freq(klass, freq_depr): # GH#9586 msg = f"Invalid frequency: {freq_depr[1:]}" - obj = series_and_frame + obj = klass(range(5), index=period_range("2020-01-01", periods=5)) with pytest.raises(ValueError, match=msg): obj.resample(freq_depr) From bd2f579b5b70a6b3dfa046a1b1d51ff108125b65 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Fri, 22 Dec 2023 19:42:38 -0800 Subject: [PATCH 2/2] All tests passing --- pandas/tests/resample/conftest.py | 60 -------------------- pandas/tests/resample/test_base.py | 30 +--------- pandas/tests/resample/test_datetime_index.py | 18 +----- pandas/tests/resample/test_period_index.py | 13 +---- 4 files changed, 6 insertions(+), 115 deletions(-) diff --git a/pandas/tests/resample/conftest.py b/pandas/tests/resample/conftest.py index a8aabb825424d..6c45ece5d8fb9 100644 --- a/pandas/tests/resample/conftest.py +++ b/pandas/tests/resample/conftest.py @@ -1,10 +1,5 @@ -from datetime import datetime - -import numpy as np import pytest -from pandas import Series - # The various methods we support downsample_methods = [ "min", @@ -36,58 +31,3 @@ def downsample_method(request): def resample_method(request): """Fixture for parametrization of Grouper resample methods.""" return request.param - - -@pytest.fixture -def _index_start(): - """Fixture for parametrization of index, series and frame.""" - return datetime(2005, 1, 1) - - -@pytest.fixture -def _index_end(): - """Fixture for parametrization of index, series and frame.""" - return datetime(2005, 1, 10) - - -@pytest.fixture -def _index_freq(): - """Fixture for parametrization of index, series and frame.""" - return "D" - - -@pytest.fixture -def index(_index_factory, _index_start, _index_end): - """ - Fixture for parametrization of date_range, period_range and - timedelta_range indexes - """ - return _index_factory(_index_start, _index_end, freq="D", name=None) - - -@pytest.fixture -def _static_values(index): - """ - Fixture for parametrization of values used in parametrization of - Series and DataFrames with date_range, period_range and - timedelta_range indexes - """ - return np.arange(len(index)) - - -@pytest.fixture -def _series_name(): - """ - Fixture for parametrization of Series name for Series used with - date_range, period_range and timedelta_range indexes - """ - return None - - -@pytest.fixture -def series(index, _series_name, _static_values): - """ - Fixture for parametrization of Series with date_range, period_range and - timedelta_range indexes - """ - return Series(_static_values, index=index, name=_series_name) diff --git a/pandas/tests/resample/test_base.py b/pandas/tests/resample/test_base.py index da0859f65d1e9..f20518c7be98a 100644 --- a/pandas/tests/resample/test_base.py +++ b/pandas/tests/resample/test_base.py @@ -21,30 +21,6 @@ from pandas.core.indexes.timedeltas import timedelta_range from pandas.core.resample import _asfreq_compat -# a fixture value can be overridden by the test parameter value. Note that the -# value of the fixture can be overridden this way even if the test doesn't use -# it directly (doesn't mention it in the function prototype). -# see https://docs.pytest.org/en/latest/fixture.html#override-a-fixture-with-direct-test-parametrization # noqa: E501 -# in this module we override the fixture values defined in conftest.py -# tuples of '_index_factory,_series_name,_index_start,_index_end' -DATE_RANGE = (date_range, "dti", datetime(2005, 1, 1), datetime(2005, 1, 10)) -PERIOD_RANGE = (period_range, "pi", datetime(2005, 1, 1), datetime(2005, 1, 10)) -TIMEDELTA_RANGE = (timedelta_range, "tdi", "1 day", "10 day") - -all_ts = pytest.mark.parametrize( - "_index_factory,_series_name,_index_start,_index_end", - [DATE_RANGE, PERIOD_RANGE, TIMEDELTA_RANGE], -) - - -@pytest.fixture -def create_index(_index_factory): - def _create_index(*args, **kwargs): - """return the _index_factory created using the args, kwargs""" - return _index_factory(*args, **kwargs) - - return _create_index - @pytest.mark.parametrize("freq", ["2D", "1h"]) @pytest.mark.parametrize( @@ -172,7 +148,6 @@ def test_resample_empty_series(freq, index, resample_method): assert result.index.freq == expected.index.freq -@all_ts @pytest.mark.parametrize( "freq", [ @@ -181,11 +156,10 @@ def test_resample_empty_series(freq, index, resample_method): "h", ], ) -def test_resample_nat_index_series(freq, series, resample_method): +def test_resample_nat_index_series(freq, resample_method): # GH39227 - ser = series.copy() - ser.index = PeriodIndex([NaT] * len(ser), freq=freq) + ser = Series(range(5), index=PeriodIndex([NaT] * 5, freq=freq)) msg = "Resampling with a PeriodIndex is deprecated" with tm.assert_produces_warning(FutureWarning, match=msg): diff --git a/pandas/tests/resample/test_datetime_index.py b/pandas/tests/resample/test_datetime_index.py index 164cbbdd798cb..0dfe9877c4f86 100644 --- a/pandas/tests/resample/test_datetime_index.py +++ b/pandas/tests/resample/test_datetime_index.py @@ -36,21 +36,6 @@ from pandas.tseries.offsets import Minute -@pytest.fixture() -def _index_factory(): - return date_range - - -@pytest.fixture -def _index_freq(): - return "Min" - - -@pytest.fixture -def _static_values(index): - return np.random.default_rng(2).random(len(index)) - - @pytest.fixture(params=["s", "ms", "us", "ns"]) def unit(request): return request.param @@ -106,7 +91,8 @@ def test_custom_grouper(unit): tm.assert_series_equal(result, expect) -def test_custom_grouper_df(index, unit): +def test_custom_grouper_df(unit): + index = date_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D") b = Grouper(freq=Minute(5), closed="right", label="right") dti = index.as_unit(unit) df = DataFrame( diff --git a/pandas/tests/resample/test_period_index.py b/pandas/tests/resample/test_period_index.py index 5fb2a17ccc29e..cf77238a553d0 100644 --- a/pandas/tests/resample/test_period_index.py +++ b/pandas/tests/resample/test_period_index.py @@ -35,16 +35,6 @@ ) -@pytest.fixture() -def _index_factory(): - return period_range - - -@pytest.fixture -def _series_name(): - return "pi" - - @pytest.fixture def simple_period_range_series(): """ @@ -118,9 +108,10 @@ def test_asfreq_fill_value(self): @pytest.mark.parametrize("freq", ["h", "12h", "2D", "W"]) @pytest.mark.parametrize("kind", [None, "period", "timestamp"]) @pytest.mark.parametrize("kwargs", [{"on": "date"}, {"level": "d"}]) - def test_selection(self, index, freq, kind, kwargs): + def test_selection(self, freq, kind, kwargs): # This is a bug, these should be implemented # GH 14008 + index = period_range(datetime(2005, 1, 1), datetime(2005, 1, 10), freq="D") rng = np.arange(len(index), dtype=np.int64) df = DataFrame( {"date": index, "a": rng},