From a753fc4d8c2ad7038159aa20535e1b50f7b109b3 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Wed, 3 Jan 2018 22:57:26 -0800 Subject: [PATCH 1/3] Tests for already-fixed bugs --- pandas/tests/series/test_operators.py | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/pandas/tests/series/test_operators.py b/pandas/tests/series/test_operators.py index c1e9a62d98fd3..9df927ced110f 100644 --- a/pandas/tests/series/test_operators.py +++ b/pandas/tests/series/test_operators.py @@ -1317,6 +1317,49 @@ def test_datetime64_ops_nat(self): with pytest.raises(TypeError): nat_series_dtype_timestamp / 1 + def test_dt64series_with_scalar_overflow(self): + # GH#12534 + dt = pd.Timestamp('1700-01-31') + td = pd.Timedelta('20000 Days') + dti = pd.date_range('1949-09-30', freq='100Y', periods=4) + ser = pd.Series(dti) + with pytest.raises(OverflowError): + ser - dt + with pytest.raises(OverflowError): + dt - ser + with pytest.raises(OverflowError): + ser + td + with pytest.raises(OverflowError): + td + ser + + ser.iloc[-1] = pd.NaT + expected = pd.Series(['2004-10-03', '2104-10-04', '2204-10-04', 'NaT'], + dtype='datetime64[ns]') + res = ser + td + tm.assert_series_equal(res, expected) + res = td + ser + tm.assert_series_equal(res, expected) + + ser.iloc[1:] = pd.NaT + expected = pd.Series(['91279 Days', 'NaT', 'NaT', 'NaT'], + dtype='timedelta64[ns]') + res = ser - dt + tm.assert_series_equal(res, expected) + res = dt - ser + tm.assert_series_equal(res, -expected) + + def test_dt64tz_series_sub_dtitz(self): + # GH#19071 subtracting tzaware DatetimeIndex from tzaware Series + # (with same tz) raises + dti = pd.date_range('1999-09-30', periods=10, tz='US/Pacific') + ser = pd.Series(dti) + expected = pd.Series(pd.TimedeltaIndex(['0days'] * 10)) + + res = dti - ser + tm.assert_series_equal(res, expected) + res = ser - dti + tm.assert_series_equal(res, expected) + class TestSeriesOperators(TestData): def test_op_method(self): From 111034648b1c0a9a41a65645c6eb90215ddf2ff9 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Wed, 3 Jan 2018 22:59:17 -0800 Subject: [PATCH 2/3] change test name --- pandas/tests/series/test_operators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/series/test_operators.py b/pandas/tests/series/test_operators.py index 9df927ced110f..b6f661bcaf0ed 100644 --- a/pandas/tests/series/test_operators.py +++ b/pandas/tests/series/test_operators.py @@ -1317,7 +1317,7 @@ def test_datetime64_ops_nat(self): with pytest.raises(TypeError): nat_series_dtype_timestamp / 1 - def test_dt64series_with_scalar_overflow(self): + def test_dt64series_arith_overflow(self): # GH#12534 dt = pd.Timestamp('1700-01-31') td = pd.Timedelta('20000 Days') From 4bab6218c6776b68eb1d5e354ff9a04e2f55e26b Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Thu, 4 Jan 2018 09:18:31 -0800 Subject: [PATCH 3/3] requested edits --- pandas/tests/series/test_operators.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pandas/tests/series/test_operators.py b/pandas/tests/series/test_operators.py index b6f661bcaf0ed..2350477c2302a 100644 --- a/pandas/tests/series/test_operators.py +++ b/pandas/tests/series/test_operators.py @@ -1195,6 +1195,18 @@ def test_sub_single_tz(self): expected = Series([Timedelta('-2days')]) assert_series_equal(result, expected) + def test_dt64tz_series_sub_dtitz(self): + # GH#19071 subtracting tzaware DatetimeIndex from tzaware Series + # (with same tz) raises, fixed by #19024 + dti = pd.date_range('1999-09-30', periods=10, tz='US/Pacific') + ser = pd.Series(dti) + expected = pd.Series(pd.TimedeltaIndex(['0days'] * 10)) + + res = dti - ser + tm.assert_series_equal(res, expected) + res = ser - dti + tm.assert_series_equal(res, expected) + def test_sub_datetime_compat(self): # see gh-14088 s = Series([datetime(2016, 8, 23, 12, tzinfo=pytz.utc), pd.NaT]) @@ -1318,7 +1330,7 @@ def test_datetime64_ops_nat(self): nat_series_dtype_timestamp / 1 def test_dt64series_arith_overflow(self): - # GH#12534 + # GH#12534, fixed by #19024 dt = pd.Timestamp('1700-01-31') td = pd.Timedelta('20000 Days') dti = pd.date_range('1949-09-30', freq='100Y', periods=4) @@ -1348,18 +1360,6 @@ def test_dt64series_arith_overflow(self): res = dt - ser tm.assert_series_equal(res, -expected) - def test_dt64tz_series_sub_dtitz(self): - # GH#19071 subtracting tzaware DatetimeIndex from tzaware Series - # (with same tz) raises - dti = pd.date_range('1999-09-30', periods=10, tz='US/Pacific') - ser = pd.Series(dti) - expected = pd.Series(pd.TimedeltaIndex(['0days'] * 10)) - - res = dti - ser - tm.assert_series_equal(res, expected) - res = ser - dti - tm.assert_series_equal(res, expected) - class TestSeriesOperators(TestData): def test_op_method(self):