class_docstr: Singleton class for CLI logging.
  
  Without calling 'cli_logger.configure', the CLILogger will default
  to 'record' style logging.
  
  Attributes:
      color_mode (str):
          Can be "true", "false", or "auto".
  
          Enables or disables `colorful`.
  
          If `color_mode` is "auto", is set to `not stdout.isatty()`
      indent_level (int):
          The current indentation level.
  
          All messages will be indented by prepending `"  " * indent_level`
      vebosity (int):
          Output verbosity.
  
          Low verbosity will disable `verbose` and `very_verbose` messages.
class_docstr_tok: ["Singleton","class","for","CLI","logging",".","Without","calling","'cli_logger.configure","'",",","the","CLILogger","will","default","to","'record","'","style","logging",".","Attributes",":","color_mode","(","str",")",":","Can","be","``","true","''",",","``","false","''",",","or","``","auto","''",".","Enables","or","disables","`","colorful","`",".","If","`","color_mode","`","is","``","auto","''",",","is","set","to","`","not","stdout.isatty","(",")","`","indent_level","(","int",")",":","The","current","indentation","level",".","All","messages","will","be","indented","by","prepending","`","``","``","*","indent_level","`","vebosity","(","int",")",":","Output","verbosity",".","Low","verbosity","will","disable","`","verbose","`","and","`","very_verbose","`","messages","."]
code: def __init__(self):
      self.indent_level = 0
  
      self._verbosity = 0
      self._verbosity_overriden = False
      self._color_mode = "auto"
      self._log_style = "record"
      self.pretty = False
      self.interactive = False
  
      # store whatever colorful has detected for future use if
      # the color ouput is toggled (colorful detects # of supported colors,
      # so it has some non-trivial logic to determine this)
      self._autodetected_cf_colormode = cf.colorful.colormode
      self.set_format()
  
imports: import inspect
  import logging
  import os
  import sys
  import time
  from contextlib import contextmanager
  from functools import wraps
  from typing import Any, Callable, Dict, List, Optional, Tuple
  import click
  import colorama
  import ray
label_desc: Use image node_id 1 to create a new _CliLogger object  with example: obj = _CliLogger()