docs: def printableType(val, name=None, parent=None):
      """
      Tries to make a nice type string for a value.
      Can also pass in a Printable parent object
      """
      import numpy as np
      if parent is not None and hasattr(parent, 'customPrintableType'):
          # Hack for non - trivial preference types
          _typestr = parent.customPrintableType(name)
          if _typestr is not None:
              return _typestr
      if isinstance(val, np.ndarray):
          info = npArrInfo(val)
          _typestr = info.dtypestr
      elif isinstance(val, object):
          _typestr = val.__class__.__name__
      else:
          _typestr = str(type(val))
          _typestr = _typestr.replace('type', '')
          _typestr = re.sub('[\'><]', '', _typestr)
          _typestr = re.sub('  *', ' ', _typestr)
          _typestr = _typestr.strip()
      return _typestr