]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
_compat: add force_text a la Django
authorAarni Koskela <akx@iki.fi>
Mon, 28 May 2018 09:57:45 +0000 (12:57 +0300)
committerAarni Koskela <akx@iki.fi>
Mon, 28 May 2018 10:01:43 +0000 (13:01 +0300)
babel/_compat.py

index aea338938810c972768cb34abff5599bdbe4348f..1131f44af1a7c341c9609ec7468d6d6f53c17a6f 100644 (file)
@@ -8,11 +8,12 @@ _identity = lambda x: x
 
 if not PY2:
     text_type = str
+    binary_type = bytes
     string_types = (str,)
     integer_types = (int, )
-    unichr = chr
 
     text_to_native = lambda s, enc: s
+    unichr = chr
 
     iterkeys = lambda d: iter(d.keys())
     itervalues = lambda d: iter(d.values())
@@ -31,6 +32,7 @@ if not PY2:
 
 else:
     text_type = unicode
+    binary_type = str
     string_types = (str, unicode)
     integer_types = (int, long)
 
@@ -57,6 +59,14 @@ else:
 number_types = integer_types + (float,)
 
 
+def force_text(s, encoding='utf-8', errors='strict'):
+    if isinstance(s, text_type):
+        return s
+    if isinstance(s, binary_type):
+        return s.decode(encoding, errors)
+    return text_type(s)
+
+
 #
 # Since Python 3.3, a fast decimal implementation is already included in the
 # standard library.  Otherwise use cdecimal when available