diff env/lib/python3.7/site-packages/rdflib/py3compat.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/rdflib/py3compat.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-"""
-Utility functions and objects to ease Python 3 compatibility.
-"""
-import sys
-import re
-import codecs
-import warnings
-
-try:
-    from functools import wraps
-    assert wraps
-except ImportError:
-    # No-op wraps decorator
-    def wraps(f):
-        def dec(newf):
-            return newf
-        return dec
-
-
-def cast_bytes(s, enc='utf-8'):
-    if isinstance(s, str):
-        return s.encode(enc)
-    return s
-
-PY3 = (sys.version_info[0] >= 3)
-
-
-def _modify_str_or_docstring(str_change_func):
-    @wraps(str_change_func)
-    def wrapper(func_or_str):
-        if isinstance(func_or_str, str):
-            func = None
-            doc = func_or_str
-        else:
-            func = func_or_str
-            doc = func.__doc__
-
-        doc = str_change_func(doc)
-
-        if func:
-            func.__doc__ = doc
-            return func
-        return doc
-    return wrapper
-
-
-if PY3:
-    # Python 3:
-    # ---------
-    def b(s):
-        return s.encode('ascii')
-
-    def ascii(stream):
-        return codecs.getreader('ascii')(stream)
-
-    def bopen(*args, **kwargs):
-        return open(*args, mode = 'rb', **kwargs)
-
-    bytestype = bytes
-
-    # Abstract u'abc' syntax:
-    @_modify_str_or_docstring
-    def format_doctest_out(s):
-        """Python 2 version
-        "%(u)s'abc'" --> "'abc'"
-        "%(b)s'abc'" --> "b'abc'"
-        "55%(L)s"    --> "55"
-        "unicode(x)" --> "str(x)"
-
-        Accepts a string or a function, so it can be used as a decorator."""
-        # s may be None if processed by Py2exe
-        if s is None:
-            return ''
-        return s % {'u': '', 'b': 'b', 'L': '', 'unicode': 'str'}
-
-    def type_cmp(a, b):
-        """Python 2 style comparison based on type"""
-        ta, tb = type(a).__name__, type(b).__name__
-        # Ugly hack: some tests rely on tuple sorting before unicode, and I
-        # don't know if that's important. Better retain it for now.
-        if ta == 'str':
-            ta = 'unicode'
-        if tb == 'str':
-            tb = 'unicode'
-        # return 1 if ta > tb else -1 if ta < tb else 0
-        if ta > tb:
-            return 1
-        elif ta < tb:
-            return -1
-        else:
-            return 0
-
-    def sign(n):
-        if n < 0:
-            return -1
-        if n > 0:
-            return 1
-        return 0
-
-else:
-    # Python 2
-    # --------
-    def b(s):
-        return s
-
-    def ascii(stream):
-        return stream
-
-    bopen = open
-
-    bytestype = str
-
-    # Abstract u'abc' syntax:
-    @_modify_str_or_docstring
-    def format_doctest_out(s):
-        """Python 2 version
-        "%(u)s'abc'" --> "u'abc'"
-        "%(b)s'abc'" --> "'abc'"
-        "55%(L)s"    --> "55L"
-
-        Accepts a string or a function, so it can be used as a decorator."""
-        # s may be None if processed by Py2exe
-        if s is None:
-            return ''
-        return s % {'u': 'u', 'b': '', 'L': 'L', 'unicode': 'unicode'}
-
-    def type_cmp(a, b):
-        # return 1 if a > b else -1 if a < b else 0
-        if a > b:
-            return 1
-        elif a < b:
-            return -1
-        else:
-            return 0
-
-    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: chr(int(m.group(0)[2:], 16)), s)
-
-narrow_build = False
-try:
-    chr(0x10FFFF)
-except ValueError:
-    narrow_build = True
-
-if narrow_build:
-    def _unicodeExpand(s):
-        try:
-            return r_unicodeEscape.sub(
-                lambda m: chr(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 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 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