diff options
Diffstat (limited to 'setuptools')
-rwxr-xr-x | setuptools/package_index.py | 7 | ||||
-rw-r--r-- | setuptools/py27compat.py | 15 |
2 files changed, 18 insertions, 4 deletions
diff --git a/setuptools/package_index.py b/setuptools/package_index.py index 8a3c96de..133677e8 100755 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -13,6 +13,7 @@ except ImportError: from md5 import md5 from fnmatch import translate from .py24compat import wraps +from setuptools.py27compat import get_all_headers EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$') HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I) @@ -608,10 +609,8 @@ class PackageIndex(Environment): size = -1 if "content-length" in headers: # Some servers return multiple Content-Length headers :( - if not hasattr(headers, 'get_all'): - # Older versions of Python don't have the get_all method - headers.get_all = headers.getheaders - size = max(map(int,headers.get_all("Content-Length"))) + sizes = get_all_headers(headers, 'Content-Length') + size = max(map(int, sizes)) self.reporthook(url, filename, blocknum, bs, size) tfp = open(filename,'wb') while True: diff --git a/setuptools/py27compat.py b/setuptools/py27compat.py new file mode 100644 index 00000000..9d2886db --- /dev/null +++ b/setuptools/py27compat.py @@ -0,0 +1,15 @@ +""" +Compatibility Support for Python 2.7 and earlier +""" + +import sys + +def get_all_headers(message, key): + """ + Given an HTTPMessage, return all headers matching a given key. + """ + return message.get_all(key) + +if sys.version_info < (3,): + def get_all_headers(message, key): + return message.getheaders(key) |