code: def columnize(
      items,
      row_first=False,
      separator="  ",
      displaywidth=80,
      spread=False,
  ):
      """Transform a list of strings into a single string with columns.
  
      Parameters
      ----------
      items : sequence of strings
          The strings to process.
      row_first : (default False)
          Whether to compute columns for a row-first matrix instead of
          column-first (default).
      separator : str, optional [default is two spaces]
          The string that separates columns.
      displaywidth : int, optional [default is 80]
          Width of the display in number of characters.
  
      Returns
      -------
      The formatted string.
      """
      warnings.warn(
          "`columnize` is Pending Deprecation since IPython 8.17."
          "It is considered fro removal in in future version. "
          "Please open an issue if you believe it should be kept.",
          stacklevel=2,
          category=PendingDeprecationWarning,
      )
      if not items:
          return "\n"
      matrix: List[List[int]]
      matrix, info = compute_item_matrix(
          items,
          row_first=row_first,
          separator_size=len(separator),
          displaywidth=displaywidth,
      )
      if spread:
          separator = separator.ljust(
              int(info["optimal_separator_width"])
          )
      fmatrix: List[filter[int]] = [filter(None, x) for x in matrix]
      sjoin = lambda x: separator.join(
          [y.ljust(w, " ") for y, w in zip(x, info["column_widths"])]
      )
      return "\n".join(map(sjoin, fmatrix)) + "\n"
  
imports: import os
  import re
  import string
  import sys
  import textwrap
  import warnings
  from string import Formatter
  from pathlib import Path
  from typing import List, Union, Optional, Dict, Tuple
label_desc: Use image node_id 14 for calling a global function with example usage: columnize(items, row_first, separator, displaywidth, spread) and returns: unknown, str