'Returns a list of dates between the interval received as parameter using this
dag\'s schedule interval. Returned dates can be used for execution dates.
:param start_date: the start date of the interval
:type start_date: datetime
:param end_date: the end date of the interval, defaults to datetime.now()
:type end_date: datetime
:return: a list of dates within the interval following the dag\'s schedule
:rtype: list'

def get_run_dates(self, start_date, end_date=None):

    run_dates = []
    using_start_date = start_date
    using_end_date = end_date
    using_start_date = (using_start_date or min([t.start_date for t in self.tasks]))
    using_end_date = (using_end_date or datetime.now())
    next_run_date = (self.normalize_schedule(using_start_date) if (not self.is_subdag) else using_start_date)
    while (next_run_date and (next_run_date <= using_end_date)):
        run_dates.append(next_run_date)
        next_run_date = self.following_schedule(next_run_date)
    return run_dates
