diff options
author | Paul Ganssle <paul@ganssle.io> | 2020-07-13 15:25:32 -0400 |
---|---|---|
committer | Paul Ganssle <paul@ganssle.io> | 2020-07-13 15:42:24 -0400 |
commit | 370839b417f6bafe783fa040646d80bdf673fac4 (patch) | |
tree | 0b6e4c3e11ff44bea2ff5f8c7e3913b024ea3356 | |
parent | 642604f82c01175f2ad285800d969ff521495af0 (diff) | |
download | external_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__.py | 32 | ||||
-rw-r--r-- | _distutils_importer/distutils-shim-package/distutils/__init__.py | 3 | ||||
-rwxr-xr-x | setup.py | 1 |
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 * @@ -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 = ( |