code: def _format_table(fmt, headers, rows, colwidths, colaligns, is_multiline):
      
      lines = []
      hidden = fmt.with_header_hide if (headers and fmt.with_header_hide) else []
      pad = fmt.padding
      headerrow = fmt.headerrow
  
      padded_widths = [(w + 2 * pad) for w in colwidths]
      if is_multiline:
          pad_row = lambda row, _: row  # do it later, in _append_multiline_row
          append_row = partial(_append_multiline_row, pad=pad)
      else:
          pad_row = _pad_row
          append_row = _append_basic_row
  
      padded_headers = pad_row(headers, pad)
      padded_rows = [pad_row(row, pad) for row in rows]
  
      if fmt.lineabove and "lineabove" not in hidden:
          _append_line(lines, padded_widths, colaligns, fmt.lineabove)
  
      if padded_headers:
          append_row(lines, padded_headers, padded_widths, colaligns, headerrow)
          if fmt.linebelowheader and "linebelowheader" not in hidden:
              _append_line(lines, padded_widths, colaligns, fmt.linebelowheader)
  
      if padded_rows and fmt.linebetweenrows and "linebetweenrows" not in hidden:
          # initial rows with a line below
          for row in padded_rows[:-1]:
              append_row(lines, row, padded_widths, colaligns, fmt.datarow)
              _append_line(lines, padded_widths, colaligns, fmt.linebetweenrows)
          # the last row without a line below
          append_row(lines, padded_rows[-1], padded_widths, colaligns, fmt.datarow)
      else:
          for row in padded_rows:
              append_row(lines, row, padded_widths, colaligns, fmt.datarow)
  
      if fmt.linebelow and "linebelow" not in hidden:
          _append_line(lines, padded_widths, colaligns, fmt.linebelow)
  
      return "\n".join(lines)
docs: Produce a plain-text representation of the table.