openmedialibrary_platform_l.../lib/python3.7/site-packages/setuptools/unicode_utils.py

45 lines
996 B
Python
Raw Normal View History

2016-02-06 09:37:19 +00:00
import unicodedata
import sys
2016-02-22 11:13:36 +00:00
from setuptools.extern import six
2016-02-06 09:37:19 +00:00
2017-10-13 12:49:49 +00:00
2016-02-06 09:37:19 +00:00
# HFS Plus uses decomposed UTF-8
def decompose(path):
2016-02-22 11:13:36 +00:00
if isinstance(path, six.text_type):
2016-02-06 09:37:19 +00:00
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
"""
2016-02-22 11:13:36 +00:00
if isinstance(path, six.text_type):
2016-02-06 09:37:19 +00:00
return path
2016-02-22 11:13:36 +00:00
fs_enc = sys.getfilesystemencoding() or 'utf-8'
candidates = fs_enc, 'utf-8'
for enc in candidates:
2016-02-06 09:37:19 +00:00
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