docs: def get_dates(feed: "Feed", *, as_date_obj: bool = False) -> List[str]:
      """
      Return a list of dates for which the given "Feed" is valid, which
      could be the empty list if the "Feed" has no calendar information.
  
      Parameters
      ----------
      feed : "Feed"
      as_date_obj : boolean
          If ``True``, then return the dates as ``datetime.date`` objects;
          otherwise return them as strings
  
      Returns
      -------
      list
          Dates
  
      """
      dates = []
      if feed.calendar is not None and not feed.calendar.empty:
          if "start_date" in feed.calendar.columns:
              dates.append(feed.calendar["start_date"].min())
          if "end_date" in feed.calendar.columns:
              dates.append(feed.calendar["end_date"].max())
      if feed.calendar_dates is not None and not feed.calendar_dates.empty:
          if "date" in feed.calendar_dates.columns:
              start = feed.calendar_dates["date"].min()
              end = feed.calendar_dates["date"].max()
              dates.extend([start, end])
      if not dates:
          return []
  
      start_date, end_date = min(dates), max(dates)
      start_date, end_date = map(hp.datestr_to_date, [start_date, end_date])
      num_days = (end_date - start_date).days
      result = [
          start_date + rd.relativedelta(days=+d) for d in range(num_days + 1)
      ]
  
      # Convert dates back to strings if required
      if not as_date_obj:
          result = [hp.datestr_to_date(x, inverse=True) for x in result]
  
      return result