Skip to content

Commit 8468be0

Browse files
dcherianIllviljan
andauthored
Refactor Grouper objects (#8776)
* Refactor resampling. 1. Rename to Resampler from ResampleGrouper 2. Move code from common.resample to TimeResampler * Single Grouper class * Fixes * Fixes * Add comments. * Apply suggestions from code review Co-authored-by: Illviljan <[email protected]> * Review feedback * fix --------- Co-authored-by: Illviljan <[email protected]>
1 parent cb09522 commit 8468be0

File tree

4 files changed

+209
-152
lines changed

4 files changed

+209
-152
lines changed

xarray/core/common.py

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
from xarray.core.utils import (
1717
Frozen,
1818
either_dict_or_kwargs,
19-
emit_user_level_warning,
2019
is_scalar,
2120
)
2221
from xarray.namedarray.core import _raise_if_any_duplicate_dimensions
@@ -1050,8 +1049,7 @@ def _resample(
10501049
# TODO support non-string indexer after removing the old API.
10511050

10521051
from xarray.core.dataarray import DataArray
1053-
from xarray.core.groupby import ResolvedTimeResampleGrouper, TimeResampleGrouper
1054-
from xarray.core.pdcompat import _convert_base_to_offset
1052+
from xarray.core.groupby import ResolvedGrouper, TimeResampler
10551053
from xarray.core.resample import RESAMPLE_DIM
10561054

10571055
# note: the second argument (now 'skipna') use to be 'dim'
@@ -1074,44 +1072,24 @@ def _resample(
10741072
dim_name: Hashable = dim
10751073
dim_coord = self[dim]
10761074

1077-
if loffset is not None:
1078-
emit_user_level_warning(
1079-
"Following pandas, the `loffset` parameter to resample is deprecated. "
1080-
"Switch to updating the resampled dataset time coordinate using "
1081-
"time offset arithmetic. For example:\n"
1082-
" >>> offset = pd.tseries.frequencies.to_offset(freq) / 2\n"
1083-
' >>> resampled_ds["time"] = resampled_ds.get_index("time") + offset',
1084-
FutureWarning,
1085-
)
1086-
1087-
if base is not None:
1088-
emit_user_level_warning(
1089-
"Following pandas, the `base` parameter to resample will be deprecated in "
1090-
"a future version of xarray. Switch to using `origin` or `offset` instead.",
1091-
FutureWarning,
1092-
)
1093-
1094-
if base is not None and offset is not None:
1095-
raise ValueError("base and offset cannot be present at the same time")
1096-
1097-
if base is not None:
1098-
index = self._indexes[dim_name].to_pandas_index()
1099-
offset = _convert_base_to_offset(base, freq, index)
1075+
group = DataArray(
1076+
dim_coord,
1077+
coords=dim_coord.coords,
1078+
dims=dim_coord.dims,
1079+
name=RESAMPLE_DIM,
1080+
)
11001081

1101-
grouper = TimeResampleGrouper(
1082+
grouper = TimeResampler(
11021083
freq=freq,
11031084
closed=closed,
11041085
label=label,
11051086
origin=origin,
11061087
offset=offset,
11071088
loffset=loffset,
1089+
base=base,
11081090
)
11091091

1110-
group = DataArray(
1111-
dim_coord, coords=dim_coord.coords, dims=dim_coord.dims, name=RESAMPLE_DIM
1112-
)
1113-
1114-
rgrouper = ResolvedTimeResampleGrouper(grouper, group, self)
1092+
rgrouper = ResolvedGrouper(grouper, group, self)
11151093

11161094
return resample_cls(
11171095
self,

xarray/core/dataarray.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6704,13 +6704,13 @@ def groupby(
67046704
"""
67056705
from xarray.core.groupby import (
67066706
DataArrayGroupBy,
6707-
ResolvedUniqueGrouper,
6707+
ResolvedGrouper,
67086708
UniqueGrouper,
67096709
_validate_groupby_squeeze,
67106710
)
67116711

67126712
_validate_groupby_squeeze(squeeze)
6713-
rgrouper = ResolvedUniqueGrouper(UniqueGrouper(), group, self)
6713+
rgrouper = ResolvedGrouper(UniqueGrouper(), group, self)
67146714
return DataArrayGroupBy(
67156715
self,
67166716
(rgrouper,),
@@ -6789,7 +6789,7 @@ def groupby_bins(
67896789
from xarray.core.groupby import (
67906790
BinGrouper,
67916791
DataArrayGroupBy,
6792-
ResolvedBinGrouper,
6792+
ResolvedGrouper,
67936793
_validate_groupby_squeeze,
67946794
)
67956795

@@ -6803,7 +6803,7 @@ def groupby_bins(
68036803
"include_lowest": include_lowest,
68046804
},
68056805
)
6806-
rgrouper = ResolvedBinGrouper(grouper, group, self)
6806+
rgrouper = ResolvedGrouper(grouper, group, self)
68076807

68086808
return DataArrayGroupBy(
68096809
self,

xarray/core/dataset.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10179,13 +10179,13 @@ def groupby(
1017910179
"""
1018010180
from xarray.core.groupby import (
1018110181
DatasetGroupBy,
10182-
ResolvedUniqueGrouper,
10182+
ResolvedGrouper,
1018310183
UniqueGrouper,
1018410184
_validate_groupby_squeeze,
1018510185
)
1018610186

1018710187
_validate_groupby_squeeze(squeeze)
10188-
rgrouper = ResolvedUniqueGrouper(UniqueGrouper(), group, self)
10188+
rgrouper = ResolvedGrouper(UniqueGrouper(), group, self)
1018910189

1019010190
return DatasetGroupBy(
1019110191
self,
@@ -10265,7 +10265,7 @@ def groupby_bins(
1026510265
from xarray.core.groupby import (
1026610266
BinGrouper,
1026710267
DatasetGroupBy,
10268-
ResolvedBinGrouper,
10268+
ResolvedGrouper,
1026910269
_validate_groupby_squeeze,
1027010270
)
1027110271

@@ -10279,7 +10279,7 @@ def groupby_bins(
1027910279
"include_lowest": include_lowest,
1028010280
},
1028110281
)
10282-
rgrouper = ResolvedBinGrouper(grouper, group, self)
10282+
rgrouper = ResolvedGrouper(grouper, group, self)
1028310283

1028410284
return DatasetGroupBy(
1028510285
self,

0 commit comments

Comments
 (0)