From 60b0401b0a894ede64ae6f2f0d0b072a761fd4fb Mon Sep 17 00:00:00 2001 From: Marcus Smith <qwcode@gmail.com> Date: Tue, 12 Mar 2013 14:20:23 -0700 Subject: [PATCH] fix proxy support --- pip/download.py | 10 +++++++--- tests/test_proxy.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/pip/download.py b/pip/download.py index e48ab67..cd23d5c 100644 --- a/pip/download.py +++ b/pip/download.py @@ -129,6 +129,7 @@ class URLOpener(object): """ def __init__(self): self.passman = urllib2.HTTPPasswordMgrWithDefaultRealm() + self.proxy_handler = None def __call__(self, url): """ @@ -186,6 +187,11 @@ def get_opener(self, *args, **kwargs): Build an OpenerDirector instance based on the scheme, whether ssl is importable and the --insecure parameter. """ + + args = list(args) + if self.proxy_handler: + args.extend([self.proxy_handler, urllib2.CacheFTPHandler]) + if kwargs.get('scheme') == 'https': if ssl: https_handler = VerifiedHTTPSHandler() @@ -211,9 +217,7 @@ def setup(self, proxystr='', prompting=True): self.prompting = prompting proxy = self.get_proxy(proxystr) if proxy: - proxy_support = urllib2.ProxyHandler({"http": proxy, "ftp": proxy, "https": proxy}) - opener = urllib2.build_opener(proxy_support, urllib2.CacheFTPHandler) - urllib2.install_opener(opener) + self.proxy_handler = urllib2.ProxyHandler({"http": proxy, "ftp": proxy, "https": proxy}) def parse_credentials(self, netloc): if "@" in netloc: -- 1.8.1.6