'Break an iterable into chunks of at most size `chunk_at`,
generating lists for each chunk.'

def isplitter(self, items, chunk_at):

    iterable = iter(items)
    while True:
        result = []
        for i in range(chunk_at):
            try:
                a = next(iterable)
            except StopIteration:
                break
            else:
                result.append(a)
        if result:
            (yield result)
        else:
            break
