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","."]
docstr: Handle assertion without throwing a scary exception.
  
  Args:
      val: Value to check.
  
  For other arguments, see `_format_msg`.
code: def doassert(self, val: bool, msg: str, *args: Any, **kwargs: Any):
      """Handle assertion without throwing a scary exception.
  
      Args:
          val: Value to check.
  
      For other arguments, see `_format_msg`.
      """
      if not val:
          exc = None
          if not self.pretty:
              exc = AssertionError()
  
          # TODO(maximsmol): rework asserts so that we get the expression
          #                  that triggered the assert
          #                  to do this, install a global try-catch
          #                  for AssertionError and raise them normally
          self.abort(msg, *args, exc=exc, **kwargs)
  
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 30 for calling the _CliLogger obj's underlying member method code with example usage: obj.doassert(val, msg) without return types