                  # know how to print itself properly. We shouldn't raise a
                  # further exception.
                  return b' '.join(force_bytes(arg, encoding, strings_only, errors)
                                   for arg in s)
              return six.text_type(s).encode(encoding, errors)
      else:
          return s.encode(encoding, errors)
  
  
  smart_str = smart_text
 
</s> remove             return six.text_type(s).encode(encoding)
 </s> add             return str(s).encode(encoding) </s> remove                 s = six.text_type(s, encoding, errors)
 </s> add                 s = str(s, encoding, errors) </s> remove             # Note: We use .decode() here, instead of six.text_type(s, encoding,
 </s> add             # Note: We use .decode() here, instead of str(s, encoding, </s> remove                 s = six.text_type(s)
 </s> add                 s = str(s) </s> remove     if isinstance(s, six.memoryview):
 </s> add     if isinstance(s, memoryview):
            return str(s).encode(encoding, errors)
                  # know how to print itself properly. We shouldn't raise a
                  # further exception.
                  return b' '.join(force_bytes(arg, encoding, strings_only, errors)
                                   for arg in s)
            return str(s).encode(encoding, errors)
      else:
          return s.encode(encoding, errors)
  
  
  smart_str = smart_text
keep keep keep keep replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
django/utils/encoding.py