class_docstr: The ``Logger`` class is the ClearML console log and metric statistics interface, and contains methods for explicit
  reporting.
  
  Explicit reporting extends ClearML automagical capturing of inputs and output. Explicit reporting
  methods include scalar plots, line plots, histograms, confusion matrices, 2D and 3D scatter
  diagrams, text logging, tables, and image uploading and reporting.
  
  In the **ClearML Web-App (UI)**, ``Logger`` output appears in the **RESULTS** tab, **CONSOLE**, **SCALARS**,
  **PLOTS**, and **DEBUG SAMPLES** sub-tabs. When you compare experiments, ``Logger`` output appears in the
  comparisons.
  
  .. warning::
  
     Do not construct Logger objects directly.
  
  You must get a Logger object before calling any of the other ``Logger`` class methods by calling
  :meth:`.Task.get_logger` or :meth:`Logger.current_logger`.
class_docstr_tok: ["The","``","Logger","``","class","is","the","ClearML","console","log","and","metric","statistics","interface",",","and","contains","methods","for","explicit","reporting",".","Explicit","reporting","extends","ClearML","automagical","capturing","of","inputs","and","output",".","Explicit","reporting","methods","include","scalar","plots",",","line","plots",",","histograms",",","confusion","matrices",",","2D","and","3D","scatter","diagrams",",","text","logging",",","tables",",","and","image","uploading","and","reporting",".","In","the","*","*","ClearML","Web-App","(","UI",")","*","*",",","``","Logger","``","output","appears","in","the","*","*","RESULTS","*","*","tab",",","*","*","CONSOLE","*","*",",","*","*","SCALARS","*","*",",","*","*","PLOTS","*","*",",","and","*","*","DEBUG","SAMPLES","*","*","sub-tabs",".","When","you","compare","experiments",",","``","Logger","``","output","appears","in","the","comparisons",".","..","warning",":",":","Do","not","construct","Logger","objects","directly",".","You","must","get","a","Logger","object","before","calling","any","of","the","other","``","Logger","``","class","methods","by","calling",":","meth",":","`",".Task.get_logger","`","or",":","meth",":","`","Logger.current_logger","`","."]
docstr: For explicit reporting, report a table plot.
  
  One and only one of the following parameters must be provided.
  
  - ``table_plot`` - Pandas DataFrame or Table as list of rows (list)
  - ``csv`` - CSV file
  - ``url`` - URL to CSV file
  
  For example:
  
  .. code-block:: py
  
     df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
             'num_wings': [2, 0, 0, 0],
             'num_specimen_seen': [10, 2, 1, 8]},
             index=['falcon', 'dog', 'spider', 'fish'])
  
     logger.report_table(title='table example',series='pandas DataFrame',iteration=0,table_plot=df)
  
  You can view the reported tables in the **ClearML Web-App (UI)**, **RESULTS** tab, **PLOTS** sub-tab.
  
  :param title: The title (metric) of the table.
  :param series: The series name (variant) of the reported table.
  :param iteration: The reported iteration / step.
  :param table_plot: The output table plot object
  :param csv: path to local csv file
  :param url: A URL to the location of csv file.
  :param extra_layout: optional dictionary for layout configuration, passed directly to plotly
      See full details on the supported configuration: https://plotly.com/javascript/reference/layout/
      For example:
  
      .. code-block:: py
  
          logger.report_table(
              title='table example',
              series='pandas DataFrame',
              iteration=0,
              table_plot=df,
              extra_layout={'height': 600}
          )
  
  :param extra_data: optional dictionary for data configuration, like column width, passed directly to plotly
      See full details on the supported configuration: https://plotly.com/javascript/reference/table/
      For example:
  
      .. code-block:: py
  
          logger.report_table(
              title='table example',
              series='pandas DataFrame',
              iteration=0,
              table_plot=df,
              extra_data={'columnwidth': [2., 1., 1., 1.]}
          )
docstr_tok: ["For","explicit","reporting",",","report","a","table","plot",".","One","and","only","one","of","the","following","parameters","must","be","provided",".","-","``","table_plot","``","-","Pandas","DataFrame","or","Table","as","list","of","rows","(","list",")","-","``","csv","``","-","CSV","file","-","``","url","``","-","URL","to","CSV","file","For","example",":","..","code-block",":",":","py","df","=","pd.DataFrame","(","{","'num_legs","'",":","[","2",",","4",",","8",",","0","]",",","'num_wings","'",":","[","2",",","0",",","0",",","0","]",",","'num_specimen_seen","'",":","[","10",",","2",",","1",",","8","]","}",",","index=","[","'falcon","'",",","'dog","'",",","'spider","'",",","'fish","'","]",")","logger.report_table","(","title='table","example","'",",","series='pandas","DataFrame","'",",","iteration=0",",","table_plot=df",")","You","can","view","the","reported","tables","in","the","*","*","ClearML","Web-App","(","UI",")","*","*",",","*","*","RESULTS","*","*","tab",",","*","*","PLOTS","*","*","sub-tab",".",":","param","title",":","The","title","(","metric",")","of","the","table",".",":","param","series",":","The","series","name","(","variant",")","of","the","reported","table",".",":","param","iteration",":","The","reported","iteration","\/","step",".",":","param","table_plot",":","The","output","table","plot","object",":","param","csv",":","path","to","local","csv","file",":","param","url",":","A","URL","to","the","location","of","csv","file",".",":","param","extra_layout",":","optional","dictionary","for","layout","configuration",",","passed","directly","to","plotly","See","full","details","on","the","supported","configuration",":","https",":","\/\/plotly.com\/javascript\/reference\/layout\/","For","example",":","..","code-block",":",":","py","logger.report_table","(","title='table","example","'",",","series='pandas","DataFrame","'",",","iteration=0",",","table_plot=df",",","extra_layout=","{","'height","'",":","600","}",")",":","param","extra_data",":","optional","dictionary","for","data","configuration",",","like","column","width",",","passed","directly","to","plotly","See","full","details","on","the","supported","configuration",":","https",":","\/\/plotly.com\/javascript\/reference\/table\/","For","example",":","..","code-block",":",":","py","logger.report_table","(","title='table","example","'",",","series='pandas","DataFrame","'",",","iteration=0",",","table_plot=df",",","extra_data=","{","'columnwidth","'",":","[","2.",",","1.",",","1.",",","1",".","]","}",")"]
code: def report_table(
      self,
      title,  # type: str
      series,  # type: str
      iteration=None,  # type: Optional[int]
      table_plot=None,  # type: Optional[pd.DataFrame, Sequence[Sequence]]
      csv=None,  # type: Optional[str]
      url=None,  # type: Optional[str]
      extra_layout=None,  # type: Optional[dict]
      extra_data=None,  # type: Optional[dict]
  ):
      """
      For explicit reporting, report a table plot.
  
      One and only one of the following parameters must be provided.
  
      - ``table_plot`` - Pandas DataFrame or Table as list of rows (list)
      - ``csv`` - CSV file
      - ``url`` - URL to CSV file
  
      For example:
  
      .. code-block:: py
  
         df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                 'num_wings': [2, 0, 0, 0],
                 'num_specimen_seen': [10, 2, 1, 8]},
                 index=['falcon', 'dog', 'spider', 'fish'])
  
         logger.report_table(title='table example',series='pandas DataFrame',iteration=0,table_plot=df)
  
      You can view the reported tables in the **ClearML Web-App (UI)**, **RESULTS** tab, **PLOTS** sub-tab.
  
      :param title: The title (metric) of the table.
      :param series: The series name (variant) of the reported table.
      :param iteration: The reported iteration / step.
      :param table_plot: The output table plot object
      :param csv: path to local csv file
      :param url: A URL to the location of csv file.
      :param extra_layout: optional dictionary for layout configuration, passed directly to plotly
          See full details on the supported configuration: https://plotly.com/javascript/reference/layout/
          For example:
  
          .. code-block:: py
  
              logger.report_table(
                  title='table example',
                  series='pandas DataFrame',
                  iteration=0,
                  table_plot=df,
                  extra_layout={'height': 600}
              )
  
      :param extra_data: optional dictionary for data configuration, like column width, passed directly to plotly
          See full details on the supported configuration: https://plotly.com/javascript/reference/table/
          For example:
  
          .. code-block:: py
  
              logger.report_table(
                  title='table example',
                  series='pandas DataFrame',
                  iteration=0,
                  table_plot=df,
                  extra_data={'columnwidth': [2., 1., 1., 1.]}
              )
  
      """
      mutually_exclusive(
          UsageError,
          _check_none=True,
          table_plot=table_plot,
          csv=csv,
          url=url,
      )
      table = table_plot
      if url or csv:
          if not pd:
              raise UsageError(
                  "pandas is required in order to support reporting tables using CSV or a URL, "
                  "please install the pandas python package"
              )
          if url:
              table = pd.read_csv(url, index_col=[0])
          elif csv:
              table = pd.read_csv(csv, index_col=[0])
  
      def replace(dst, *srcs):
          for src in srcs:
              reporter_table.replace(src, dst, inplace=True)
  
      if isinstance(table, (list, tuple)):
          reporter_table = table
      else:
          reporter_table = table.fillna(str(np.nan))
          replace("NaN", np.nan, math.nan if six.PY3 else float("nan"))
          replace("Inf", np.inf, math.inf if six.PY3 else float("inf"))
          replace(
              "-Inf",
              -np.inf,
              np.NINF,
              -math.inf if six.PY3 else -float("inf"),
          )
      # noinspection PyProtectedMember
      return self._task._reporter.report_table(
          title=title,
          series=series,
          table=reporter_table,
          iteration=iteration or 0,
          layout_config=extra_layout,
          data_config=extra_data,
      )
  
imports: import logging
  import math
  import warnings
  from typing import Any, Sequence, Union, List, Optional, Tuple, Dict, TYPE_CHECKING
  import numpy
  import six
  from PIL import Image
  from pathlib2 import Path
  from .debugging.log import LoggerRoot
  from .backend_interface.logger import StdStreamPatch
  from .backend_interface.task import Task
  from .backend_interface.task.log import TaskHandler
  from .backend_interface.util import mutually_exclusive
  from .backend_interface.metrics.events import UploadEvent, MetricsEventAdapter
  from .config import running_remotely, get_cache_dir, config, DEBUG_SIMULATE_REMOTE_TASK, deferred_config
  from .errors import UsageError
  from .storage.helper import StorageHelper
  from .utilities.plotly_reporter import SeriesInfo
label_desc: Use image node_id 8 for calling the Logger obj's underlying member method code with example usage: obj.report_table(title, series, iteration, table_plot, csv, url, extra_layout, extra_data) and returns: self