Let to_unicode be more graceful for non-unicode strings, as like CMFPlone's

safe_unicode does it.
pull/107/merge
Johannes Raggam 2013-06-19 14:11:43 +02:00
rodzic 9352b3c148
commit eadddbdeec
3 zmienionych plików z 15 dodań i 9 usunięć

Wyświetl plik

@ -2,6 +2,14 @@
Changelog
=========
3.5dev (unreleased)
-------------------
- Let to_unicode be more graceful for non-unicode strings, as like CMFPlone's
safe_unicode does it.
[thet]
3.4 (2013-04-24)
----------------

Wyświetl plik

@ -7,12 +7,12 @@ def to_unicode(value, encoding='utf-8'):
"""
if isinstance(value, unicode):
return value
elif isinstance(value, str):
elif isinstance(value, basestring):
try:
return value.decode(encoding)
except UnicodeDecodeError:
return value.decode('utf-8', 'replace')
raise AssertionError('A str/unicode expected.')
value = unicode(value, encoding)
except (UnicodeDecodeError):
value = value.decode('utf-8', 'replace')
return value
def data_encode(data, encoding=DEFAULT_ENCODING):

Wyświetl plik

@ -15,10 +15,8 @@ class TestParserTools(unittest.TestCase):
self.assertEqual(to_unicode(u'\xc6\xb5'.encode('iso-8859-1')),
u'\u01b5')
self.assertEqual(to_unicode('\xc6\xb5', encoding='ascii'), u'\u01b5')
with self.assertRaises(AssertionError):
to_unicode(1)
with self.assertRaises(AssertionError):
to_unicode(None)
self.assertEqual(to_unicode(1), 1)
self.assertEqual(to_unicode(None), None)
def test_parser_tools_data_encode(self):