From 5f613b1fe0bd68b0cf5b74afa9833c43ba4ace8f Mon Sep 17 00:00:00 2001 From: Dries Schaumont Date: Fri, 9 Apr 2021 21:00:05 +0200 Subject: [PATCH 1/4] Improve clip() typing. --- pandas/core/generic.py | 43 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 62ef9c91770b6..2a91c02ce050b 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -33,6 +33,7 @@ to_offset, ) from pandas._typing import ( + ArrayLike, Axis, CompressionOptions, Dtype, @@ -7367,16 +7368,52 @@ def _clip_with_one_bound(self, threshold, method, axis, inplace): threshold = align_method_FRAME(self, threshold, axis, flex=None)[1] return self.where(subset, threshold, axis=axis, inplace=inplace) - @final + @overload + def clip( + self: FrameOrSeries, + inplace: Literal[False] = ..., + lower: int | ArrayLike | None = None, + upper: int | ArrayLike | None = None, + axis: Axis | None = None, + *args, + **kwargs, + ) -> FrameOrSeries: + ... + + @overload def clip( self: FrameOrSeries, + inplace: Literal[True], + lower: int | ArrayLike | None = None, + upper: int | ArrayLike | None = None, + axis: Axis | None = None, + *args, + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + inplace: bool_t = ..., lower=None, upper=None, - axis=None, + axis: Axis | None = None, + *args, + **kwargs, + ) -> FrameOrSeries | None: + ... + + @final + def clip( + self: FrameOrSeries, inplace: bool_t = False, + lower=None, + upper=None, + axis: Axis | None = None, *args, **kwargs, - ) -> FrameOrSeries: + ) -> FrameOrSeries | None: """ Trim values at input threshold(s). From fb851fd23d84294034b1127293263ba686805c9c Mon Sep 17 00:00:00 2001 From: Dries Schaumont Date: Sat, 10 Apr 2021 00:20:33 +0200 Subject: [PATCH 2/4] Update typing. --- pandas/core/generic.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 2a91c02ce050b..fd660672b0d1b 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -33,7 +33,6 @@ to_offset, ) from pandas._typing import ( - ArrayLike, Axis, CompressionOptions, Dtype, @@ -7371,10 +7370,10 @@ def _clip_with_one_bound(self, threshold, method, axis, inplace): @overload def clip( self: FrameOrSeries, + lower=..., + upper=..., + axis: Axis | None = ..., inplace: Literal[False] = ..., - lower: int | ArrayLike | None = None, - upper: int | ArrayLike | None = None, - axis: Axis | None = None, *args, **kwargs, ) -> FrameOrSeries: @@ -7383,10 +7382,10 @@ def clip( @overload def clip( self: FrameOrSeries, + lower, + upper, + axis: Axis | None, inplace: Literal[True], - lower: int | ArrayLike | None = None, - upper: int | ArrayLike | None = None, - axis: Axis | None = None, *args, **kwargs, ) -> None: @@ -7395,10 +7394,21 @@ def clip( @overload def clip( self: FrameOrSeries, + lower, + upper, + *, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + lower=..., + upper=..., + axis: Axis | None = ..., inplace: bool_t = ..., - lower=None, - upper=None, - axis: Axis | None = None, *args, **kwargs, ) -> FrameOrSeries | None: @@ -7407,10 +7417,10 @@ def clip( @final def clip( self: FrameOrSeries, - inplace: bool_t = False, lower=None, upper=None, axis: Axis | None = None, + inplace: bool_t = False, *args, **kwargs, ) -> FrameOrSeries | None: From ace7feabc6905976b687e88f9d07edf925d2c374 Mon Sep 17 00:00:00 2001 From: Dries Schaumont Date: Sat, 10 Apr 2021 15:49:17 +0200 Subject: [PATCH 3/4] More clip overloads. --- pandas/core/generic.py | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index fd660672b0d1b..bd6b0f06d687b 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -7379,6 +7379,58 @@ def clip( ) -> FrameOrSeries: ... + @overload + def clip( + self: FrameOrSeries, + lower, + *, + axis, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + lower, + *, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + *, + upper, + axis, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + *, + upper, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + + @overload + def clip( + self: FrameOrSeries, + *, + axis, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + @overload def clip( self: FrameOrSeries, @@ -7402,6 +7454,15 @@ def clip( ) -> None: ... + @overload + def clip( + self: FrameOrSeries, + *, + inplace: Literal[True], + **kwargs, + ) -> None: + ... + @overload def clip( self: FrameOrSeries, From c89e308c1187eb34b545f66795fc2c44b1ea9516 Mon Sep 17 00:00:00 2001 From: Dries Schaumont Date: Sat, 10 Apr 2021 17:57:02 +0200 Subject: [PATCH 4/4] Add missing axis types --- pandas/core/generic.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index bd6b0f06d687b..6b59841c909d6 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -7384,7 +7384,7 @@ def clip( self: FrameOrSeries, lower, *, - axis, + axis: Axis | None, inplace: Literal[True], **kwargs, ) -> None: @@ -7405,7 +7405,7 @@ def clip( self: FrameOrSeries, *, upper, - axis, + axis: Axis | None, inplace: Literal[True], **kwargs, ) -> None: @@ -7425,7 +7425,7 @@ def clip( def clip( self: FrameOrSeries, *, - axis, + axis: Axis | None, inplace: Literal[True], **kwargs, ) -> None: