Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-lazr.uri for openSUSE:Factory checked in at 2021-06-01 10:39:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-lazr.uri (Old) and /work/SRC/openSUSE:Factory/.python-lazr.uri.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-lazr.uri" Tue Jun 1 10:39:49 2021 rev:6 rq:896451 version:1.0.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-lazr.uri/python-lazr.uri.changes 2018-08-31 10:43:23.803127675 +0200 +++ /work/SRC/openSUSE:Factory/.python-lazr.uri.new.1898/python-lazr.uri.changes 2021-06-01 10:41:27.141220691 +0200 @@ -1,0 +2,14 @@ +Mon May 31 10:23:27 UTC 2021 - pgaj...@suse.com + +- version update to 1.0.5 + - Add an explicit __hash__ method to lazr.uri.URI. + - Install version.txt with package_data (Stefano Rivera, + https://bugs.launchpad.net/lazr.uri/+bug/918660). + - Switch from buildout to tox. + +------------------------------------------------------------------- +Mon May 31 09:33:28 UTC 2021 - pgaj...@suse.com + +- %check: use %pytest rpm macro + +------------------------------------------------------------------- Old: ---- lazr.uri-1.0.3.tar.gz New: ---- lazr.uri-1.0.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-lazr.uri.spec ++++++ --- /var/tmp/diff_new_pack.fXTJC1/_old 2021-06-01 10:41:27.561221407 +0200 +++ /var/tmp/diff_new_pack.fXTJC1/_new 2021-06-01 10:41:27.561221407 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-lazr.uri # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,18 +12,19 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: python-lazr.uri -Version: 1.0.3 +Version: 1.0.5 Release: 0 Summary: Code for parsing and dealing with URI License: LGPL-3.0-or-later Group: Development/Languages/Python URL: https://launchpad.net/lazr.uri Source: https://files.pythonhosted.org/packages/source/l/lazr.uri/lazr.uri-%{version}.tar.gz +BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -44,11 +45,11 @@ %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -%python_exec setup.py test +%pytest %files %{python_files} %license COPYING.txt -%doc README.txt +%doc README.rst %{python_sitelib}/* %changelog ++++++ lazr.uri-1.0.3.tar.gz -> lazr.uri-1.0.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/HACKING.rst new/lazr.uri-1.0.5/HACKING.rst --- old/lazr.uri-1.0.3/HACKING.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/HACKING.rst 2020-06-12 13:05:39.000000000 +0200 @@ -0,0 +1,36 @@ +.. + This file is part of lazr.uri. + + lazr.uri is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, version 3 of the License. + + lazr.uri is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. + +============ +Introduction +============ + +To run this project's tests, use `tox <https://tox.readthedocs.io/en/latest/>`. + + +Getting help +------------ + +If you find bugs in this package, you can report them here: + + https://launchpad.net/lazr.uri + +If you want to discuss this package, join the team and mailing list here: + + https://launchpad.net/~lazr-developers + +or send a message to: + + lazr-develop...@lists.launchpad.net diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/HACKING.txt new/lazr.uri-1.0.5/HACKING.txt --- old/lazr.uri-1.0.3/HACKING.txt 2009-07-27 17:58:00.000000000 +0200 +++ new/lazr.uri-1.0.5/HACKING.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -.. - This file is part of lazr.uri. - - lazr.uri is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, version 3 of the License. - - lazr.uri is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. - -This project uses zc.buildout for development. - -============ -Introduction -============ - -These are guidelines for hacking on the lazr.uri project. But first, -please see the common hacking guidelines at: - - http://dev.launchpad.net/Hacking - - -Getting help ------------- - -If you find bugs in this package, you can report them here: - - https://launchpad.net/lazr.uri - -If you want to discuss this package, join the team and mailing list here: - - https://launchpad.net/~lazr-developers - -or send a message to: - - lazr-develop...@lists.launchpad.net diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/MANIFEST.in new/lazr.uri-1.0.5/MANIFEST.in --- old/lazr.uri-1.0.3/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/MANIFEST.in 2020-06-12 13:05:39.000000000 +0200 @@ -0,0 +1,5 @@ +include COPYING.txt HACKING.rst NEWS.rst +recursive-include src *.txt *.rst *.zcml +include src/lazr/uri/docs/Makefile +prune src/lazr/uri/docs/_build +exclude .bzrignore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/NEWS.rst new/lazr.uri-1.0.5/NEWS.rst --- old/lazr.uri-1.0.3/NEWS.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/NEWS.rst 2020-06-29 13:23:58.000000000 +0200 @@ -0,0 +1,31 @@ +================= +NEWS for lazr.uri +================= + +1.0.5 (2020-06-29) +================== + +- Add an explicit __hash__ method to lazr.uri.URI. + +1.0.4 (2020-06-12) +================== + +- Install version.txt with package_data (Stefano Rivera, + https://bugs.launchpad.net/lazr.uri/+bug/918660). +- Switch from buildout to tox. + +1.0.3 (2012-01-18) +================== + +- Add compatibility with Python 3 (Thomas Kluyver). + +1.0.1 (2009-06-01) +================== + +- Eliminate dependency on setuptools_bzr so sdists do not bring bzr ini, among + others. + +1.0 (2009-03-23) +================ + +- Initial release on PyPI diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/PKG-INFO new/lazr.uri-1.0.5/PKG-INFO --- old/lazr.uri-1.0.3/PKG-INFO 2012-01-18 15:17:55.000000000 +0100 +++ new/lazr.uri-1.0.5/PKG-INFO 2020-06-29 13:24:31.313304400 +0200 @@ -1,10 +1,10 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: lazr.uri -Version: 1.0.3 +Version: 1.0.5 Summary: A self-contained, easily reusable library for parsing, manipulating, Home-page: https://launchpad.net/lazr.uri -Author: LAZR Developers -Author-email: lazr-develop...@lists.launchpad.net +Maintainer: LAZR Developers +Maintainer-email: lazr-develop...@lists.launchpad.net License: LGPL v3 Download-URL: https://launchpad.net/lazr.uri/+download Description: .. @@ -147,20 +147,23 @@ http://bazaar.launchpad.net/~name12/firefox/foo http://somewhere.in/time?track=[02]#wasted-years - =============== - Other Documents - =============== - - .. toctree:: - :glob: - - * - docs/* ================= NEWS for lazr.uri ================= + 1.0.5 (2020-06-29) + ================== + + - Add an explicit __hash__ method to lazr.uri.URI. + + 1.0.4 (2020-06-12) + ================== + + - Install version.txt with package_data (Stefano Rivera, + https://bugs.launchpad.net/lazr.uri/+bug/918660). + - Switch from buildout to tox. + 1.0.3 (2012-01-18) ================== @@ -184,4 +187,12 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Description-Content-Type: text/x-rst +Provides-Extra: docs +Provides-Extra: test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/README.rst new/lazr.uri-1.0.5/README.rst --- old/lazr.uri-1.0.3/README.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/README.rst 2012-01-18 18:44:53.000000000 +0100 @@ -0,0 +1,17 @@ +A self-contained, easily reusable library for parsing, manipulating, +and generating URIs. + +.. + This file is part of lazr.uri. + + lazr.uri is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, version 3 of the License. + + lazr.uri is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/README.txt new/lazr.uri-1.0.5/README.txt --- old/lazr.uri-1.0.3/README.txt 2012-01-18 15:11:08.000000000 +0100 +++ new/lazr.uri-1.0.5/README.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -A self-contained, easily reusable library for parsing, manipulating, -and generating URIs. - -.. - This file is part of lazr.uri. - - lazr.uri is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, version 3 of the License. - - lazr.uri is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/ez_setup.py new/lazr.uri-1.0.5/ez_setup.py --- old/lazr.uri-1.0.3/ez_setup.py 2009-07-27 17:58:00.000000000 +0200 +++ new/lazr.uri-1.0.5/ez_setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,241 +0,0 @@ -#!python -"""Bootstrap setuptools installation - -If you want to use setuptools in your package's setup.py, just include this -file in the same directory with it, and add this to the top of your setup.py:: - - from ez_setup import use_setuptools - use_setuptools() - -If you want to require a specific version of setuptools, set a download -mirror, or use an alternate download directory, you can do so by supplying -the appropriate options to ``use_setuptools()``. - -This file can also be run as a script to install or upgrade setuptools. -""" -import sys -DEFAULT_VERSION = "0.6c8" -DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] - -md5_data = { - 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', - 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb', - 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b', - 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a', - 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618', - 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac', - 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5', - 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4', - 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c', - 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b', - 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27', - 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277', - 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa', - 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e', - 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e', - 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f', - 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2', - 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc', - 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167', - 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64', - 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d', - 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20', - 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab', - 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53', - 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2', - 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e', - 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372', - 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902', - 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de', - 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b', -} - -import sys, os - -def _validate_md5(egg_name, data): - if egg_name in md5_data: - from md5 import md5 - digest = md5(data).hexdigest() - if digest != md5_data[egg_name]: - print >>sys.stderr, ( - "md5 validation of %s failed! (Possible download problem?)" - % egg_name - ) - sys.exit(2) - return data - - -def use_setuptools( - version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, - download_delay=15, min_version=None -): - """Automatically find/download setuptools and make it available on sys.path - - `version` should be a valid setuptools version number that is available - as an egg for download under the `download_base` URL (which should end with - a '/'). `to_dir` is the directory where setuptools will be downloaded, if - it is not already available. If `download_delay` is specified, it should - be the number of seconds that will be paused before initiating a download, - should one be required. If an older version of setuptools is installed, - this routine will print a message to ``sys.stderr`` and raise SystemExit in - an attempt to abort the calling script. - """ - # Work around a hack in the ez_setup.py file from simplejson==1.7.3. - if min_version: - version = min_version - - was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules - def do_download(): - egg = download_setuptools(version, download_base, to_dir, download_delay) - sys.path.insert(0, egg) - import setuptools; setuptools.bootstrap_install_from = egg - try: - import pkg_resources - except ImportError: - return do_download() - try: - pkg_resources.require("setuptools>="+version); return - except pkg_resources.VersionConflict, e: - if was_imported: - print >>sys.stderr, ( - "The required version of setuptools (>=%s) is not available, and\n" - "can't be installed while this script is running. Please install\n" - " a more recent version first, using 'easy_install -U setuptools'." - "\n\n(Currently using %r)" - ) % (version, e.args[0]) - sys.exit(2) - else: - del pkg_resources, sys.modules['pkg_resources'] # reload ok - return do_download() - except pkg_resources.DistributionNotFound: - return do_download() - -def download_setuptools( - version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, - delay = 15 -): - """Download setuptools from a specified location and return its filename - - `version` should be a valid setuptools version number that is available - as an egg for download under the `download_base` URL (which should end - with a '/'). `to_dir` is the directory where the egg will be downloaded. - `delay` is the number of seconds to pause before an actual download attempt. - """ - import urllib2, shutil - egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3]) - url = download_base + egg_name - saveto = os.path.join(to_dir, egg_name) - src = dst = None - if not os.path.exists(saveto): # Avoid repeated downloads - try: - from distutils import log - if delay: - log.warn(""" ---------------------------------------------------------------------------- -This script requires setuptools version %s to run (even to display -help). I will attempt to download it for you (from -%s), but -you may need to enable firewall access for this script first. -I will start the download in %d seconds. - -(Note: if this machine does not have network access, please obtain the file - - %s - -and place it in this directory before rerunning this script.) ----------------------------------------------------------------------------""", - version, download_base, delay, url - ); from time import sleep; sleep(delay) - log.warn("Downloading %s", url) - src = urllib2.urlopen(url) - # Read/write all in one block, so we don't create a corrupt file - # if the download is interrupted. - data = _validate_md5(egg_name, src.read()) - dst = open(saveto,"wb"); dst.write(data) - finally: - if src: src.close() - if dst: dst.close() - return os.path.realpath(saveto) - -def main(argv, version=DEFAULT_VERSION): - """Install or upgrade setuptools and EasyInstall""" - try: - import setuptools - except ImportError: - egg = None - try: - egg = download_setuptools(version, delay=0) - sys.path.insert(0,egg) - from setuptools.command.easy_install import main - return main(list(argv)+[egg]) # we're done here - finally: - if egg and os.path.exists(egg): - os.unlink(egg) - else: - if setuptools.__version__ == '0.0.1': - print >>sys.stderr, ( - "You have an obsolete version of setuptools installed. Please\n" - "remove it from your system entirely before rerunning this script." - ) - sys.exit(2) - - req = "setuptools>="+version - import pkg_resources - try: - pkg_resources.require(req) - except pkg_resources.VersionConflict: - try: - from setuptools.command.easy_install import main - except ImportError: - from easy_install import main - main(list(argv)+[download_setuptools(delay=0)]) - sys.exit(0) # try to force an exit - else: - if argv: - from setuptools.command.easy_install import main - main(argv) - else: - print "Setuptools version",version,"or greater has been installed." - print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' - -def update_md5(filenames): - """Update our built-in md5 registry""" - - import re - from md5 import md5 - - for name in filenames: - base = os.path.basename(name) - f = open(name,'rb') - md5_data[base] = md5(f.read()).hexdigest() - f.close() - - data = [" %r: %r,\n" % it for it in md5_data.items()] - data.sort() - repl = "".join(data) - - import inspect - srcfile = inspect.getsourcefile(sys.modules[__name__]) - f = open(srcfile, 'rb'); src = f.read(); f.close() - - match = re.search("\nmd5_data = {\n([^}]+)}", src) - if not match: - print >>sys.stderr, "Internal error!" - sys.exit(2) - - src = src[:match.start(1)] + repl + src[match.end(1):] - f = open(srcfile,'w') - f.write(src) - f.close() - - -if __name__=='__main__': - if len(sys.argv)>2 and sys.argv[1]=='--md5update': - update_md5(sys.argv[2:]) - else: - main(sys.argv[1:]) - - - - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/setup.cfg new/lazr.uri-1.0.5/setup.cfg --- old/lazr.uri-1.0.3/setup.cfg 2012-01-18 15:17:55.000000000 +0100 +++ new/lazr.uri-1.0.5/setup.cfg 2020-06-29 13:24:31.313304400 +0200 @@ -1,5 +1,4 @@ [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/setup.py new/lazr.uri-1.0.5/setup.py --- old/lazr.uri-1.0.3/setup.py 2012-01-18 12:53:31.000000000 +0100 +++ new/lazr.uri-1.0.5/setup.py 2020-06-12 13:05:39.000000000 +0200 @@ -16,22 +16,19 @@ # You should have received a copy of the GNU Lesser General Public License # along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. -import sys -try: - from setuptools import setup, find_packages -except ImportError: - import ez_setup - ez_setup.use_setuptools() - from setuptools import setup, find_packages +from setuptools import setup, find_packages # generic helpers primarily for the long_description def generate(*docname_or_string): + marker = '.. pypi description ends here' res = [] for value in docname_or_string: - if value.endswith('.txt'): - f = open(value) - value = f.read() - f.close() + if value.endswith('.rst'): + with open(value) as f: + value = f.read() + idx = value.find(marker) + if idx >= 0: + value = value[:idx] res.append(value) if not value.endswith('\n'): res.append('') @@ -48,15 +45,17 @@ namespace_packages=['lazr'], packages=find_packages('src'), package_dir={'':'src'}, + package_data={'lazr.uri': ['version.txt']}, include_package_data=True, zip_safe=False, maintainer='LAZR Developers', maintainer_email='lazr-develop...@lists.launchpad.net', download_url= 'https://launchpad.net/lazr.uri/+download', - description=open('README.txt').readline().strip(), + description=open('README.rst').readline().strip(), long_description=generate( - 'src/lazr/uri/README.txt', - 'src/lazr/uri/NEWS.txt'), + 'src/lazr/uri/docs/index.rst', + 'NEWS.rst'), + long_description_content_type='text/x-rst', license='LGPL v3', install_requires=[ 'setuptools', @@ -69,11 +68,16 @@ "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", ], extras_require=dict( - docs=['Sphinx', - 'z3c.recipe.sphinxdoc'] + docs=['Sphinx'], + test=['zope.testrunner'], ), test_suite='lazr.uri.tests', ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/NEWS.txt new/lazr.uri-1.0.5/src/lazr/uri/NEWS.txt --- old/lazr.uri-1.0.3/src/lazr/uri/NEWS.txt 2012-01-18 15:10:19.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/NEWS.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ -================= -NEWS for lazr.uri -================= - -1.0.3 (2012-01-18) -================== - -- Add compatibility with Python 3 (Thomas Kluyver). - -1.0.1 (2009-06-01) -================== - -- Eliminate dependency on setuptools_bzr so sdists do not bring bzr ini, among - others. - -1.0 (2009-03-23) -================ - -- Initial release on PyPI diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/README.txt new/lazr.uri-1.0.5/src/lazr/uri/README.txt --- old/lazr.uri-1.0.3/src/lazr/uri/README.txt 2012-01-18 12:53:31.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/README.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,149 +0,0 @@ -.. - This file is part of lazr.uri. - - lazr.uri is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, version 3 of the License. - - lazr.uri is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. - -lazr.uri -******** - -The lazr.uri package includes code for parsing and dealing with URIs. - - >>> import lazr.uri - >>> print('VERSION:', lazr.uri.__version__) - VERSION: ... - -============= -The URI class -============= - - >>> from lazr.uri import URI - >>> uri1 = URI('http://localhost/foo/bar?123') - >>> uri2 = URI('http://localhost/foo/bar/baz') - >>> uri1.contains(uri2) - True - -These next two are equivalent, so the answer should be True, even through -the "outside" one is shorter than the "inside" one. - - >>> uri1 = URI('http://localhost/foo/bar/') - >>> uri2 = URI('http://localhost/foo/bar') - >>> uri1.contains(uri2) - True - -The next two are exactly the same. We consider a url to be inside itself. - - >>> uri1 = URI('http://localhost/foo/bar/') - >>> uri2 = URI('http://localhost/foo/bar/') - >>> uri1.contains(uri2) - True - -In the next case, the string of url2 starts with the string of url1. But, -because url2 continues within the same path step, url2 is not inside url1. - - >>> uri1 = URI('http://localhost/foo/ba') - >>> uri2 = URI('http://localhost/foo/bar') - >>> uri1.contains(uri2) - False - -Here, url2 is url1 plus an extra path step. So, url2 is inside url1. - - >>> uri1 = URI('http://localhost/foo/bar/') - >>> uri2 = URI('http://localhost/foo/bar/baz') - >>> uri1.contains(uri2) - True - -Once the URI is parsed, its parts are accessible. - - >>> uri = URI('https://fish.tree:8666/blee/blah') - >>> uri.scheme - 'https' - >>> uri.host - 'fish.tree' - >>> uri.port - '8666' - >>> uri.authority - 'fish.tree:8666' - >>> uri.path - '/blee/blah' - - >>> uri = URI('https://localhost/blee/blah') - >>> uri.scheme - 'https' - >>> uri.host - 'localhost' - >>> uri.port is None - True - >>> uri.authority - 'localhost' - >>> uri.path - '/blee/blah' - -The grammar from RFC 3986 does not allow for square brackets in the -query component, but Section 3.4 does say how such delimeter -characters should be handled if found in the component. - - >>> uri = URI('http://www.apple.com/store?delivery=[slow]#horse+cart') - >>> uri.scheme - 'http' - >>> uri.host - 'www.apple.com' - >>> uri.port is None - True - >>> uri.path - '/store' - >>> uri.query - 'delivery=[slow]' - >>> uri.fragment - 'horse+cart' - -==================== -Finding URIs in Text -==================== - -lazr.uri also knows how to retrieve a list of URIs from a block of -text. This is intended for uses like finding bug tracker URIs or -similar. - -The find_uris_in_text() function returns an iterator that yields URI -objects for each URI found in the text. Note that the returned URIs -have been canonicalised by the URI class: - - >>> from lazr.uri import find_uris_in_text - >>> text = ''' - ... A list of URIs: - ... * http://localhost/a/b - ... * http://launchpad.net - ... * MAILTO:j...@example.com - ... * xmpp:f...@example.org - ... * http://bazaar.launchpad.net/%7ename12/firefox/foo - ... * http://somewhere.in/time?track=[02]#wasted-years - ... ''' - - >>> for uri in find_uris_in_text(text): - ... print(uri) - http://localhost/a/b - http://launchpad.net/ - mailto:j...@example.com - xmpp:f...@example.org - http://bazaar.launchpad.net/~name12/firefox/foo - http://somewhere.in/time?track=[02]#wasted-years - -=============== -Other Documents -=============== - -.. toctree:: - :glob: - - * - docs/* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/_uri.py new/lazr.uri-1.0.5/src/lazr/uri/_uri.py --- old/lazr.uri-1.0.3/src/lazr/uri/_uri.py 2012-01-18 12:53:31.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/_uri.py 2020-06-29 13:23:09.000000000 +0200 @@ -353,6 +353,10 @@ else: return not equal + def __hash__(self): + return hash(( + self.scheme, self.authority, self.path, self.query, self.fragment)) + def replace(self, **parts): """Replace one or more parts of the URI, returning the result.""" if not parts: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/docs/Makefile new/lazr.uri-1.0.5/src/lazr/uri/docs/Makefile --- old/lazr.uri-1.0.3/src/lazr/uri/docs/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/docs/Makefile 2020-06-12 13:05:39.000000000 +0200 @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = lazruri +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/docs/NEWS.rst new/lazr.uri-1.0.5/src/lazr/uri/docs/NEWS.rst --- old/lazr.uri-1.0.3/src/lazr/uri/docs/NEWS.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/docs/NEWS.rst 2020-06-29 13:23:58.000000000 +0200 @@ -0,0 +1,31 @@ +================= +NEWS for lazr.uri +================= + +1.0.5 (2020-06-29) +================== + +- Add an explicit __hash__ method to lazr.uri.URI. + +1.0.4 (2020-06-12) +================== + +- Install version.txt with package_data (Stefano Rivera, + https://bugs.launchpad.net/lazr.uri/+bug/918660). +- Switch from buildout to tox. + +1.0.3 (2012-01-18) +================== + +- Add compatibility with Python 3 (Thomas Kluyver). + +1.0.1 (2009-06-01) +================== + +- Eliminate dependency on setuptools_bzr so sdists do not bring bzr ini, among + others. + +1.0 (2009-03-23) +================ + +- Initial release on PyPI diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/docs/index.rst new/lazr.uri-1.0.5/src/lazr/uri/docs/index.rst --- old/lazr.uri-1.0.3/src/lazr/uri/docs/index.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/docs/index.rst 2020-06-12 13:05:39.000000000 +0200 @@ -0,0 +1,146 @@ +.. + This file is part of lazr.uri. + + lazr.uri is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, version 3 of the License. + + lazr.uri is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. + +lazr.uri +******** + +The lazr.uri package includes code for parsing and dealing with URIs. + + >>> import lazr.uri + >>> print('VERSION:', lazr.uri.__version__) + VERSION: ... + +============= +The URI class +============= + + >>> from lazr.uri import URI + >>> uri1 = URI('http://localhost/foo/bar?123') + >>> uri2 = URI('http://localhost/foo/bar/baz') + >>> uri1.contains(uri2) + True + +These next two are equivalent, so the answer should be True, even through +the "outside" one is shorter than the "inside" one. + + >>> uri1 = URI('http://localhost/foo/bar/') + >>> uri2 = URI('http://localhost/foo/bar') + >>> uri1.contains(uri2) + True + +The next two are exactly the same. We consider a url to be inside itself. + + >>> uri1 = URI('http://localhost/foo/bar/') + >>> uri2 = URI('http://localhost/foo/bar/') + >>> uri1.contains(uri2) + True + +In the next case, the string of url2 starts with the string of url1. But, +because url2 continues within the same path step, url2 is not inside url1. + + >>> uri1 = URI('http://localhost/foo/ba') + >>> uri2 = URI('http://localhost/foo/bar') + >>> uri1.contains(uri2) + False + +Here, url2 is url1 plus an extra path step. So, url2 is inside url1. + + >>> uri1 = URI('http://localhost/foo/bar/') + >>> uri2 = URI('http://localhost/foo/bar/baz') + >>> uri1.contains(uri2) + True + +Once the URI is parsed, its parts are accessible. + + >>> uri = URI('https://fish.tree:8666/blee/blah') + >>> uri.scheme + 'https' + >>> uri.host + 'fish.tree' + >>> uri.port + '8666' + >>> uri.authority + 'fish.tree:8666' + >>> uri.path + '/blee/blah' + + >>> uri = URI('https://localhost/blee/blah') + >>> uri.scheme + 'https' + >>> uri.host + 'localhost' + >>> uri.port is None + True + >>> uri.authority + 'localhost' + >>> uri.path + '/blee/blah' + +The grammar from RFC 3986 does not allow for square brackets in the +query component, but Section 3.4 does say how such delimeter +characters should be handled if found in the component. + + >>> uri = URI('http://www.apple.com/store?delivery=[slow]#horse+cart') + >>> uri.scheme + 'http' + >>> uri.host + 'www.apple.com' + >>> uri.port is None + True + >>> uri.path + '/store' + >>> uri.query + 'delivery=[slow]' + >>> uri.fragment + 'horse+cart' + +==================== +Finding URIs in Text +==================== + +lazr.uri also knows how to retrieve a list of URIs from a block of +text. This is intended for uses like finding bug tracker URIs or +similar. + +The find_uris_in_text() function returns an iterator that yields URI +objects for each URI found in the text. Note that the returned URIs +have been canonicalised by the URI class: + + >>> from lazr.uri import find_uris_in_text + >>> text = ''' + ... A list of URIs: + ... * http://localhost/a/b + ... * http://launchpad.net + ... * MAILTO:j...@example.com + ... * xmpp:f...@example.org + ... * http://bazaar.launchpad.net/%7ename12/firefox/foo + ... * http://somewhere.in/time?track=[02]#wasted-years + ... ''' + + >>> for uri in find_uris_in_text(text): + ... print(uri) + http://localhost/a/b + http://launchpad.net/ + mailto:j...@example.com + xmpp:f...@example.org + http://bazaar.launchpad.net/~name12/firefox/foo + http://somewhere.in/time?track=[02]#wasted-years + +.. pypi description ends here + +.. toctree:: + :glob: + + NEWS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/tests/test_docs.py new/lazr.uri-1.0.5/src/lazr/uri/tests/test_docs.py --- old/lazr.uri-1.0.3/src/lazr/uri/tests/test_docs.py 2012-01-18 12:53:31.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/tests/test_docs.py 2020-06-12 13:05:39.000000000 +0200 @@ -13,20 +13,27 @@ # # You should have received a copy of the GNU Lesser General Public License # along with lazr.uri. If not, see <http://www.gnu.org/licenses/>. -"Test harness for doctests." + +"""Test harness for doctests.""" from __future__ import print_function __metaclass__ = type __all__ = [ - 'additional_tests', + 'load_tests', ] import atexit import doctest import os -import pkg_resources -import unittest + +from pkg_resources import ( + cleanup_resources, + resource_exists, + resource_filename, + resource_listdir, + ) + DOCTEST_FLAGS = ( doctest.ELLIPSIS | @@ -34,22 +41,24 @@ doctest.REPORT_NDIFF) -def additional_tests(): - "Run the doc tests (README.txt and docs/*, if any exist)" - doctest_files = [ - os.path.abspath( - pkg_resources.resource_filename('lazr.uri', 'README.txt'))] - if pkg_resources.resource_exists('lazr.uri', 'docs'): - for name in pkg_resources.resource_listdir('lazr.uri', 'docs'): - if name.endswith('.txt'): +def find_doctests(suffix): + """Find doctests matching a certain suffix.""" + doctest_files = [] + # Match doctests against the suffix. + if resource_exists('lazr.uri', 'docs'): + for name in resource_listdir('lazr.uri', 'docs'): + if name.endswith(suffix): doctest_files.append( os.path.abspath( - pkg_resources.resource_filename( - 'lazr.uri', 'docs/%s' % name))) - kwargs = dict( + resource_filename('lazr.uri', 'docs/%s' % name))) + return doctest_files + + +def load_tests(loader, tests, pattern): + """Load all the doctests.""" + atexit.register(cleanup_resources) + tests.addTest(doctest.DocFileSuite( + *find_doctests('.rst'), module_relative=False, optionflags=DOCTEST_FLAGS, - globs={"print_function": print_function}, - ) - atexit.register(pkg_resources.cleanup_resources) - return unittest.TestSuite(( - doctest.DocFileSuite(*doctest_files, **kwargs))) + globs={"print_function": print_function})) + return tests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/tests/test_uri.py new/lazr.uri-1.0.5/src/lazr/uri/tests/test_uri.py --- old/lazr.uri-1.0.3/src/lazr/uri/tests/test_uri.py 2012-01-18 12:53:31.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/tests/test_uri.py 2020-06-29 13:23:09.000000000 +0200 @@ -21,6 +21,7 @@ 'test_suite', ] +from collections import defaultdict import unittest from lazr.uri import ( @@ -47,7 +48,30 @@ 'http://example.com/') self.assertEqual(str(URI('http://example.com:80/')), 'http://example.com/') - + + def test_hashable(self): + uri_groups = [ + ['eXAMPLE://a/./b/../b/%63/%7bfoo%7d', + 'example://a/b/c/%7Bfoo%7D'], + ['http://www.EXAMPLE.com/', + 'http://www.example.com/'], + ['http://www.gnome.org/%7ejamesh/', + 'http://www.gnome.org/~jamesh/'], + ['http://example.com', + 'http://example.com/', + 'http://example.com:/', + 'http://example.com:80/'], + ] + uri_hashes = defaultdict(list) + for uri_group in uri_groups: + for uri in uri_group: + uri_hashes[hash(URI(uri))].append(uri) + self.assertEqual(len(uri_groups), len(uri_hashes)) + for uri_group in uri_groups: + self.assertEqual( + sorted(uri_group), + sorted(uri_hashes[hash(URI(uri_group[0]))])) + def test_invalid_uri(self): self.assertRaises(InvalidURIError, URI, 'http://???xample.com/') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr/uri/version.txt new/lazr.uri-1.0.5/src/lazr/uri/version.txt --- old/lazr.uri-1.0.3/src/lazr/uri/version.txt 2012-01-18 15:10:19.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr/uri/version.txt 2020-06-29 13:24:10.000000000 +0200 @@ -1 +1 @@ -1.0.3 +1.0.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr.uri.egg-info/PKG-INFO new/lazr.uri-1.0.5/src/lazr.uri.egg-info/PKG-INFO --- old/lazr.uri-1.0.3/src/lazr.uri.egg-info/PKG-INFO 2012-01-18 15:17:55.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr.uri.egg-info/PKG-INFO 2020-06-29 13:24:31.000000000 +0200 @@ -1,10 +1,10 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: lazr.uri -Version: 1.0.3 +Version: 1.0.5 Summary: A self-contained, easily reusable library for parsing, manipulating, Home-page: https://launchpad.net/lazr.uri -Author: LAZR Developers -Author-email: lazr-develop...@lists.launchpad.net +Maintainer: LAZR Developers +Maintainer-email: lazr-develop...@lists.launchpad.net License: LGPL v3 Download-URL: https://launchpad.net/lazr.uri/+download Description: .. @@ -147,20 +147,23 @@ http://bazaar.launchpad.net/~name12/firefox/foo http://somewhere.in/time?track=[02]#wasted-years - =============== - Other Documents - =============== - - .. toctree:: - :glob: - - * - docs/* ================= NEWS for lazr.uri ================= + 1.0.5 (2020-06-29) + ================== + + - Add an explicit __hash__ method to lazr.uri.URI. + + 1.0.4 (2020-06-12) + ================== + + - Install version.txt with package_data (Stefano Rivera, + https://bugs.launchpad.net/lazr.uri/+bug/918660). + - Switch from buildout to tox. + 1.0.3 (2012-01-18) ================== @@ -184,4 +187,12 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Description-Content-Type: text/x-rst +Provides-Extra: docs +Provides-Extra: test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr.uri.egg-info/SOURCES.txt new/lazr.uri-1.0.5/src/lazr.uri.egg-info/SOURCES.txt --- old/lazr.uri-1.0.3/src/lazr.uri.egg-info/SOURCES.txt 2012-01-18 15:17:55.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr.uri.egg-info/SOURCES.txt 2020-06-29 13:24:31.000000000 +0200 @@ -1,7 +1,8 @@ COPYING.txt -HACKING.txt -README.txt -ez_setup.py +HACKING.rst +MANIFEST.in +NEWS.rst +README.rst setup.py src/lazr/__init__.py src/lazr.uri.egg-info/PKG-INFO @@ -11,12 +12,13 @@ src/lazr.uri.egg-info/not-zip-safe src/lazr.uri.egg-info/requires.txt src/lazr.uri.egg-info/top_level.txt -src/lazr/uri/NEWS.txt -src/lazr/uri/README.txt src/lazr/uri/__init__.py src/lazr/uri/_uri.py src/lazr/uri/configure.zcml src/lazr/uri/version.txt +src/lazr/uri/docs/Makefile +src/lazr/uri/docs/NEWS.rst +src/lazr/uri/docs/index.rst src/lazr/uri/tests/__init__.py src/lazr/uri/tests/test_docs.py src/lazr/uri/tests/test_uri.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lazr.uri-1.0.3/src/lazr.uri.egg-info/requires.txt new/lazr.uri-1.0.5/src/lazr.uri.egg-info/requires.txt --- old/lazr.uri-1.0.3/src/lazr.uri.egg-info/requires.txt 2012-01-18 15:17:55.000000000 +0100 +++ new/lazr.uri-1.0.5/src/lazr.uri.egg-info/requires.txt 2020-06-29 13:24:31.000000000 +0200 @@ -2,4 +2,6 @@ [docs] Sphinx -z3c.recipe.sphinxdoc \ No newline at end of file + +[test] +zope.testrunner