def safe_unicode(obj):
"""Return the unicode/text representation of `obj` without throwing UnicodeDecodeError
Returned value is only a *representation*, not necessarily identical.
"""
if type(obj) not in (six.text_type, six.binary_type):
obj = six.text_type(obj)
if type(obj) is six.text_type:
return obj
else:
return obj.decode(errors='ignore')