Hello community, here is the log from the commit of package python-SPARQLWrapper for openSUSE:Factory checked in at 2017-05-16 14:30:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-SPARQLWrapper (Old) and /work/SRC/openSUSE:Factory/.python-SPARQLWrapper.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-SPARQLWrapper" Tue May 16 14:30:00 2017 rev:5 rq:493613 version:1.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-SPARQLWrapper/python-SPARQLWrapper.changes 2016-09-17 14:37:35.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-SPARQLWrapper.new/python-SPARQLWrapper.changes 2017-05-16 14:30:01.810630367 +0200 @@ -1,0 +2,19 @@ +Mon May 8 19:48:46 UTC 2017 - toddrme2...@gmail.com + +- Fix source URL. + +------------------------------------------------------------------- +Wed May 3 17:09:10 UTC 2017 - toddrme2...@gmail.com + +- Update to version 1.8.0 + * Updated return formats for not content negotiation situations + * Included license in the MANIFEST (issue #76) + * Added explicit support for RDF/XML as allowed format (issue #75) + * Added proper shebang (issue #78) + * Moved keepalive as optional dependency (issue #79) + * Fixed hash check on prefixes (issue #77) +- Fixed epydoc warnings (issue #41) +- Implement single-spec version. +- Fix source URL. + +------------------------------------------------------------------- Old: ---- SPARQLWrapper-1.7.6.tar.gz New: ---- SPARQLWrapper-1.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-SPARQLWrapper.spec ++++++ --- /var/tmp/diff_new_pack.v87lcZ/_old 2017-05-16 14:30:02.738500019 +0200 +++ /var/tmp/diff_new_pack.v87lcZ/_new 2017-05-16 14:30:02.742499456 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-SPARQLWrapper # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,28 +16,29 @@ # +%bcond_without tests + +%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-SPARQLWrapper -Version: 1.7.6 +Version: 1.8.0 Release: 0 Summary: SPARQL Endpoint interface to Python License: W3C Group: Development/Languages/Python Url: http://sparql-wrapper.sourceforge.net/ -Source: https://pypi.io/packages/source/S/SPARQLWrapper/SPARQLWrapper-%{version}.tar.gz -BuildRequires: python-devel -BuildRequires: python-setuptools +Source: https://files.pythonhosted.org/packages/source/S/SPARQLWrapper/SPARQLWrapper-%{version}.tar.gz +BuildRequires: fdupes +BuildRequires: python-rpm-macros +BuildRequires: python3-2to3 +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools} +# Only used during installation +BuildRequires: %{python_module six} Requires: python-rdflib >= 4.0 -# TODO(aplanas) python-keepalive is in the requirements.txt file, but -# the tests pass without this package. -# Requires: python-keepalive >= 0.5 +Recommends: python-rdflib >= 4.0 BuildRoot: %{_tmppath}/%{name}-%{version}-build -%if 0%{?suse_version} && 0%{?suse_version} <= 1110 -BuildRequires: python-simplejson -Requires: python-simplejson -%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} -%else BuildArch: noarch -%endif +%python_subpackages %description This is a wrapper around a SPARQL service. It helps in creating the @@ -48,17 +49,23 @@ %setup -q -n SPARQLWrapper-%{version} %build -python setup.py build +%python_build %install -python setup.py install --prefix=%{_prefix} --root=%{buildroot} +%python_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} +%if %{with tests} %check +# Tests are not compatible with python3 +%if %have_python2 python test/wrapper_test.py +%endif +%endif -%files +%files %{python_files} %defattr(-,root,root,-) -%doc README.md AUTHORS.md +%doc README.md AUTHORS.md LICENSE.txt %{python_sitelib}/SPARQLWrapper/ %{python_sitelib}/SPARQLWrapper-%{version}-py*.egg-info ++++++ SPARQLWrapper-1.7.6.tar.gz -> SPARQLWrapper-1.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/AUTHORS.md new/SPARQLWrapper-1.8.0/AUTHORS.md --- old/SPARQLWrapper-1.7.6/AUTHORS.md 2015-12-18 10:20:55.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/AUTHORS.md 2016-12-06 12:59:16.000000000 +0100 @@ -23,4 +23,5 @@ * Kevin Turner ([@keturn](https://github.com/keturn)): `SmartWrapper.Value.__repr__()` implementation * Marcelo Jorge Vieira ([@marcelometal](https://github.com/marcelometal)): typos * Trevor Andersen ([@trevorandersen](https://github.com/trevorandersen): patches for Python 3.x - +* Carlos Martinez-Ortiz ([@cmartinez](https://github.com/cmartinez): improves support for return format HTTP parameter +* Christian Amsüss ([@chrysn](https://github.com/chrysn)): dependecy fixes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/LICENSE.txt new/SPARQLWrapper-1.8.0/LICENSE.txt --- old/SPARQLWrapper-1.7.6/LICENSE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/LICENSE.txt 2015-11-05 14:54:35.000000000 +0100 @@ -0,0 +1,18 @@ +SPARQL Python Wrapper is released under the W3C� SOFTWARE NOTICE AND LICENSE. + +This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications: + + 1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + 2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code. + 3. Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. + +See also http://www.w3.org/Consortium/Legal/copyright-software for further details + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/MANIFEST.in new/SPARQLWrapper-1.8.0/MANIFEST.in --- old/SPARQLWrapper-1.7.6/MANIFEST.in 2015-11-05 14:54:35.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/MANIFEST.in 2016-12-06 12:48:25.000000000 +0100 @@ -3,3 +3,4 @@ include test/*.py include scripts/*.py include requirements.txt +include LICENSE.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/PKG-INFO new/SPARQLWrapper-1.8.0/PKG-INFO --- old/SPARQLWrapper-1.7.6/PKG-INFO 2015-12-18 10:23:21.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/PKG-INFO 2016-12-07 10:23:51.000000000 +0100 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: SPARQLWrapper -Version: 1.7.6 +Version: 1.8.0 Summary: SPARQL Endpoint interface to Python Home-page: http://rdflib.github.io/sparqlwrapper Author: Ivan Herman, Sergio Fernández, Carlos Tejo Alonso, Alexey Zakhlestin -Author-email: ivan at ivan-herman net, sergio at wikier org, carlos.tejo at gmail com, indeyets at gmail com +Author-email: UNKNOWN License: W3C SOFTWARE NOTICE AND LICENSE Download-URL: https://github.com/RDFLib/sparqlwrapper/releases Description: This is a wrapper around a SPARQL service. It helps in creating the query URI and, possibly, convert the result into a more manageable format. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper/SPARQLUtils.py new/SPARQLWrapper-1.8.0/SPARQLWrapper/SPARQLUtils.py --- old/SPARQLWrapper-1.7.6/SPARQLWrapper/SPARQLUtils.py 2015-11-05 14:54:35.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper/SPARQLUtils.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -# -*- coding: utf8 -*- - -""" - -SPARQL Wrapper Utils - -@authors: U{Ivan Herman<http://www.ivan-herman.net>}, U{Sergio Fernández<http://www.wikier.org>}, U{Carlos Tejo Alonso<http://www.dayures.net>} -@organization: U{World Wide Web Consortium<http://www.w3.org>} and U{Foundation CTIC<http://www.fundacionctic.org/>}. -@license: U{W3C SOFTWARE NOTICE AND LICENSE<href="http://www.w3.org/Consortium/Legal/copyright-software">} - -""" - -import warnings - -def deprecated(func): - """ - This is a decorator which can be used to mark functions - as deprecated. It will result in a warning being emmitted - when the function is used. - @see: http://code.activestate.com/recipes/391367/ - """ - def newFunc(*args, **kwargs): - warnings.warn("Call to deprecated function %s." % func.__name__, category=DeprecationWarning, stacklevel=2) - return func(*args, **kwargs) - newFunc.__name__ = func.__name__ - newFunc.__doc__ = func.__doc__ - newFunc.__dict__.update(func.__dict__) - return newFunc - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper/Wrapper.py new/SPARQLWrapper-1.8.0/SPARQLWrapper/Wrapper.py --- old/SPARQLWrapper-1.7.6/SPARQLWrapper/Wrapper.py 2015-12-18 10:18:26.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper/Wrapper.py 2016-12-07 10:06:42.000000000 +0100 @@ -4,6 +4,7 @@ """ @var JSON: to be used to set the return format to JSON @var XML: to be used to set the return format to XML (SPARQL XML format or RDF/XML, depending on the query type). This is the default. +@var RDFXML: to be used to set the return format to RDF/XML explicitly. @var TURTLE: to be used to set the return format to Turtle @var N3: to be used to set the return format to N3 (for most of the SPARQL services this is equivalent to Turtle) @var RDF: to be used to set the return RDF Graph @@ -35,17 +36,49 @@ import json from KeyCaseInsensitiveDict import KeyCaseInsensitiveDict from SPARQLExceptions import QueryBadFormed, EndPointNotFound, EndPointInternalError -from SPARQLUtils import deprecated from SPARQLWrapper import __agent__ # Possible output format keys... +# Examples: +# - ClioPatria: the SWI-Prolog Semantic Web Server <http://cliopatria.swi-prolog.org/home> +# * Parameter "format" must be one of "rdf+xml", "json", "csv", "application/sparql-results+xml" or "application/sparql-results+json". +# - OpenLink Virtuoso <http://virtuoso.openlinksw.com> +# * Multiple values, like directly: +# "text/html" (HTML), "text/x-html+tr" (HTML (Faceted Browsing Links)), "application/vnd.ms-excel" +# "application/sparql-results+xml" (XML), "application/sparql-results+json", (JSON) +# "application/javascript" (Javascript), "text/turtle" (Turtle), "application/rdf+xml" (RDF/XML) +# "text/plain" (N-Triples), "text/csv" (CSV), "text/tab-separated-values" (TSV) +# * Multiple values, like indirectly: +# "HTML", "JSON", "XML", "TURTLE" +# See <http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSSparqlProtocol#Additional HTTP Response Formats -- SELECT> +# - Fuseki (formerly there was Joseki) <https://jena.apache.org/documentation/serving_data/> +# * Fuseki 1 - Short names for "output=" : "json", "xml", "sparql", "text", "csv", "tsv", "thrift" +# See <https://github.com/apache/jena/blob/master/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java> +# * Fuseki 2 - Short names for "output=" : "json", "xml", "sparql", "text", "csv", "tsv", "thrift" +# See <https://github.com/apache/jena/blob/master/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java> +# - Eclipse RDF4J (formerly known as Sesame) <http://rdf4j.org/> +# * Uses only content negotiation. See <http://rdf4j.org/doc/the-rdf4j-server-rest-api/#The_QUERY_operation> +# - RASQAL <http://librdf.org/rasqal/> +# * Uses roqet as RDF query utility +# For variable bindings, the values of FORMAT vary upon what Rasqal supports but include simple +# for a simple text format (default), xml for the SPARQL Query Results XML format, csv for SPARQL CSV, +# tsv for SPARQL TSV, rdfxml and turtle for RDF syntax formats, and json for a JSON version of the results. +# +# For RDF graph results, the values of FORMAT are ntriples (N-Triples, default), +# rdfxml-abbrev (RDF/XML Abbreviated), rdfxml (RDF/XML), turtle (Turtle), +# json (RDF/JSON resource centric), json-triples (RDF/JSON triples) or +# rss-1.0 (RSS 1.0, also an RDF/XML syntax). +# +# See <http://librdf.org/rasqal/roqet.html> + JSON = "json" JSONLD = "json-ld" XML = "xml" TURTLE = "turtle" N3 = "n3" RDF = "rdf" -_allowedFormats = [JSON, XML, TURTLE, N3, RDF] +RDFXML = "rdf+xml" +_allowedFormats = [JSON, XML, TURTLE, N3, RDF, RDFXML] # Possible HTTP methods POST = "POST" @@ -133,6 +166,7 @@ ((?P<base>(\s*BASE\s*<.*?>)\s*)|(?P<prefixes>(\s*PREFIX\s+.+:\s*<.*?>)\s*))* (?P<queryType>(CONSTRUCT|SELECT|ASK|DESCRIBE|INSERT|DELETE|CREATE|CLEAR|DROP|LOAD|COPY|MOVE|ADD)) """, re.VERBOSE | re.IGNORECASE) + comments_pattern = re.compile(r"(^|\n)\s*#.*?\n") def __init__(self, endpoint, updateEndpoint=None, returnFormat=XML, defaultGraph=None, agent=__agent__): """ @@ -149,7 +183,7 @@ is up to the endpoint to react or not, this wrapper does not check. Possible values: - L{JSON}, L{XML}, L{TURTLE}, L{N3} (constants in this module). The value can also be set via explicit + L{JSON}, L{XML}, L{TURTLE}, L{N3}, L{RDFXML} (constants in this module). The value can also be set via explicit call, see below. @type returnFormat: string @keyword defaultGraph: URI for the default graph. Default is None, the value can be set either via an L{explicit call<addDefaultGraph>} or as part of the query string. @@ -226,7 +260,6 @@ else: warnings.warn("invalid update method '%s'" % method, RuntimeWarning) - @deprecated def addDefaultGraph(self, uri): """ Add a default graph URI. @@ -236,7 +269,6 @@ """ self.addParameter("default-graph-uri", uri) - @deprecated def addNamedGraph(self, uri): """ Add a named graph URI. @@ -246,7 +278,6 @@ """ self.addParameter("named-graph-uri", uri) - @deprecated def addExtraURITag(self, key, value): """ Some SPARQL endpoints require extra key value pairs. @@ -260,7 +291,6 @@ """ self.addParameter(key, value) - @deprecated def addCustomParameter(self, name, value): """ Method is kept for backwards compatibility. Historically, it "replaces" parameters instead of adding @@ -376,7 +406,7 @@ """ try: query = query if type(query)==str else query.encode('ascii', 'ignore') - query = re.sub(re.compile("#.*?\n" ), "" , query) # remove all occurance singleline comments (issue #32) + query = self._cleanComments(query) r_queryType = self.pattern.search(query).group("queryType").upper() except AttributeError: warnings.warn("not detected query type for query '%s'" % query.replace("\n", " "), RuntimeWarning) @@ -419,6 +449,10 @@ """ return not self.isSparqlUpdateRequest() + def _cleanComments(self, query): + # remove all occurance singleline comments (issues #32 and #77) + return re.sub(self.comments_pattern, "\n\n" , query) + def _getRequestEncodedParameters(self, query=None): query_parameters = self.parameters.copy() @@ -716,7 +750,7 @@ _validate_format("JSON", [JSON], ct, self.requestedFormat) return self._convertJSON() elif _content_type_in_list(ct, _RDF_XML): - _validate_format("RDF/XML", [RDF, XML], ct, self.requestedFormat) + _validate_format("RDF/XML", [RDF, XML, RDFXML], ct, self.requestedFormat) return self._convertRDF() elif _content_type_in_list(ct, _RDF_N3): _validate_format("N3", [N3, TURTLE], ct, self.requestedFormat) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper/__init__.py new/SPARQLWrapper-1.8.0/SPARQLWrapper/__init__.py --- old/SPARQLWrapper-1.7.6/SPARQLWrapper/__init__.py 2015-12-18 10:22:39.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper/__init__.py 2016-12-07 10:09:37.000000000 +0100 @@ -163,7 +163,7 @@ @requires: U{RDFLib<http://rdflib.net>} package. """ -__version__ = "1.7.6" +__version__ = "1.8.0" """The version of SPARQLWrapper""" __authors__ = "Ivan Herman, Sergio Fernández, Carlos Tejo Alonso, Alexey Zakhlestin" @@ -185,7 +185,7 @@ from Wrapper import SPARQLWrapper -from Wrapper import XML, JSON, TURTLE, N3, JSONLD, RDF +from Wrapper import XML, JSON, TURTLE, N3, JSONLD, RDF, RDFXML from Wrapper import GET, POST from Wrapper import SELECT, CONSTRUCT, ASK, DESCRIBE, INSERT, DELETE from Wrapper import URLENCODED, POSTDIRECTLY diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/PKG-INFO new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/PKG-INFO --- old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/PKG-INFO 2015-12-18 10:23:16.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/PKG-INFO 2016-12-07 10:23:51.000000000 +0100 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: SPARQLWrapper -Version: 1.7.6 +Version: 1.8.0 Summary: SPARQL Endpoint interface to Python Home-page: http://rdflib.github.io/sparqlwrapper Author: Ivan Herman, Sergio Fernández, Carlos Tejo Alonso, Alexey Zakhlestin -Author-email: ivan at ivan-herman net, sergio at wikier org, carlos.tejo at gmail com, indeyets at gmail com +Author-email: UNKNOWN License: W3C SOFTWARE NOTICE AND LICENSE Download-URL: https://github.com/RDFLib/sparqlwrapper/releases Description: This is a wrapper around a SPARQL service. It helps in creating the query URI and, possibly, convert the result into a more manageable format. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/SOURCES.txt new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/SOURCES.txt --- old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/SOURCES.txt 2015-12-18 10:23:16.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/SOURCES.txt 2016-12-07 10:23:51.000000000 +0100 @@ -1,4 +1,5 @@ AUTHORS.md +LICENSE.txt MANAGEMENT.md MANIFEST.in README.md @@ -6,7 +7,6 @@ setup.py SPARQLWrapper/KeyCaseInsensitiveDict.py SPARQLWrapper/SPARQLExceptions.py -SPARQLWrapper/SPARQLUtils.py SPARQLWrapper/SmartWrapper.py SPARQLWrapper/Wrapper.py SPARQLWrapper/__init__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/requires.txt new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/requires.txt --- old/SPARQLWrapper-1.7.6/SPARQLWrapper.egg-info/requires.txt 2015-12-18 10:23:16.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/SPARQLWrapper.egg-info/requires.txt 2016-12-07 10:23:51.000000000 +0100 @@ -1,2 +1,4 @@ rdflib>=4.0 + +[keepalive] keepalive>=0.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/requirements.txt new/SPARQLWrapper-1.8.0/requirements.txt --- old/SPARQLWrapper-1.7.6/requirements.txt 2015-11-27 18:48:08.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/requirements.txt 2016-12-06 12:51:25.000000000 +0100 @@ -1,2 +1 @@ rdflib>=4.0 -keepalive>=0.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/setup.py new/SPARQLWrapper-1.8.0/setup.py --- old/SPARQLWrapper-1.7.6/setup.py 2015-11-19 14:12:26.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/setup.py 2016-12-07 10:22:55.000000000 +0100 @@ -1,3 +1,4 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- import sys @@ -51,12 +52,14 @@ long_description = 'This is a wrapper around a SPARQL service. It helps in creating the query URI and, possibly, convert the result into a more manageable format.', license = 'W3C SOFTWARE NOTICE AND LICENSE', author = authors, - author_email = "ivan at ivan-herman net, sergio at wikier org, carlos.tejo at gmail com, indeyets at gmail com", url = url, download_url = 'https://github.com/RDFLib/sparqlwrapper/releases', platforms = ['any'], packages = ['SPARQLWrapper'], install_requires = _install_requires, + extras_require = { + 'keepalive': ['keepalive>=0.5'], + }, classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPARQLWrapper-1.7.6/test/wrapper_test.py new/SPARQLWrapper-1.8.0/test/wrapper_test.py --- old/SPARQLWrapper-1.7.6/test/wrapper_test.py 2015-12-18 10:18:26.000000000 +0100 +++ new/SPARQLWrapper-1.8.0/test/wrapper_test.py 2016-12-06 15:02:03.000000000 +0100 @@ -24,7 +24,7 @@ # end of hack from SPARQLWrapper import SPARQLWrapper -from SPARQLWrapper import XML, GET, POST, JSON, JSONLD, N3, TURTLE, RDF, SELECT, INSERT +from SPARQLWrapper import XML, GET, POST, JSON, JSONLD, N3, TURTLE, RDF, SELECT, INSERT, RDFXML from SPARQLWrapper import URLENCODED, POSTDIRECTLY from SPARQLWrapper import BASIC, DIGEST from SPARQLWrapper.Wrapper import QueryResult, QueryBadFormed, EndPointNotFound, EndPointInternalError @@ -199,6 +199,7 @@ self.assertTrue(self.wrapper.supportsReturnFormat(TURTLE)) self.assertTrue(self.wrapper.supportsReturnFormat(N3)) self.assertTrue(self.wrapper.supportsReturnFormat(RDF)) + self.assertTrue(self.wrapper.supportsReturnFormat(RDFXML)) self.assertFalse(self.wrapper.supportsReturnFormat('nonexistent format')) try: @@ -489,6 +490,134 @@ finally: _victim.QueryResult = _oldQueryResult + def testComments(self): + # see issue #32 + self.wrapper.setQuery(""" +# this is a comment +select * where { ?s ?p ?o } +""") + self.assertTrue(self.wrapper.isSparqlQueryRequest()) + + def testHashInPrefixes(self): + # see issue #77 + self.wrapper.setQuery(""" +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +select * where { ?s ?p ?o } +""") + self.assertTrue(self.wrapper.isSparqlQueryRequest()) + + def testHashInPrefixComplex(self): + # see issue #77 + self.wrapper.setQuery(""" +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX weather: <http://hal.zamia.org/weather/> +PREFIX dbo: <http://dbpedia.org/ontology/> +PREFIX dbr: <http://dbpedia.org/resource/> +PREFIX dbp: <http://dbpedia.org/property/> +PREFIX xml: <http://www.w3.org/XML/1998/namespace> +PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> + +SELECT DISTINCT ?location ?cityid ?timezone ?label +WHERE { + ?location weather:cityid ?cityid . + ?location weather:timezone ?timezone . + ?location rdfs:label ?label . +} +""") + self.assertTrue(self.wrapper.isSparqlQueryRequest()) + + def testHashWithNoComments(self): + # see issue #77 + query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + +SELECT * +WHERE { + ?s ?p ?o . +} +""" + parsed_query = self.wrapper._cleanComments(query) + self.assertEquals(query, parsed_query) + + def testCommentBeginningLine(self): + # see issue #77 + query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +# a comment +SELECT * +WHERE { + ?s ?p ?o . +} +""" + expected_parsed_query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + +SELECT * +WHERE { + ?s ?p ?o . +} +""" + parsed_query = self.wrapper._cleanComments(query) + self.assertEquals(expected_parsed_query, parsed_query) + + def testCommentEmtpyLine(self): + # see issue #77 + query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + # a comment +SELECT * +WHERE { + ?s ?p ?o . +} +""" + expected_parsed_query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + +SELECT * +WHERE { + ?s ?p ?o . +} +""" + parsed_query = self.wrapper._cleanComments(query) + self.assertEquals(expected_parsed_query, parsed_query) + + def testCommentsFirstLine(self): + # see issue #77 + query = """#CONSTRUCT {?s ?p ?o} + SELECT ?s ?p ?o + WHERE {?s ?p ?o}""" + expected_parsed_query = """ + + SELECT ?s ?p ?o + WHERE {?s ?p ?o}""" + + parsed_query = self.wrapper._cleanComments(query) + self.assertEquals(expected_parsed_query, parsed_query) + + @unittest.skip("issue #80") + def testCommentAfterStatements(self): + # see issue #77 + query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + +SELECT * +WHERE { # this is the where condition + ?s ?p ?o . +} +""" + expected_parsed_query = """ +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + +SELECT * +WHERE { + ?s ?p ?o . +} +""" + parsed_query = self.wrapper._cleanComments(query) + self.assertEquals(expected_parsed_query, parsed_query) + + class QueryResult_Test(unittest.TestCase): @@ -576,6 +705,7 @@ self.assertEqual(0, _mime_vs_type("application/ld+json", JSONLD)) self.assertEqual(0, _mime_vs_type("application/rdf+xml", XML)) self.assertEqual(0, _mime_vs_type("application/rdf+xml", RDF)) + self.assertEqual(0, _mime_vs_type("application/rdf+xml", RDFXML)) self.assertEqual(1, _mime_vs_type("application/x-foo-bar", XML), "invalid mime")