diff options
Diffstat (limited to 'rdflib/py3compat.py')
| -rw-r--r-- | rdflib/py3compat.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/rdflib/py3compat.py b/rdflib/py3compat.py deleted file mode 100644 index d164d819..00000000 --- a/rdflib/py3compat.py +++ /dev/null @@ -1,118 +0,0 @@ -""" -Utility functions and objects to ease Python 3 compatibility. -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import re -import codecs -import warnings - -import six - -def cast_bytes(s, enc='utf-8'): - if isinstance(s, six.text_type): - return s.encode(enc) - return s - -if six.PY3: - # Python 3: - # --------- - - def ascii(stream): - return codecs.getreader('ascii')(stream) - - def bopen(*args, **kwargs): - return open(*args, mode = 'rb', **kwargs) - - long_type = int - - def sign(n): - if n < 0: - return -1 - if n > 0: - return 1 - return 0 - -else: - # Python 2 - # -------- - - def ascii(stream): - return stream - - bopen = open - - long_type = long - - def sign(n): - return cmp(n, 0) - -r_unicodeEscape = re.compile(r'(\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8})') - -def _unicodeExpand(s): - return r_unicodeEscape.sub(lambda m: six.unichr(int(m.group(0)[2:], 16)), s) - -narrow_build = False -try: - six.unichr(0x10FFFF) -except ValueError: - narrow_build = True - -if narrow_build: - def _unicodeExpand(s): - try: - return r_unicodeEscape.sub( - lambda m: six.unichr(int(m.group(0)[2:], 16)), s) - except ValueError: - warnings.warn( - 'Encountered a unicode char > 0xFFFF in a narrow python build. ' - 'Trying to degrade gracefully, but this can cause problems ' - 'later when working with the string:\n%s' % s) - return r_unicodeEscape.sub( - lambda m: codecs.decode(m.group(0), 'unicode_escape'), s) - - -def decodeStringEscape(s): - - """ - s is byte-string - replace \ escapes in string - """ - - if not six.PY3: - s = s.decode('string-escape') - else: - s = s.replace('\\t', '\t') - s = s.replace('\\n', '\n') - s = s.replace('\\r', '\r') - s = s.replace('\\b', '\b') - s = s.replace('\\f', '\f') - s = s.replace('\\"', '"') - s = s.replace("\\'", "'") - s = s.replace('\\\\', '\\') - - return s - #return _unicodeExpand(s) # hmm - string escape doesn't do unicode escaping - -def decodeUnicodeEscape(s): - """ - s is a unicode string - replace \n and \\u00AC unicode escapes - """ - if not six.PY3: - s = s.encode('utf-8').decode('string-escape') - s = _unicodeExpand(s) - else: - s = s.replace('\\t', '\t') - s = s.replace('\\n', '\n') - s = s.replace('\\r', '\r') - s = s.replace('\\b', '\b') - s = s.replace('\\f', '\f') - s = s.replace('\\"', '"') - s = s.replace("\\'", "'") - s = s.replace('\\\\', '\\') - - s = _unicodeExpand(s) # hmm - string escape doesn't do unicode escaping - - return s |
