aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Ganssle <paul@ganssle.io>2020-07-13 15:25:32 -0400
committerPaul Ganssle <paul@ganssle.io>2020-07-13 15:42:24 -0400
commit370839b417f6bafe783fa040646d80bdf673fac4 (patch)
tree0b6e4c3e11ff44bea2ff5f8c7e3913b024ea3356
parent642604f82c01175f2ad285800d969ff521495af0 (diff)
downloadexternal_python_setuptools-370839b417f6bafe783fa040646d80bdf673fac4.tar.gz
external_python_setuptools-370839b417f6bafe783fa040646d80bdf673fac4.tar.bz2
external_python_setuptools-370839b417f6bafe783fa040646d80bdf673fac4.zip
Use import hook instead of sys.path manipulation
-rw-r--r--_distutils_importer/__init__.py32
-rw-r--r--_distutils_importer/distutils-shim-package/distutils/__init__.py3
-rwxr-xr-xsetup.py1
3 files changed, 27 insertions, 9 deletions
diff --git a/_distutils_importer/__init__.py b/_distutils_importer/__init__.py
index 498c4ac1..323ae203 100644
--- a/_distutils_importer/__init__.py
+++ b/_distutils_importer/__init__.py
@@ -1,15 +1,37 @@
import sys
-_HERE = os.path.dirname(__file__)
-NEW_DISTUTILS_LOCATION = os.path.join(_HERE, 'distutils-shim-package')
+
+class DistutilsMetaFinder:
+ def find_spec(self, fullname, path, target=None):
+ if path is not None or fullname != "distutils":
+ return None
+
+ return self.get_distutils_spec()
+
+ def get_distutils_spec(self):
+ import importlib
+
+ class DistutilsLoader(importlib.util.abc.Loader):
+
+ def create_module(self, spec):
+ return importlib.import_module('._distutils', 'setuptools')
+
+ def exec_module(self, module):
+ pass
+
+ return importlib.util.spec_from_loader('distutils', DistutilsLoader())
+
+
+DISTUTILS_FINDER = DistutilsMetaFinder()
+
def add_shim():
- if NEW_DISTUTILS_LOCATION not in sys.path:
- sys.path.insert(0, NEW_DISTUTILS_LOCATION)
+ sys.meta_path.insert(0, DISTUTILS_FINDER)
+
def remove_shim():
try:
- sys.path.remove(NEW_DISTUTILS_LOCATION)
+ sys.path.remove(DISTUTILS_FINDER)
except ValueError:
pass
diff --git a/_distutils_importer/distutils-shim-package/distutils/__init__.py b/_distutils_importer/distutils-shim-package/distutils/__init__.py
deleted file mode 100644
index de098c72..00000000
--- a/_distutils_importer/distutils-shim-package/distutils/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import setuptools.distutils_patch
-
-from distutils import *
diff --git a/setup.py b/setup.py
index daab3e87..cba37d3e 100755
--- a/setup.py
+++ b/setup.py
@@ -50,7 +50,6 @@ def _gen_console_scripts():
package_data = dict(
setuptools=['script (dev).tmpl', 'script.tmpl', 'site-patch.py'],
- _distutils_importer=['distutils-shim-package/distutils/__init__.py'],
)
force_windows_specific_files = (