From 9c9c57cfe233d86512bdee96d949f8e9b5c69c8c Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Tue, 17 May 2022 19:46:49 -0400 Subject: [PATCH 1/4] ENH: move DataError from core/base.py to error/__init__.py per GH27656 --- doc/source/reference/testing.rst | 1 + pandas/core/apply.py | 2 +- pandas/core/base.py | 4 ---- pandas/core/groupby/groupby.py | 6 ++++-- pandas/core/resample.py | 10 +++++----- pandas/core/window/rolling.py | 6 ++---- pandas/errors/__init__.py | 8 ++++++++ pandas/tests/test_errors.py | 1 + 8 files changed, 22 insertions(+), 16 deletions(-) diff --git a/doc/source/reference/testing.rst b/doc/source/reference/testing.rst index 0d702dd4e702d..f91db4600daec 100644 --- a/doc/source/reference/testing.rst +++ b/doc/source/reference/testing.rst @@ -26,6 +26,7 @@ Exceptions and warnings errors.AbstractMethodError errors.AccessorRegistrationWarning + errors.DataError errors.DtypeWarning errors.DuplicateLabelError errors.EmptyDataError diff --git a/pandas/core/apply.py b/pandas/core/apply.py index c04d0821fffdc..b891a532a4512 100644 --- a/pandas/core/apply.py +++ b/pandas/core/apply.py @@ -33,6 +33,7 @@ Axis, NDFrameT, ) +from pandas.errors import DataError from pandas.util._decorators import cache_readonly from pandas.util._exceptions import find_stack_level @@ -51,7 +52,6 @@ from pandas.core.algorithms import safe_sort from pandas.core.base import ( - DataError, SelectionMixin, SpecificationError, ) diff --git a/pandas/core/base.py b/pandas/core/base.py index 12ab942e70574..38cf41a626deb 100644 --- a/pandas/core/base.py +++ b/pandas/core/base.py @@ -176,10 +176,6 @@ def __setattr__(self, key: str, value): object.__setattr__(self, key, value) -class DataError(Exception): - pass - - class SpecificationError(Exception): pass diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 70f8e0a752dcb..8e50823e38ea7 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -53,7 +53,10 @@ class providing the base-class of operations. npt, ) from pandas.compat.numpy import function as nv -from pandas.errors import AbstractMethodError +from pandas.errors import ( + AbstractMethodError, + DataError, +) from pandas.util._decorators import ( Appender, Substitution, @@ -89,7 +92,6 @@ class providing the base-class of operations. ExtensionArray, ) from pandas.core.base import ( - DataError, PandasObject, SelectionMixin, ) diff --git a/pandas/core/resample.py b/pandas/core/resample.py index 362f61d25ac34..fd331fef32703 100644 --- a/pandas/core/resample.py +++ b/pandas/core/resample.py @@ -34,7 +34,10 @@ npt, ) from pandas.compat.numpy import function as nv -from pandas.errors import AbstractMethodError +from pandas.errors import ( + AbstractMethodError, + DataError, +) from pandas.util._decorators import ( Appender, Substitution, @@ -50,10 +53,7 @@ import pandas.core.algorithms as algos from pandas.core.apply import ResamplerWindowApply -from pandas.core.base import ( - DataError, - PandasObject, -) +from pandas.core.base import PandasObject import pandas.core.common as com from pandas.core.generic import ( NDFrame, diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 9617e27cc2e4b..ad6f0863449b6 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -33,6 +33,7 @@ ) from pandas.compat._optional import import_optional_dependency from pandas.compat.numpy import function as nv +from pandas.errors import DataError from pandas.util._decorators import doc from pandas.util._exceptions import find_stack_level @@ -54,10 +55,7 @@ from pandas.core.algorithms import factorize from pandas.core.apply import ResamplerWindowApply from pandas.core.arrays import ExtensionArray -from pandas.core.base import ( - DataError, - SelectionMixin, -) +from pandas.core.base import SelectionMixin import pandas.core.common as com from pandas.core.indexers.objects import ( BaseIndexer, diff --git a/pandas/errors/__init__.py b/pandas/errors/__init__.py index 44f999cb1296a..daef5a38c33c2 100644 --- a/pandas/errors/__init__.py +++ b/pandas/errors/__init__.py @@ -236,3 +236,11 @@ class InvalidIndexError(Exception): .. versionadded:: 1.1.0 """ + + +class DataError(Exception): + """ + Exception raised when trying to perform a ohlc on a non-numnerical column. + Or, it can be raised when trying to apply a function to a non-numerical + column on a rolling window. + """ diff --git a/pandas/tests/test_errors.py b/pandas/tests/test_errors.py index 6207b886b95c7..a1ce5b7a239fe 100644 --- a/pandas/tests/test_errors.py +++ b/pandas/tests/test_errors.py @@ -19,6 +19,7 @@ "MergeError", "OptionError", "NumbaUtilError", + "DataError", ], ) def test_exception_importable(exc): From 071b03c5c280d86ceeda5355eaa8768e0a325640 Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Tue, 17 May 2022 20:07:12 -0400 Subject: [PATCH 2/4] EHN: update v1.5.0.rst file --- doc/source/whatsnew/v1.5.0.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/whatsnew/v1.5.0.rst b/doc/source/whatsnew/v1.5.0.rst index 128fd68674f96..70af2d8112563 100644 --- a/doc/source/whatsnew/v1.5.0.rst +++ b/doc/source/whatsnew/v1.5.0.rst @@ -150,6 +150,7 @@ Other enhancements - Added ``validate`` argument to :meth:`DataFrame.join` (:issue:`46622`) - A :class:`errors.PerformanceWarning` is now thrown when using ``string[pyarrow]`` dtype with methods that don't dispatch to ``pyarrow.compute`` methods (:issue:`42613`) - Added ``numeric_only`` argument to :meth:`Resampler.sum`, :meth:`Resampler.prod`, :meth:`Resampler.min`, :meth:`Resampler.max`, :meth:`Resampler.first`, and :meth:`Resampler.last` (:issue:`46442`) +- Moved :class:`DataError` from ``pandas.core.base`` to ``pandas.errors`` (:issue:`27656`) .. --------------------------------------------------------------------------- .. _whatsnew_150.notable_bug_fixes: From 6020324d0ad28d2ff0fdd03788664d80255a8a6a Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Tue, 17 May 2022 20:37:36 -0400 Subject: [PATCH 3/4] EHN: update import --- pandas/tests/window/test_dtypes.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/tests/window/test_dtypes.py b/pandas/tests/window/test_dtypes.py index 161976a6112a5..52011a2d5f760 100644 --- a/pandas/tests/window/test_dtypes.py +++ b/pandas/tests/window/test_dtypes.py @@ -1,6 +1,8 @@ import numpy as np import pytest +from pandas.errors import DataError + from pandas.core.dtypes.common import pandas_dtype from pandas import ( @@ -9,7 +11,6 @@ Series, ) import pandas._testing as tm -from pandas.core.base import DataError # gh-12373 : rolling functions error on float32 data # make sure rolling functions works for different dtypes From 75ad7b9ac4fade5b223db1856890742ae99b6cf9 Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Fri, 20 May 2022 14:15:56 -0400 Subject: [PATCH 4/4] EHN: reword line in rst file --- doc/source/whatsnew/v1.5.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/whatsnew/v1.5.0.rst b/doc/source/whatsnew/v1.5.0.rst index 70af2d8112563..b4487622409a8 100644 --- a/doc/source/whatsnew/v1.5.0.rst +++ b/doc/source/whatsnew/v1.5.0.rst @@ -150,7 +150,7 @@ Other enhancements - Added ``validate`` argument to :meth:`DataFrame.join` (:issue:`46622`) - A :class:`errors.PerformanceWarning` is now thrown when using ``string[pyarrow]`` dtype with methods that don't dispatch to ``pyarrow.compute`` methods (:issue:`42613`) - Added ``numeric_only`` argument to :meth:`Resampler.sum`, :meth:`Resampler.prod`, :meth:`Resampler.min`, :meth:`Resampler.max`, :meth:`Resampler.first`, and :meth:`Resampler.last` (:issue:`46442`) -- Moved :class:`DataError` from ``pandas.core.base`` to ``pandas.errors`` (:issue:`27656`) +- :class:`DataError` now exposed in ``pandas.errors`` (:issue:`27656`) .. --------------------------------------------------------------------------- .. _whatsnew_150.notable_bug_fixes: