@@ -295,12 +295,12 @@ def _apply_loffset(
295
295
296
296
class Grouper :
297
297
def __init__ (self , group : T_Group ):
298
- self .group = group
299
- self .codes = None
298
+ self .group : T_Group | None = group
299
+ self .codes : np . ndarry | None = None
300
300
self .labels = None
301
- self .group_indices = None
301
+ self .group_indices : list [ list [ int , ...]] | None = None
302
302
self .unique_coord = None
303
- self .full_index = None
303
+ self .full_index : pd . Index | None = None
304
304
self ._group_as_index = None
305
305
306
306
@property
@@ -334,9 +334,10 @@ def group_as_index(self) -> pd.Index:
334
334
self ._group_as_index = safe_cast_to_index (self .group1d )
335
335
return self ._group_as_index
336
336
337
- def _resolve_group (self , obj ) -> None :
337
+ def _resolve_group (self , obj : T_DataArray | T_Dataset ) -> None :
338
338
from xarray .core .dataarray import DataArray
339
339
340
+ group : T_Group
340
341
group = self .group
341
342
if not isinstance (group , (DataArray , IndexVariable )):
342
343
if not hashable (group ):
@@ -345,11 +346,11 @@ def _resolve_group(self, obj) -> None:
345
346
"name of an xarray variable or dimension. "
346
347
f"Received { group !r} instead."
347
348
)
348
- group = obj [group ]
349
- if len (group ) == 0 :
350
- raise ValueError (f"{ group .name } must not be empty" )
349
+ group_da : T_DataArray = obj [group ]
350
+ if len (group_da ) == 0 :
351
+ raise ValueError (f"{ group_da .name } must not be empty" )
351
352
352
- if group .name not in obj .coords and group .name in obj .dims :
353
+ if group_da .name not in obj .coords and group_da .name in obj .dims :
353
354
# DummyGroups should not appear on groupby results
354
355
group = _DummyGroup (obj , group .name , group .coords )
355
356
0 commit comments