|
|
- #!/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-stder
- # 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._internal.vcs import git, mercurial, subversion, bazaar # noqa
- 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)
|