Generate business days between two dates, taking holidays into
        consideration.

        Args:
            date1 (date, datetime or str): Date start of interval.
            date2 (date, datetime or str): Date end of interval, not included.

        Note:
            All business days between date1 (inc) and date2 (exc) are returned,
            and date2 must be bigger than date1.

        Yields:
            datetime: Business days in the specified range.

def range(self, date1, date2):
        """
        Generate business days between two dates, taking holidays into
        consideration.

        Args:
            date1 (date, datetime or str): Date start of interval.
            date2 (date, datetime or str): Date end of interval, not included.

        Note:
            All business days between date1 (inc) and date2 (exc) are returned,
            and date2 must be bigger than date1.

        Yields:
            datetime: Business days in the specified range.
        """
        date1 = self.adjust(parsefun(date1), FOLLOWING)
        date2 = parsefun(date2)

        holidays = []
        holidx = 0
        if len(self.holidays):
            index1 = bisect.bisect_left(self.holidays, date1)
            index2 = bisect.bisect_left(self.holidays, date2)
            if index2 > index1:
                holidays = self.holidays[index1:index2]

        datewk = date1.weekday()
        while date1 < date2:
            if (holidx < len(holidays)) and (holidays[holidx] == date1):
                holidx += 1
            else:
                yield date1
            date1 += datetime.timedelta(days=\
                                        self.weekdaymap[datewk].offsetnext)
            datewk = self.weekdaymap[datewk].nextworkday