Skip to content

Commit 385a667

Browse files
authored
REF/API: dont alter Grouper in _get_grouper (#51145)
1 parent 6ccde9d commit 385a667

File tree

3 files changed

+10
-16
lines changed

3 files changed

+10
-16
lines changed

pandas/core/groupby/grouper.py

+8-14
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
from typing import (
88
TYPE_CHECKING,
9-
Any,
109
Hashable,
1110
Iterator,
11+
cast,
1212
final,
1313
)
1414

@@ -286,7 +286,7 @@ def ax(self) -> Index:
286286

287287
def _get_grouper(
288288
self, obj: NDFrameT, validate: bool = True
289-
) -> tuple[Any, ops.BaseGrouper, NDFrameT]:
289+
) -> tuple[ops.BaseGrouper, NDFrameT]:
290290
"""
291291
Parameters
292292
----------
@@ -296,15 +296,11 @@ def _get_grouper(
296296
297297
Returns
298298
-------
299-
a tuple of binner, grouper, obj (possibly sorted)
299+
a tuple of grouper, obj (possibly sorted)
300300
"""
301301
self._set_grouper(obj)
302-
# error: Value of type variable "NDFrameT" of "get_grouper" cannot be
303-
# "Optional[Any]"
304-
# error: Incompatible types in assignment (expression has type "BaseGrouper",
305-
# variable has type "None")
306-
self.grouper, _, self.obj = get_grouper( # type: ignore[type-var,assignment]
307-
self.obj,
302+
grouper, _, obj = get_grouper(
303+
cast(NDFrameT, self.obj),
308304
[self.key],
309305
axis=self.axis,
310306
level=self.level,
@@ -313,9 +309,7 @@ def _get_grouper(
313309
dropna=self.dropna,
314310
)
315311

316-
# error: Incompatible return value type (got "Tuple[None, None, None]",
317-
# expected "Tuple[Any, BaseGrouper, NDFrameT]")
318-
return self.binner, self.grouper, self.obj # type: ignore[return-value]
312+
return grouper, obj
319313

320314
@final
321315
def _set_grouper(self, obj: NDFrame, sort: bool = False) -> None:
@@ -506,7 +500,7 @@ def __init__(
506500
# check again as we have by this point converted these
507501
# to an actual value (rather than a pd.Grouper)
508502
assert self.obj is not None # for mypy
509-
_, newgrouper, newobj = self.grouping_vector._get_grouper(
503+
newgrouper, newobj = self.grouping_vector._get_grouper(
510504
self.obj, validate=False
511505
)
512506
self.obj = newobj
@@ -814,7 +808,7 @@ def get_grouper(
814808

815809
# a passed-in Grouper, directly convert
816810
if isinstance(key, Grouper):
817-
binner, grouper, obj = key._get_grouper(obj, validate=False)
811+
grouper, obj = key._get_grouper(obj, validate=False)
818812
if key.key is None:
819813
return grouper, frozenset(), obj
820814
else:

pandas/core/resample.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1691,7 +1691,7 @@ def _get_resampler(self, obj, kind=None):
16911691
def _get_grouper(self, obj, validate: bool = True):
16921692
# create the resampler and return our binner
16931693
r = self._get_resampler(obj)
1694-
return r.binner, r.grouper, r.obj
1694+
return r.grouper, r.obj
16951695

16961696
def _get_time_bins(self, ax: DatetimeIndex):
16971697
if not isinstance(ax, DatetimeIndex):

pandas/tests/resample/test_time_grouper.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def test_apply_iteration():
6464
df = DataFrame({"open": 1, "close": 2}, index=ind)
6565
tg = Grouper(freq="M")
6666

67-
_, grouper, _ = tg._get_grouper(df)
67+
grouper, _ = tg._get_grouper(df)
6868

6969
# Errors
7070
grouped = df.groupby(grouper, group_keys=False)

0 commit comments

Comments
 (0)