docs: def check_column_id(
      problems: List,
      table: str,
      df: DataFrame,
      column: str,
      *,
      column_required: bool = True,
  ) -> List:
      """
      A specialization of :func:`check_column`.
  
      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
  
      Returns
      -------
      list
          The ``problems`` list extended as follows.
          Record the indices of ``df`` where the given column has
          duplicated entry or an invalid strings.
          If the list of indices 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
          in the checking.
  
      """
      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(valid_str)
      problems = check_table(
          problems,
          table,
          f,
          cond,
          f"Invalid {column}; maybe has extra space characters",
      )
  
      cond = f[column].duplicated()
      problems = check_table(problems, table, f, cond, f"Repeated {column}")
  
      return problems