docs: def check_column(
      problems: List,
      table: str,
      df: DataFrame,
      column: str,
      checker,
      type_: str = "error",
      *,
      column_required: bool = True,
  ) -> List:
      """
      Check the given column of the given GTFS with the given problem
      checker.
  
      Parameters
      ----------
      problems : list
          A four-tuple containing
  
          1. A problem type (string) equal to ``'error'`` or ``'warning'``;
             ``'error'`` means the GTFS is violated;
             ``'warning'`` means there is a problem but it is not a
             GTFS violation
          2. A message (string) that describes the problem
          3. A GTFS table name, e.g. ``'routes'``, in which the problem
             occurs
          4. A list of rows (integers) of the table's DataFrame where the
             problem occurs
  
      table : string
          Name of a GTFS table
      df : DataFrame
          The GTFS table corresponding to ``table``
      column : string
          A column of ``df``
      column_required : boolean
          ``True`` if and only if ``column`` is required
          (and not optional) by the GTFS
      checker : boolean valued unary function
          Returns ``True`` if and only if no problem is encountered
      type_ : string
          ``'error'`` or ``'warning'`` indicating the type of problem
          encountered
  
      Returns
      -------
      list
          The ``problems`` list extended as follows.
          Apply the checker to the column entries and record the indices
          of ``df`` where the checker returns ``False``.
          If the list of indices of is nonempty, append to the problems the
          item ``[type_, problem, table, indices]``; otherwise do not
          append anything.
  
          If not ``column_required``, then NaN entries will be ignored
          before applying the checker.
  
      """
      f = df.copy()
      if not column_required:
          if column not in f.columns:
              f[column] = np.nan
          f = f.dropna(subset=[column])
  
      cond = ~f[column].map(checker)
      problems = check_table(
          problems,
          table,
          f,
          cond,
          f"Invalid {column}; maybe has extra space characters",
          type_,
      )
  
      return problems