from datetime import timedelta
def daterange(begin, end, delta = timedelta(1)):
"""Form a range of dates and iterate over them.
Arguments:
begin -- a date (or datetime) object; the beginning of the range.
end -- a date (or datetime) object; the end of the range.
delta -- (optional) a timedelta object; how much to step each iteration.
Default step is 1 day.
Usage:
"""
if not isinstance(delta, timedelta):
delta = timedelta(delta)
ZERO = timedelta(0)
if begin < end:
if delta <= ZERO:
raise StopIteration
test = end.__gt__
else:
if delta >= ZERO:
raise StopIteration
test = end.__lt__
while test(begin):
yield begin
begin += delta