summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGunnar Aastrand Grimnes <gromgull@gmail.com>2017-01-31 23:41:52 +0100
committerGunnar Aastrand Grimnes <gromgull@gmail.com>2017-01-31 23:41:52 +0100
commit96ff3544a8a2a5835645564de6fe93ec2c9d9fda (patch)
tree55cbcde992419077a12d0df691d34cd2263a0adb
parent1d01e1ef7a0b321103cacee4c23838e8988a2a60 (diff)
downloadrdflib-96ff3544a8a2a5835645564de6fe93ec2c9d9fda.tar.gz
moved all compat code to rdflib.compatsix_2to3
-rw-r--r--rdflib/compat.py124
-rwxr-xr-xrdflib/plugins/parsers/notation3.py4
-rw-r--r--rdflib/plugins/parsers/ntriples.py6
-rw-r--r--rdflib/plugins/sparql/parser.py2
-rw-r--r--rdflib/py3compat.py118
-rw-r--r--rdflib/term.py2
-rw-r--r--rdflib/util.py2
-rw-r--r--test/test_dawg.py2
8 files changed, 130 insertions, 130 deletions
diff --git a/rdflib/compat.py b/rdflib/compat.py
index 33b569bd..c82f426f 100644
--- a/rdflib/compat.py
+++ b/rdflib/compat.py
@@ -1,7 +1,19 @@
-#
-# code to simplify supporting older python versions
-#
+"""
+Utility functions and objects to ease Python 2/3 compatibility,
+and different versions of support libraries.
+"""
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+import re
+import codecs
+import warnings
+
+import six
+
+
+# clean ElementTree import
try:
from lxml import etree
except ImportError:
@@ -31,3 +43,109 @@ except AttributeError:
def etree_register_namespace(prefix, uri):
etreenative._namespace_map[uri] = prefix
+
+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
diff --git a/rdflib/plugins/parsers/notation3.py b/rdflib/plugins/parsers/notation3.py
index 5fb84e5d..d2c27711 100755
--- a/rdflib/plugins/parsers/notation3.py
+++ b/rdflib/plugins/parsers/notation3.py
@@ -49,11 +49,11 @@ from rdflib.graph import QuotedGraph, ConjunctiveGraph, Graph
from six import b
from six import binary_type
-from rdflib.py3compat import long_type
+from rdflib.compat import long_type
from six import string_types
from six import text_type
from six import unichr
-from rdflib.py3compat import narrow_build
+from rdflib.compat import narrow_build
__all__ = ['BadSyntax', 'N3Parser', 'TurtleParser',
"splitFragP", "join", "base",
diff --git a/rdflib/plugins/parsers/ntriples.py b/rdflib/plugins/parsers/ntriples.py
index 0ddd0fc7..8ea8cf9c 100644
--- a/rdflib/plugins/parsers/ntriples.py
+++ b/rdflib/plugins/parsers/ntriples.py
@@ -17,9 +17,9 @@ from rdflib.term import BNode as bNode
from rdflib.term import Literal
-from rdflib.py3compat import cast_bytes
-from rdflib.py3compat import decodeUnicodeEscape
-from rdflib.py3compat import ascii
+from rdflib.compat import cast_bytes
+from rdflib.compat import decodeUnicodeEscape
+from rdflib.compat import ascii
from six import BytesIO
from six import string_types
diff --git a/rdflib/plugins/sparql/parser.py b/rdflib/plugins/sparql/parser.py
index f7db07eb..6c56b72d 100644
--- a/rdflib/plugins/sparql/parser.py
+++ b/rdflib/plugins/sparql/parser.py
@@ -19,7 +19,7 @@ from pyparsing import CaselessKeyword as Keyword # watch out :)
from .parserutils import Comp, Param, ParamList
from . import operators as op
-from rdflib.py3compat import decodeUnicodeEscape
+from rdflib.compat import decodeUnicodeEscape
from six import binary_type, unichr
import rdflib
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
diff --git a/rdflib/term.py b/rdflib/term.py
index ffd07f3e..1b4c4832 100644
--- a/rdflib/term.py
+++ b/rdflib/term.py
@@ -58,7 +58,7 @@ import rdflib
from six import PY2
from six import PY3
from six import b
-from rdflib.py3compat import long_type
+from rdflib.compat import long_type
from six import string_types
from six import text_type
from six.moves.urllib.parse import urldefrag
diff --git a/rdflib/util.py b/rdflib/util.py
index cdb30b14..7d97942b 100644
--- a/rdflib/util.py
+++ b/rdflib/util.py
@@ -53,7 +53,7 @@ from rdflib.namespace import NamespaceManager
from rdflib.term import BNode
from rdflib.term import Literal
from rdflib.term import URIRef
-from rdflib.py3compat import sign
+from rdflib.compat import sign
__all__ = [
'list2set', 'first', 'uniq', 'more_than', 'to_term', 'from_n3',
diff --git a/test/test_dawg.py b/test/test_dawg.py
index 66a195f3..3027f561 100644
--- a/test/test_dawg.py
+++ b/test/test_dawg.py
@@ -42,7 +42,7 @@ from rdflib.plugins.sparql.parser import parseQuery, parseUpdate
from rdflib.plugins.sparql.results.rdfresults import RDFResultParser
from rdflib.plugins.sparql.update import evalUpdate
-from rdflib.py3compat import decodeStringEscape, bopen
+from rdflib.compat import decodeStringEscape, bopen
from six.moves.urllib.parse import urljoin
from six import BytesIO