code: def make_table(contents, headers=None):
      """Given a numpy ndarray of strings, concatenate them into a html table.
  
      Args:
        contents: A np.ndarray of strings. May be 1d or 2d. In the 1d case, the
          table is laid out vertically (i.e. row-major).
        headers: A np.ndarray or list of string header names for the table.
  
      Returns:
        A string containing all of the content strings, organized into a table.
  
      Raises:
        ValueError: If contents is not a np.ndarray.
        ValueError: If contents is not 1d or 2d.
        ValueError: If contents is empty.
        ValueError: If headers is present and not a list, tuple, or ndarray.
        ValueError: If headers is not 1d.
        ValueError: If number of elements in headers does not correspond to number
          of columns in contents.
      """
      if not isinstance(contents, np.ndarray):
          raise ValueError(
              "make_table contents must be a numpy ndarray"
          )
  
      if contents.ndim not in [1, 2]:
          raise ValueError(
              "make_table requires a 1d or 2d numpy array, was %dd"
              % contents.ndim
          )
  
      if headers:
          if isinstance(headers, (list, tuple)):
              headers = np.array(headers)
          if not isinstance(headers, np.ndarray):
              raise ValueError(
                  "Could not convert headers %s into np.ndarray"
                  % headers
              )
          if headers.ndim != 1:
              raise ValueError(
                  "Headers must be 1d, is %dd" % headers.ndim
              )
          expected_n_columns = (
              contents.shape[1] if contents.ndim == 2 else 1
          )
          if headers.shape[0] != expected_n_columns:
              raise ValueError(
                  "Number of headers %d must match number of columns %d"
                  % (headers.shape[0], expected_n_columns)
              )
          header = "<thead>\n%s</thead>\n" % make_table_row(
              headers, tag="th"
          )
      else:
          header = ""
  
      n_rows = contents.shape[0]
      if contents.ndim == 1:
          # If it's a vector, we need to wrap each element in a new list, otherwise
          # we would turn the string itself into a row (see test code)
          rows = (make_table_row([contents[i]]) for i in range(n_rows))
      else:
          rows = (make_table_row(contents[i, :]) for i in range(n_rows))
  
      return "<table>\n%s<tbody>\n%s</tbody>\n</table>" % (
          header,
          "".join(rows),
      )
  
imports: import textwrap
  import numpy
  from werkzeug import wrappers
  from tensorboard import plugin_util
  from tensorboard.backend import http_util
  from tensorboard.data import provider
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.text import metadata
label_desc: Use image node_id 2 for calling a global function with example usage: make_table(contents, headers) and returns: unknown