diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2019-01-25 16:11:07 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2019-01-25 16:11:07 -0500 |
commit | 24be5abd4cbd9d84537c457456f841522d626e14 (patch) | |
tree | ae2f9418e0437e53b4cdd2e0636a63d80a25e83a /setuptools/unicode_utils.py | |
parent | 992aa3dfba57de594544b8df6f8adb5e8d451ab2 (diff) | |
download | python-setuptools-git-24be5abd4cbd9d84537c457456f841522d626e14.tar.gz |
Given that the config file parsing functionality is unlikely to change upstream, just incorporate the functionality directly.
Diffstat (limited to 'setuptools/unicode_utils.py')
-rw-r--r-- | setuptools/unicode_utils.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/setuptools/unicode_utils.py b/setuptools/unicode_utils.py index 7c63efd2..3b8179a8 100644 --- a/setuptools/unicode_utils.py +++ b/setuptools/unicode_utils.py @@ -1,5 +1,6 @@ import unicodedata import sys +import re from setuptools.extern import six @@ -42,3 +43,15 @@ def try_encode(string, enc): return string.encode(enc) except UnicodeEncodeError: return None + + +CODING_RE = re.compile(br'^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)') + + +def detect_encoding(fp): + first_line = fp.readline() + fp.seek(0) + m = CODING_RE.match(first_line) + if m is None: + return None + return m.group(1).decode('ascii') |