class_docstr: Abstract interface to create holidays following certain rules.
class_docstr_tok: ["Abstract","interface","to","create","holidays","following","certain","rules","."]
docstr: 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
docstr_tok: ["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"]
code: def holidays(self, start=None, end=None, return_name=False):
      """
      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
      """
      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
  
imports: from datetime import datetime, timedelta
  import warnings
  from dateutil.relativedelta import FR, MO, SA, SU, TH, TU, WE
  import numpy
  from pandas.compat import add_metaclass
  from pandas.errors import PerformanceWarning
  from pandas import DateOffset, Series, Timestamp, date_range
  from pandas.tseries.offsets import Day, Easter
label_desc: Use image node_id 3 for calling the AbstractHolidayCalendar obj's underlying member method code with example usage: obj.holidays(start, end, return_name) and returns: holidays, holidays