diff env/lib/python3.7/site-packages/rdflib/parser.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/parser.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-"""
-Parser plugin interface.
-
-This module defines the parser plugin interface and contains other
-related parser support code.
-
-The module is mainly useful for those wanting to write a parser that
-can plugin to rdflib. If you are wanting to invoke a parser you likely
-want to do so through the Graph class parse method.
-
-"""
-
-import os
-import sys
-from urllib.request import pathname2url, url2pathname
-from urllib.request import urlopen, Request
-from urllib.parse import urljoin
-from rdflib.py3compat import PY3
-if PY3:
-    from io import BytesIO
-    assert BytesIO
-else:
-    from io import StringIO as BytesIO
-from xml.sax import xmlreader
-
-from rdflib import __version__
-from rdflib.term import URIRef
-from rdflib.namespace import Namespace
-
-__all__ = [
-    'Parser', 'InputSource', 'StringInputSource',
-    'URLInputSource', 'FileInputSource']
-
-
-class Parser(object):
-
-    def __init__(self):
-        pass
-
-    def parse(self, source, sink):
-        pass
-
-
-class InputSource(xmlreader.InputSource, object):
-    """
-    TODO:
-    """
-
-    def __init__(self, system_id=None):
-        xmlreader.InputSource.__init__(self, system_id=system_id)
-        self.content_type = None
-        self.auto_close = False  # see Graph.parse(), true if opened by us
-
-    def close(self):
-        f = self.getByteStream()
-        if f and hasattr(f, 'close'):
-            f.close()
-
-
-class StringInputSource(InputSource):
-    """
-    TODO:
-    """
-
-    def __init__(self, value, system_id=None):
-        super(StringInputSource, self).__init__(system_id)
-        stream = BytesIO(value)
-        self.setByteStream(stream)
-        # TODO:
-        #   encoding = value.encoding
-        #   self.setEncoding(encoding)
-
-
-headers = {
-    'User-agent':
-    'rdflib-%s (http://rdflib.net/; eikeon@eikeon.com)' % __version__
-}
-
-
-class URLInputSource(InputSource):
-    """
-    TODO:
-    """
-
-    def __init__(self, system_id=None, format=None):
-        super(URLInputSource, self).__init__(system_id)
-        self.url = system_id
-
-        # copy headers to change
-        myheaders = dict(headers)
-        if format == 'application/rdf+xml':
-            myheaders['Accept'] = 'application/rdf+xml, */*;q=0.1'
-        elif format == 'n3':
-            myheaders['Accept'] = 'text/n3, */*;q=0.1'
-        elif format == 'nt':
-            myheaders['Accept'] = 'text/plain, */*;q=0.1'
-        elif format == 'json-ld':
-            myheaders['Accept'] = (
-                'application/ld+json, application/json;p=0.9, */*;q=0.1')
-        else:
-            myheaders['Accept'] = (
-                'application/rdf+xml,text/rdf+n3;q=0.9,' +
-                'application/xhtml+xml;q=0.5, */*;q=0.1')
-
-        req = Request(system_id, None, myheaders)
-        file = urlopen(req)
-        # Fix for issue 130 https://github.com/RDFLib/rdflib/issues/130
-        self.url = file.geturl()    # in case redirections took place
-        self.setPublicId(self.url)
-        self.content_type = file.info().get('content-type')
-        if self.content_type is not None:
-            self.content_type = self.content_type.split(";", 1)[0]
-        self.setByteStream(file)
-        # TODO: self.setEncoding(encoding)
-        self.response_info = file.info() # a mimetools.Message instance
-
-    def __repr__(self):
-        return self.url
-
-
-class FileInputSource(InputSource):
-
-    def __init__(self, file):
-        base = urljoin("file:", pathname2url(os.getcwd()))
-        system_id = URIRef(urljoin("file:", pathname2url(file.name)), base=base)
-        super(FileInputSource, self).__init__(system_id)
-        self.file = file
-        self.setByteStream(file)
-        # TODO: self.setEncoding(encoding)
-
-    def __repr__(self):
-        return repr(self.file)
-
-
-def create_input_source(source=None, publicID=None,
-                        location=None, file=None, data=None, format=None):
-    """
-    Return an appropriate InputSource instance for the given
-    parameters.
-    """
-
-    # test that exactly one of source, location, file, and data is not None.
-    if sum((
-        source is not None,
-        location is not None,
-        file is not None,
-        data is not None,
-    )) != 1:
-        raise ValueError(
-            'exactly one of source, location, file or data must be given'
-        )
-
-    input_source = None
-
-    if source is not None:
-        if isinstance(source, InputSource):
-            input_source = source
-        else:
-            if isinstance(source, str):
-                location = source
-            elif hasattr(source, "read") and not isinstance(source, Namespace):
-                f = source
-                input_source = InputSource()
-                input_source.setByteStream(f)
-                if f is sys.stdin:
-                    input_source.setSystemId("file:///dev/stdin")
-                elif hasattr(f, "name"):
-                    input_source.setSystemId(f.name)
-            else:
-                raise Exception("Unexpected type '%s' for source '%s'" %
-                                (type(source), source))
-
-    absolute_location = None  # Further to fix for issue 130
-
-    auto_close = False  # make sure we close all file handles we open
-    if location is not None:
-        # Fix for Windows problem https://github.com/RDFLib/rdflib/issues/145
-        if os.path.exists(location):
-            location = pathname2url(location)
-        base = urljoin("file:", "%s/" % pathname2url(os.getcwd()))
-        absolute_location = URIRef(location, base=base).defrag()
-        if absolute_location.startswith("file:///"):
-            filename = url2pathname(absolute_location.replace("file:///", "/"))
-            file = open(filename, "rb")
-        else:
-            input_source = URLInputSource(absolute_location, format)
-        auto_close = True
-        # publicID = publicID or absolute_location  # Further to fix
-                                                    # for issue 130
-
-    if file is not None:
-        input_source = FileInputSource(file)
-
-    if data is not None:
-        if isinstance(data, str):
-            data = data.encode('utf-8')
-        input_source = StringInputSource(data)
-        auto_close = True
-
-    if input_source is None:
-        raise Exception("could not create InputSource")
-    else:
-        input_source.auto_close |= auto_close
-        if publicID is not None:  # Further to fix for issue 130
-            input_source.setPublicId(publicID)
-        # Further to fix for issue 130
-        elif input_source.getPublicId() is None:
-            input_source.setPublicId(absolute_location or "")
-        return input_source