code: def fetch(self):
          
          tlen = self.end - self.start
          dfs = []
  
          # Build list of all dates within the given range
          lrange = [x for x in (self.start + timedelta(n)
                                for n in range(tlen.days))]
  
          mrange = []
          for dt in lrange:
              if datetime(dt.year, dt.month, 1) not in mrange:
                  mrange.append(datetime(dt.year, dt.month, 1))
          lrange = mrange
  
          for date in lrange:
              self.curr_date = date
              tdf = super(MonthlySummaryReader, self).fetch()
  
              # We may not return data if this was a weekend/holiday:
              if self.output_format == 'pandas':
                  if not tdf.empty:
                      tdf['date'] = date.strftime(self.date_format)
              dfs.append(tdf)
  
          # We may not return any data if we failed to specify useful parameters:
          if self.output_format == 'pandas':
              result = pd.concat(dfs) if len(dfs) > 0 else pd.DataFrame()
              return result.set_index('date')
          else:
              return dfs
docs: Unfortunately, IEX's API can only retrieve data one day or one month
           at a time. Rather than specifying a date range, we will have to run
           the read function for each date provided.
  
          :return: DataFrame