summaryrefslogtreecommitdiff
path: root/src/pip/__pip-runner__.py
diff options
context:
space:
mode:
authorPaul Moore <p.f.moore@gmail.com>2022-08-03 10:12:29 +0100
committerPaul Moore <p.f.moore@gmail.com>2022-08-03 10:14:16 +0100
commitc69ea02bff38d7d6c5cda41a344b2d6a71ad2c74 (patch)
tree54526512f1c6fd412a82bcaf32b6591981f7c9ee /src/pip/__pip-runner__.py
parentf47a2048ffab01d7223212bf7f67d38640cc39da (diff)
downloadpip-c69ea02bff38d7d6c5cda41a344b2d6a71ad2c74.tar.gz
Add a version check to __pip-runner__.py
Diffstat (limited to 'src/pip/__pip-runner__.py')
-rw-r--r--src/pip/__pip-runner__.py36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/pip/__pip-runner__.py b/src/pip/__pip-runner__.py
index 14026c0d1..49a148a09 100644
--- a/src/pip/__pip-runner__.py
+++ b/src/pip/__pip-runner__.py
@@ -4,24 +4,38 @@ This file is named as it is, to ensure that this module can't be imported via
an import statement.
"""
-import runpy
+# /!\ This version compatibility check section must be Python 2 compatible. /!\
+
import sys
-import types
-from importlib.machinery import ModuleSpec, PathFinder
-from os.path import dirname
-from typing import Optional, Sequence, Union
+
+# Copied from setup.py
+PYTHON_REQUIRES = (3, 7)
+
+
+def version_str(version): # type: ignore
+ return ".".join(str(v) for v in version)
+
+
+if sys.version_info[:2] < PYTHON_REQUIRES:
+ raise SystemExit(
+ "This version of pip does not support python {} (requires >={}).".format(
+ version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
+ )
+ )
+
+# From here on, we can use Python 3 features, but the syntax must remain
+# Python 2 compatible.
+
+import runpy # noqa: E402
+from importlib.machinery import PathFinder # noqa: E402
+from os.path import dirname # noqa: E402
PIP_SOURCES_ROOT = dirname(dirname(__file__))
class PipImportRedirectingFinder:
@classmethod
- def find_spec(
- self,
- fullname: str,
- path: Optional[Sequence[Union[bytes, str]]] = None,
- target: Optional[types.ModuleType] = None,
- ) -> Optional[ModuleSpec]:
+ def find_spec(self, fullname, path=None, target=None): # type: ignore
if fullname != "pip":
return None