summaryrefslogtreecommitdiff
path: root/babel/_compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'babel/_compat.py')
-rw-r--r--babel/_compat.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/babel/_compat.py b/babel/_compat.py
index aea3389..1131f44 100644
--- a/babel/_compat.py
+++ b/babel/_compat.py
@@ -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