Django

Code

Show
Ignore:
Timestamp:
06/18/07 11:43:17 (2 years ago)
Author:
bouldersprinters
Message:

boulder-oracle-sprint: Merged to [5490]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/boulder-oracle-sprint/django/utils/itercompat.py

    r4279 r5491  
    88 
    99def compat_tee(iterable): 
    10     """Return two independent iterators from a single iterable. 
     10    """ 
     11    Return two independent iterators from a single iterable. 
    1112 
    1213    Based on http://www.python.org/doc/2.3.5/lib/itertools-example.html 
     
    2627    return gen(next), gen(next) 
    2728 
     29def groupby(iterable, keyfunc=None): 
     30    """ 
     31    Taken from http://docs.python.org/lib/itertools-functions.html 
     32    """ 
     33    if keyfunc is None: 
     34        keyfunc = lambda x:x 
     35    iterable = iter(iterable) 
     36    l = [iterable.next()] 
     37    lastkey = keyfunc(l) 
     38    for item in iterable: 
     39        key = keyfunc(item) 
     40        if key != lastkey: 
     41            yield lastkey, l 
     42            lastkey = key 
     43            l = [item] 
     44        else: 
     45            l.append(item) 
     46    yield lastkey, l 
     47 
    2848if hasattr(itertools, 'tee'): 
    2949    tee = itertools.tee 
    3050else: 
    3151    tee = compat_tee 
     52if hasattr(itertools, 'groupby'): 
     53    groupby = itertools.groupby