@@ -559,7 +559,8 @@ class groupby(object):
559
559
def __init__ (self , iterable , key = None ):
560
560
self ._iterator = iter (iterable )
561
561
self ._keyfunc = key
562
- self ._tgtkey = self ._currkey = self ._currvalue = None
562
+ self ._marker = object ()
563
+ self ._tgtkey = self ._currkey = self ._currvalue = self ._marker
563
564
564
565
@__graalpython__ .builtin_method
565
566
def __iter__ (self ):
@@ -569,15 +570,15 @@ def __iter__(self):
569
570
def __next__ (self ):
570
571
self ._skip_to_next_iteration_group ()
571
572
key = self ._tgtkey = self ._currkey
572
- grouper = _groupby (self , key )
573
+ grouper = _grouper (self , key )
573
574
return (key , grouper )
574
575
575
576
@__graalpython__ .builtin_method
576
577
def _skip_to_next_iteration_group (self ):
577
578
while True :
578
- if self ._currkey is None :
579
+ if self ._currkey is self . _marker :
579
580
pass
580
- elif self ._tgtkey is None :
581
+ elif self ._tgtkey is self . _marker :
581
582
break
582
583
else :
583
584
if not self ._tgtkey == self ._currkey :
@@ -593,11 +594,12 @@ def _skip_to_next_iteration_group(self):
593
594
self ._currvalue = newvalue
594
595
595
596
596
- class _groupby ():
597
+ class _grouper ():
597
598
@__graalpython__ .builtin_method
598
599
def __init__ (self , groupby , tgtkey ):
599
600
self .groupby = groupby
600
601
self .tgtkey = tgtkey
602
+ self ._marker = groupby ._marker
601
603
602
604
@__graalpython__ .builtin_method
603
605
def __iter__ (self ):
@@ -606,22 +608,22 @@ def __iter__(self):
606
608
@__graalpython__ .builtin_method
607
609
def __next__ (self ):
608
610
groupby = self .groupby
609
- if groupby ._currvalue is None :
611
+ if groupby ._currvalue is self . _marker :
610
612
newvalue = next (groupby ._iterator )
611
613
if groupby ._keyfunc is None :
612
614
newkey = newvalue
613
615
else :
614
616
newkey = groupby ._keyfunc (newvalue )
615
- assert groupby ._currvalue is None
617
+ assert groupby ._currvalue is self . _marker
616
618
groupby ._currkey = newkey
617
619
groupby ._currvalue = newvalue
618
620
619
- assert groupby ._currkey is not None
621
+ assert groupby ._currkey is not self . _marker
620
622
if not self .tgtkey == groupby ._currkey :
621
623
raise StopIteration (None )
622
624
result = groupby ._currvalue
623
- groupby ._currvalue = None
624
- groupby ._currkey = None
625
+ groupby ._currvalue = self . _marker
626
+ groupby ._currkey = self . _marker
625
627
return result
626
628
627
629
0 commit comments