Hello community, here is the log from the commit of package python-urlgrabber for openSUSE:Factory checked in at 2019-10-09 15:20:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-urlgrabber (Old) and /work/SRC/openSUSE:Factory/.python-urlgrabber.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-urlgrabber" Wed Oct 9 15:20:07 2019 rev:25 rq:736400 version:4.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-urlgrabber/python-urlgrabber.changes 2019-02-27 15:10:33.762365661 +0100 +++ /work/SRC/openSUSE:Factory/.python-urlgrabber.new.2352/python-urlgrabber.changes 2019-10-09 15:20:11.320385189 +0200 @@ -1,0 +2,12 @@ +Wed Oct 9 07:16:52 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 4.1.0: + * Fix confused license header to clarify licensing + * Fix Python 3 compatibility with urlgrabber-ext-down + * Support HTTP CONNECT with reget. BZ 1585596 + * Fix for usage of _levelNames from logging module + * Fix issue when URLGRABBER_DEBUG is not an integer on Python 3 + * Revise setup.py to remove need for extra setup-time dependencies + * setuptools: Update Development Status to Production/Stable + +------------------------------------------------------------------- Old: ---- urlgrabber-4.0.0.tar.gz New: ---- urlgrabber-4.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-urlgrabber.spec ++++++ --- /var/tmp/diff_new_pack.OrjRY4/_old 2019-10-09 15:20:13.056380713 +0200 +++ /var/tmp/diff_new_pack.OrjRY4/_new 2019-10-09 15:20:13.092380620 +0200 @@ -19,13 +19,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define modname urlgrabber Name: python-urlgrabber -Version: 4.0.0 +Version: 4.1.0 Release: 0 Summary: A high-level cross-protocol url-grabber License: LGPL-2.1-only -Group: Development/Languages/Python URL: https://github.com/rpm-software-management/urlgrabber -Source: https://github.com/rpm-software-management/%{modname}/releases/download/%{modname}-4-0-0/%{modname}-%{version}.tar.gz +Source: https://github.com/rpm-software-management/%{modname}/releases/download/%{modname}-4-1-0/%{modname}-%{version}.tar.gz BuildRequires: %{python_module pycurl} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module six} @@ -52,7 +51,7 @@ %install %python_install rm -rf %{buildroot}%{_datadir}/doc/urlgrabber-%{version} # Remove wrongly installed docs -mv -v %{buildroot}%{_usr}/libexec/urlgrabber-ext-down %{buildroot}%{_usr}/lib/urlgrabber-ext-down +mv -v %{buildroot}%{_prefix}/libexec/urlgrabber-ext-down %{buildroot}%{_prefix}/lib/urlgrabber-ext-down %python_expand %fdupes %{buildroot}%{$python_sitelib} %files %{python_files} ++++++ urlgrabber-4.0.0.tar.gz -> urlgrabber-4.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/ChangeLog new/urlgrabber-4.1.0/ChangeLog --- old/urlgrabber-4.0.0/ChangeLog 2019-02-25 14:51:51.000000000 +0100 +++ new/urlgrabber-4.1.0/ChangeLog 2019-10-09 01:01:48.000000000 +0200 @@ -1,3 +1,14 @@ +2019-10-08 Neal Gompa <ngomp...@gmail.com> + + * Fix confused license header to clarify licensing + * Fix Python 3 compatibility with urlgrabber-ext-down + * Support HTTP CONNECT with reget. BZ 1585596 + * Fix for usage of _levelNames from logging module + * Fix issue when URLGRABBER_DEBUG is not an integer on Python 3 + * Revise setup.py to remove need for extra setup-time dependencies + * setuptools: Update Development Status to "Production/Stable" + * Bump version to 4.1.0 + 2019-02-25 Neal Gompa <ngomp...@gmail.com> * Port to Python 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/PKG-INFO new/urlgrabber-4.1.0/PKG-INFO --- old/urlgrabber-4.0.0/PKG-INFO 2019-02-25 14:56:11.000000000 +0100 +++ new/urlgrabber-4.1.0/PKG-INFO 2019-10-09 01:04:04.000000000 +0200 @@ -1,48 +1,31 @@ -Metadata-Version: 1.1 +Metadata-Version: 1.2 Name: urlgrabber -Version: 4.0.0 +Version: 4.1.0 Summary: A high-level cross-protocol url-grabber Home-page: http://urlgrabber.baseurl.org/ -Author: Michael D. Stenner, Ryan Tomayko -Author-email: msten...@linux.duke.edu, zpav...@redhat.com +Author: Michael D. Stenner, Ryan Tomayko, Seth Vidal, Zdenek Pavlas +Author-email: msten...@linux.duke.edu, rtoma...@naeblis.cx, skvi...@fedoraproject.org, zpav...@redhat.com +Maintainer: Neal Gompa +Maintainer-email: ngo...@fedoraproject.org License: LGPLv2+ -Description: A high-level cross-protocol url-grabber. - - Using urlgrabber, data can be fetched in three basic ways: - - urlgrab(url) copy the file to the local filesystem - urlopen(url) open the remote file and return a file object - (like urllib2.urlopen) - urlread(url) return the contents of the file as a string - - When using these functions (or methods), urlgrabber supports the - following features: - - * identical behavior for http://, ftp://, and file:// urls - * http keepalive - faster downloads of many files by using - only a single connection - * byte ranges - fetch only a portion of the file - * reget - for a urlgrab, resume a partial download - * progress meters - the ability to report download progress - automatically, even when using urlopen! - * throttling - restrict bandwidth usage - * retries - automatically retry a download if it fails. The - number of retries and failure types are configurable. - * authenticated server access for http and ftp - * proxy support - support for authenticated http and ftp proxies - * mirror groups - treat a list of mirrors as a single source, - automatically switching mirrors if there is a failure. - +Description: UNKNOWN +Keywords: urlgrabber yum http ftp Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: Environment :: Console -Classifier: Environment :: Web Environment +Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators +Classifier: Topic :: Internet :: File Transfer Protocol (FTP) +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Environment :: Console +Classifier: Environment :: Web Environment Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python -Classifier: Topic :: Internet :: File Transfer Protocol (FTP) -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/scripts/urlgrabber new/urlgrabber-4.1.0/scripts/urlgrabber --- old/urlgrabber-4.0.0/scripts/urlgrabber 2019-02-25 13:04:27.000000000 +0100 +++ new/urlgrabber-4.1.0/scripts/urlgrabber 2019-10-06 19:53:56.000000000 +0200 @@ -302,15 +302,18 @@ except URLGrabError as e: print(e) sys.exit(1) - + def set_debug_logger(self, dbspec): try: dbinfo = dbspec.split(',') import logging - level = logging._levelNames.get(dbinfo[0], None) - if level is None: level = int(dbinfo[0]) + if sys.version_info.major == 2: + level = logging._levelNames.get(dbinfo[0], None) + else: + level = logging.getLevelName(dbinfo[0]) + if level is None or not isinstance(level, int): level = int(dbinfo[0]) if level < 1: raise ValueError() - + formatter = logging.Formatter('%(asctime)s %(message)s') if len(dbinfo) > 1: filename = dbinfo[1] else: filename = '' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/scripts/urlgrabber-ext-down new/urlgrabber-4.1.0/scripts/urlgrabber-ext-down --- old/urlgrabber-4.0.0/scripts/urlgrabber-ext-down 2019-02-25 13:04:27.000000000 +0100 +++ new/urlgrabber-4.1.0/scripts/urlgrabber-ext-down 2019-10-06 19:53:56.000000000 +0200 @@ -19,12 +19,17 @@ # Boston, MA 02111-1307 USA import time, os, errno, sys +import six from urlgrabber.grabber import \ _readlines, URLGrabberOptions, _loads, \ - PyCurlFileObject, URLGrabError + PyCurlFileObject, URLGrabError, _to_utf8 def write(fmt, *arg): - try: os.write(1, fmt % arg) + buf = fmt % arg + if six.PY3: + buf = buf.encode() + try: + os.write(1, buf) except OSError as e: if e.args[0] != errno.EPIPE: raise sys.exit(1) @@ -46,6 +51,8 @@ lines = _readlines(0) if not lines: break for line in lines: + if not isinstance(line, six.string_types): + line = line.decode('utf-8') cnt += 1 opts = URLGrabberOptions() opts._id = cnt @@ -58,7 +65,7 @@ dlsz = dltm = 0 try: - fo = PyCurlFileObject(opts.url, opts.filename, opts) + fo = PyCurlFileObject(_to_utf8(opts.url), opts.filename, opts) fo._do_grab() fo.fo.close() size = fo._amount_read diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/setup.py new/urlgrabber-4.1.0/setup.py --- old/urlgrabber-4.0.0/setup.py 2019-02-25 14:49:04.000000000 +0100 +++ new/urlgrabber-4.1.0/setup.py 2019-10-09 00:59:32.000000000 +0200 @@ -1,65 +1,58 @@ -# urlgrabber distutils setup -import re as _re -import sys as _sys +from setuptools import setup -class _pycurlFake(object): - Curl = staticmethod(lambda: None) +pkg_name = "urlgrabber" +pkg_version = "4.1.0" -# Unforunately __init__.py imports urlgrabber.grabber which then imports -# pycurl package. And finally pycurl.Curl() is called in the top level -# of grabber module. We don't need pycurl nor pycurl.Curl() during -# setup. Fake this module to be loaded already so we don't need to have -# pycurl installed at all. Maybe developer wants to install it in later -# phase. -_sys.modules["pycurl"] = _pycurlFake - -# We need urlgrabber package for some constants. -import urlgrabber as _urlgrabber - -del _sys.modules["pycurl"] - -name = "urlgrabber" -description = "A high-level cross-protocol url-grabber" -long_description = _urlgrabber.__doc__ -license = "LGPLv2+" -version = _urlgrabber.__version__ -_authors = _re.split(r',\s+', _urlgrabber.__author__) -author = ', '.join([_re.sub(r'\s+<.*', r'', _) for _ in _authors]) -author_email = ', '.join([_re.sub(r'(^.*<)|(>.*$)', r'', _) for _ in _authors]) -url = _urlgrabber.__url__ - -packages = ['urlgrabber'] -package_dir = {'urlgrabber':'urlgrabber'} -scripts = ['scripts/urlgrabber'] -data_files = [ - ('share/doc/' + name + '-' + version, ['README','LICENSE', 'TODO', 'ChangeLog']), - ('libexec', ['scripts/urlgrabber-ext-down']), -] -setup_requires = ['six'] -install_requires = ['pycurl', 'six'] -options = { 'clean' : { 'all' : 1 } } -classifiers = [ - 'Development Status :: 4 - Beta', - 'Environment :: Console', - 'Environment :: Web Environment', - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', - 'Operating System :: POSIX', - 'Operating System :: POSIX :: Linux', - 'Programming Language :: Python', - 'Topic :: Internet :: File Transfer Protocol (FTP)', - 'Topic :: Internet :: WWW/HTTP', - 'Topic :: Software Development :: Libraries :: Python Modules' - ] - -# load up distutils -if __name__ == '__main__': - config = globals().copy() - keys = list(config.keys()) - for k in keys: - #print '%-20s -> %s' % (k, config[k]) - if k.startswith('_'): del config[k] - - from setuptools import setup - setup(**config) +setup( + name=pkg_name, + version=pkg_version, + license="LGPLv2+", + description="A high-level cross-protocol url-grabber", + keywords="urlgrabber yum http ftp", + # From https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # Development status + "Development Status :: 5 - Production/Stable", + # Target audience + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + # Type of software + "Topic :: Internet :: File Transfer Protocol (FTP)", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Software Development :: Libraries :: Python Modules", + # Kind of software + "Environment :: Console", + "Environment :: Web Environment", + # License (must match license field) + "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)", + # Operating systems supported + "Operating System :: POSIX", + "Operating System :: POSIX :: Linux", + # Supported Python versions + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + ], + url="http://urlgrabber.baseurl.org/", + author="Michael D. Stenner, Ryan Tomayko, Seth Vidal, Zdenek Pavlas", + author_email="msten...@linux.duke.edu, rtoma...@naeblis.cx, skvi...@fedoraproject.org, zpav...@redhat.com", + maintainer="Neal Gompa", + maintainer_email="ngo...@fedoraproject.org", + packages=["urlgrabber"], + package_dir = {'urlgrabber':'urlgrabber'}, + include_package_data=True, + install_requires=[ + "pycurl", + "six", + "setuptools", + ], + scripts = ['scripts/urlgrabber'], + data_files = [ + ('share/doc/' + pkg_name + '-' + pkg_version, ['README','LICENSE', 'TODO', 'ChangeLog']), + ('libexec', ['scripts/urlgrabber-ext-down']), + ], +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/test/test_mirror.py new/urlgrabber-4.1.0/test/test_mirror.py --- old/urlgrabber-4.0.0/test/test_mirror.py 2019-02-25 13:04:27.000000000 +0100 +++ new/urlgrabber-4.1.0/test/test_mirror.py 2019-10-06 19:53:56.000000000 +0200 @@ -350,13 +350,18 @@ self.content = b'version1' def checkfunc_read(obj): - if obj.data == 'version1': + if obj.data == b'version1': raise URLGrabError(-1, 'Outdated version of foo') + elif obj.data != b'version2': + self.fail('Unexpected file content') def checkfunc_grab(obj): with open('foo') as f: - if f.read() == 'version1': + data = f.read() + if data == 'version1': raise URLGrabError(-1, 'Outdated version of foo') + elif data != 'version2': + self.fail('Unexpected file content') self.process = process self.reply = 200, b'OK' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/urlgrabber/__init__.py new/urlgrabber-4.1.0/urlgrabber/__init__.py --- old/urlgrabber-4.0.0/urlgrabber/__init__.py 2019-02-25 14:49:53.000000000 +0100 +++ new/urlgrabber-4.1.0/urlgrabber/__init__.py 2019-10-06 20:05:03.000000000 +0200 @@ -1,16 +1,18 @@ -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +# This library 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; either +# version 2.1 of the License, or (at your option) any later version. # -# This program 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 Library General Public License for more details. +# This library 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 General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA # Copyright 2002-2006 Michael D. Stenner, Ryan Tomayko # Copyright 2009 Red Hat, Inc - pycurl support added by Seth Vidal @@ -44,12 +46,17 @@ automatically switching mirrors if there is a failure. """ -__version__ = '4.0.0' -__date__ = '2019/02/25' -__author__ = 'Michael D. Stenner <msten...@linux.duke.edu>, ' \ - 'Ryan Tomayko <rtoma...@naeblis.cx>' \ - 'Seth Vidal <skvi...@fedoraproject.org>' \ - 'Zdenek Pavlas <zpav...@redhat.com>' -__url__ = 'http://urlgrabber.baseurl.org/' +try: + from email import message_from_string + from pkg_resources import get_distribution + pkgInfo = get_distribution(__package__).get_metadata('PKG-INFO') + __metadata__ = message_from_string(pkgInfo) + del pkgInfo + + __version__ = __metadata__['Version'] + __author__ = __metadata__['Author'] + __url__ = __metadata__['Home-page'] +except: + __author__ = __version__ = __url__ = '<see setup.cfg>' from .grabber import urlgrab, urlopen, urlread diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/urlgrabber/grabber.py new/urlgrabber-4.1.0/urlgrabber/grabber.py --- old/urlgrabber-4.0.0/urlgrabber/grabber.py 2019-02-25 14:46:40.000000000 +0100 +++ new/urlgrabber-4.1.0/urlgrabber/grabber.py 2019-10-06 19:53:56.000000000 +0200 @@ -661,8 +661,11 @@ logspec = os.environ['URLGRABBER_DEBUG'] dbinfo = logspec.split(',') import logging - level = logging._levelNames.get(dbinfo[0], None) - if level is None: level = int(dbinfo[0]) + if sys.version_info.major == 2: + level = logging._levelNames.get(dbinfo[0], None) + else: + level = logging.getLevelName(dbinfo[0]) + if level is None or not isinstance(level, int): level = int(dbinfo[0]) if level < 1: raise ValueError() formatter = logging.Formatter('%(asctime)s %(message)s') @@ -1406,7 +1409,7 @@ if buf.lower().find(b'content-length:') != -1: length = buf.split(b':')[1] self.size = int(length) - elif (self.append or self.opts.range) and not self._hdr_dump and b' 200 ' in buf: + elif (self.append or self.opts.range) and not self._hdr_dump and b' 200 OK ' in buf: # reget was attempted but server sends it all # undo what we did in _build_range() self.append = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/urlgrabber/mirror.py new/urlgrabber-4.1.0/urlgrabber/mirror.py --- old/urlgrabber-4.0.0/urlgrabber/mirror.py 2019-02-25 13:04:27.000000000 +0100 +++ new/urlgrabber-4.1.0/urlgrabber/mirror.py 2019-10-06 19:53:56.000000000 +0200 @@ -297,7 +297,12 @@ self.default_action = kwargs.get('default_action') def _parse_mirrors(self, mirrors): - return [{'mirror':_to_utf8(m)} for m in mirrors] + parsed_mirrors = [] + for m in mirrors: + if isinstance(m, string_types): + m = {'mirror': _to_utf8(m)} + parsed_mirrors.append(m) + return parsed_mirrors def _load_gr(self, gr): # OVERRIDE IDEAS: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/urlgrabber.egg-info/PKG-INFO new/urlgrabber-4.1.0/urlgrabber.egg-info/PKG-INFO --- old/urlgrabber-4.0.0/urlgrabber.egg-info/PKG-INFO 2019-02-25 14:56:11.000000000 +0100 +++ new/urlgrabber-4.1.0/urlgrabber.egg-info/PKG-INFO 2019-10-09 01:04:04.000000000 +0200 @@ -1,48 +1,31 @@ -Metadata-Version: 1.1 +Metadata-Version: 1.2 Name: urlgrabber -Version: 4.0.0 +Version: 4.1.0 Summary: A high-level cross-protocol url-grabber Home-page: http://urlgrabber.baseurl.org/ -Author: Michael D. Stenner, Ryan Tomayko -Author-email: msten...@linux.duke.edu, zpav...@redhat.com +Author: Michael D. Stenner, Ryan Tomayko, Seth Vidal, Zdenek Pavlas +Author-email: msten...@linux.duke.edu, rtoma...@naeblis.cx, skvi...@fedoraproject.org, zpav...@redhat.com +Maintainer: Neal Gompa +Maintainer-email: ngo...@fedoraproject.org License: LGPLv2+ -Description: A high-level cross-protocol url-grabber. - - Using urlgrabber, data can be fetched in three basic ways: - - urlgrab(url) copy the file to the local filesystem - urlopen(url) open the remote file and return a file object - (like urllib2.urlopen) - urlread(url) return the contents of the file as a string - - When using these functions (or methods), urlgrabber supports the - following features: - - * identical behavior for http://, ftp://, and file:// urls - * http keepalive - faster downloads of many files by using - only a single connection - * byte ranges - fetch only a portion of the file - * reget - for a urlgrab, resume a partial download - * progress meters - the ability to report download progress - automatically, even when using urlopen! - * throttling - restrict bandwidth usage - * retries - automatically retry a download if it fails. The - number of retries and failure types are configurable. - * authenticated server access for http and ftp - * proxy support - support for authenticated http and ftp proxies - * mirror groups - treat a list of mirrors as a single source, - automatically switching mirrors if there is a failure. - +Description: UNKNOWN +Keywords: urlgrabber yum http ftp Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: Environment :: Console -Classifier: Environment :: Web Environment +Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators +Classifier: Topic :: Internet :: File Transfer Protocol (FTP) +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Environment :: Console +Classifier: Environment :: Web Environment Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python -Classifier: Topic :: Internet :: File Transfer Protocol (FTP) -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlgrabber-4.0.0/urlgrabber.egg-info/requires.txt new/urlgrabber-4.1.0/urlgrabber.egg-info/requires.txt --- old/urlgrabber-4.0.0/urlgrabber.egg-info/requires.txt 2019-02-25 14:56:11.000000000 +0100 +++ new/urlgrabber-4.1.0/urlgrabber.egg-info/requires.txt 2019-10-09 01:04:04.000000000 +0200 @@ -1,2 +1,3 @@ pycurl six +setuptools