code: def holidays(self, start=None, end=None, return_name=False):
          
          if self.rules is None:
              raise Exception('Holiday Calendar {name} does not have any '
                              'rules specified'.format(name=self.name))
  
          if start is None:
              start = AbstractHolidayCalendar.start_date
  
          if end is None:
              end = AbstractHolidayCalendar.end_date
  
          start = Timestamp(start)
          end = Timestamp(end)
  
          holidays = None
          # If we don't have a cache or the dates are outside the prior cache, we
          # get them again
          if (self._cache is None or start < self._cache[0] or
                  end > self._cache[1]):
              for rule in self.rules:
                  rule_holidays = rule.dates(start, end, return_name=True)
  
                  if holidays is None:
                      holidays = rule_holidays
                  else:
                      holidays = holidays.append(rule_holidays)
  
              self._cache = (start, end, holidays.sort_index())
  
          holidays = self._cache[2]
          holidays = holidays[start:end]
  
          if return_name:
              return holidays
          else:
              return holidays.index
docs: Returns a curve with holidays between start_date and end_date
  
          Parameters
          ----------
          start : starting date, datetime-like, optional
          end : ending date, datetime-like, optional
          return_name : bool, optional
              If True, return a series that has dates and holiday names.
              False will only return a DatetimeIndex of dates.
  
          Returns
          -------
              DatetimeIndex of holidays