| Index: third_party/google-endpoints/setuptools/unicode_utils.py
|
| diff --git a/third_party/google-endpoints/setuptools/unicode_utils.py b/third_party/google-endpoints/setuptools/unicode_utils.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6a84f9beadccc93429e258352565ffbe0aa1cad3
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/setuptools/unicode_utils.py
|
| @@ -0,0 +1,44 @@
|
| +import unicodedata
|
| +import sys
|
| +
|
| +import six
|
| +
|
| +
|
| +# HFS Plus uses decomposed UTF-8
|
| +def decompose(path):
|
| + if isinstance(path, six.text_type):
|
| + return unicodedata.normalize('NFD', path)
|
| + try:
|
| + path = path.decode('utf-8')
|
| + path = unicodedata.normalize('NFD', path)
|
| + path = path.encode('utf-8')
|
| + except UnicodeError:
|
| + pass # Not UTF-8
|
| + return path
|
| +
|
| +
|
| +def filesys_decode(path):
|
| + """
|
| + Ensure that the given path is decoded,
|
| + NONE when no expected encoding works
|
| + """
|
| +
|
| + if isinstance(path, six.text_type):
|
| + return path
|
| +
|
| + fs_enc = sys.getfilesystemencoding() or 'utf-8'
|
| + candidates = fs_enc, 'utf-8'
|
| +
|
| + for enc in candidates:
|
| + try:
|
| + return path.decode(enc)
|
| + except UnicodeDecodeError:
|
| + continue
|
| +
|
| +
|
| +def try_encode(string, enc):
|
| + "turn unicode encoding into a functional routine"
|
| + try:
|
| + return string.encode(enc)
|
| + except UnicodeEncodeError:
|
| + return None
|
|
|