2013-10-23 03:32:25 +02:00
|
|
|
"""
|
|
|
|
pip._vendor is for vendoring dependencies of pip to prevent needing pip to
|
|
|
|
depend on something external.
|
|
|
|
|
|
|
|
Files inside of pip._vendor should be considered immutable and should only be
|
|
|
|
updated to versions from upstream.
|
|
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
2014-11-20 04:43:43 +01:00
|
|
|
|
2014-12-14 03:13:51 +01:00
|
|
|
import glob
|
|
|
|
import os.path
|
2014-11-20 04:43:43 +01:00
|
|
|
import sys
|
|
|
|
|
2015-06-24 02:37:21 +02:00
|
|
|
# Downstream redistributors which have debundled our dependencies should also
|
|
|
|
# patch this value to be true. This will trigger the additional patching
|
|
|
|
# to cause things like "six" to be available as pip.
|
|
|
|
DEBUNDLED = False
|
2014-11-20 04:43:43 +01:00
|
|
|
|
2014-12-14 03:13:51 +01:00
|
|
|
# By default, look in this directory for a bunch of .whl files which we will
|
|
|
|
# add to the beginning of sys.path before attempting to import anything. This
|
|
|
|
# is done to support downstream re-distributors like Debian and Fedora who
|
|
|
|
# wish to create their own Wheels for our dependencies to aid in debundling.
|
|
|
|
WHEEL_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
|
|
|
2015-06-24 02:37:21 +02:00
|
|
|
# Define a small helper function to alias our vendored modules to the real ones
|
|
|
|
# if the vendored ones do not exist. This idea of this was taken from
|
|
|
|
# https://github.com/kennethreitz/requests/pull/2567.
|
|
|
|
def vendored(modulename):
|
|
|
|
vendored_name = "{0}.{1}".format(__name__, modulename)
|
|
|
|
|
|
|
|
try:
|
2019-03-15 05:56:35 +01:00
|
|
|
__import__(modulename, globals(), locals(), level=0)
|
2015-06-24 02:37:21 +02:00
|
|
|
except ImportError:
|
2020-09-26 15:41:42 +02:00
|
|
|
# We can just silently allow import failures to pass here. If we
|
|
|
|
# got to this point it means that ``import pip._vendor.whatever``
|
|
|
|
# failed and so did ``import whatever``. Since we're importing this
|
|
|
|
# upfront in an attempt to alias imports, not erroring here will
|
|
|
|
# just mean we get a regular import error whenever pip *actually*
|
|
|
|
# tries to import one of these modules to use it, which actually
|
|
|
|
# gives us a better error message than we would have otherwise
|
|
|
|
# gotten.
|
|
|
|
pass
|
2019-03-15 05:56:35 +01:00
|
|
|
else:
|
|
|
|
sys.modules[vendored_name] = sys.modules[modulename]
|
|
|
|
base, head = vendored_name.rsplit(".", 1)
|
|
|
|
setattr(sys.modules[base], head, sys.modules[modulename])
|
2015-06-24 02:37:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
# If we're operating in a debundled setup, then we want to go ahead and trigger
|
|
|
|
# the aliasing of our vendored libraries as well as looking for wheels to add
|
|
|
|
# to our sys.path. This will cause all of this code to be a no-op typically
|
|
|
|
# however downstream redistributors can enable it in a consistent way across
|
|
|
|
# all platforms.
|
|
|
|
if DEBUNDLED:
|
|
|
|
# Actually look inside of WHEEL_DIR to find .whl files and add them to the
|
|
|
|
# front of our sys.path.
|
|
|
|
sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path
|
|
|
|
|
|
|
|
# Actually alias all of our vendored dependencies.
|
|
|
|
vendored("cachecontrol")
|
2020-04-21 18:05:43 +02:00
|
|
|
vendored("certifi")
|
2015-06-24 02:37:21 +02:00
|
|
|
vendored("colorama")
|
|
|
|
vendored("distlib")
|
2016-08-12 15:51:44 +02:00
|
|
|
vendored("distro")
|
2015-06-24 02:37:21 +02:00
|
|
|
vendored("six")
|
|
|
|
vendored("six.moves")
|
|
|
|
vendored("six.moves.urllib")
|
2017-10-07 06:28:33 +02:00
|
|
|
vendored("six.moves.urllib.parse")
|
2015-06-24 02:37:21 +02:00
|
|
|
vendored("packaging")
|
|
|
|
vendored("packaging.version")
|
|
|
|
vendored("packaging.specifiers")
|
2018-11-30 20:08:54 +01:00
|
|
|
vendored("pep517")
|
2015-06-24 02:37:21 +02:00
|
|
|
vendored("pkg_resources")
|
2021-07-25 00:18:35 +02:00
|
|
|
vendored("platformdirs")
|
2015-06-24 02:37:21 +02:00
|
|
|
vendored("progress")
|
|
|
|
vendored("requests")
|
2019-01-04 03:10:07 +01:00
|
|
|
vendored("requests.exceptions")
|
2015-12-04 16:11:00 +01:00
|
|
|
vendored("requests.packages")
|
|
|
|
vendored("requests.packages.urllib3")
|
|
|
|
vendored("requests.packages.urllib3._collections")
|
|
|
|
vendored("requests.packages.urllib3.connection")
|
|
|
|
vendored("requests.packages.urllib3.connectionpool")
|
|
|
|
vendored("requests.packages.urllib3.contrib")
|
2016-01-31 18:33:34 +01:00
|
|
|
vendored("requests.packages.urllib3.contrib.ntlmpool")
|
|
|
|
vendored("requests.packages.urllib3.contrib.pyopenssl")
|
2015-12-04 16:11:00 +01:00
|
|
|
vendored("requests.packages.urllib3.exceptions")
|
|
|
|
vendored("requests.packages.urllib3.fields")
|
|
|
|
vendored("requests.packages.urllib3.filepost")
|
|
|
|
vendored("requests.packages.urllib3.packages")
|
|
|
|
vendored("requests.packages.urllib3.packages.ordered_dict")
|
|
|
|
vendored("requests.packages.urllib3.packages.six")
|
|
|
|
vendored("requests.packages.urllib3.packages.ssl_match_hostname")
|
|
|
|
vendored("requests.packages.urllib3.packages.ssl_match_hostname."
|
|
|
|
"_implementation")
|
|
|
|
vendored("requests.packages.urllib3.poolmanager")
|
|
|
|
vendored("requests.packages.urllib3.request")
|
|
|
|
vendored("requests.packages.urllib3.response")
|
|
|
|
vendored("requests.packages.urllib3.util")
|
|
|
|
vendored("requests.packages.urllib3.util.connection")
|
|
|
|
vendored("requests.packages.urllib3.util.request")
|
|
|
|
vendored("requests.packages.urllib3.util.response")
|
|
|
|
vendored("requests.packages.urllib3.util.retry")
|
|
|
|
vendored("requests.packages.urllib3.util.ssl_")
|
|
|
|
vendored("requests.packages.urllib3.util.timeout")
|
|
|
|
vendored("requests.packages.urllib3.util.url")
|
2020-03-12 15:27:28 +01:00
|
|
|
vendored("resolvelib")
|
2022-06-27 14:45:51 +02:00
|
|
|
vendored("rich")
|
|
|
|
vendored("rich.console")
|
|
|
|
vendored("rich.highlighter")
|
|
|
|
vendored("rich.logging")
|
|
|
|
vendored("rich.markup")
|
|
|
|
vendored("rich.progress")
|
|
|
|
vendored("rich.segment")
|
|
|
|
vendored("rich.style")
|
|
|
|
vendored("rich.text")
|
|
|
|
vendored("rich.traceback")
|
2021-02-10 14:48:53 +01:00
|
|
|
vendored("tenacity")
|
2021-07-01 23:11:35 +02:00
|
|
|
vendored("tomli")
|
2023-06-27 05:18:08 +02:00
|
|
|
vendored("truststore")
|
2018-05-16 23:42:52 +02:00
|
|
|
vendored("urllib3")
|