Skip to content

REF: make EA reductions, nanops funcs keyword-only #37541

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Nov 1, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pandas/core/arrays/boolean.py
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ def _values_for_argsort(self) -> np.ndarray:
data[self._mask] = -1
return data

def any(self, skipna: bool = True, **kwargs):
def any(self, *, skipna: bool = True, **kwargs):
"""
Return whether any element is True.

Expand Down Expand Up @@ -492,7 +492,7 @@ def any(self, skipna: bool = True, **kwargs):
else:
return self.dtype.na_value

def all(self, skipna: bool = True, **kwargs):
def all(self, *, skipna: bool = True, **kwargs):
"""
Return whether all elements are True.

Expand Down
4 changes: 2 additions & 2 deletions pandas/core/arrays/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -1945,7 +1945,7 @@ def _reverse_indexer(self) -> Dict[Hashable, np.ndarray]:
# Reductions

@deprecate_kwarg(old_arg_name="numeric_only", new_arg_name="skipna")
def min(self, skipna=True, **kwargs):
def min(self, *, skipna=True, **kwargs):
"""
The minimum value of the object.

Expand Down Expand Up @@ -1981,7 +1981,7 @@ def min(self, skipna=True, **kwargs):
return self.categories[pointer]

@deprecate_kwarg(old_arg_name="numeric_only", new_arg_name="skipna")
def max(self, skipna=True, **kwargs):
def max(self, *, skipna=True, **kwargs):
"""
The maximum value of the object.

Expand Down
14 changes: 7 additions & 7 deletions pandas/core/arrays/datetimelike.py
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ def __isub__(self, other):
# --------------------------------------------------------------
# Reductions

def min(self, axis=None, skipna=True, *args, **kwargs):
def min(self, *, axis=None, skipna=True, **kwargs):
"""
Return the minimum value of the Array or minimum along
an axis.
Expand All @@ -1256,7 +1256,7 @@ def min(self, axis=None, skipna=True, *args, **kwargs):
Index.min : Return the minimum value in an Index.
Series.min : Return the minimum value in a Series.
"""
nv.validate_min(args, kwargs)
nv.validate_min((), kwargs)
nv.validate_minmax_axis(axis, self.ndim)

if is_period_dtype(self.dtype):
Expand All @@ -1276,7 +1276,7 @@ def min(self, axis=None, skipna=True, *args, **kwargs):
return self._box_func(result)
return self._from_backing_data(result)

def max(self, axis=None, skipna=True, *args, **kwargs):
def max(self, *, axis=None, skipna=True, **kwargs):
"""
Return the maximum value of the Array or maximum along
an axis.
Expand All @@ -1289,7 +1289,7 @@ def max(self, axis=None, skipna=True, *args, **kwargs):
"""
# TODO: skipna is broken with max.
# See https://github.com/pandas-dev/pandas/issues/24265
nv.validate_max(args, kwargs)
nv.validate_max((), kwargs)
nv.validate_minmax_axis(axis, self.ndim)

if is_period_dtype(self.dtype):
Expand All @@ -1309,7 +1309,7 @@ def max(self, axis=None, skipna=True, *args, **kwargs):
return self._box_func(result)
return self._from_backing_data(result)

def mean(self, skipna=True, axis: Optional[int] = 0):
def mean(self, *, skipna=True, axis: Optional[int] = 0):
"""
Return the mean value of the Array.

Expand Down Expand Up @@ -1350,8 +1350,8 @@ def mean(self, skipna=True, axis: Optional[int] = 0):
return self._box_func(result)
return self._from_backing_data(result)

def median(self, axis: Optional[int] = None, skipna: bool = True, *args, **kwargs):
nv.validate_median(args, kwargs)
def median(self, *, axis: Optional[int] = None, skipna: bool = True, **kwargs):
nv.validate_median((), kwargs)

if axis is not None and abs(axis) >= self.ndim:
raise ValueError("abs(axis) must be less than ndim")
Expand Down
8 changes: 4 additions & 4 deletions pandas/core/arrays/floating.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,19 +439,19 @@ def _cmp_method(self, other, op):

return BooleanArray(result, mask)

def sum(self, skipna=True, min_count=0, **kwargs):
def sum(self, *, skipna=True, min_count=0, **kwargs):
nv.validate_sum((), kwargs)
return super()._reduce("sum", skipna=skipna, min_count=min_count)

def prod(self, skipna=True, min_count=0, **kwargs):
def prod(self, *, skipna=True, min_count=0, **kwargs):
nv.validate_prod((), kwargs)
return super()._reduce("prod", skipna=skipna, min_count=min_count)

def min(self, skipna=True, **kwargs):
def min(self, *, skipna=True, **kwargs):
nv.validate_min((), kwargs)
return super()._reduce("min", skipna=skipna)

def max(self, skipna=True, **kwargs):
def max(self, *, skipna=True, **kwargs):
nv.validate_max((), kwargs)
return super()._reduce("max", skipna=skipna)

Expand Down
8 changes: 4 additions & 4 deletions pandas/core/arrays/integer.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,19 +603,19 @@ def _arith_method(self, other, op):

return self._maybe_mask_result(result, mask, other, op_name)

def sum(self, skipna=True, min_count=0, **kwargs):
def sum(self, *, skipna=True, min_count=0, **kwargs):
nv.validate_sum((), kwargs)
return super()._reduce("sum", skipna=skipna, min_count=min_count)

def prod(self, skipna=True, min_count=0, **kwargs):
def prod(self, *, skipna=True, min_count=0, **kwargs):
nv.validate_prod((), kwargs)
return super()._reduce("prod", skipna=skipna, min_count=min_count)

def min(self, skipna=True, **kwargs):
def min(self, *, skipna=True, **kwargs):
nv.validate_min((), kwargs)
return super()._reduce("min", skipna=skipna)

def max(self, skipna=True, **kwargs):
def max(self, *, skipna=True, **kwargs):
nv.validate_max((), kwargs)
return super()._reduce("max", skipna=skipna)

Expand Down
32 changes: 19 additions & 13 deletions pandas/core/arrays/numpy_.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,77 +271,83 @@ def _values_for_factorize(self) -> Tuple[np.ndarray, int]:
# ------------------------------------------------------------------------
# Reductions

def any(self, axis=None, out=None, keepdims=False, skipna=True):
def any(self, *, axis=None, out=None, keepdims=False, skipna=True):
nv.validate_any((), dict(out=out, keepdims=keepdims))
return nanops.nanany(self._ndarray, axis=axis, skipna=skipna)

def all(self, axis=None, out=None, keepdims=False, skipna=True):
def all(self, *, axis=None, out=None, keepdims=False, skipna=True):
nv.validate_all((), dict(out=out, keepdims=keepdims))
return nanops.nanall(self._ndarray, axis=axis, skipna=skipna)

def min(self, skipna: bool = True, **kwargs) -> Scalar:
def min(self, *, skipna: bool = True, **kwargs) -> Scalar:
nv.validate_min((), kwargs)
result = masked_reductions.min(
values=self.to_numpy(), mask=self.isna(), skipna=skipna
)
return result

def max(self, skipna: bool = True, **kwargs) -> Scalar:
def max(self, *, skipna: bool = True, **kwargs) -> Scalar:
nv.validate_max((), kwargs)
result = masked_reductions.max(
values=self.to_numpy(), mask=self.isna(), skipna=skipna
)
return result

def sum(self, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
def sum(self, *, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
nv.validate_sum((), kwargs)
return nanops.nansum(
self._ndarray, axis=axis, skipna=skipna, min_count=min_count
)

def prod(self, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
def prod(self, *, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
nv.validate_prod((), kwargs)
return nanops.nanprod(
self._ndarray, axis=axis, skipna=skipna, min_count=min_count
)

def mean(self, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
def mean(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
nv.validate_mean((), dict(dtype=dtype, out=out, keepdims=keepdims))
return nanops.nanmean(self._ndarray, axis=axis, skipna=skipna)

def median(
self, axis=None, out=None, overwrite_input=False, keepdims=False, skipna=True
self, *, axis=None, out=None, overwrite_input=False, keepdims=False, skipna=True
):
nv.validate_median(
(), dict(out=out, overwrite_input=overwrite_input, keepdims=keepdims)
)
return nanops.nanmedian(self._ndarray, axis=axis, skipna=skipna)

def std(self, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True):
def std(
self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
):
nv.validate_stat_ddof_func(
(), dict(dtype=dtype, out=out, keepdims=keepdims), fname="std"
)
return nanops.nanstd(self._ndarray, axis=axis, skipna=skipna, ddof=ddof)

def var(self, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True):
def var(
self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
):
nv.validate_stat_ddof_func(
(), dict(dtype=dtype, out=out, keepdims=keepdims), fname="var"
)
return nanops.nanvar(self._ndarray, axis=axis, skipna=skipna, ddof=ddof)

def sem(self, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True):
def sem(
self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
):
nv.validate_stat_ddof_func(
(), dict(dtype=dtype, out=out, keepdims=keepdims), fname="sem"
)
return nanops.nansem(self._ndarray, axis=axis, skipna=skipna, ddof=ddof)

def kurt(self, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
def kurt(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
nv.validate_stat_ddof_func(
(), dict(dtype=dtype, out=out, keepdims=keepdims), fname="kurt"
)
return nanops.nankurt(self._ndarray, axis=axis, skipna=skipna)

def skew(self, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
def skew(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
nv.validate_stat_ddof_func(
(), dict(dtype=dtype, out=out, keepdims=keepdims), fname="skew"
)
Expand Down
1 change: 1 addition & 0 deletions pandas/core/arrays/timedeltas.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,7 @@ def __iter__(self):

def sum(
self,
*,
axis=None,
dtype=None,
out=None,
Expand Down
Loading