diff --git a/setup.py b/setup.py index ebcbc056c338afa9a945659a6ac941ef3397732d..ce4b14b0144c43e4594d524863f82b78d660c7ef 100644 --- a/setup.py +++ b/setup.py @@ -89,6 +89,7 @@ setup( namespace_packages = ['zc'], install_requires = [ 'setuptools>=8.0', + 'requests', ], include_package_data = True, entry_points = entry_points, diff --git a/src/zc/buildout/download.py b/src/zc/buildout/download.py index 56a84c8f1e6cd175cb7aa64595265f5d6548248d..c08b510dab4be98d04cab44dc7e69630f922a8b2 100644 --- a/src/zc/buildout/download.py +++ b/src/zc/buildout/download.py @@ -31,28 +31,15 @@ try: except ImportError: # Python 2 - import base64 from urlparse import urlparse - from urlparse import urlunparse - import urllib2 - + # use requests for connection pooling + import requests + session = requests.Session() def urlretrieve(url, tmp_path): - """Work around Python issue 24599 includig basic auth support - """ - scheme, netloc, path, params, query, frag = urlparse(url) - auth, host = urllib2.splituser(netloc) - if auth: - url = urlunparse((scheme, host, path, params, query, frag)) - req = urllib2.Request(url) - base64string = base64.encodestring(auth)[:-1] - basic = "Basic " + base64string - req.add_header("Authorization", basic) - else: - req = urllib2.Request(url) - url_obj = urllib2.urlopen(req) - with open(tmp_path, 'wb') as fp: - fp.write(url_obj.read()) - return tmp_path, url_obj.info() + r = session.get(url) + with open(tmp_path, 'wb') as fp: + fp.write(r.content) + return tmp_path, r from zc.buildout.easy_install import realpath