code: def represent(item):
      
  
      if six.PY2 and isinstance(item, str):
          try:
              item = item.decode(encoding='UTF-8')
          except UnicodeDecodeError:
              pass
  
      if isinstance(item, six.text_type):
          return u'\'%s\'' % item
      elif isinstance(item, (bytes, bytearray)):
          return repr(type(item))
      else:
          return repr(item)
docs: >>> represent(None)
      'None'
  
      >>> represent(123)
      '123'
  
      >>> import six
      >>> expected = u"'hi'" if six.PY2 else "'hi'"
      >>> represent('hi') == expected
      True
  
      >>> expected = u"'привет'" if six.PY2 else "'привет'"
      >>> represent(u'привет') == expected
      True
  
      >>> represent(bytearray([0xd0, 0xbf]))  # doctest: +ELLIPSIS
      "<... 'bytearray'>"
  
      >>> from struct import pack
      >>> result = "<type 'str'>" if six.PY2 else "<class 'bytes'>"
      >>> represent(pack('h', 0x89)) == result
      True
  
      >>> result = "<type 'int'>" if six.PY2 else "<class 'int'>"
      >>> represent(int) == result
      True
  
      >>> represent(represent)  # doctest: +ELLIPSIS
      '<function represent at ...>'
  
      >>> represent([represent])  # doctest: +ELLIPSIS
      '[<function represent at ...>]'
  
      >>> class ClassWithName(object):
      ...     pass
  
      >>> represent(ClassWithName)
      "<class 'utils.ClassWithName'>"