mirror of https://github.com/pypa/pip
refactor pip.backwardcompat from module to package
This commit is contained in:
parent
8fc02eb47e
commit
1cf1a7e595
|
@ -119,52 +119,15 @@ try:
|
|||
try:
|
||||
from ssl import match_hostname, CertificateError
|
||||
except ImportError:
|
||||
from backwardcompat_ssl import match_hostname, CertificateError
|
||||
from pip.backwardcompat.ssl_match_hostname import match_hostname, CertificateError
|
||||
except ImportError:
|
||||
ssl = None
|
||||
|
||||
|
||||
#https://gist.github.com/zed/1347055
|
||||
#patches for py25 socket to work http://pypi.python.org/pypi/ssl/
|
||||
# patch for py25 socket to work with http://pypi.python.org/pypi/ssl/
|
||||
import socket
|
||||
if not hasattr(socket, 'create_connection'): # for Python 2.5
|
||||
_GLOBAL_DEFAULT_TIMEOUT = getattr(socket, '_GLOBAL_DEFAULT_TIMEOUT', object())
|
||||
# copy-paste from stdlib's socket.py (py2.6)
|
||||
def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
|
||||
source_address=None):
|
||||
"""Connect to *address* and return the socket object.
|
||||
|
||||
Convenience function. Connect to *address* (a 2-tuple ``(host,
|
||||
port)``) and return the socket object. Passing the optional
|
||||
*timeout* parameter will set the timeout on the socket instance
|
||||
before attempting to connect. If no *timeout* is supplied, the
|
||||
global default timeout setting returned by :func:`getdefaulttimeout`
|
||||
is used.
|
||||
"""
|
||||
|
||||
host, port = address
|
||||
err = None
|
||||
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
|
||||
af, socktype, proto, canonname, sa = res
|
||||
sock = None
|
||||
try:
|
||||
sock = socket.socket(af, socktype, proto)
|
||||
if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
|
||||
sock.settimeout(timeout)
|
||||
if source_address:
|
||||
sock.bind(source_address)
|
||||
sock.connect(sa)
|
||||
return sock
|
||||
|
||||
except socket.error:
|
||||
err = sys.exc_info()[1]
|
||||
if sock is not None:
|
||||
sock.close()
|
||||
|
||||
if err is not None:
|
||||
raise err
|
||||
else:
|
||||
raise socket.error("getaddrinfo returns an empty list")
|
||||
|
||||
# monkey-patch socket module
|
||||
from pip.backwardcompat.socket_create_connection import create_connection
|
||||
socket.create_connection = create_connection
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
"""
|
||||
patches for py25 socket to work with http://pypi.python.org/pypi/ssl/
|
||||
inspired from https://gist.github.com/zed/1347055
|
||||
"""
|
||||
import socket
|
||||
|
||||
_GLOBAL_DEFAULT_TIMEOUT = getattr(socket, '_GLOBAL_DEFAULT_TIMEOUT', object())
|
||||
# copy-paste from stdlib's socket.py (py2.6)
|
||||
def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
|
||||
source_address=None):
|
||||
"""Connect to *address* and return the socket object.
|
||||
|
||||
Convenience function. Connect to *address* (a 2-tuple ``(host,
|
||||
port)``) and return the socket object. Passing the optional
|
||||
*timeout* parameter will set the timeout on the socket instance
|
||||
before attempting to connect. If no *timeout* is supplied, the
|
||||
global default timeout setting returned by :func:`getdefaulttimeout`
|
||||
is used.
|
||||
"""
|
||||
|
||||
host, port = address
|
||||
err = None
|
||||
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
|
||||
af, socktype, proto, canonname, sa = res
|
||||
sock = None
|
||||
try:
|
||||
sock = socket.socket(af, socktype, proto)
|
||||
if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
|
||||
sock.settimeout(timeout)
|
||||
if source_address:
|
||||
sock.bind(source_address)
|
||||
sock.connect(sa)
|
||||
return sock
|
||||
|
||||
except socket.error:
|
||||
err = sys.exc_info()[1]
|
||||
if sock is not None:
|
||||
sock.close()
|
||||
|
||||
if err is not None:
|
||||
raise err
|
||||
else:
|
||||
raise socket.error("getaddrinfo returns an empty list")
|
|
@ -4,7 +4,7 @@
|
|||
import sys
|
||||
import logging
|
||||
|
||||
import pip.backwardcompat
|
||||
from pip import backwardcompat
|
||||
|
||||
|
||||
class Logger(object):
|
||||
|
@ -74,7 +74,7 @@ class Logger(object):
|
|||
rendered = '%02i %s' % (level, rendered)
|
||||
if hasattr(consumer, 'write'):
|
||||
rendered += '\n'
|
||||
pip.backwardcompat.fwrite(consumer, rendered)
|
||||
backwardcompat.fwrite(consumer, rendered)
|
||||
else:
|
||||
consumer(rendered)
|
||||
|
||||
|
|
2
setup.py
2
setup.py
|
@ -47,7 +47,7 @@ setup(name="pip",
|
|||
author_email='python-virtualenv@groups.google.com',
|
||||
url='http://www.pip-installer.org',
|
||||
license='MIT',
|
||||
packages=['pip', 'pip.commands', 'pip.vcs'],
|
||||
packages=['pip', 'pip.commands', 'pip.vcs', 'pip.backwardcompat'],
|
||||
package_data={'pip': ['*.pem']},
|
||||
entry_points=dict(console_scripts=['pip=pip:main', 'pip-%s=pip:main' % sys.version[:3]]),
|
||||
test_suite='nose.collector',
|
||||
|
|
Loading…
Reference in New Issue