Skip to content

Commit 4b96a52

Browse files
committed
add parameter types + @doc decorator
1 parent 3357d06 commit 4b96a52

File tree

3 files changed

+45
-52
lines changed

3 files changed

+45
-52
lines changed

pandas/core/groupby/generic.py

Lines changed: 30 additions & 42 deletions
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

@@ -835,34 +835,28 @@ def count(self) -> Series:
835835
)
836836
return self._reindex_output(result, fill_value=0)
837837

838-
@Substitution(f="sum", no=True, mc=0, return_type="Series")
839-
@Appender(_agg_template)
840-
def sum(self, numeric_only=True, min_count=0) -> Series:
838+
@doc(_agg_template, fname="sum", no=True, mc=0, return_type="Series")
839+
def sum(self, numeric_only: bool = True, min_count: int = 0) -> Series:
841840
return super().sum(numeric_only=numeric_only, min_count=min_count)
842841

843-
@Substitution(f="prod", no=True, mc=0, return_type="Series")
844-
@Appender(_agg_template)
845-
def prod(self, numeric_only=True, min_count=0) -> Series:
842+
@doc(_agg_template, fname="prod", no=True, mc=0, return_type="Series")
843+
def prod(self, numeric_only: bool = True, min_count: int = 0) -> Series:
846844
return super().prod(numeric_only=numeric_only, min_count=min_count)
847845

848-
@Substitution(f="min", no=False, mc=-1, return_type="Series")
849-
@Appender(_agg_template)
850-
def min(self, numeric_only=False, min_count=-1) -> Series:
846+
@doc(_agg_template, fname="min", no=False, mc=-1, return_type="Series")
847+
def min(self, numeric_only: bool = False, min_count: int = -1) -> Series:
851848
return super().min(numeric_only=numeric_only, min_count=min_count)
852849

853-
@Substitution(f="max", no=False, mc=-1, return_type="Series")
854-
@Appender(_agg_template)
855-
def max(self, numeric_only=False, min_count=-1) -> Series:
850+
@doc(_agg_template, fname="max", no=False, mc=-1, return_type="Series")
851+
def max(self, numeric_only: bool = False, min_count: int = -1) -> Series:
856852
return super().max(numeric_only=numeric_only, min_count=min_count)
857853

858-
@Substitution(f="first", no=False, mc=-1, return_type="Series")
859-
@Appender(_agg_template)
860-
def first(self, numeric_only=False, min_count=-1) -> Series:
854+
@doc(_agg_template, fname="first", no=False, mc=-1, return_type="Series")
855+
def first(self, numeric_only: bool = False, min_count: int = -1) -> Series:
861856
return super().first(numeric_only=numeric_only, min_count=min_count)
862857

863-
@Substitution(f="last", no=False, mc=-1, return_type="Series")
864-
@Appender(_agg_template)
865-
def last(self, numeric_only=False, min_count=-1) -> Series:
858+
@doc(_agg_template, fname="last", no=False, mc=-1, return_type="Series")
859+
def last(self, numeric_only: bool = False, min_count: int = -1) -> Series:
866860
return super().last(numeric_only=numeric_only, min_count=min_count)
867861

868862
def _apply_to_column_groupbys(self, func):
@@ -1952,34 +1946,28 @@ def groupby_series(obj, col=None):
19521946
results.index = ibase.default_index(len(results))
19531947
return results
19541948

1955-
@Substitution(f="sum", no=True, mc=0, return_type="DataFrame")
1956-
@Appender(_agg_template)
1957-
def sum(self, numeric_only=True, min_count=0) -> DataFrame:
1949+
@doc(_agg_template, fname="sum", no=True, mc=0, return_type="DataFrame")
1950+
def sum(self, numeric_only: bool = True, min_count: int = 0) -> DataFrame:
19581951
return super().sum(numeric_only=numeric_only, min_count=min_count)
19591952

1960-
@Substitution(f="prod", no=True, mc=0, return_type="DataFrame")
1961-
@Appender(_agg_template)
1962-
def prod(self, numeric_only=True, min_count=0) -> DataFrame:
1953+
@doc(_agg_template, fname="prod", no=True, mc=0, return_type="DataFrame")
1954+
def prod(self, numeric_only: bool = True, min_count: int = 0) -> DataFrame:
19631955
return super().prod(numeric_only=numeric_only, min_count=min_count)
19641956

1965-
@Substitution(f="min", no=False, mc=-1, return_type="DataFrame")
1966-
@Appender(_agg_template)
1967-
def min(self, numeric_only=False, min_count=-1) -> DataFrame:
1957+
@doc(_agg_template, fname="min", no=False, mc=-1, return_type="DataFrame")
1958+
def min(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19681959
return super().min(numeric_only=numeric_only, min_count=min_count)
19691960

1970-
@Substitution(f="max", no=False, mc=-1, return_type="DataFrame")
1971-
@Appender(_agg_template)
1972-
def max(self, numeric_only=False, min_count=-1) -> DataFrame:
1961+
@doc(_agg_template, fname="max", no=False, mc=-1, return_type="DataFrame")
1962+
def max(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19731963
return super().max(numeric_only=numeric_only, min_count=min_count)
19741964

1975-
@Substitution(f="first", no=False, mc=-1, return_type="DataFrame")
1976-
@Appender(_agg_template)
1977-
def first(self, numeric_only=False, min_count=-1) -> DataFrame:
1965+
@doc(_agg_template, fname="first", no=False, mc=-1, return_type="DataFrame")
1966+
def first(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19781967
return super().first(numeric_only=numeric_only, min_count=min_count)
19791968

1980-
@Substitution(f="last", no=False, mc=-1, return_type="DataFrame")
1981-
@Appender(_agg_template)
1982-
def last(self, numeric_only=False, min_count=-1) -> DataFrame:
1969+
@doc(_agg_template, fname="last", no=False, mc=-1, return_type="DataFrame")
1970+
def last(self, numeric_only: bool = False, min_count: int = -1) -> DataFrame:
19831971
return super().last(numeric_only=numeric_only, min_count=min_count)
19841972

19851973
boxplot = boxplot_frame_groupby

pandas/core/groupby/groupby.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,12 @@ def _wrap_applied_output(self, keys, values, not_indexed_same: bool = False):
945945
raise AbstractMethodError(self)
946946

947947
def _agg_general(
948-
self, numeric_only=True, min_count=-1, *, alias: str, npfunc: Callable
948+
self,
949+
numeric_only: bool = True,
950+
min_count: int = -1,
951+
*,
952+
alias: str,
953+
npfunc: Callable,
949954
):
950955
self._set_group_selection()
951956

@@ -1463,22 +1468,22 @@ def size(self):
14631468
result = self._obj_1d_constructor(result)
14641469
return self._reindex_output(result, fill_value=0)
14651470

1466-
def sum(self, numeric_only=True, min_count=0):
1471+
def sum(self, numeric_only: bool = True, min_count: int = 0):
14671472
return self._agg_general(
14681473
numeric_only=numeric_only, min_count=min_count, alias="add", npfunc=np.sum
14691474
)
14701475

1471-
def prod(self, numeric_only=True, min_count=0):
1476+
def prod(self, numeric_only: bool = True, min_count: int = 0):
14721477
return self._agg_general(
14731478
numeric_only=numeric_only, min_count=min_count, alias="prod", npfunc=np.prod
14741479
)
14751480

1476-
def min(self, numeric_only=False, min_count=-1):
1481+
def min(self, numeric_only: bool = False, min_count: int = -1):
14771482
return self._agg_general(
14781483
numeric_only=numeric_only, min_count=min_count, alias="min", npfunc=np.min
14791484
)
14801485

1481-
def max(self, numeric_only=False, min_count=-1):
1486+
def max(self, numeric_only: bool = False, min_count: int = -1):
14821487
return self._agg_general(
14831488
numeric_only=numeric_only, min_count=min_count, alias="max", npfunc=np.max
14841489
)
@@ -1500,7 +1505,7 @@ def get_loc_notna(x, loc: int):
15001505
else:
15011506
return get_loc_notna(x, loc=loc)
15021507

1503-
def first(self, numeric_only=False, min_count=-1):
1508+
def first(self, numeric_only: bool = False, min_count: int = -1):
15041509
first_compat = partial(self._get_loc, loc=0)
15051510

15061511
return self._agg_general(
@@ -1510,7 +1515,7 @@ def first(self, numeric_only=False, min_count=-1):
15101515
npfunc=first_compat,
15111516
)
15121517

1513-
def last(self, numeric_only=False, min_count=-1):
1518+
def last(self, numeric_only: bool = False, min_count: int = -1):
15141519
last_compat = partial(self._get_loc, loc=-1)
15151520

15161521
return self._agg_general(

pandas/util/_decorators.py

Lines changed: 3 additions & 3 deletions
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-
**kwargs : 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)