docs: def check_calendar(
      feed: "Feed", *, as_df: bool = False, include_warnings: bool = False
  ) -> List:
      """
      Analog of :func:`check_agency` for ``feed.calendar``.
      """
      table = "calendar"
      problems = []
  
      # Preliminary checks
      if feed.calendar is None:
          return problems
  
      f = feed.calendar.copy()
      problems = check_for_required_columns(problems, table, f)
      if problems:
          return format_problems(problems, as_df=as_df)
  
      if include_warnings:
          problems = check_for_invalid_columns(problems, table, f)
  
      # Check service_id
      problems = check_column_id(problems, table, f, "service_id")
  
      # Check weekday columns
      v = lambda x: x in range(2)
      for col in [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday",
          "sunday",
      ]:
          problems = check_column(problems, table, f, col, v)
  
      # Check start_date and end_date
      for col in ["start_date", "end_date"]:
          problems = check_column(problems, table, f, col, valid_date)
  
      if include_warnings:
          # Check if feed has expired
          d = f["end_date"].max()
          if feed.calendar_dates is not None and not feed.calendar_dates.empty:
              table += "/calendar_dates"
              d = max(d, feed.calendar_dates["date"].max())
          if d < dt.datetime.today().strftime(DATE_FORMAT):
              problems.append(["warning", "Feed expired", table, []])
  
      return format_problems(problems, as_df=as_df)