code: def astext(data):
      
      if isinstance(data, str):
          return data
      elif isinstance(data, text_type):
          return data.encode("utf-8", "ignore")
      elif isinstance(data, binary_type):
          return data.decode("utf-8", "ignore")
      raise TypeError('{!r} not a string'.format(data))
docs: Given a unicode/str/bytes always return str.
  
      We prefer to work with the 'native' string type for the version of python
      we run on, and this gets us that.