code: def debug(*args, **kwargs):
      
      if not (DEBUG and args):
          return None
  
      # Include parent class name when given.
      parent = kwargs.get('parent', None)
      with suppress(KeyError):
          kwargs.pop('parent')
  
      # Go back more than once when given.
      backlevel = kwargs.get('back', 1)
      with suppress(KeyError):
          kwargs.pop('back')
  
      frame = inspect.currentframe()
      # Go back a number of frames (usually 1).
      while backlevel > 0:
          frame = frame.f_back
          backlevel -= 1
      fname = os.path.split(frame.f_code.co_filename)[-1]
      lineno = frame.f_lineno
      if parent:
          func = '{}.{}'.format(parent.__class__.__name__, frame.f_code.co_name)
      else:
          func = frame.f_code.co_name
  
      lineinfo = '{}:{} {}: '.format(
          C(fname, 'yellow'),
          C(str(lineno).ljust(4), 'blue'),
          C().join(C(func, 'magenta'), '()').ljust(20)
      )
      # Patch args to stay compatible with print().
      pargs = list(C(a, 'green').str() for a in args)
      pargs[0] = ''.join((lineinfo, pargs[0]))
      print_err(*pargs, **kwargs)
docs: Print a message only if DEBUG is truthy.