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 <[email protected]>
+
+- 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 <[email protected]>
+
+ * 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 <[email protected]>
* 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: [email protected], [email protected]
+Author: Michael D. Stenner, Ryan Tomayko, Seth Vidal, Zdenek Pavlas
+Author-email: [email protected], [email protected],
[email protected], [email protected]
+Maintainer: Neal Gompa
+Maintainer-email: [email protected]
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="[email protected], [email protected],
[email protected], [email protected]",
+ maintainer="Neal Gompa",
+ maintainer_email="[email protected]",
+ 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 <[email protected]>, ' \
- 'Ryan Tomayko <[email protected]>' \
- 'Seth Vidal <[email protected]>' \
- 'Zdenek Pavlas <[email protected]>'
-__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: [email protected], [email protected]
+Author: Michael D. Stenner, Ryan Tomayko, Seth Vidal, Zdenek Pavlas
+Author-email: [email protected], [email protected],
[email protected], [email protected]
+Maintainer: Neal Gompa
+Maintainer-email: [email protected]
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