              value = value()
  
          if is_protected_type(value):
              return value
          elif hasattr(value, '__iter__') and not isinstance(value, (dict, basestring)):
              return [self.to_native(item) for item in value]
          elif isinstance(value, dict):
              return dict(map(self.to_native, (k, v)) for k, v in value.items())
          return smart_unicode(value)
  
 
</s> remove         return smart_unicode(value)
 </s> add         return smart_text(value) </s> remove                     if value == smart_unicode(k2):
 </s> add                     if value == smart_text(k2): </s> remove     if isinstance(val, basestring):
 </s> add     if isinstance(val, string_types): </s> remove     return mark_safe(u''.join(words))
 </s> add     return mark_safe(''.join(words)) </s> remove         self.assertEquals(serializer.errors, {'non_field_errors': [u'Email address not in content']})
 </s> add         self.assertEquals(serializer.errors, {'non_field_errors': ['Email address not in content']})
        elif hasattr(value, '__iter__') and not isinstance(value, (dict, six.string_types)):
              value = value()
  
          if is_protected_type(value):
              return value
        elif hasattr(value, '__iter__') and not isinstance(value, (dict, six.string_types)):
              return [self.to_native(item) for item in value]
          elif isinstance(value, dict):
              return dict(map(self.to_native, (k, v)) for k, v in value.items())
          return smart_unicode(value)
  
keep keep keep keep replace keep keep keep keep keep
 First passing test under p3k \o/ 
rest_framework/fields.py