def chunks(iterable, length=2, fill=False, filler=None, drop_incomplete=True):
"""Iterate through iterable in chunks"""
iterable = iter(iterable)
while True:
data = tuple(itertools.islice(iterable, length))
if len(data) == length:
yield data
else:
if fill:
data += tuple(filler for _ in xrange(length - len(data)))
yield data
elif not drop_incomplete:
yield data
return