From 4254e632c08b767074c5e099811c55340d11eaa4 Mon Sep 17 00:00:00 2001 From: jiawei-zhang-a <2992758051@qq.com> Date: Wed, 26 Apr 2023 04:35:46 +0000 Subject: [PATCH 1/4] Fixed metadata propagation in Dataframe.add --- pandas/core/frame.py | 8 +++++++- pandas/tests/generic/test_finalize.py | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 838a34adeaf82..ba504703b63e2 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -10958,9 +10958,15 @@ def any( # type: ignore[override] ) -> Series: # error: Incompatible return value type (got "Union[Series, bool]", # expected "Series") - return self._logical_func( # type: ignore[return-value] + + result = self._logical_func( # type: ignore[return-value] "any", nanops.nanany, axis, bool_only, skipna, **kwargs ) + return ( + result.__finalize__(self, method="any") + if hasattr(result, "__finalize__") + else result + ) @doc(make_doc("all", ndim=2)) def all( diff --git a/pandas/tests/generic/test_finalize.py b/pandas/tests/generic/test_finalize.py index a76b6b94d719d..efab029dea8ef 100644 --- a/pandas/tests/generic/test_finalize.py +++ b/pandas/tests/generic/test_finalize.py @@ -410,7 +410,6 @@ # Reductions pytest.param( (pd.DataFrame, frame_data, operator.methodcaller("any")), - marks=not_implemented_mark, ), pytest.param( (pd.DataFrame, frame_data, operator.methodcaller("sum")), From eaa1f85ae1b005e77cbeddcd24559619012836ac Mon Sep 17 00:00:00 2001 From: jiawei-zhang-a <2992758051@qq.com> Date: Wed, 26 Apr 2023 22:10:06 +0000 Subject: [PATCH 2/4] Ignore the return-value when it is bool --- pandas/core/frame.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index ba504703b63e2..ceb1efac434e1 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -10959,14 +10959,13 @@ def any( # type: ignore[override] # error: Incompatible return value type (got "Union[Series, bool]", # expected "Series") - result = self._logical_func( # type: ignore[return-value] + result = self._logical_func( "any", nanops.nanany, axis, bool_only, skipna, **kwargs ) - return ( - result.__finalize__(self, method="any") - if hasattr(result, "__finalize__") - else result - ) + if isinstance(result, (np.bool_, bool)): + return result # type: ignore[return-value] + + return result.__finalize__(self, method="any") @doc(make_doc("all", ndim=2)) def all( From d1941ecc628f703d860d14bb82e7e95fef52d535 Mon Sep 17 00:00:00 2001 From: jiawei-zhang-a <2992758051@qq.com> Date: Sat, 29 Apr 2023 00:25:50 +0000 Subject: [PATCH 3/4] fix the problem in minimum version --- pandas/core/frame.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index ceb1efac434e1..c12016aec324b 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -10965,7 +10965,7 @@ def any( # type: ignore[override] if isinstance(result, (np.bool_, bool)): return result # type: ignore[return-value] - return result.__finalize__(self, method="any") + return result.__finalize__(self) @doc(make_doc("all", ndim=2)) def all( From a9193f5aca1a8ab22af5baf1f43d9d2e7d905014 Mon Sep 17 00:00:00 2001 From: jiawei-zhang-a Date: Sun, 7 May 2023 18:26:51 +0000 Subject: [PATCH 4/4] add return type for any --- pandas/core/frame.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index c12016aec324b..213cbc725af48 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -10955,7 +10955,7 @@ def any( # type: ignore[override] bool_only=None, skipna: bool = True, **kwargs, - ) -> Series: + ) -> Series | np.bool_ | bool: # error: Incompatible return value type (got "Union[Series, bool]", # expected "Series") @@ -10963,9 +10963,9 @@ def any( # type: ignore[override] "any", nanops.nanany, axis, bool_only, skipna, **kwargs ) if isinstance(result, (np.bool_, bool)): - return result # type: ignore[return-value] + return result - return result.__finalize__(self) + return result.__finalize__(self, method="any") @doc(make_doc("all", ndim=2)) def all(