78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
|
#!/usr/bin/env python
|
||
|
from __future__ import absolute_import
|
||
|
|
||
|
import locale
|
||
|
import logging
|
||
|
import os
|
||
|
import warnings
|
||
|
|
||
|
import sys
|
||
|
|
||
|
# 2016-06-17 barry@debian.org: urllib3 1.14 added optional support for socks,
|
||
|
# but if invoked (i.e. imported), it will issue a warning to stderr if socks
|
||
|
# isn't available. requests unconditionally imports urllib3's socks contrib
|
||
|
# module, triggering this warning. The warning breaks DEP-8 tests (because of
|
||
|
# the stderr output) and is just plain annoying in normal usage. I don't want
|
||
|
# to add socks as yet another dependency for pip, nor do I want to allow-stderr
|
||
|
# in the DEP-8 tests, so just suppress the warning. pdb tells me this has to
|
||
|
# be done before the import of pip.vcs.
|
||
|
from pip._vendor.urllib3.exceptions import DependencyWarning
|
||
|
warnings.filterwarnings("ignore", category=DependencyWarning) # noqa
|
||
|
|
||
|
# We want to inject the use of SecureTransport as early as possible so that any
|
||
|
# references or sessions or what have you are ensured to have it, however we
|
||
|
# only want to do this in the case that we're running on macOS and the linked
|
||
|
# OpenSSL is too old to handle TLSv1.2
|
||
|
try:
|
||
|
import ssl
|
||
|
except ImportError:
|
||
|
pass
|
||
|
else:
|
||
|
# Checks for OpenSSL 1.0.1 on MacOS
|
||
|
if sys.platform == "darwin" and ssl.OPENSSL_VERSION_NUMBER < 0x1000100f:
|
||
|
try:
|
||
|
from pip._vendor.urllib3.contrib import securetransport
|
||
|
except (ImportError, OSError):
|
||
|
pass
|
||
|
else:
|
||
|
securetransport.inject_into_urllib3()
|
||
|
|
||
|
from pip._internal.cli.autocompletion import autocomplete
|
||
|
from pip._internal.cli.main_parser import parse_command
|
||
|
from pip._internal.commands import commands_dict
|
||
|
from pip._internal.exceptions import PipError
|
||
|
from pip._internal.utils import deprecation
|
||
|
from pip._vendor.urllib3.exceptions import InsecureRequestWarning
|
||
|
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
# Hide the InsecureRequestWarning from urllib3
|
||
|
warnings.filterwarnings("ignore", category=InsecureRequestWarning)
|
||
|
|
||
|
|
||
|
def main(args=None):
|
||
|
if args is None:
|
||
|
args = sys.argv[1:]
|
||
|
|
||
|
# Configure our deprecation warnings to be sent through loggers
|
||
|
deprecation.install_warning_logger()
|
||
|
|
||
|
autocomplete()
|
||
|
|
||
|
try:
|
||
|
cmd_name, cmd_args = parse_command(args)
|
||
|
except PipError as exc:
|
||
|
sys.stderr.write("ERROR: %s" % exc)
|
||
|
sys.stderr.write(os.linesep)
|
||
|
sys.exit(1)
|
||
|
|
||
|
# Needed for locale.getpreferredencoding(False) to work
|
||
|
# in pip._internal.utils.encoding.auto_decode
|
||
|
try:
|
||
|
locale.setlocale(locale.LC_ALL, '')
|
||
|
except locale.Error as e:
|
||
|
# setlocale can apparently crash if locale are uninitialized
|
||
|
logger.debug("Ignoring error %s when setting locale", e)
|
||
|
command = commands_dict[cmd_name](isolated=("--isolated" in cmd_args))
|
||
|
return command.main(cmd_args)
|