def split_at(it, split_value):
def _chunk_iterator(first):<EOL><INDENT>v = first<EOL>while v != split_value:<EOL><INDENT>yield v<EOL>v = next(it)<EOL><DEDENT><DEDENT>while True:<EOL><INDENT>yield _chunk_iterator(next(it))<EOL><DEDENT>
Splits an iterator C{it} at values of C{split_value}. 

    Each instance of C{split_value} is swallowed. The iterator produces
    subiterators which need to be consumed fully before the next subiterator
    can be used.