From 5c0ef1b5d84ce2619cc1a66965470c2448ae8a17 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Thu, 29 Sep 2022 06:47:38 -0700 Subject: [PATCH] BUG: EWM(online) not raising NotImplementedError for unsupported (#48834) --- doc/source/whatsnew/v1.6.0.rst | 1 + pandas/core/window/ewm.py | 10 +++++----- pandas/tests/window/test_online.py | 10 ++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/doc/source/whatsnew/v1.6.0.rst b/doc/source/whatsnew/v1.6.0.rst index 9f793532e5e6b..143711fcccd65 100644 --- a/doc/source/whatsnew/v1.6.0.rst +++ b/doc/source/whatsnew/v1.6.0.rst @@ -238,6 +238,7 @@ Plotting Groupby/resample/rolling ^^^^^^^^^^^^^^^^^^^^^^^^ +- Bug in :class:`.ExponentialMovingWindow` with ``online`` not raising a ``NotImplementedError`` for unsupported operations (:issue:`48834`) - Bug in :meth:`DataFrameGroupBy.sample` raises ``ValueError`` when the object is empty (:issue:`48459`) - diff --git a/pandas/core/window/ewm.py b/pandas/core/window/ewm.py index 6fae119bffdf1..297febe724019 100644 --- a/pandas/core/window/ewm.py +++ b/pandas/core/window/ewm.py @@ -967,10 +967,10 @@ def reset(self) -> None: self._mean.reset() def aggregate(self, func, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("aggregate is not implemented.") def std(self, bias: bool = False, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("std is not implemented.") def corr( self, @@ -979,7 +979,7 @@ def corr( numeric_only: bool = False, **kwargs, ): - return NotImplementedError + raise NotImplementedError("corr is not implemented.") def cov( self, @@ -989,10 +989,10 @@ def cov( numeric_only: bool = False, **kwargs, ): - return NotImplementedError + raise NotImplementedError("cov is not implemented.") def var(self, bias: bool = False, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("var is not implemented.") def mean(self, *args, update=None, update_times=None, **kwargs): """ diff --git a/pandas/tests/window/test_online.py b/pandas/tests/window/test_online.py index 88f462869d8b6..cce46526884a6 100644 --- a/pandas/tests/window/test_online.py +++ b/pandas/tests/window/test_online.py @@ -103,3 +103,13 @@ def test_update_times_mean( tm.assert_equal(result, expected.tail(3)) online_ewm.reset() + + @pytest.mark.parametrize("method", ["aggregate", "std", "corr", "cov", "var"]) + def test_ewm_notimplementederror_raises(self, method): + ser = Series(range(10)) + kwargs = {} + if method == "aggregate": + kwargs["func"] = lambda x: x + + with pytest.raises(NotImplementedError, match=".* is not implemented."): + getattr(ser.ewm(1).online(), method)(**kwargs)