From 6502f69dac7ad75cefed871cef093ca65e2f5f6c Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Wed, 13 May 2020 18:25:21 -0700 Subject: [PATCH 1/3] DEPR: DateOffset.__call__ --- doc/source/whatsnew/v1.1.0.rst | 1 + pandas/_libs/tslibs/offsets.pyx | 6 ++++++ pandas/tests/tseries/offsets/test_offsets.py | 8 ++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/source/whatsnew/v1.1.0.rst b/doc/source/whatsnew/v1.1.0.rst index 5c74965bffdd7..3f03bd527983c 100644 --- a/doc/source/whatsnew/v1.1.0.rst +++ b/doc/source/whatsnew/v1.1.0.rst @@ -584,6 +584,7 @@ Deprecations - :func:`pandas.api.types.is_categorical` is deprecated and will be removed in a future version; use `:func:pandas.api.types.is_categorical_dtype` instead (:issue:`33385`) - :meth:`Index.get_value` is deprecated and will be removed in a future version (:issue:`19728`) +- :meth:`DateOffset.__call__` is deprecated and will be removed in a future version, use ``offset + other`` instead (:issue:`????`) .. --------------------------------------------------------------------------- diff --git a/pandas/_libs/tslibs/offsets.pyx b/pandas/_libs/tslibs/offsets.pyx index 5efb9b3534f14..3a9639a700953 100644 --- a/pandas/_libs/tslibs/offsets.pyx +++ b/pandas/_libs/tslibs/offsets.pyx @@ -486,6 +486,12 @@ class _BaseOffset: return NotImplemented def __call__(self, other): + warnings.warn( + "DateOffset.__call__ is deprecated and will be removed in a future " + "version. Use `offset + other` instead.", + FutureWarning, + stacklevel=1, + ) return self.apply(other) def __mul__(self, other): diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index 0a7eaa7b7be3e..fcfdacba6f539 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -2893,7 +2893,9 @@ def test_repr(self): assert repr(self.offset2) == "<2 * CustomBusinessMonthEnds>" def testCall(self): - assert self.offset2(self.d) == datetime(2008, 2, 29) + with tm.assert_produces_warning(FutureWarning): + # DateOffset.__call__ is deprecated + assert self.offset2(self.d) == datetime(2008, 2, 29) def testRollback1(self): assert CDay(10).rollback(datetime(2007, 12, 31)) == datetime(2007, 12, 31) @@ -3042,7 +3044,9 @@ def test_repr(self): assert repr(self.offset2) == "<2 * CustomBusinessMonthBegins>" def testCall(self): - assert self.offset2(self.d) == datetime(2008, 3, 3) + with tm.assert_produces_warning(FutureWarning): + # DateOffset.__call__ is deprecated + assert self.offset2(self.d) == datetime(2008, 3, 3) def testRollback1(self): assert CDay(10).rollback(datetime(2007, 12, 31)) == datetime(2007, 12, 31) From 2dbd0df8bebb0c53e326b539eb7dfbf43b5f7114 Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Wed, 13 May 2020 18:27:09 -0700 Subject: [PATCH 2/3] GH refs --- doc/source/whatsnew/v1.1.0.rst | 2 +- pandas/tests/tseries/offsets/test_offsets.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/source/whatsnew/v1.1.0.rst b/doc/source/whatsnew/v1.1.0.rst index 3f03bd527983c..274d38b78dc35 100644 --- a/doc/source/whatsnew/v1.1.0.rst +++ b/doc/source/whatsnew/v1.1.0.rst @@ -584,7 +584,7 @@ Deprecations - :func:`pandas.api.types.is_categorical` is deprecated and will be removed in a future version; use `:func:pandas.api.types.is_categorical_dtype` instead (:issue:`33385`) - :meth:`Index.get_value` is deprecated and will be removed in a future version (:issue:`19728`) -- :meth:`DateOffset.__call__` is deprecated and will be removed in a future version, use ``offset + other`` instead (:issue:`????`) +- :meth:`DateOffset.__call__` is deprecated and will be removed in a future version, use ``offset + other`` instead (:issue:`34171`) .. --------------------------------------------------------------------------- diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index fcfdacba6f539..1b616e58150e5 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -2894,7 +2894,7 @@ def test_repr(self): def testCall(self): with tm.assert_produces_warning(FutureWarning): - # DateOffset.__call__ is deprecated + # GH#34171 DateOffset.__call__ is deprecated assert self.offset2(self.d) == datetime(2008, 2, 29) def testRollback1(self): @@ -3045,7 +3045,7 @@ def test_repr(self): def testCall(self): with tm.assert_produces_warning(FutureWarning): - # DateOffset.__call__ is deprecated + # GH#34171 DateOffset.__call__ is deprecated assert self.offset2(self.d) == datetime(2008, 3, 3) def testRollback1(self): From 90a3c5a4cc582fc0cc7cc0bfddce73f8de094212 Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Wed, 13 May 2020 21:44:17 -0700 Subject: [PATCH 3/3] catch warnings --- pandas/tests/tseries/offsets/test_offsets.py | 36 ++++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index 1b616e58150e5..f0dcef4dbc967 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -756,7 +756,9 @@ def test_hash(self): assert hash(self.offset2) == hash(self.offset2) def test_call(self): - assert self.offset2(self.d) == datetime(2008, 1, 3) + with tm.assert_produces_warning(FutureWarning): + # GH#34171 DateOffset.__call__ is deprecated + assert self.offset2(self.d) == datetime(2008, 1, 3) def testRollback1(self): assert BDay(10).rollback(self.d) == self.d @@ -1040,13 +1042,15 @@ def test_hash(self, offset_name): assert offset == offset def test_call(self): - assert self.offset1(self.d) == datetime(2014, 7, 1, 11) - assert self.offset2(self.d) == datetime(2014, 7, 1, 13) - assert self.offset3(self.d) == datetime(2014, 6, 30, 17) - assert self.offset4(self.d) == datetime(2014, 6, 30, 14) - assert self.offset8(self.d) == datetime(2014, 7, 1, 11) - assert self.offset9(self.d) == datetime(2014, 7, 1, 22) - assert self.offset10(self.d) == datetime(2014, 7, 1, 1) + with tm.assert_produces_warning(FutureWarning): + # GH#34171 DateOffset.__call__ is deprecated + assert self.offset1(self.d) == datetime(2014, 7, 1, 11) + assert self.offset2(self.d) == datetime(2014, 7, 1, 13) + assert self.offset3(self.d) == datetime(2014, 6, 30, 17) + assert self.offset4(self.d) == datetime(2014, 6, 30, 14) + assert self.offset8(self.d) == datetime(2014, 7, 1, 11) + assert self.offset9(self.d) == datetime(2014, 7, 1, 22) + assert self.offset10(self.d) == datetime(2014, 7, 1, 1) def test_sub(self): # we have to override test_sub here because self.offset2 is not @@ -2377,8 +2381,10 @@ def test_hash(self): assert hash(self.offset2) == hash(self.offset2) def test_call(self): - assert self.offset1(self.d) == datetime(2014, 7, 1, 11) - assert self.offset2(self.d) == datetime(2014, 7, 1, 11) + with tm.assert_produces_warning(FutureWarning): + # GH#34171 DateOffset.__call__ is deprecated + assert self.offset1(self.d) == datetime(2014, 7, 1, 11) + assert self.offset2(self.d) == datetime(2014, 7, 1, 11) def testRollback1(self): assert self.offset1.rollback(self.d) == self.d @@ -2642,8 +2648,10 @@ def test_hash(self): assert hash(self.offset2) == hash(self.offset2) def test_call(self): - assert self.offset2(self.d) == datetime(2008, 1, 3) - assert self.offset2(self.nd) == datetime(2008, 1, 3) + with tm.assert_produces_warning(FutureWarning): + # GH#34171 DateOffset.__call__ is deprecated + assert self.offset2(self.d) == datetime(2008, 1, 3) + assert self.offset2(self.nd) == datetime(2008, 1, 3) def testRollback1(self): assert CDay(10).rollback(self.d) == self.d @@ -2892,7 +2900,7 @@ def test_repr(self): assert repr(self.offset) == "" assert repr(self.offset2) == "<2 * CustomBusinessMonthEnds>" - def testCall(self): + def test_call(self): with tm.assert_produces_warning(FutureWarning): # GH#34171 DateOffset.__call__ is deprecated assert self.offset2(self.d) == datetime(2008, 2, 29) @@ -3043,7 +3051,7 @@ def test_repr(self): assert repr(self.offset) == "" assert repr(self.offset2) == "<2 * CustomBusinessMonthBegins>" - def testCall(self): + def test_call(self): with tm.assert_produces_warning(FutureWarning): # GH#34171 DateOffset.__call__ is deprecated assert self.offset2(self.d) == datetime(2008, 3, 3)