summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGunnar Aastrand Grimnes <gromgull@gmail.com>2017-01-30 21:50:05 +0100
committerGunnar Aastrand Grimnes <gromgull@gmail.com>2017-01-30 21:50:05 +0100
commitbfcde8482401393ea183242f0ddca5bff73afc2c (patch)
treea638c67c850c2ba952cf419f448034a5e8b18196
parentff4616e6e58e83fae518770f0af2e6ca4922ac42 (diff)
downloadrdflib-bfcde8482401393ea183242f0ddca5bff73afc2c.tar.gz
removed most of the six import from py3compat
now six is used throughout.
-rw-r--r--.travis.yml1
-rw-r--r--examples/film.py2
-rw-r--r--examples/graph_digest_benchmark.py5
-rw-r--r--rdflib/compare.py4
-rw-r--r--rdflib/extras/describer.py2
-rw-r--r--rdflib/extras/infixowl.py4
-rw-r--r--rdflib/graph.py8
-rw-r--r--rdflib/namespace.py12
-rw-r--r--rdflib/parser.py18
-rw-r--r--rdflib/paths.py3
-rw-r--r--rdflib/plugins/memory.py2
-rwxr-xr-xrdflib/plugins/parsers/notation3.py16
-rw-r--r--rdflib/plugins/parsers/nquads.py2
-rw-r--r--rdflib/plugins/parsers/ntriples.py16
-rw-r--r--rdflib/plugins/parsers/pyMicrodata/__init__.py3
-rw-r--r--rdflib/plugins/parsers/pyMicrodata/microdata.py2
-rw-r--r--rdflib/plugins/parsers/pyMicrodata/utils.py5
-rw-r--r--rdflib/plugins/parsers/pyRdfa/__init__.py3
-rw-r--r--rdflib/plugins/parsers/pyRdfa/embeddedRDF.py2
-rw-r--r--rdflib/plugins/parsers/pyRdfa/extras/httpheader.py2
-rw-r--r--rdflib/plugins/parsers/pyRdfa/options.py2
-rw-r--r--rdflib/plugins/parsers/pyRdfa/state.py2
-rw-r--r--rdflib/plugins/parsers/pyRdfa/termorcurie.py2
-rw-r--r--rdflib/plugins/parsers/pyRdfa/utils.py6
-rw-r--r--rdflib/plugins/parsers/rdfxml.py2
-rw-r--r--rdflib/plugins/parsers/trix.py2
-rw-r--r--rdflib/plugins/serializers/nquads.py2
-rw-r--r--rdflib/plugins/serializers/nt.py2
-rw-r--r--rdflib/plugins/serializers/rdfxml.py2
-rw-r--r--rdflib/plugins/serializers/trig.py2
-rw-r--r--rdflib/plugins/serializers/trix.py2
-rw-r--r--rdflib/plugins/serializers/turtle.py2
-rw-r--r--rdflib/plugins/sleepycat.py3
-rw-r--r--rdflib/plugins/sparql/aggregates.py2
-rw-r--r--rdflib/plugins/sparql/evaluate.py2
-rw-r--r--rdflib/plugins/sparql/operators.py3
-rw-r--r--rdflib/plugins/sparql/parser.py7
-rw-r--r--rdflib/plugins/sparql/processor.py2
-rw-r--r--rdflib/plugins/sparql/results/csvresults.py10
-rw-r--r--rdflib/plugins/sparql/results/jsonresults.py4
-rw-r--r--rdflib/plugins/sparql/results/tsvresults.py4
-rw-r--r--rdflib/plugins/sparql/results/xmlresults.py4
-rw-r--r--rdflib/plugins/sparql/sparql.py2
-rw-r--r--rdflib/plugins/sparql/update.py2
-rw-r--r--rdflib/plugins/stores/regexmatching.py2
-rw-r--r--rdflib/plugins/stores/sparqlstore.py2
-rw-r--r--rdflib/py3compat.py109
-rw-r--r--rdflib/query.py8
-rw-r--r--rdflib/resource.py4
-rw-r--r--rdflib/store.py4
-rw-r--r--rdflib/term.py46
-rw-r--r--rdflib/tools/rdfpipe.py2
-rw-r--r--rdflib/util.py2
-rw-r--r--test/manifest.py2
-rw-r--r--test/rdfa/run_w3c_rdfa_testsuite.py2
-rw-r--r--test/rdfa/test_non_xhtml.py4
-rw-r--r--test/test_aggregate_graphs.py20
-rw-r--r--test/test_canonicalization.py2
-rw-r--r--test/test_conneg.py28
-rw-r--r--test/test_dataset.py2
-rw-r--r--test/test_datetime.py2
-rw-r--r--test/test_dawg.py4
-rw-r--r--test/test_empty_xml_base.py3
-rw-r--r--test/test_extras_external_graph_libs.py2
-rw-r--r--test/test_finalnewline.py4
-rw-r--r--test/test_issue084.py8
-rw-r--r--test/test_issue154.py3
-rw-r--r--test/test_issue161.py14
-rw-r--r--test/test_issue457.py2
-rw-r--r--test/test_literal.py2
-rw-r--r--test/test_n3.py3
-rw-r--r--test/test_namespace.py7
-rw-r--r--test/test_nquads.py2
-rw-r--r--test/test_nt_misc.py6
-rw-r--r--test/test_prefixTypes.py10
-rw-r--r--test/test_prettyxml.py6
-rw-r--r--test/test_rdfxml.py9
-rw-r--r--test/test_serializexml.py6
-rw-r--r--test/test_sparqlstore.py4
-rw-r--r--test/test_sparqlupdatestore.py3
-rw-r--r--test/test_trig.py2
-rw-r--r--test/test_trix_serialize.py2
-rw-r--r--test/test_tsvresults.py2
-rw-r--r--test/test_turtle_serialize.py2
84 files changed, 223 insertions, 309 deletions
diff --git a/.travis.yml b/.travis.yml
index fa9a4473..3e875c5d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,6 @@ python:
- 3.6
before_install:
- - pip install -U setuptools pip # seems travis comes with a too old setuptools for html5lib
- bash .travis.fuseki_install_optional.sh
install:
diff --git a/examples/film.py b/examples/film.py
index b18341e8..0672840a 100644
--- a/examples/film.py
+++ b/examples/film.py
@@ -32,7 +32,7 @@ except ImportError:
from rdflib import BNode, ConjunctiveGraph, URIRef, Literal, Namespace, RDF
from rdflib.namespace import FOAF, DC
-from rdflib.py3compat import input
+from six.moves import input
storefn = os.path.expanduser('~/movies.n3')
#storefn = '/home/simon/codes/film.dev/movies.n3'
diff --git a/examples/graph_digest_benchmark.py b/examples/graph_digest_benchmark.py
index 5e940c3d..2e64e1bf 100644
--- a/examples/graph_digest_benchmark.py
+++ b/examples/graph_digest_benchmark.py
@@ -10,7 +10,8 @@ from __future__ import print_function
from rdflib import Namespace, Graph
from rdflib.compare import to_isomorphic
-from rdflib.py3compat import urlopen, queue
+from six.moves.urllib.request import urlopen
+from six.moves import queue
import sys, csv
from io import StringIO
@@ -75,7 +76,7 @@ def files_benchmark(ontologies, output_file, threads):
print('ERROR', stats['id'], e)
stats['error'] = str(e)
finished_tasks.put(stats)
- except Empty:
+ except queue.Empty:
pass
for i in range(int(threads)):
print("Starting worker", i)
diff --git a/rdflib/compare.py b/rdflib/compare.py
index 07aedc87..fb9b1902 100644
--- a/rdflib/compare.py
+++ b/rdflib/compare.py
@@ -93,7 +93,7 @@ from hashlib import sha256
from datetime import datetime
from collections import defaultdict
-from .py3compat import text_type
+from six import text_type
def _total_seconds(td):
@@ -147,7 +147,7 @@ class IsomorphicGraph(ConjunctiveGraph):
sum and SHA-256 <http://www.hpl.hp.com/techreports/2003/HPL-2003-235R1.pdf>
and traces <http://pallini.di.uniroma1.it>, an average case
polynomial time algorithm for graph canonicalization.
-
+
McCusker, J. P. (2015). WebSig: A Digital Signature Framework for the Web.
Rensselaer Polytechnic Institute, Troy, NY.
http://gradworks.umi.com/3727015.pdf
diff --git a/rdflib/extras/describer.py b/rdflib/extras/describer.py
index b0c2f09e..1cecfa87 100644
--- a/rdflib/extras/describer.py
+++ b/rdflib/extras/describer.py
@@ -4,7 +4,7 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-from ..py3compat import format_doctest_out
+from rdflib.py3compat import format_doctest_out
__doc__ = format_doctest_out("""
A Describer is a stateful utility for creating RDF statements in a
semi-declarative manner. It has methods for creating literal values, rel and
diff --git a/rdflib/extras/infixowl.py b/rdflib/extras/infixowl.py
index 0213331e..7d5e9a14 100644
--- a/rdflib/extras/infixowl.py
+++ b/rdflib/extras/infixowl.py
@@ -4,8 +4,8 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-from ..py3compat import PY3
-from ..py3compat import format_doctest_out
+from six import PY3
+from rdflib.py3compat import format_doctest_out
__doc__ = format_doctest_out("""
RDFLib Python binding for OWL Abstract Syntax
diff --git a/rdflib/graph.py b/rdflib/graph.py
index 06b02b3b..e87ecea6 100644
--- a/rdflib/graph.py
+++ b/rdflib/graph.py
@@ -6,7 +6,7 @@ from rdflib.term import Literal # required for doctests
assert Literal # avoid warning
from rdflib.namespace import Namespace # required for doctests
assert Namespace # avoid warning
-from .py3compat import format_doctest_out
+from rdflib.py3compat import format_doctest_out
__doc__ = format_doctest_out("""\
@@ -266,9 +266,9 @@ import os
import shutil
import tempfile
-from .py3compat import BytesIO
-from .py3compat import b
-from .py3compat import urlparse
+from six import BytesIO
+from six import b
+from six.moves.urllib.parse import urlparse
__all__ = [
'Graph', 'ConjunctiveGraph', 'QuotedGraph', 'Seq',
diff --git a/rdflib/namespace.py b/rdflib/namespace.py
index 5d3842bf..e65f10b0 100644
--- a/rdflib/namespace.py
+++ b/rdflib/namespace.py
@@ -2,7 +2,7 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-from rdflib.py3compat import format_doctest_out
+from .py3compat import format_doctest_out
__doc__ = format_doctest_out("""
===================
@@ -65,12 +65,12 @@ logger = logging.getLogger(__name__)
import os
-from .py3compat import string_types
-from .py3compat import text_type
+from six import string_types
+from six import text_type
-from .py3compat import pathname2url
-from .py3compat import urldefrag
-from .py3compat import urljoin
+from six.moves.urllib.request import pathname2url
+from six.moves.urllib.parse import urldefrag
+from six.moves.urllib.parse import urljoin
from rdflib.term import URIRef, Variable, _XSD_PFX, _is_valid_uri
diff --git a/rdflib/parser.py b/rdflib/parser.py
index 6e3b6113..d98006e2 100644
--- a/rdflib/parser.py
+++ b/rdflib/parser.py
@@ -16,15 +16,15 @@ from __future__ import print_function
import os
import sys
-from .py3compat import BytesIO
-from .py3compat import string_types
-from .py3compat import text_type
-
-from .py3compat import pathname2url
-from .py3compat import Request
-from .py3compat import url2pathname
-from .py3compat import urljoin
-from .py3compat import urlopen
+from six import BytesIO
+from six import string_types
+from six import text_type
+
+from six.moves.urllib.request import pathname2url
+from six.moves.urllib.request import Request
+from six.moves.urllib.request import url2pathname
+from six.moves.urllib.parse import urljoin
+from six.moves.urllib.request import urlopen
from xml.sax import xmlreader
diff --git a/rdflib/paths.py b/rdflib/paths.py
index 31e2230f..e745f8cf 100644
--- a/rdflib/paths.py
+++ b/rdflib/paths.py
@@ -1,4 +1,5 @@
-from rdflib.py3compat import PY3, format_doctest_out
+from six import PY3
+from rdflib.py3compat import format_doctest_out
__doc__ = format_doctest_out("""
diff --git a/rdflib/plugins/memory.py b/rdflib/plugins/memory.py
index fb12e000..f1cb5870 100644
--- a/rdflib/plugins/memory.py
+++ b/rdflib/plugins/memory.py
@@ -4,7 +4,7 @@ from __future__ import print_function
from rdflib.term import BNode
from rdflib.store import Store, NO_STORE, VALID_STORE
-from ..py3compat import iteritems
+from six import iteritems
__all__ = ['Memory', 'IOMemory']
diff --git a/rdflib/plugins/parsers/notation3.py b/rdflib/plugins/parsers/notation3.py
index e196cb2a..e046e0d5 100755
--- a/rdflib/plugins/parsers/notation3.py
+++ b/rdflib/plugins/parsers/notation3.py
@@ -46,14 +46,14 @@ from uuid import uuid4
from rdflib.term import URIRef, BNode, Literal, Variable, _XSD_PFX, _unique_id
from rdflib.graph import QuotedGraph, ConjunctiveGraph, Graph
-from ...py3compat import b
-from ...py3compat import binary_type
-from ...py3compat import format_doctest_out
-from ...py3compat import long_type
-from ...py3compat import string_types
-from ...py3compat import text_type
-from ...py3compat import unichr
-from ...py3compat import narrow_build
+from six import b
+from six import binary_type
+from rdflib.py3compat import format_doctest_out
+from rdflib.py3compat import long_type
+from six import string_types
+from six import text_type
+from six import unichr
+from rdflib.py3compat import narrow_build
__all__ = ['BadSyntax', 'N3Parser', 'TurtleParser',
"splitFragP", "join", "base",
diff --git a/rdflib/plugins/parsers/nquads.py b/rdflib/plugins/parsers/nquads.py
index 7437aa22..5857c9e4 100644
--- a/rdflib/plugins/parsers/nquads.py
+++ b/rdflib/plugins/parsers/nquads.py
@@ -28,7 +28,7 @@ from __future__ import print_function
from codecs import getreader
-from rdflib.py3compat import b
+from six import b
from rdflib import ConjunctiveGraph
diff --git a/rdflib/plugins/parsers/ntriples.py b/rdflib/plugins/parsers/ntriples.py
index 4c112c43..0ddd0fc7 100644
--- a/rdflib/plugins/parsers/ntriples.py
+++ b/rdflib/plugins/parsers/ntriples.py
@@ -17,14 +17,14 @@ from rdflib.term import BNode as bNode
from rdflib.term import Literal
-from ...py3compat import cast_bytes
-from ...py3compat import decodeUnicodeEscape
-from ...py3compat import ascii
-
-from ...py3compat import BytesIO
-from ...py3compat import string_types
-from ...py3compat import text_type
-from ...py3compat import unichr
+from rdflib.py3compat import cast_bytes
+from rdflib.py3compat import decodeUnicodeEscape
+from rdflib.py3compat import ascii
+
+from six import BytesIO
+from six import string_types
+from six import text_type
+from six import unichr
__all__ = ['unquote', 'uriquote', 'Sink', 'NTriplesParser']
diff --git a/rdflib/plugins/parsers/pyMicrodata/__init__.py b/rdflib/plugins/parsers/pyMicrodata/__init__.py
index 6dd9d96e..e5d8dec5 100644
--- a/rdflib/plugins/parsers/pyMicrodata/__init__.py
+++ b/rdflib/plugins/parsers/pyMicrodata/__init__.py
@@ -52,7 +52,8 @@ __contact__ = 'Ivan Herman, ivan@w3.org'
import sys
-from rdflib.py3compat import StringIO, urlparse, string_types
+from six import StringIO, string_types
+from six.moves.urllib.parse import urlparse
import datetime
diff --git a/rdflib/plugins/parsers/pyMicrodata/microdata.py b/rdflib/plugins/parsers/pyMicrodata/microdata.py
index 9d025902..ec6525ab 100644
--- a/rdflib/plugins/parsers/pyMicrodata/microdata.py
+++ b/rdflib/plugins/parsers/pyMicrodata/microdata.py
@@ -29,7 +29,7 @@ from rdflib import Namespace
from rdflib import RDF as ns_rdf
from rdflib import XSD as ns_xsd
-from rdflib.py3compat import urlsplit, urlunsplit
+from six.moves.urllib.parse import urlsplit, urlunsplit
ns_owl = Namespace("http://www.w3.org/2002/07/owl#")
diff --git a/rdflib/plugins/parsers/pyMicrodata/utils.py b/rdflib/plugins/parsers/pyMicrodata/utils.py
index 88b1f96d..ac76d1b0 100644
--- a/rdflib/plugins/parsers/pyMicrodata/utils.py
+++ b/rdflib/plugins/parsers/pyMicrodata/utils.py
@@ -14,7 +14,10 @@ $Date: 2014-12-17 08:52:43 $
"""
import sys, socket
-from rdflib.py3compat import urlparse, build_opener, quote, urljoin, Request, HTTPError, BaseHTTPRequestHandler
+from six.moves.urllib.parse import urlparse, quote, urljoin
+from six.moves.urllib.request import build_opener, Request
+from six.moves.urllib.error import HTTPError
+from six.moves.BaseHTTPServer import BaseHTTPRequestHandler
# The separate W3C branch is necessary for the local security setup at W3C. It is ugly to have this
# in the code, but I was lazy to make it more generic...
diff --git a/rdflib/plugins/parsers/pyRdfa/__init__.py b/rdflib/plugins/parsers/pyRdfa/__init__.py
index 449a6306..f2daf4f4 100644
--- a/rdflib/plugins/parsers/pyRdfa/__init__.py
+++ b/rdflib/plugins/parsers/pyRdfa/__init__.py
@@ -166,7 +166,8 @@ __license__ = 'W3C® SOFTWARE NOTICE AND LICENSE, http://www.w3.org/Consortium/L
import sys
-from rdflib.py3compat import StringIO, urlparse, string_types
+from six import StringIO, string_types
+from six.moves.urllib.parse import urlparse
import os
import xml.dom.minidom
diff --git a/rdflib/plugins/parsers/pyRdfa/embeddedRDF.py b/rdflib/plugins/parsers/pyRdfa/embeddedRDF.py
index 084af8f5..e48b433b 100644
--- a/rdflib/plugins/parsers/pyRdfa/embeddedRDF.py
+++ b/rdflib/plugins/parsers/pyRdfa/embeddedRDF.py
@@ -10,7 +10,7 @@ U{W3C® SOFTWARE NOTICE AND LICENSE<href="http://www.w3.org/Consortium/Legal/200
@version: $Id: embeddedRDF.py,v 1.15 2012/11/16 17:51:53 ivan Exp $
"""
-from rdflib.py3compat import StringIO
+from six import StringIO
from .host import accept_embedded_rdf_xml, accept_embedded_turtle
from .utils import return_XML
diff --git a/rdflib/plugins/parsers/pyRdfa/extras/httpheader.py b/rdflib/plugins/parsers/pyRdfa/extras/httpheader.py
index abe91c60..267a5b09 100644
--- a/rdflib/plugins/parsers/pyRdfa/extras/httpheader.py
+++ b/rdflib/plugins/parsers/pyRdfa/extras/httpheader.py
@@ -102,7 +102,7 @@ License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
"""
-from rdflib.py3compat import string_types, text_type
+from six import string_types, text_type
# Character classes from RFC 2616 section 2.2
SEPARATORS = '()<>@,;:\\"/[]?={} \t'
diff --git a/rdflib/plugins/parsers/pyRdfa/options.py b/rdflib/plugins/parsers/pyRdfa/options.py
index 8148f41e..d1b46695 100644
--- a/rdflib/plugins/parsers/pyRdfa/options.py
+++ b/rdflib/plugins/parsers/pyRdfa/options.py
@@ -23,7 +23,7 @@ from rdflib import Namespace
from rdflib import Graph
from rdflib import RDF as ns_rdf
-from rdflib.py3compat import string_types
+from six import string_types
from .host import HostLanguage, content_to_host_language, predefined_1_0_rel, require_embedded_rdf
from . import ns_xsd, ns_distill, ns_rdfa
diff --git a/rdflib/plugins/parsers/pyRdfa/state.py b/rdflib/plugins/parsers/pyRdfa/state.py
index ae0ee136..7832ebb4 100644
--- a/rdflib/plugins/parsers/pyRdfa/state.py
+++ b/rdflib/plugins/parsers/pyRdfa/state.py
@@ -39,7 +39,7 @@ from . import err_non_legal_CURIE_ref
from . import err_undefined_CURIE
-from rdflib.py3compat import urlparse, urlunparse, urlsplit, urljoin
+from six.moves.urllib.parse import urlparse, urlunparse, urlsplit, urljoin
class ListStructure :
"""Special class to handle the C{@inlist} type structures in RDFa 1.1; stores the "origin", i.e,
diff --git a/rdflib/plugins/parsers/pyRdfa/termorcurie.py b/rdflib/plugins/parsers/pyRdfa/termorcurie.py
index 2fbce750..78252a54 100644
--- a/rdflib/plugins/parsers/pyRdfa/termorcurie.py
+++ b/rdflib/plugins/parsers/pyRdfa/termorcurie.py
@@ -25,7 +25,7 @@ $Date: 2013-10-16 11:48:54 $
import re
-from rdflib.py3compat import urlsplit
+from six.moves.urllib.parse import urlsplit
from rdflib import URIRef
from rdflib import BNode
diff --git a/rdflib/plugins/parsers/pyRdfa/utils.py b/rdflib/plugins/parsers/pyRdfa/utils.py
index 776adfe0..d8634c8b 100644
--- a/rdflib/plugins/parsers/pyRdfa/utils.py
+++ b/rdflib/plugins/parsers/pyRdfa/utils.py
@@ -18,7 +18,11 @@ $Date: 2012/11/16 17:51:53 $
"""
import sys, datetime
-from rdflib.py3compat import Request, urlopen, urljoin, HTTPError, quote, BaseHTTPRequestHandler, text_type
+from six.moves.urllib.request import Request, urlopen
+from six.moves.urllib.parse import urljoin, quote
+from six.moves.urllib.error import HTTPError
+from six.moves.BaseHTTPServer import BaseHTTPRequestHandler
+from six import text_type
from .extras.httpheader import content_type, parse_http_datetime
diff --git a/rdflib/plugins/parsers/rdfxml.py b/rdflib/plugins/parsers/rdfxml.py
index 4a342018..6e6d2df2 100644
--- a/rdflib/plugins/parsers/rdfxml.py
+++ b/rdflib/plugins/parsers/rdfxml.py
@@ -7,7 +7,7 @@ from xml.sax.handler import ErrorHandler
from xml.sax.saxutils import handler, quoteattr, escape
-from rdflib.py3compat import urldefrag, urljoin
+from six.moves.urllib.parse import urldefrag, urljoin
from rdflib.namespace import RDF, is_ncname
from rdflib.term import URIRef
from rdflib.term import BNode
diff --git a/rdflib/plugins/parsers/trix.py b/rdflib/plugins/parsers/trix.py
index 0ff97302..26e0e35b 100644
--- a/rdflib/plugins/parsers/trix.py
+++ b/rdflib/plugins/parsers/trix.py
@@ -8,7 +8,7 @@ from rdflib.term import Literal
from rdflib.graph import Graph, ConjunctiveGraph
from rdflib.exceptions import ParserError
from rdflib.parser import Parser
-from rdflib.py3compat import text_type
+from six import text_type
from xml.sax.saxutils import handler
from xml.sax import make_parser
diff --git a/rdflib/plugins/serializers/nquads.py b/rdflib/plugins/serializers/nquads.py
index 66c5e6f1..f2ed7860 100644
--- a/rdflib/plugins/serializers/nquads.py
+++ b/rdflib/plugins/serializers/nquads.py
@@ -2,7 +2,7 @@ import warnings
from rdflib.term import Literal
from rdflib.serializer import Serializer
-from rdflib.py3compat import b
+from six import b
from rdflib.plugins.serializers.nt import _quoteLiteral
diff --git a/rdflib/plugins/serializers/nt.py b/rdflib/plugins/serializers/nt.py
index ca9eadf5..a85545f3 100644
--- a/rdflib/plugins/serializers/nt.py
+++ b/rdflib/plugins/serializers/nt.py
@@ -5,7 +5,7 @@ format.
"""
from rdflib.term import Literal
from rdflib.serializer import Serializer
-from rdflib.py3compat import b
+from six import b
import warnings
import codecs
diff --git a/rdflib/plugins/serializers/rdfxml.py b/rdflib/plugins/serializers/rdfxml.py
index ee87c09d..71602438 100644
--- a/rdflib/plugins/serializers/rdfxml.py
+++ b/rdflib/plugins/serializers/rdfxml.py
@@ -11,7 +11,7 @@ from rdflib.serializer import Serializer
# from rdflib.exceptions import Error
-from rdflib.py3compat import b
+from six import b
from xml.sax.saxutils import quoteattr, escape
import xml.dom.minidom
diff --git a/rdflib/plugins/serializers/trig.py b/rdflib/plugins/serializers/trig.py
index a8e35da2..6ccd8e10 100644
--- a/rdflib/plugins/serializers/trig.py
+++ b/rdflib/plugins/serializers/trig.py
@@ -7,7 +7,7 @@ from collections import defaultdict
from rdflib.plugins.serializers.turtle import TurtleSerializer, _GEN_QNAME_FOR_DT, VERB
from rdflib.term import BNode, Literal
-from rdflib.py3compat import b
+from six import b
__all__ = ['TrigSerializer']
diff --git a/rdflib/plugins/serializers/trix.py b/rdflib/plugins/serializers/trix.py
index de5f7e7b..84b9f820 100644
--- a/rdflib/plugins/serializers/trix.py
+++ b/rdflib/plugins/serializers/trix.py
@@ -6,7 +6,7 @@ from rdflib.namespace import Namespace
from rdflib.graph import Graph, ConjunctiveGraph
-from rdflib.py3compat import b, text_type
+from six import text_type, b
__all__ = ['TriXSerializer']
diff --git a/rdflib/plugins/serializers/turtle.py b/rdflib/plugins/serializers/turtle.py
index 1f6bef0f..22cca7de 100644
--- a/rdflib/plugins/serializers/turtle.py
+++ b/rdflib/plugins/serializers/turtle.py
@@ -10,7 +10,7 @@ from rdflib.term import BNode, Literal, URIRef
from rdflib.exceptions import Error
from rdflib.serializer import Serializer
from rdflib.namespace import RDF, RDFS
-from rdflib.py3compat import b, text_type
+from six import b, text_type
__all__ = ['RecursiveSerializer', 'TurtleSerializer']
diff --git a/rdflib/plugins/sleepycat.py b/rdflib/plugins/sleepycat.py
index 8597d2d0..c265e190 100644
--- a/rdflib/plugins/sleepycat.py
+++ b/rdflib/plugins/sleepycat.py
@@ -1,6 +1,7 @@
from rdflib.store import Store, VALID_STORE, NO_STORE
from rdflib.term import URIRef
-from rdflib.py3compat import b, pathname2url
+from six import b
+from six.moves.urllib.request import pathname2url
def bb(u):
diff --git a/rdflib/plugins/sparql/aggregates.py b/rdflib/plugins/sparql/aggregates.py
index df4083e4..3e657c99 100644
--- a/rdflib/plugins/sparql/aggregates.py
+++ b/rdflib/plugins/sparql/aggregates.py
@@ -1,6 +1,6 @@
from rdflib import Literal, XSD
-from rdflib.py3compat import text_type, itervalues
+from six import text_type, itervalues
from rdflib.plugins.sparql.evalutils import _eval, NotBoundError, _val
from rdflib.plugins.sparql.operators import numeric
from rdflib.plugins.sparql.datatypes import type_promotion
diff --git a/rdflib/plugins/sparql/evaluate.py b/rdflib/plugins/sparql/evaluate.py
index 4eb34196..03b52bfa 100644
--- a/rdflib/plugins/sparql/evaluate.py
+++ b/rdflib/plugins/sparql/evaluate.py
@@ -17,7 +17,7 @@ also return a dict of list of dicts
import collections
from rdflib import Variable, Graph, BNode, URIRef, Literal
-from rdflib.py3compat import iteritems, itervalues
+from six import iteritems, itervalues
from rdflib.plugins.sparql import CUSTOM_EVALS
from rdflib.plugins.sparql.parserutils import value
diff --git a/rdflib/plugins/sparql/operators.py b/rdflib/plugins/sparql/operators.py
index 8117d000..f488921f 100644
--- a/rdflib/plugins/sparql/operators.py
+++ b/rdflib/plugins/sparql/operators.py
@@ -25,7 +25,8 @@ from rdflib.plugins.sparql.parserutils import CompValue, Expr
from rdflib.plugins.sparql.datatypes import XSD_DTs, type_promotion
from rdflib import URIRef, BNode, Variable, Literal, XSD, RDF
from rdflib.term import Node
-from rdflib.py3compat import text_type, quote
+from six import text_type
+from six.moves.urllib.parse import quote
from pyparsing import ParseResults
diff --git a/rdflib/plugins/sparql/parser.py b/rdflib/plugins/sparql/parser.py
index a00bac3c..f7db07eb 100644
--- a/rdflib/plugins/sparql/parser.py
+++ b/rdflib/plugins/sparql/parser.py
@@ -19,7 +19,8 @@ from pyparsing import CaselessKeyword as Keyword # watch out :)
from .parserutils import Comp, Param, ParamList
from . import operators as op
-from rdflib.py3compat import decodeUnicodeEscape, bytestype, unichr
+from rdflib.py3compat import decodeUnicodeEscape
+from six import binary_type, unichr
import rdflib
@@ -1053,7 +1054,7 @@ def expandUnicodeEscapes(q):
def parseQuery(q):
if hasattr(q, 'read'):
q = q.read()
- if isinstance(q, bytestype):
+ if isinstance(q, binary_type):
q = q.decode('utf-8')
q = expandUnicodeEscapes(q)
@@ -1064,7 +1065,7 @@ def parseUpdate(q):
if hasattr(q, 'read'):
q = q.read()
- if isinstance(q, bytestype):
+ if isinstance(q, binary_type):
q = q.decode('utf-8')
q = expandUnicodeEscapes(q)
diff --git a/rdflib/plugins/sparql/processor.py b/rdflib/plugins/sparql/processor.py
index 4b9331de..5ecbb435 100644
--- a/rdflib/plugins/sparql/processor.py
+++ b/rdflib/plugins/sparql/processor.py
@@ -6,7 +6,7 @@ These should be automatically registered with RDFLib
"""
-from rdflib.py3compat import string_types
+from six import string_types
from rdflib.query import Processor, Result, UpdateProcessor
diff --git a/rdflib/plugins/sparql/results/csvresults.py b/rdflib/plugins/sparql/results/csvresults.py
index 2a96e23a..e0412b0c 100644
--- a/rdflib/plugins/sparql/results/csvresults.py
+++ b/rdflib/plugins/sparql/results/csvresults.py
@@ -10,7 +10,9 @@ http://www.w3.org/TR/sparql11-results-csv-tsv/
import codecs
import csv
-from rdflib import Variable, BNode, URIRef, Literal, py3compat
+from six import binary_type, PY3
+
+from rdflib import Variable, BNode, URIRef, Literal
from rdflib.query import Result, ResultSerializer, ResultParser
@@ -23,7 +25,7 @@ class CSVResultParser(ResultParser):
r = Result('SELECT')
- if isinstance(source.read(0), py3compat.bytestype):
+ if isinstance(source.read(0), binary_type):
# if reading from source returns bytes do utf-8 decoding
source = codecs.getreader('utf-8')(source)
@@ -63,7 +65,7 @@ class CSVResultSerializer(ResultSerializer):
def serialize(self, stream, encoding='utf-8'):
- if py3compat.PY3:
+ if PY3:
# the serialiser writes bytes in the given encoding
# in py3 csv.writer is unicode aware and writes STRINGS,
# so we encode afterwards
@@ -84,7 +86,7 @@ class CSVResultSerializer(ResultSerializer):
def serializeTerm(self, term, encoding):
if term is None:
return ""
- if not py3compat.PY3:
+ if not PY3:
return term.encode(encoding)
else:
return term
diff --git a/rdflib/plugins/sparql/results/jsonresults.py b/rdflib/plugins/sparql/results/jsonresults.py
index 933a0240..4bffb515 100644
--- a/rdflib/plugins/sparql/results/jsonresults.py
+++ b/rdflib/plugins/sparql/results/jsonresults.py
@@ -4,7 +4,7 @@ from rdflib.query import (
Result, ResultException, ResultSerializer, ResultParser)
from rdflib import Literal, URIRef, BNode, Variable
-from rdflib.py3compat import bytestype, text_type
+from six import binary_type, text_type
"""A Serializer for SPARQL results in JSON:
@@ -23,7 +23,7 @@ class JSONResultParser(ResultParser):
def parse(self, source):
inp = source.read()
- if isinstance(inp, bytestype):
+ if isinstance(inp, binary_type):
inp = inp.decode('utf-8')
return JSONResult(json.loads(inp))
diff --git a/rdflib/plugins/sparql/results/tsvresults.py b/rdflib/plugins/sparql/results/tsvresults.py
index e706e4a9..dfc7657e 100644
--- a/rdflib/plugins/sparql/results/tsvresults.py
+++ b/rdflib/plugins/sparql/results/tsvresults.py
@@ -20,7 +20,7 @@ from rdflib.plugins.sparql.parserutils import Comp, Param, CompValue
from rdflib import Literal as RDFLiteral
-from rdflib.py3compat import bytestype
+from six import binary_type
ParserElement.setDefaultWhitespaceChars(" \n")
@@ -49,7 +49,7 @@ HEADER.parseWithTabs()
class TSVResultParser(ResultParser):
def parse(self, source):
- if isinstance(source.read(0), bytestype):
+ if isinstance(source.read(0), binary_type):
# if reading from source returns bytes do utf-8 decoding
source = codecs.getreader('utf-8')(source)
diff --git a/rdflib/plugins/sparql/results/xmlresults.py b/rdflib/plugins/sparql/results/xmlresults.py
index 2f34870e..20da0b2c 100644
--- a/rdflib/plugins/sparql/results/xmlresults.py
+++ b/rdflib/plugins/sparql/results/xmlresults.py
@@ -4,7 +4,7 @@ from xml.dom import XML_NAMESPACE
from xml.sax.xmlreader import AttributesNSImpl
from rdflib.compat import etree
-from rdflib.py3compat import iteritems
+from six import iteritems
from rdflib import Literal, URIRef, BNode, Graph, Variable
from rdflib.query import (
@@ -14,7 +14,7 @@ from rdflib.query import (
ResultException
)
-from rdflib.py3compat import text_type
+from six import text_type
SPARQL_XML_NAMESPACE = u'http://www.w3.org/2005/sparql-results#'
RESULTS_NS_ET = '{%s}' % SPARQL_XML_NAMESPACE
diff --git a/rdflib/plugins/sparql/sparql.py b/rdflib/plugins/sparql/sparql.py
index 96f2ed65..e4cd124d 100644
--- a/rdflib/plugins/sparql/sparql.py
+++ b/rdflib/plugins/sparql/sparql.py
@@ -5,7 +5,7 @@ import itertools
import datetime
from collections import Mapping, MutableMapping
-from rdflib.py3compat import text_type, iteritems
+from six import text_type, iteritems
from rdflib.namespace import NamespaceManager
from rdflib import Variable, BNode, Graph, ConjunctiveGraph, URIRef, Literal
diff --git a/rdflib/plugins/sparql/update.py b/rdflib/plugins/sparql/update.py
index 5894e6a3..d06d104e 100644
--- a/rdflib/plugins/sparql/update.py
+++ b/rdflib/plugins/sparql/update.py
@@ -6,7 +6,7 @@ Code for carrying out Update Operations
from rdflib import Graph, Variable
-from rdflib.py3compat import iteritems
+from six import iteritems
from rdflib.plugins.sparql.sparql import QueryContext
from rdflib.plugins.sparql.evalutils import _fillTemplate, _join
diff --git a/rdflib/plugins/stores/regexmatching.py b/rdflib/plugins/stores/regexmatching.py
index 3f186a12..a3e188f8 100644
--- a/rdflib/plugins/stores/regexmatching.py
+++ b/rdflib/plugins/stores/regexmatching.py
@@ -11,7 +11,7 @@ matching against the results from the store it's wrapping.
from rdflib.store import Store
from rdflib.graph import Graph
-from rdflib.py3compat import text_type
+from six import text_type
import re
diff --git a/rdflib/plugins/stores/sparqlstore.py b/rdflib/plugins/stores/sparqlstore.py
index 0f6731a8..d8084d46 100644
--- a/rdflib/plugins/stores/sparqlstore.py
+++ b/rdflib/plugins/stores/sparqlstore.py
@@ -32,7 +32,7 @@ from rdflib import Variable, Namespace, BNode, URIRef, Literal
from rdflib.graph import DATASET_DEFAULT_GRAPH_ID
from rdflib.term import Node
-from rdflib.py3compat import text_type, string_types
+from six import text_type, string_types
class NSSPARQLWrapper(SPARQLWrapper):
nsBindings = {}
diff --git a/rdflib/py3compat.py b/rdflib/py3compat.py
index 49191fc1..4710cd42 100644
--- a/rdflib/py3compat.py
+++ b/rdflib/py3compat.py
@@ -4,81 +4,20 @@ Utility functions and objects to ease Python 3 compatibility.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-# from __future__ import unicode_literals
-import sys
import re
import codecs
import warnings
import six
-from six import PY2
-from six import PY3
-# from six import b # see below!
-from six import binary_type
-from six import integer_types
-from six import string_types
-from six import text_type
-from six import unichr
-
-from six import iteritems
-from six import iterkeys
-from six import itervalues
-
-# from six import BytesIO # see below!
-from six import StringIO
-
-from six.moves import input
-from six.moves import cPickle, configparser
-from six.moves.urllib.parse import quote
-from six.moves.urllib.parse import urldefrag
-from six.moves.urllib.parse import urljoin
-from six.moves.urllib.parse import urlparse
-from six.moves.urllib.parse import urlsplit
-from six.moves.urllib.parse import urlunsplit
-from six.moves.urllib.parse import urlunparse
-
-
-from six.moves.urllib.request import Request
-from six.moves.urllib.request import pathname2url
-from six.moves.urllib.request import url2pathname
-from six.moves.urllib.request import urlopen
-from six.moves.urllib.request import build_opener
-
-from six.moves.urllib.error import URLError
-from six.moves.urllib.error import HTTPError
-
-from six.moves.BaseHTTPServer import BaseHTTPRequestHandler
-from six.moves.BaseHTTPServer import HTTPServer
-
-if PY3:
- import _thread as thread
- from html.entities import name2codepoint
- import queue
-else:
- import thread
- import Queue as queue
- from htmlentitydefs import name2codepoint
-
-
-try:
- from functools import wraps
- assert wraps
-except ImportError:
- # No-op wraps decorator
- def wraps(f):
- def dec(newf):
- return newf
- return dec
+from functools import wraps
def cast_bytes(s, enc='utf-8'):
- if isinstance(s, text_type):
+ if isinstance(s, six.text_type):
return s.encode(enc)
return s
-
-
def _modify_str_or_docstring(str_change_func):
@wraps(str_change_func)
def wrapper(func_or_str):
@@ -98,11 +37,9 @@ def _modify_str_or_docstring(str_change_func):
return wrapper
-if PY3:
+if six.PY3:
# Python 3:
# ---------
- def b(s):
- return s.encode('ascii')
def ascii(stream):
return codecs.getreader('ascii')(stream)
@@ -110,12 +47,8 @@ if PY3:
def bopen(*args, **kwargs):
return open(*args, mode = 'rb', **kwargs)
- bytestype = bytes
-
long_type = int
- from io import BytesIO
-
# Abstract u'abc' syntax:
@_modify_str_or_docstring
def format_doctest_out(s):
@@ -131,23 +64,6 @@ if PY3:
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
@@ -158,20 +74,14 @@ if PY3:
else:
# Python 2
# --------
- def b(s):
- return s
def ascii(stream):
return stream
bopen = open
- bytestype = str
-
long_type = long
- from cStringIO import StringIO as BytesIO
-
# Abstract u'abc' syntax:
@_modify_str_or_docstring
def format_doctest_out(s):
@@ -186,15 +96,6 @@ else:
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)
@@ -229,7 +130,7 @@ def decodeStringEscape(s):
s is byte-string - replace \ escapes in string
"""
- if not PY3:
+ if not six.PY3:
s = s.decode('string-escape')
else:
s = s.replace('\\t', '\t')
@@ -249,7 +150,7 @@ def decodeUnicodeEscape(s):
s is a unicode string
replace \n and \\u00AC unicode escapes
"""
- if not PY3:
+ if not six.PY3:
s = s.encode('utf-8').decode('string-escape')
s = _unicodeExpand(s)
else:
diff --git a/rdflib/query.py b/rdflib/query.py
index 8f6d5784..e835e889 100644
--- a/rdflib/query.py
+++ b/rdflib/query.py
@@ -9,10 +9,10 @@ import warnings
import types
from . import py3compat
-from .py3compat import BytesIO
-from .py3compat import PY2
-from .py3compat import text_type
-from .py3compat import urlparse
+from six import BytesIO
+from six import PY2
+from six import text_type
+from six.moves.urllib.parse import urlparse
__all__ = ['Processor', 'Result', 'ResultParser', 'ResultSerializer',
'ResultException']
diff --git a/rdflib/resource.py b/rdflib/resource.py
index 00ebab85..a4c7f235 100644
--- a/rdflib/resource.py
+++ b/rdflib/resource.py
@@ -4,7 +4,7 @@ from __future__ import division
from __future__ import print_function
from . import py3compat
-from .py3compat import text_type
+from six import text_type, PY3
__doc__ = py3compat.format_doctest_out("""
@@ -357,7 +357,7 @@ class Resource(object):
def __unicode__(self):
return text_type(self._identifier)
- if py3compat.PY3:
+ if PY3:
__str__ = __unicode__
def add(self, p, o):
diff --git a/rdflib/store.py b/rdflib/store.py
index 6c3230a0..3688c642 100644
--- a/rdflib/store.py
+++ b/rdflib/store.py
@@ -37,8 +37,8 @@ UNKNOWN = None
from rdflib.events import Dispatcher, Event
-from .py3compat import cPickle
-from .py3compat import BytesIO
+from six.moves import cPickle
+from six import BytesIO
Pickler = cPickle.Pickler
Unpickler = cPickle.Unpickler
UnpicklingError = cPickle.UnpicklingError
diff --git a/rdflib/term.py b/rdflib/term.py
index 1369aebc..3c1fd669 100644
--- a/rdflib/term.py
+++ b/rdflib/term.py
@@ -56,16 +56,16 @@ from isodate import parse_time, parse_date, parse_datetime
import rdflib
from . import py3compat
-from .py3compat import PY2
-from .py3compat import PY3
-from .py3compat import b
-from .py3compat import integer_types
-from .py3compat import long_type
-from .py3compat import string_types
-from .py3compat import text_type
-from .py3compat import urldefrag
-from .py3compat import urljoin
-from .py3compat import urlparse
+from six import PY2
+from six import PY3
+from six import b
+from six import integer_types
+from rdflib.py3compat import long_type
+from six import string_types
+from six import text_type
+from six.moves.urllib.parse import urldefrag
+from six.moves.urllib.parse import urljoin
+from six.moves.urllib.parse import urlparse
skolem_genid = "/.well-known/genid/"
rdflib_skolem_genid = "/.well-known/genid/rdflib/"
@@ -91,7 +91,7 @@ def _is_valid_unicode(value):
"""
if isinstance(value, bytes):
coding_func, param = getattr(value, 'decode'), 'utf-8'
- elif py3compat.PY3:
+ elif PY3:
coding_func, param = str, value
else:
coding_func, param = unicode, value
@@ -432,7 +432,7 @@ class BNode(Identifier):
class Literal(Identifier):
- __doc__ = py3compat.format_doctest_out("""
+ __doc__ = rdflib.py3compat.format_doctest_out("""
RDF Literal: http://www.w3.org/TR/rdf-concepts/#section-Graph-Literal
The lexical value of the literal is the unicode object
@@ -519,7 +519,7 @@ class Literal(Identifier):
""")
- if not py3compat.PY3:
+ if not PY3:
__slots__ = ("language", "datatype", "value", "_language",
"_datatype", "_value")
else:
@@ -576,7 +576,7 @@ class Literal(Identifier):
if datatype:
lang = None
- if py3compat.PY3 and isinstance(lexical_or_value, bytes):
+ if PY3 and isinstance(lexical_or_value, bytes):
lexical_or_value = lexical_or_value.decode('utf-8')
try:
@@ -589,7 +589,7 @@ class Literal(Identifier):
inst._value = value
return inst
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def normalize(self):
"""
Returns a new literal with a normalised lexical representation
@@ -632,7 +632,7 @@ class Literal(Identifier):
self._language = d["language"]
self._datatype = d["datatype"]
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __add__(self, val):
"""
>>> Literal(1) + 1
@@ -663,7 +663,7 @@ class Literal(Identifier):
if PY2:
__nonzero__ = __bool__
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __neg__(self):
"""
>>> (- Literal(1))
@@ -686,7 +686,7 @@ class Literal(Identifier):
else:
raise TypeError("Not a number; %s" % repr(self))
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __pos__(self):
"""
>>> (+ Literal(1))
@@ -707,7 +707,7 @@ class Literal(Identifier):
else:
raise TypeError("Not a number; %s" % repr(self))
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __abs__(self):
"""
>>> abs(Literal(-1))
@@ -727,7 +727,7 @@ class Literal(Identifier):
else:
raise TypeError("Not a number; %s" % repr(self))
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __invert__(self):
"""
>>> ~(Literal(-1))
@@ -933,7 +933,7 @@ class Literal(Identifier):
res ^= hash(self.datatype)
return res
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def __eq__(self, other):
"""
Literals are only equal to other literals.
@@ -1081,7 +1081,7 @@ class Literal(Identifier):
def neq(self, other):
return not self.eq(other)
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def n3(self, namespace_manager = None):
r'''
Returns a representation in the N3 format.
@@ -1141,7 +1141,7 @@ class Literal(Identifier):
else:
return self._literal_n3()
- @py3compat.format_doctest_out
+ @rdflib.py3compat.format_doctest_out
def _literal_n3(self, use_plain=False, qname_callback=None):
'''
Using plain literal (shorthand) output::
diff --git a/rdflib/tools/rdfpipe.py b/rdflib/tools/rdfpipe.py
index b7a56453..568e52e0 100644
--- a/rdflib/tools/rdfpipe.py
+++ b/rdflib/tools/rdfpipe.py
@@ -20,7 +20,7 @@ from rdflib.parser import Parser
from rdflib.serializer import Serializer
from rdflib.util import guess_format
-from rdflib.py3compat import PY3
+from six import PY3
DEFAULT_INPUT_FORMAT = 'xml'
diff --git a/rdflib/util.py b/rdflib/util.py
index b565959e..cdb30b14 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 .py3compat import sign
+from rdflib.py3compat import sign
__all__ = [
'list2set', 'first', 'uniq', 'more_than', 'to_term', 'from_n3',
diff --git a/test/manifest.py b/test/manifest.py
index 14dc256c..4f91dd6d 100644
--- a/test/manifest.py
+++ b/test/manifest.py
@@ -4,7 +4,7 @@ from collections import namedtuple
from nose.tools import nottest
from rdflib import Graph, RDF, RDFS, Namespace
-from rdflib.py3compat import text_type
+from six import text_type
MF = Namespace('http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#')
QT = Namespace('http://www.w3.org/2001/sw/DataAccess/tests/test-query#')
diff --git a/test/rdfa/run_w3c_rdfa_testsuite.py b/test/rdfa/run_w3c_rdfa_testsuite.py
index b9ca6d13..fec3bc12 100644
--- a/test/rdfa/run_w3c_rdfa_testsuite.py
+++ b/test/rdfa/run_w3c_rdfa_testsuite.py
@@ -18,7 +18,7 @@ from operator import attrgetter
import re
import os
-from rdflib.py3compat import urlopen, url2pathname
+from six.moves.urllib.request import urlopen, url2pathname
from rdflib.graph import Graph
from rdflib.namespace import Namespace, RDF
diff --git a/test/rdfa/test_non_xhtml.py b/test/rdfa/test_non_xhtml.py
index 8fe714eb..a6f56a58 100644
--- a/test/rdfa/test_non_xhtml.py
+++ b/test/rdfa/test_non_xhtml.py
@@ -1,5 +1,5 @@
from unittest import TestCase
-from rdflib.py3compat import URLError
+from six.moves.urllib.error import URLError
from rdflib.graph import ConjunctiveGraph
@@ -36,5 +36,5 @@ class NonXhtmlTest(TestCase):
try:
import html5lib
return True
- except:
+ except:
return False
diff --git a/test/test_aggregate_graphs.py b/test/test_aggregate_graphs.py
index f790345d..a289d1a3 100644
--- a/test/test_aggregate_graphs.py
+++ b/test/test_aggregate_graphs.py
@@ -1,7 +1,7 @@
import unittest
from rdflib.namespace import Namespace, RDF, RDFS
from rdflib import plugin
-from rdflib.py3compat import StringIO
+from six import StringIO
from rdflib.term import URIRef
from rdflib.store import Store
from rdflib.graph import Graph
@@ -55,7 +55,7 @@ WHERE { GRAPH ?graph { ?member a ?class } }"""
sparqlQ3 =\
"""
-PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
SELECT ?n3Doc
WHERE {?n3Doc a log:N3Document }"""
@@ -71,7 +71,7 @@ class GraphAggregates1(unittest.TestCase):
(testGraph2N3,self.graph2),
(testGraph3N3,self.graph3)]:
graph.parse(StringIO(n3Str),format='n3')
-
+
self.G = ReadOnlyGraphAggregate([self.graph1,self.graph2,self.graph3])
def testAggregateRaw(self):
@@ -79,20 +79,20 @@ class GraphAggregates1(unittest.TestCase):
assert len(list(self.G.triples((None,RDF.type,None)))) == 4
assert len(list(self.G.triples((URIRef("http://test/bar"),None,None)))) == 2
assert len(list(self.G.triples((None,URIRef("http://test/d"),None)))) == 3
-
+
#Test __len__
assert len(self.G) == 8
-
+
#assert context iteration
for g in self.G.contexts():
assert isinstance(g,Graph)
-
+
#Test __contains__
assert (URIRef("http://test/foo"),RDF.type,RDFS.Resource) in self.G
-
+
barPredicates = [URIRef("http://test/d"),RDFS.isDefinedBy]
assert len(list(self.G.triples_choices((URIRef("http://test/bar"),barPredicates,None)))) == 2
-
+
class GraphAggregates2(unittest.TestCase):
known_issue = True
@@ -103,12 +103,12 @@ class GraphAggregates2(unittest.TestCase):
self.graph1 = Graph(memStore,URIRef("http://example.com/graph1"))
self.graph2 = Graph(memStore,URIRef("http://example.com/graph2"))
self.graph3 = Graph(memStore,URIRef("http://example.com/graph3"))
-
+
for n3Str,graph in [(testGraph1N3,self.graph1),
(testGraph2N3,self.graph2),
(testGraph3N3,self.graph3)]:
graph.parse(StringIO(n3Str),format='n3')
-
+
self.graph4 = Graph(memStore,RDFS)
self.graph4.parse(RDFS.uri)
self.G = ConjunctiveGraph(memStore)
diff --git a/test/test_canonicalization.py b/test/test_canonicalization.py
index ef2b8589..d1e38d1a 100644
--- a/test/test_canonicalization.py
+++ b/test/test_canonicalization.py
@@ -1,6 +1,6 @@
from rdflib import Graph, RDF, BNode, URIRef
from rdflib.compare import to_isomorphic, to_canonical_graph
-from rdflib.py3compat import text_type
+from six import text_type
from io import StringIO
def get_digest_value(rdf, mimetype):
diff --git a/test/test_conneg.py b/test/test_conneg.py
index 479cefc9..d0777a00 100644
--- a/test/test_conneg.py
+++ b/test/test_conneg.py
@@ -2,10 +2,12 @@ import time
from rdflib import Graph
-from rdflib.py3compat import HTTPServer, BaseHTTPRequestHandler, thread
+
+from six.moves import _thread
+from six.moves.BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
"""
-Test that correct content negoation headers are passed
+Test that correct content negoation headers are passed
by graph.parse
"""
@@ -33,7 +35,7 @@ class TestHTTPHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200, "OK")
- # fun fun fun parsing accept header.
+ # fun fun fun parsing accept header.
acs=self.headers["Accept"].split(",")
acq=[x.split(";") for x in acs if ";" in x]
@@ -41,22 +43,22 @@ class TestHTTPHandler(BaseHTTPRequestHandler):
acs=[(x[0], float(x[1].strip()[2:])) for x in acq+acn]
ac=sorted(acs, key=lambda x: x[1])
ct=ac[-1]
-
- if "application/rdf+xml" in ct:
+
+ if "application/rdf+xml" in ct:
rct="application/rdf+xml"
content=xmltestdoc
- elif "text/n3" in ct:
+ elif "text/n3" in ct:
rct="text/n3"
content=n3testdoc
- elif "text/plain" in ct:
+ elif "text/plain" in ct:
rct="text/plain"
- content=nttestdoc
+ content=nttestdoc
self.send_header("Content-type",rct)
self.end_headers()
self.wfile.write(content.encode('utf-8'))
- def log_message(self, *args):
+ def log_message(self, *args):
pass
def runHttpServer(server_class=HTTPServer,
@@ -64,14 +66,14 @@ def runHttpServer(server_class=HTTPServer,
"""Start a server than can handle 3 requests :)"""
server_address = ('localhost', 12345)
httpd = server_class(server_address, handler_class)
-
+
httpd.handle_request()
httpd.handle_request()
httpd.handle_request()
-def testConNeg():
- thread.start_new_thread(runHttpServer, tuple())
+def testConNeg():
+ _thread.start_new_thread(runHttpServer, tuple())
# hang on a second while server starts
time.sleep(1)
graph=Graph()
@@ -84,5 +86,5 @@ if __name__ == "__main__":
import sys
import nose
- if len(sys.argv)==1:
+ if len(sys.argv)==1:
nose.main(defaultTest=sys.argv[0])
diff --git a/test/test_dataset.py b/test/test_dataset.py
index d166cebd..50eb2805 100644
--- a/test/test_dataset.py
+++ b/test/test_dataset.py
@@ -173,7 +173,7 @@ for s in plugin.plugins(pluginname, plugin.Store):
continue
if s.name == "SPARQLUpdateStore":
- from rdflib.py3compat import urlopen
+ from six.moves.urllib.request import urlopen
try:
assert len(urlopen(HOST).read()) > 0
except:
diff --git a/test/test_datetime.py b/test/test_datetime.py
index df1b25fa..3d4b2abc 100644
--- a/test/test_datetime.py
+++ b/test/test_datetime.py
@@ -9,7 +9,7 @@ from isodate.isostrf import DATE_EXT_COMPLETE, TZ_EXT
from rdflib.term import URIRef
from rdflib.term import Literal
from rdflib.namespace import XSD
-from rdflib.py3compat import text_type
+from six import text_type
class TestRelativeBase(unittest.TestCase):
diff --git a/test/test_dawg.py b/test/test_dawg.py
index ed72fe2b..66a195f3 100644
--- a/test/test_dawg.py
+++ b/test/test_dawg.py
@@ -42,7 +42,9 @@ 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, urljoin, BytesIO
+from rdflib.py3compat import decodeStringEscape, bopen
+from six.moves.urllib.parse import urljoin
+from six import BytesIO
from nose.tools import nottest, eq_
from nose import SkipTest
diff --git a/test/test_empty_xml_base.py b/test/test_empty_xml_base.py
index fd490ca4..fdbf05d8 100644
--- a/test/test_empty_xml_base.py
+++ b/test/test_empty_xml_base.py
@@ -9,7 +9,7 @@ from rdflib.graph import ConjunctiveGraph
from rdflib.term import URIRef
from rdflib.namespace import Namespace
from rdflib.namespace import RDF
-from rdflib.py3compat import StringIO
+from six import StringIO
import unittest
@@ -60,4 +60,3 @@ class TestRelativeBase(unittest.TestCase):
if __name__ == "__main__":
unittest.main()
-
diff --git a/test/test_extras_external_graph_libs.py b/test/test_extras_external_graph_libs.py
index 7254df47..83286ca5 100644
--- a/test/test_extras_external_graph_libs.py
+++ b/test/test_extras_external_graph_libs.py
@@ -1,6 +1,6 @@
from nose import SkipTest
from rdflib import Graph, URIRef, Literal
-from rdflib.py3compat import text_type
+from six import text_type
def test_rdflib_to_networkx():
try:
diff --git a/test/test_finalnewline.py b/test/test_finalnewline.py
index 17209e84..2c3b9a6b 100644
--- a/test/test_finalnewline.py
+++ b/test/test_finalnewline.py
@@ -2,7 +2,7 @@
from rdflib import ConjunctiveGraph, URIRef
import rdflib.plugin
-from rdflib.py3compat import b
+from six import b
def testFinalNewline():
"""
@@ -33,5 +33,5 @@ if __name__ == "__main__":
import sys
import nose
- if len(sys.argv)==1:
+ if len(sys.argv)==1:
nose.main(defaultTest=sys.argv[0])
diff --git a/test/test_issue084.py b/test/test_issue084.py
index 0a659a03..88f2faa4 100644
--- a/test/test_issue084.py
+++ b/test/test_issue084.py
@@ -1,5 +1,5 @@
from codecs import getreader
-from rdflib.py3compat import BytesIO, StringIO
+from six import BytesIO, StringIO
from rdflib import URIRef, Literal
from rdflib.graph import Graph
@@ -16,7 +16,7 @@ rdf = u"""@prefix skos:
skos:broaderTransitive :world.
:CI rdf:type skos:Concept;
skos:prefLabel "C\u00f4te d'Ivoire"@fr;
- skos:broaderTransitive :africa.
+ skos:broaderTransitive :africa.
"""
@@ -26,7 +26,7 @@ rdf_reader = getreader('utf-8')(BytesIO(rdf.encode('utf-8')))
-
+
def test_a():
"""Test reading N3 from a unicode objects as data"""
g = Graph()
@@ -83,7 +83,7 @@ rdfxml_utf8 = rdfxml.encode('utf-8')
rdfxml_reader = getreader('utf-8')(BytesIO(rdfxml.encode('utf-8')))
-
+
def test_xml_a():
"""Test reading XML from a unicode object as data"""
import platform
diff --git a/test/test_issue154.py b/test/test_issue154.py
index 4ba80895..5efd91a0 100644
--- a/test/test_issue154.py
+++ b/test/test_issue154.py
@@ -3,7 +3,8 @@ import platform
import warnings
from unittest import TestCase
from rdflib.graph import ConjunctiveGraph, URIRef
-from rdflib.py3compat import unichr, name2codepoint
+from rdflib.py3compat import unichr
+from six.moves.html_entities import name2codepoint
from nose.exc import SkipTest
# Workaround for otherwise-dropped HTML entities
diff --git a/test/test_issue161.py b/test/test_issue161.py
index 2925b7ce..8448ecda 100644
--- a/test/test_issue161.py
+++ b/test/test_issue161.py
@@ -1,5 +1,5 @@
from unittest import TestCase
-from rdflib.py3compat import b
+from six import b
from rdflib.graph import ConjunctiveGraph
@@ -14,25 +14,21 @@ class EntityTest(TestCase):
@prefix p_9: <urn:test:> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
- p_9:a p_9:b p_9:c .
+ p_9:a p_9:b p_9:c .
<http://data.linkedmdb.org/resource/director/1> a
<http://data.linkedmdb.org/resource/movie/director>;
rdfs:label "Cecil B. DeMille (Director)";
_9:director_name "Cecil B. DeMille" ."""
-
+
g.parse(data=n3, format='n3')
turtle = g.serialize(format="turtle")
-
+
# Check round-tripping, just for kicks.
g = ConjunctiveGraph()
g.parse(data=turtle, format='turtle')
# Shouldn't have got to here
s=g.serialize(format="turtle")
-
- self.assertTrue(b('@prefix _9') not in s)
-
-
-
+ self.assertTrue(b('@prefix _9') not in s)
diff --git a/test/test_issue457.py b/test/test_issue457.py
index f59746f9..e375e0b8 100644
--- a/test/test_issue457.py
+++ b/test/test_issue457.py
@@ -5,7 +5,7 @@ from xml.etree import ElementTree
import rdflib
from rdflib.plugins.stores.sparqlstore import _node_from_result
-from rdflib.py3compat import b
+from six import b
def test_issue457():
s = b("""<ns0:literal xmlns:ns0="http://www.w3.org/2005/sparql-results#" />""")
diff --git a/test/test_literal.py b/test/test_literal.py
index d1a98297..58c73e93 100644
--- a/test/test_literal.py
+++ b/test/test_literal.py
@@ -2,7 +2,7 @@ import unittest
import rdflib # needed for eval(repr(...)) below
from rdflib.term import Literal, URIRef, _XSD_DOUBLE, bind
-from rdflib.py3compat import integer_types
+from six import integer_types
from rdflib.py3compat import format_doctest_out as uformat
diff --git a/test/test_n3.py b/test/test_n3.py
index 40448770..7a0f63bd 100644
--- a/test/test_n3.py
+++ b/test/test_n3.py
@@ -1,7 +1,8 @@
from rdflib.term import Literal, URIRef
from rdflib.plugins.parsers.notation3 import BadSyntax
-from rdflib.py3compat import b, URLError
+from six import b
+from six.moves.urllib.error import URLError
test_data = """
# Definitions of terms describing the n3 model
diff --git a/test/test_namespace.py b/test/test_namespace.py
index d6aa8e68..520bde9c 100644
--- a/test/test_namespace.py
+++ b/test/test_namespace.py
@@ -2,7 +2,7 @@ import unittest
from rdflib.graph import Graph
from rdflib.term import URIRef
-from rdflib.py3compat import b
+from six import b
class NamespacePrefixTest(unittest.TestCase):
@@ -14,7 +14,7 @@ class NamespacePrefixTest(unittest.TestCase):
self.assertEqual(g.compute_qname(URIRef("http://foo/bar#baz")),
("ns2", URIRef("http://foo/bar#"), "baz"))
-
+
# should skip to ns4 when ns3 is already assigned
g.bind("ns3", URIRef("http://example.org/"))
self.assertEqual(g.compute_qname(URIRef("http://blip/blop")),
@@ -28,7 +28,7 @@ class NamespacePrefixTest(unittest.TestCase):
n3 = g.serialize(format="n3")
# Gunnar disagrees that this is right:
# self.assertTrue("<http://example.com/foo> ns1:bar <http://example.com/baz> ." in n3)
- # as this is much prettier, and ns1 is already defined:
+ # as this is much prettier, and ns1 is already defined:
self.assertTrue(b("ns1:foo ns1:bar ns1:baz .") in n3)
def test_n32(self):
@@ -40,4 +40,3 @@ class NamespacePrefixTest(unittest.TestCase):
n3 = g.serialize(format="n3")
self.assertTrue(b("<http://example1.com/foo> ns1:bar <http://example3.com/baz> .") in n3)
-
diff --git a/test/test_nquads.py b/test/test_nquads.py
index 599a6144..18ae94c8 100644
--- a/test/test_nquads.py
+++ b/test/test_nquads.py
@@ -1,6 +1,6 @@
import unittest
from rdflib import ConjunctiveGraph, URIRef, Namespace
-from rdflib.py3compat import b
+from six import b
TEST_BASE = 'test/nquads.rdflib'
diff --git a/test/test_nt_misc.py b/test/test_nt_misc.py
index 204482da..3eb3f064 100644
--- a/test/test_nt_misc.py
+++ b/test/test_nt_misc.py
@@ -4,7 +4,9 @@ import os
import re
from rdflib import Graph, Literal, URIRef
from rdflib.plugins.parsers import ntriples
-from rdflib.py3compat import bytestype, text_type, b, urlopen
+from six import binary_type, text_type, b
+from six.moves.urllib.request import urlopen
+
log = logging.getLogger(__name__)
class NTTestCase(unittest.TestCase):
@@ -13,7 +15,7 @@ class NTTestCase(unittest.TestCase):
g = Graph()
g.add((URIRef("foo"), URIRef("foo"), Literal(u"R\u00E4ksm\u00F6rg\u00E5s")))
s = g.serialize(format='nt')
- self.assertEqual(type(s), bytestype)
+ self.assertEqual(type(s), binary_type)
self.assertTrue(b(r"R\u00E4ksm\u00F6rg\u00E5s") in s)
def testIssue146(self):
diff --git a/test/test_prefixTypes.py b/test/test_prefixTypes.py
index 78c6d3ef..d49b6abc 100644
--- a/test/test_prefixTypes.py
+++ b/test/test_prefixTypes.py
@@ -2,7 +2,7 @@ import unittest
from rdflib import Graph
-from rdflib.py3compat import b
+from six import b
graph = Graph().parse(format='n3', data="""
@prefix dct: <http://purl.org/dc/terms/> .
@@ -13,9 +13,9 @@ graph = Graph().parse(format='n3', data="""
dct:created "2011-03-20"^^xsd:date .
""")
-class PrefixTypesTest(unittest.TestCase):
-
- """N3/Turtle serializers should use prefixes,
+class PrefixTypesTest(unittest.TestCase):
+
+ """N3/Turtle serializers should use prefixes,
also for types and datatypes
This is issue 161
@@ -33,5 +33,3 @@ class PrefixTypesTest(unittest.TestCase):
if __name__ == '__main__':
unittest.main()
-
-
diff --git a/test/test_prettyxml.py b/test/test_prettyxml.py
index a1455e98..08071591 100644
--- a/test/test_prettyxml.py
+++ b/test/test_prettyxml.py
@@ -1,7 +1,7 @@
# -*- coding: UTF-8 -*-
from rdflib.term import URIRef, BNode, Literal
from rdflib.namespace import RDF, RDFS
-from rdflib.py3compat import b, BytesIO
+from six import b, BytesIO
from rdflib.plugins.serializers.rdfxml import PrettyXMLSerializer
@@ -125,7 +125,7 @@ class TestPrettyXmlSerializer(SerializerTestBase):
#assert not '<rdfs:subClassOf ' in rdfXml, onlyBNodesMsg
def test_result_fragments_with_base(self):
- rdfXml = serialize(self.sourceGraph, self.serializer,
+ rdfXml = serialize(self.sourceGraph, self.serializer,
extra_args={'base':"http://example.org/", 'xml_base':"http://example.org/"})
assert b('xml:base="http://example.org/"') in rdfXml
assert b('<Test rdf:about="data/a">') in rdfXml
@@ -164,5 +164,3 @@ def _assert_expected_object_types_for_predicates(graph, predicates, types):
someTrue = [isinstance(o, t) for t in types]
assert True in someTrue, \
"Bad type %s for object when predicate is <%s>." % (type(o), p)
-
-
diff --git a/test/test_rdfxml.py b/test/test_rdfxml.py
index 80977f9c..d4e78eaf 100644
--- a/test/test_rdfxml.py
+++ b/test/test_rdfxml.py
@@ -4,7 +4,8 @@ import unittest
import os
import os.path
-from rdflib.py3compat import url2pathname, urlopen
+
+from six.moves.urllib.request import url2pathname, urlopen
from rdflib import RDF, RDFS, URIRef, BNode, Literal, Namespace, Graph
from rdflib.exceptions import ParserError
@@ -237,19 +238,19 @@ if __name__ == "__main__":
except getopt.GetoptError as msg:
write(msg)
# usage()
-
+
try:
argv = sys.argv
if len(argv)>1:
_logger.setLevel(logging.INFO)
_logger.addHandler(logging.StreamHandler())
- for arg in argv[1:]:
+ for arg in argv[1:]:
verbose = 1
case = URIRef(arg)
write(u"Testing: %s" % case)
if (case, RDF.type, TEST["PositiveParserTest"]) in manifest:
- result = _testPositive(case, manifest)
+ result = _testPositive(case, manifest)
write(u"Positive test %s" % ["PASSED", "FAILED"][result])
elif (case, RDF.type, TEST["NegativeParserTest"]) in manifest:
result = _testNegative(case, manifest)
diff --git a/test/test_serializexml.py b/test/test_serializexml.py
index 097e5f87..3c04e677 100644
--- a/test/test_serializexml.py
+++ b/test/test_serializexml.py
@@ -1,6 +1,6 @@
from rdflib.term import URIRef, BNode
from rdflib.namespace import RDFS
-from rdflib.py3compat import b, BytesIO
+from six import b, BytesIO
from rdflib.plugins.serializers.rdfxml import XMLSerializer
@@ -124,7 +124,7 @@ class TestXMLSerializer(SerializerTestBase):
assert b('<rdf:Description rdf:nodeID="') in rdfXml, "expected one identified bnode in serialized graph"
def test_result_fragments_with_base(self):
- rdfXml = serialize(self.sourceGraph, self.serializer,
+ rdfXml = serialize(self.sourceGraph, self.serializer,
extra_args={'base':"http://example.org/", 'xml_base':"http://example.org/"})
#print "--------"
#print rdfXml
@@ -148,5 +148,3 @@ def _assert_expected_object_types_for_predicates(graph, predicates, types):
someTrue = [isinstance(o, t) for t in types]
assert True in someTrue, \
"Bad type %s for object when predicate is <%s>." % (type(o), p)
-
-
diff --git a/test/test_sparqlstore.py b/test/test_sparqlstore.py
index d5091e03..8e963971 100644
--- a/test/test_sparqlstore.py
+++ b/test/test_sparqlstore.py
@@ -7,10 +7,10 @@ try:
except ImportError:
raise SkipTest("SPARQLWrapper not installed")
-if os.getenv("TRAVIS"):
+if os.getenv("TRAVIS"):
raise SkipTest("Doesn't work in travis")
-from rdflib.py3compat import urlopen
+from six.moves.urllib.request import urlopen
try:
assert len(urlopen("http://dbpedia.org/sparql").read()) > 0
except:
diff --git a/test/test_sparqlupdatestore.py b/test/test_sparqlupdatestore.py
index c286e0ae..82b938aa 100644
--- a/test/test_sparqlupdatestore.py
+++ b/test/test_sparqlupdatestore.py
@@ -6,7 +6,8 @@ import unittest
import re
from rdflib import ConjunctiveGraph, URIRef, Literal
-from rdflib.py3compat import text_type, urlopen
+from six import text_type
+from six.moves.urllib.request import urlopen
HOST = 'http://localhost:3031'
DB = '/db/'
diff --git a/test/test_trig.py b/test/test_trig.py
index 8b3bd68f..59c4e818 100644
--- a/test/test_trig.py
+++ b/test/test_trig.py
@@ -3,7 +3,7 @@ import rdflib
import re
from nose import SkipTest
-from rdflib.py3compat import b
+from six import b
TRIPLE = (rdflib.URIRef("http://example.com/s"),
rdflib.RDFS.label,
diff --git a/test/test_trix_serialize.py b/test/test_trix_serialize.py
index 667eb044..f1b68de4 100644
--- a/test/test_trix_serialize.py
+++ b/test/test_trix_serialize.py
@@ -5,7 +5,7 @@ import unittest
from rdflib.graph import ConjunctiveGraph
from rdflib.term import URIRef, Literal
from rdflib.graph import Graph
-from rdflib.py3compat import BytesIO
+from six import BytesIO
class TestTrixSerialize(unittest.TestCase):
diff --git a/test/test_tsvresults.py b/test/test_tsvresults.py
index 8f05cc7c..d5222a34 100644
--- a/test/test_tsvresults.py
+++ b/test/test_tsvresults.py
@@ -1,5 +1,5 @@
import unittest
-from rdflib.py3compat import StringIO
+from six import StringIO
from rdflib.plugins.sparql.results.tsvresults import TSVResultParser
diff --git a/test/test_turtle_serialize.py b/test/test_turtle_serialize.py
index 995b0066..e3fb018f 100644
--- a/test/test_turtle_serialize.py
+++ b/test/test_turtle_serialize.py
@@ -1,7 +1,7 @@
from rdflib import Graph, URIRef, BNode, RDF, Literal, Namespace
from rdflib.collection import Collection
from rdflib.plugins.serializers.turtle import TurtleSerializer
-from rdflib.py3compat import b
+from six import b
def testTurtleFinalDot():