diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2016-04-04 08:32:28 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2016-04-04 08:32:28 -0400 |
commit | 48b63f309650af9e43368cf0d6792ea247ad8663 (patch) | |
tree | 1c9bbeda525f231bd671c9e9f7ea3c3eedcb5854 /setuptools/ssl_support.py | |
parent | 1bf92e3a3cc1e246b1ecc05c63287bb177939efa (diff) | |
parent | 9803058dc72867605bdac20d41249c00e8eae415 (diff) | |
download | external_python_setuptools-48b63f309650af9e43368cf0d6792ea247ad8663.tar.gz external_python_setuptools-48b63f309650af9e43368cf0d6792ea247ad8663.tar.bz2 external_python_setuptools-48b63f309650af9e43368cf0d6792ea247ad8663.zip |
Merge with master
Diffstat (limited to 'setuptools/ssl_support.py')
-rw-r--r-- | setuptools/ssl_support.py | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/setuptools/ssl_support.py b/setuptools/ssl_support.py index cc7db067..657197cf 100644 --- a/setuptools/ssl_support.py +++ b/setuptools/ssl_support.py @@ -3,9 +3,10 @@ import socket import atexit import re +from setuptools.extern.six.moves import urllib, http_client, map + import pkg_resources from pkg_resources import ResolutionError, ExtractionError -from setuptools.compat import urllib2 try: import ssl @@ -24,20 +25,15 @@ cert_paths = """ /usr/local/share/certs/ca-root.crt /etc/ssl/cert.pem /System/Library/OpenSSL/certs/cert.pem +/usr/local/share/certs/ca-root-nss.crt """.strip().split() -HTTPSHandler = HTTPSConnection = object - -for what, where in ( - ('HTTPSHandler', ['urllib2','urllib.request']), - ('HTTPSConnection', ['httplib', 'http.client']), -): - for module in where: - try: - exec("from %s import %s" % (module, what)) - except ImportError: - pass +try: + HTTPSHandler = urllib.request.HTTPSHandler + HTTPSConnection = http_client.HTTPSConnection +except AttributeError: + HTTPSHandler = HTTPSConnection = object is_available = ssl is not None and object not in (HTTPSHandler, HTTPSConnection) @@ -198,7 +194,7 @@ class VerifyingHTTPSConn(HTTPSConnection): def opener_for(ca_bundle=None): """Get a urlopen() replacement that uses ca_bundle for verification""" - return urllib2.build_opener( + return urllib.request.build_opener( VerifyingHTTPSHandler(ca_bundle or find_ca_bundle()) ).open @@ -223,6 +219,12 @@ def get_win_certfile(): self.addcerts(certs) atexit.register(self.close) + def close(self): + try: + super(MyCertFile, self).close() + except OSError: + pass + _wincerts = MyCertFile(stores=['CA', 'ROOT']) return _wincerts.name |