24
24
from xarray .core .groupby import T_Group , _DummyGroup
25
25
from xarray .core .indexes import safe_cast_to_index
26
26
from xarray .core .resample_cftime import CFTimeGrouper
27
+ from xarray .core .toolzcompat import sliding_window
27
28
from xarray .core .types import (
28
29
Bins ,
29
30
DatetimeLike ,
30
31
GroupIndices ,
31
32
ResampleCompatible ,
32
33
SideOptions ,
33
34
)
34
- from xarray .core .toolzcompat import sliding_window
35
35
from xarray .core .variable import Variable
36
36
37
37
__all__ = [
@@ -495,7 +495,7 @@ def season_to_month_tuple(seasons: Sequence[str]) -> tuple[tuple[int, ...], ...]
495
495
initials = "JFMAMJJASOND"
496
496
starts = dict (
497
497
("" .join (s ), i + 1 )
498
- for s , i in zip (sliding_window (2 , initials + "J" ), range (12 ))
498
+ for s , i in zip (sliding_window (2 , initials + "J" ), range (12 ), strict = False )
499
499
)
500
500
result : list [tuple [int , ...]] = []
501
501
for i , season in enumerate (seasons ):
@@ -602,7 +602,7 @@ class SeasonResampler(Resampler):
602
602
603
603
def __post_init__ (self ):
604
604
self .season_inds = season_to_month_tuple (self .seasons )
605
- self .season_tuples = dict (zip (self .seasons , self .season_inds ))
605
+ self .season_tuples = dict (zip (self .seasons , self .season_inds , strict = False ))
606
606
607
607
def factorize (self , group ):
608
608
if group .ndim != 1 :
@@ -624,7 +624,7 @@ def factorize(self, group):
624
624
season_label = np .full (group .shape , "" , dtype = f"U{ nstr } " )
625
625
626
626
# offset years for seasons with December and January
627
- for season_str , season_ind in zip (seasons , season_inds ):
627
+ for season_str , season_ind in zip (seasons , season_inds , strict = False ):
628
628
season_label [month .isin (season_ind )] = season_str
629
629
if "DJ" in season_str :
630
630
after_dec = season_ind [season_str .index ("D" ) + 1 :]
@@ -651,14 +651,16 @@ def factorize(self, group):
651
651
)
652
652
653
653
sbins = first_items .values .astype (int )
654
- group_indices = [slice (i , j ) for i , j in zip (sbins [:- 1 ], sbins [1 :])]
654
+ group_indices = [
655
+ slice (i , j ) for i , j in zip (sbins [:- 1 ], sbins [1 :], strict = False )
656
+ ]
655
657
group_indices += [slice (sbins [- 1 ], None )]
656
658
657
659
# Make sure the first and last timestamps
658
660
# are for the correct months,if not we have incomplete seasons
659
661
unique_codes = np .arange (len (unique_coord ))
660
662
if self .drop_incomplete :
661
- for idx , slicer in zip ([0 , - 1 ], (slice (1 , None ), slice (- 1 ))):
663
+ for idx , slicer in zip ([0 , - 1 ], (slice (1 , None ), slice (- 1 )), strict = False ):
662
664
stamp_year , stamp_season = frame .index [idx ]
663
665
code = seasons .index (stamp_season )
664
666
stamp_month = season_inds [code ][idx ]
0 commit comments