Skip to content

Commit 501dfcf

Browse files
committed
add parameter types + @doc decorator
1 parent 3a783af commit 501dfcf

File tree

3 files changed

+45
-52
lines changed

3 files changed

+45
-52
lines changed

pandas/core/groupby/generic.py

+30-42
Original file line numberDiff line numberDiff line change
@@ -88,25 +88,25 @@
8888
from pandas.core.internals import Block
8989

9090
_agg_template = """
91-
Compute %(f)s of group values.
91+
Compute {fname} of group values.
9292
9393
Parameters
9494
----------
95-
numeric_only : bool, default %(no)s
95+
numeric_only : bool, default {no}
9696
Include only float, int, boolean columns. If None, will attempt to use
9797
everything, then use only numeric data.
98-
min_count : int, default %(mc)s
98+
min_count : int, default {mc}
9999
The required number of valid values to perform the operation. If fewer
100100
than ``min_count`` non-NA values are present the result will be NA.
101101
102102
Returns
103103
-------
104-
%(return_type)s
105-
Computed %(f)s of values within each group.
104+
{return_type}
105+
Computed {fname} of values within each group.
106106
107107
See Also
108108
--------
109-
%(return_type)s.groupby
109+
{return_type}.groupby
110110
"""
111111

112112

@@ -827,34 +827,28 @@ def count(self) -> Series:
827827
)
828828
return self._reindex_output(result, fill_value=0)
829829

830-
@Substitution(f="sum", no=True, mc=0, return_type="Series")
831-
@Appender(_agg_template)
832-
def sum(self, numeric_only=True, min_count=0) -> Series:
830+
@doc(_agg_template, fname="sum", no=True, mc=0, return_type="Series")
831+
def sum(self, numeric_only: bool = True, min_count: int = 0) -> Series:
833832
return super().sum(numeric_only=numeric_only, min_count=min_count)
834833

835-
@Substitution(f="prod", no=True, mc=0, return_type="Series")
836-
@Appender(_agg_template)
837-
def prod(self, numeric_only=True, min_count=0) -> Series:
834+
@doc(_agg_template, fname="prod", no=True, mc=0, return_type="Series")
835+
def prod(self, numeric_only: bool = True, min_count: int = 0) -> Series:
838836
return super().prod(numeric_only=numeric_only, min_count=min_count)
839837

840-
@Substitution(f="min", no=False, mc=-1, return_type="Series")
841-
@Appender(_agg_template)
842-
def min(self, numeric_only=False, min_count=-1) -> Series:
838+
@doc(_agg_template, fname="min", no=False, mc=-1, return_type="Series")
839+
def min(self, numeric_only: bool = False, min_count: int = -1) -> Series:
843840
return super().min(numeric_only=numeric_only, min_count=min_count)
844841

845-
@Substitution(f="max", no=False, mc=-1, return_type="Series")
846-
@Appender(_agg_template)
847-
def max(self, numeric_only=False, min_count=-1) -> Series:
842+
@doc(_agg_template, fname="max", no=False, mc=-1, return_type="Series")
843+
def max(self, numeric_only: bool = False, min_count: int = -1) -> Series:
848844
return super().max(numeric_only=numeric_only, min_count=min_count)
849845

850-
@Substitution(f="first", no=False, mc=-1, return_type="Series")
851-
@Appender(_agg_template)
852-
def first(self, numeric_only=False, min_count=-1) -> Series:
846+
@doc(_agg_template, fname="first", no=False, mc=-1, return_type="Series")
847+
def first(self, numeric_only: bool = False, min_count: int = -1) -> Series:
853848
return super().first(numeric_only=numeric_only, min_count=min_count)
854849

855-
@Substitution(f="last", no=False, mc=-1, return_type="Series")
856-
@Appender(_agg_template)
857-
def last(self, numeric_only=False, min_count=-1) -> Series:
850+
@doc(_agg_template, fname="last", no=False, mc=-1, return_type="Series")
851+
def last(self, numeric_only: bool = False, min_count: int = -1) -> Series:
858852
return super().last(numeric_only=numeric_only, min_count=min_count)
859853

860854
def _apply_to_column_groupbys(self, func):
@@ -1936,34 +1930,28 @@ def groupby_series(obj, col=None):
19361930
results.index = ibase.default_index(len(results))
19371931
return results
19381932

1939-
@Substitution(f="sum", no=True, mc=0, return_type="DataFrame")
1940-
@Appender(_agg_template)
1941-
def sum(self, numeric_only=True, min_count=0) -> DataFrame:
1933+
@doc(_agg_template, fname="sum", no=True, mc=0, return_type="DataFrame")
1934+
def sum(self, numeric_only: bool = True, min_count: int = 0) -> DataFrame:
19421935
return super().sum(numeric_only=numeric_only, min_count=min_count)
19431936

1944-
@Substitution(f="prod", no=True, mc=0, return_type="DataFrame")
1945-
@Appender(_agg_template)
1946-
def prod(self, numeric_only=True, min_count=0) -> DataFrame:
1937+
@doc(_agg_template, fname="prod", no=True, mc=0, return_type="DataFrame")
1938+
def prod(self, numeric_only: bool = True, min_count: int = 0) -> DataFrame:
19471939
return super().prod(numeric_only=numeric_only, min_count=min_count)
19481940

1949-
@Substitution(f="min", no=False, mc=-1, return_type="DataFrame")
1950-
@Appender(_agg_template)
1951-
def min(self, numeric_only=False, min_count=-1) -> DataFrame:
1941+
@doc(_agg_template, fname="min", no=False, mc=-1, return_type="DataFrame")
1942+
def min(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19521943
return super().min(numeric_only=numeric_only, min_count=min_count)
19531944

1954-
@Substitution(f="max", no=False, mc=-1, return_type="DataFrame")
1955-
@Appender(_agg_template)
1956-
def max(self, numeric_only=False, min_count=-1) -> DataFrame:
1945+
@doc(_agg_template, fname="max", no=False, mc=-1, return_type="DataFrame")
1946+
def max(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19571947
return super().max(numeric_only=numeric_only, min_count=min_count)
19581948

1959-
@Substitution(f="first", no=False, mc=-1, return_type="DataFrame")
1960-
@Appender(_agg_template)
1961-
def first(self, numeric_only=False, min_count=-1) -> DataFrame:
1949+
@doc(_agg_template, fname="first", no=False, mc=-1, return_type="DataFrame")
1950+
def first(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19621951
return super().first(numeric_only=numeric_only, min_count=min_count)
19631952

1964-
@Substitution(f="last", no=False, mc=-1, return_type="DataFrame")
1965-
@Appender(_agg_template)
1966-
def last(self, numeric_only=False, min_count=-1) -> DataFrame:
1953+
@doc(_agg_template, fname="last", no=False, mc=-1, return_type="DataFrame")
1954+
def last(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19671955
return super().last(numeric_only=numeric_only, min_count=min_count)
19681956

19691957
boxplot = boxplot_frame_groupby

pandas/core/groupby/groupby.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,12 @@ def _wrap_applied_output(self, keys, values, not_indexed_same: bool = False):
942942
raise AbstractMethodError(self)
943943

944944
def _agg_general(
945-
self, numeric_only=True, min_count=-1, *, alias: str, npfunc: Callable
945+
self,
946+
numeric_only: bool = True,
947+
min_count: int = -1,
948+
*,
949+
alias: str,
950+
npfunc: Callable,
946951
):
947952
self._set_group_selection()
948953

@@ -1449,22 +1454,22 @@ def size(self):
14491454
result.name = self.obj.name
14501455
return self._reindex_output(result, fill_value=0)
14511456

1452-
def sum(self, numeric_only=True, min_count=0):
1457+
def sum(self, numeric_only: bool = True, min_count: int = 0):
14531458
return self._agg_general(
14541459
numeric_only=numeric_only, min_count=min_count, alias="add", npfunc=np.sum
14551460
)
14561461

1457-
def prod(self, numeric_only=True, min_count=0):
1462+
def prod(self, numeric_only: bool = True, min_count: int = 0):
14581463
return self._agg_general(
14591464
numeric_only=numeric_only, min_count=min_count, alias="prod", npfunc=np.prod
14601465
)
14611466

1462-
def min(self, numeric_only=False, min_count=-1):
1467+
def min(self, numeric_only: bool = False, min_count: int = -1):
14631468
return self._agg_general(
14641469
numeric_only=numeric_only, min_count=min_count, alias="min", npfunc=np.min
14651470
)
14661471

1467-
def max(self, numeric_only=False, min_count=-1):
1472+
def max(self, numeric_only: bool = False, min_count: int = -1):
14681473
return self._agg_general(
14691474
numeric_only=numeric_only, min_count=min_count, alias="max", npfunc=np.max
14701475
)
@@ -1486,7 +1491,7 @@ def get_loc_notna(x, loc: int):
14861491
else:
14871492
return get_loc_notna(x, loc=loc)
14881493

1489-
def first(self, numeric_only=False, min_count=-1):
1494+
def first(self, numeric_only: bool = False, min_count: int = -1):
14901495
first_compat = partial(self._get_loc, loc=0)
14911496

14921497
return self._agg_general(
@@ -1496,7 +1501,7 @@ def first(self, numeric_only=False, min_count=-1):
14961501
npfunc=first_compat,
14971502
)
14981503

1499-
def last(self, numeric_only=False, min_count=-1):
1504+
def last(self, numeric_only: bool = False, min_count: int = -1):
15001505
last_compat = partial(self._get_loc, loc=-1)
15011506

15021507
return self._agg_general(

pandas/util/_decorators.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ def wrapper(*args, **kwargs) -> Callable[..., Any]:
329329
return decorate
330330

331331

332-
def doc(*args: Union[str, Callable], **kwargs: str) -> Callable[[F], F]:
332+
def doc(*args: Union[str, Callable], **kwargs: Any) -> Callable[[F], F]:
333333
"""
334334
A decorator take docstring templates, concatenate them and perform string
335335
substitution on it.
@@ -345,8 +345,8 @@ def doc(*args: Union[str, Callable], **kwargs: str) -> Callable[[F], F]:
345345
*args : str or callable
346346
The string / docstring / docstring template to be appended in order
347347
after default docstring under function.
348-
**kwags : str
349-
The string which would be used to format docstring template.
348+
**kwargs : Any
349+
The objects which would be used to format docstring template.
350350
"""
351351

352352
def decorator(func: F) -> F:

0 commit comments

Comments
 (0)