From be1eb3e6f7f587c53b00457feb756f04f4d82473 Mon Sep 17 00:00:00 2001 From: Felix Dulys Date: Mon, 9 Aug 2021 08:59:54 -0700 Subject: [PATCH 1/4] TST: move index tests to correct files (#27045) --- .../tseries/offsets/test_business_month.py | 24 +++++++++++++++++++ .../tseries/offsets/test_business_quarter.py | 24 +++++++++++++++++++ .../tseries/offsets/test_business_year.py | 24 +++++++++++++++++++ pandas/tests/tseries/offsets/test_month.py | 24 +++++++++++++++++++ pandas/tests/tseries/offsets/test_quarter.py | 24 +++++++++++++++++++ pandas/tests/tseries/offsets/test_year.py | 24 +++++++++++++++++++ 6 files changed, 144 insertions(+) diff --git a/pandas/tests/tseries/offsets/test_business_month.py b/pandas/tests/tseries/offsets/test_business_month.py index 3f537fc450764..bb2049fd35489 100644 --- a/pandas/tests/tseries/offsets/test_business_month.py +++ b/pandas/tests/tseries/offsets/test_business_month.py @@ -7,6 +7,7 @@ import pytest +import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -19,6 +20,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + BMonthBegin, + BMonthEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + class TestBMonthBegin(Base): _offset = BMonthBegin diff --git a/pandas/tests/tseries/offsets/test_business_quarter.py b/pandas/tests/tseries/offsets/test_business_quarter.py index b928b47d30a0d..5c65f2312a909 100644 --- a/pandas/tests/tseries/offsets/test_business_quarter.py +++ b/pandas/tests/tseries/offsets/test_business_quarter.py @@ -7,6 +7,7 @@ import pytest +import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -19,6 +20,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + BQuarterBegin, + BQuarterEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + def test_quarterly_dont_normalize(): date = datetime(2012, 3, 31, 5, 30) diff --git a/pandas/tests/tseries/offsets/test_business_year.py b/pandas/tests/tseries/offsets/test_business_year.py index d531a586c5db2..520ee6ee91ed1 100644 --- a/pandas/tests/tseries/offsets/test_business_year.py +++ b/pandas/tests/tseries/offsets/test_business_year.py @@ -7,6 +7,7 @@ import pytest +import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -19,6 +20,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + BYearBegin, + BYearEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + class TestBYearBegin(Base): _offset = BYearBegin diff --git a/pandas/tests/tseries/offsets/test_month.py b/pandas/tests/tseries/offsets/test_month.py index 00b9d7e186a59..ead8e4bc20327 100644 --- a/pandas/tests/tseries/offsets/test_month.py +++ b/pandas/tests/tseries/offsets/test_month.py @@ -17,6 +17,7 @@ SemiMonthEnd, ) +import pandas as pd from pandas import ( DatetimeIndex, Series, @@ -30,6 +31,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + MonthBegin, + MonthEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + class TestSemiMonthEnd(Base): _offset = SemiMonthEnd offset1 = _offset() diff --git a/pandas/tests/tseries/offsets/test_quarter.py b/pandas/tests/tseries/offsets/test_quarter.py index e076fb9f4d53b..9144b931f3f76 100644 --- a/pandas/tests/tseries/offsets/test_quarter.py +++ b/pandas/tests/tseries/offsets/test_quarter.py @@ -7,6 +7,7 @@ import pytest +import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -19,6 +20,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + QuarterBegin, + QuarterEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + def test_quarterly_dont_normalize(): date = datetime(2012, 3, 31, 5, 30) diff --git a/pandas/tests/tseries/offsets/test_year.py b/pandas/tests/tseries/offsets/test_year.py index 85994adb6f19d..d66f068455476 100644 --- a/pandas/tests/tseries/offsets/test_year.py +++ b/pandas/tests/tseries/offsets/test_year.py @@ -7,6 +7,7 @@ import pytest +import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -19,6 +20,29 @@ ) +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + YearBegin, + YearEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") + ser = pd.Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset + + class TestYearBegin(Base): _offset = YearBegin From 25f22a4ee180b5d2cdb9aeebb3a3249d8aae387e Mon Sep 17 00:00:00 2001 From: Felix Dulys Date: Mon, 9 Aug 2021 09:26:09 -0700 Subject: [PATCH 2/4] TST: flake (#27045) --- pandas/tests/tseries/offsets/test_month.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pandas/tests/tseries/offsets/test_month.py b/pandas/tests/tseries/offsets/test_month.py index ead8e4bc20327..b8fa923c43455 100644 --- a/pandas/tests/tseries/offsets/test_month.py +++ b/pandas/tests/tseries/offsets/test_month.py @@ -17,7 +17,6 @@ SemiMonthEnd, ) -import pandas as pd from pandas import ( DatetimeIndex, Series, @@ -41,8 +40,8 @@ ) def test_apply_index(cls, n): offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) + rng = date_range(start="1/1/2000", periods=100000, freq="T") + ser = Series(rng) res = rng + offset assert res.freq is None # not retained From 83c0b6f9f50f58399eabb3f84cd0cae63f84b53a Mon Sep 17 00:00:00 2001 From: Felix Dulys Date: Mon, 9 Aug 2021 14:56:16 -0700 Subject: [PATCH 3/4] TST: remove tests that were migrated elsewhere (#27045) --- .../tests/tseries/offsets/test_yqm_offsets.py | 54 ------------------- 1 file changed, 54 deletions(-) delete mode 100644 pandas/tests/tseries/offsets/test_yqm_offsets.py diff --git a/pandas/tests/tseries/offsets/test_yqm_offsets.py b/pandas/tests/tseries/offsets/test_yqm_offsets.py deleted file mode 100644 index 39b88074a6883..0000000000000 --- a/pandas/tests/tseries/offsets/test_yqm_offsets.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -Tests for Year, Quarter, and Month-based DateOffset subclasses -""" -import pytest - -import pandas as pd - -from pandas.tseries.offsets import ( - BMonthBegin, - BMonthEnd, - BQuarterBegin, - BQuarterEnd, - BYearBegin, - BYearEnd, - MonthBegin, - MonthEnd, - QuarterBegin, - QuarterEnd, - YearBegin, - YearEnd, -) - - -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - MonthBegin, - MonthEnd, - BMonthBegin, - BMonthEnd, - QuarterBegin, - QuarterEnd, - BQuarterBegin, - BQuarterEnd, - YearBegin, - YearEnd, - BYearBegin, - BYearEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset From a56f0cccb243fbfacc932f7a4d8298099f812e5d Mon Sep 17 00:00:00 2001 From: Felix Dulys Date: Mon, 9 Aug 2021 17:28:01 -0700 Subject: [PATCH 4/4] TST: remove duplicated index tests and put in one file (#27045) --- .../tseries/offsets/test_business_quarter.py | 24 -------- .../tseries/offsets/test_business_year.py | 24 -------- pandas/tests/tseries/offsets/test_index.py | 57 +++++++++++++++++++ pandas/tests/tseries/offsets/test_month.py | 23 -------- pandas/tests/tseries/offsets/test_quarter.py | 24 -------- pandas/tests/tseries/offsets/test_year.py | 24 -------- 6 files changed, 57 insertions(+), 119 deletions(-) create mode 100644 pandas/tests/tseries/offsets/test_index.py diff --git a/pandas/tests/tseries/offsets/test_business_quarter.py b/pandas/tests/tseries/offsets/test_business_quarter.py index 5c65f2312a909..b928b47d30a0d 100644 --- a/pandas/tests/tseries/offsets/test_business_quarter.py +++ b/pandas/tests/tseries/offsets/test_business_quarter.py @@ -7,7 +7,6 @@ import pytest -import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -20,29 +19,6 @@ ) -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - BQuarterBegin, - BQuarterEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset - - def test_quarterly_dont_normalize(): date = datetime(2012, 3, 31, 5, 30) diff --git a/pandas/tests/tseries/offsets/test_business_year.py b/pandas/tests/tseries/offsets/test_business_year.py index 520ee6ee91ed1..d531a586c5db2 100644 --- a/pandas/tests/tseries/offsets/test_business_year.py +++ b/pandas/tests/tseries/offsets/test_business_year.py @@ -7,7 +7,6 @@ import pytest -import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -20,29 +19,6 @@ ) -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - BYearBegin, - BYearEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset - - class TestBYearBegin(Base): _offset = BYearBegin diff --git a/pandas/tests/tseries/offsets/test_index.py b/pandas/tests/tseries/offsets/test_index.py new file mode 100644 index 0000000000000..ad3478b319898 --- /dev/null +++ b/pandas/tests/tseries/offsets/test_index.py @@ -0,0 +1,57 @@ +""" +Tests for offset behavior with indices. +""" +import pytest + +from pandas import ( + Series, + date_range, +) + +from pandas.tseries.offsets import ( + BMonthBegin, + BMonthEnd, + BQuarterBegin, + BQuarterEnd, + BYearBegin, + BYearEnd, + MonthBegin, + MonthEnd, + QuarterBegin, + QuarterEnd, + YearBegin, + YearEnd, +) + + +@pytest.mark.parametrize("n", [-2, 1]) +@pytest.mark.parametrize( + "cls", + [ + MonthBegin, + MonthEnd, + BMonthBegin, + BMonthEnd, + QuarterBegin, + QuarterEnd, + BQuarterBegin, + BQuarterEnd, + YearBegin, + YearEnd, + BYearBegin, + BYearEnd, + ], +) +def test_apply_index(cls, n): + offset = cls(n=n) + rng = date_range(start="1/1/2000", periods=100000, freq="T") + ser = Series(rng) + + res = rng + offset + assert res.freq is None # not retained + assert res[0] == rng[0] + offset + assert res[-1] == rng[-1] + offset + res2 = ser + offset + # apply_index is only for indexes, not series, so no res2_v2 + assert res2.iloc[0] == ser.iloc[0] + offset + assert res2.iloc[-1] == ser.iloc[-1] + offset diff --git a/pandas/tests/tseries/offsets/test_month.py b/pandas/tests/tseries/offsets/test_month.py index b8fa923c43455..00b9d7e186a59 100644 --- a/pandas/tests/tseries/offsets/test_month.py +++ b/pandas/tests/tseries/offsets/test_month.py @@ -30,29 +30,6 @@ ) -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - MonthBegin, - MonthEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = date_range(start="1/1/2000", periods=100000, freq="T") - ser = Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset - - class TestSemiMonthEnd(Base): _offset = SemiMonthEnd offset1 = _offset() diff --git a/pandas/tests/tseries/offsets/test_quarter.py b/pandas/tests/tseries/offsets/test_quarter.py index 9144b931f3f76..e076fb9f4d53b 100644 --- a/pandas/tests/tseries/offsets/test_quarter.py +++ b/pandas/tests/tseries/offsets/test_quarter.py @@ -7,7 +7,6 @@ import pytest -import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -20,29 +19,6 @@ ) -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - QuarterBegin, - QuarterEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset - - def test_quarterly_dont_normalize(): date = datetime(2012, 3, 31, 5, 30) diff --git a/pandas/tests/tseries/offsets/test_year.py b/pandas/tests/tseries/offsets/test_year.py index d66f068455476..85994adb6f19d 100644 --- a/pandas/tests/tseries/offsets/test_year.py +++ b/pandas/tests/tseries/offsets/test_year.py @@ -7,7 +7,6 @@ import pytest -import pandas as pd from pandas.tests.tseries.offsets.common import ( Base, assert_is_on_offset, @@ -20,29 +19,6 @@ ) -@pytest.mark.parametrize("n", [-2, 1]) -@pytest.mark.parametrize( - "cls", - [ - YearBegin, - YearEnd, - ], -) -def test_apply_index(cls, n): - offset = cls(n=n) - rng = pd.date_range(start="1/1/2000", periods=100000, freq="T") - ser = pd.Series(rng) - - res = rng + offset - assert res.freq is None # not retained - assert res[0] == rng[0] + offset - assert res[-1] == rng[-1] + offset - res2 = ser + offset - # apply_index is only for indexes, not series, so no res2_v2 - assert res2.iloc[0] == ser.iloc[0] + offset - assert res2.iloc[-1] == ser.iloc[-1] + offset - - class TestYearBegin(Base): _offset = YearBegin