def generate_range(start=None, end=None, periods=None, offset=BDay()):
    """
    Generates a sequence of dates corresponding to the specified time
    offset. Similar to dateutil.rrule except uses pandas DateOffset
    objects to represent time increments.

    Parameters
    ----------
    start : datetime (default None)
    end : datetime (default None)
    periods : int, (default None)
    offset : DateOffset, (default BDay())

    Notes
    -----
    * This method is faster for generating weekdays than dateutil.rrule
    * At least two of (start, end, periods) must be specified.
    * If both start and end are specified, the returned dates will
    satisfy start <= date <= end.

    Returns
    -------
    dates : generator object
    """
    from pandas.tseries.frequencies import to_offset
    offset = to_offset(offset)

    start = to_datetime(start)
    end = to_datetime(end)

    if start and not offset.onOffset(start):
        start = offset.rollforward(start)

    elif end and not offset.onOffset(end):
        end = offset.rollback(end)

    if periods is None and end < start and offset.n >= 0:
        end = None
        periods = 0

    if end is None:
        end = start + (periods - 1) * offset

    if start is None:
        start = end - (periods - 1) * offset

    cur = start
    if offset.n >= 0:
        while cur <= end:
            yield cur

            # faster than cur + offset
            next_date = offset.apply(cur)
            if next_date <= cur:
                raise ValueError('Offset {offset} did not increment date'
                                 .format(offset=offset))
            cur = next_date
    else:
        while cur >= end:
            yield cur

            # faster than cur + offset
            next_date = offset.apply(cur)
            if next_date >= cur:
                raise ValueError('Offset {offset} did not decrement date'
                                 .format(offset=offset))
            cur = next_date
def generate_range ( start = None , end = None , periods = None , offset = BDay ( ) ) : from pandas . tseries . frequencies import to_offset offset = to_offset ( offset ) start = to_datetime ( start ) end = to_datetime ( end ) if start and not offset . onOffset ( start ) : start = offset . rollforward ( start ) elif end and not offset . onOffset ( end ) : end = offset . rollback ( end ) if periods is None and end < start and offset . n >= 0 : end = None periods = 0 if end is None : end = start + ( periods - 1 ) * offset if start is None : start = end - ( periods - 1 ) * offset cur = start if offset . n >= 0 : while cur <= end : yield cur next_date = offset . apply ( cur ) if next_date <= cur : raise ValueError ( 'Offset {offset} did not increment date' . format ( offset = offset ) ) cur = next_date else : while cur >= end : yield cur next_date = offset . apply ( cur ) if next_date >= cur : raise ValueError ( 'Offset {offset} did not decrement date' . format ( offset = offset ) ) cur = next_date
Generates a sequence of dates corresponding to the specified time
    offset. Similar to dateutil.rrule except uses pandas DateOffset
    objects to represent time increments.

    Parameters
    ----------
    start : datetime (default None)
    end : datetime (default None)
    periods : int, (default None)
    offset : DateOffset, (default BDay())

    Notes
    -----
    * This method is faster for generating weekdays than dateutil.rrule
    * At least two of (start, end, periods) must be specified.
    * If both start and end are specified, the returned dates will
    satisfy start <= date <= end.

    Returns
    -------
    dates : generator object