docs: def check_meta(pfeed, *, as_df=False, include_warnings=False):
      """
      Analog of :func:`check_frequencies` for ``pfeed.meta``
      """
      table = 'meta'
      problems = []
  
      # Preliminary checks
      if pfeed.meta is None:
          problems.append(['error', 'Missing table', table, []])
      else:
          f = pfeed.meta.copy()
          problems = check_for_required_columns(problems, table, f)
      if problems:
          return gt.format_problems(problems, as_df=as_df)
  
      if include_warnings:
          problems = check_for_invalid_columns(problems, table, f)
  
      if f.shape[0] > 1:
          problems.append(['error', 'Meta must have only one row',
            table, list(range(1, f.shape[0]))])
  
      # Check agency_name
      problems = gt.check_column(problems, table, f, 'agency_name', gt.valid_str)
  
      # Check agency_url
      problems = gt.check_column(problems, table, f, 'agency_url', gt.valid_url)
  
      # Check agency_timezone
      problems = gt.check_column(problems, table, f, 'agency_timezone',
        gt.valid_timezone)
  
      # Check start_date and end_date
      for col in ['start_date', 'end_date']:
          problems = gt.check_column(problems, table, f, col, gt.valid_date)
  
      # Check default_route_speed
      problems = gt.check_column(problems, table, f, 'default_route_speed',
        valid_speed)
  
      return gt.format_problems(problems, as_df=as_df)