aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2020-07-19 21:36:33 -0400
committerJason R. Coombs <jaraco@jaraco.com>2020-07-19 21:40:52 -0400
commite371422476f51a83d27d70dc45bbfba1544aad55 (patch)
tree7ac4e9acc99b78835b3da2bde616ba4c452656b4
parent85a0a9026d1b40448d1757ca6cd75e5cc2c50fc6 (diff)
downloadexternal_python_setuptools-e371422476f51a83d27d70dc45bbfba1544aad55.tar.gz
external_python_setuptools-e371422476f51a83d27d70dc45bbfba1544aad55.tar.bz2
external_python_setuptools-e371422476f51a83d27d70dc45bbfba1544aad55.zip
Consolidate distutils importing hacks into _distutils_importer package. Generate distutils-precedence.pth inline.
-rw-r--r--MANIFEST.in1
-rw-r--r--_distutils_importer/__init__.py19
-rw-r--r--_distutils_importer/install.py5
-rw-r--r--_distutils_importer/override.py (renamed from setuptools/distutils_patch.py)18
-rw-r--r--conftest.py2
-rw-r--r--distutils_precedence.pth1
-rwxr-xr-xsetup.py8
-rw-r--r--setuptools/__init__.py3
8 files changed, 27 insertions, 30 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index be83a7f3..128ae280 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -13,5 +13,4 @@ include launcher.c
include msvc-build-launcher.cmd
include pytest.ini
include tox.ini
-include distutils_precedence.pth
exclude pyproject.toml # Temporary workaround for #1644.
diff --git a/_distutils_importer/__init__.py b/_distutils_importer/__init__.py
index 323ae203..ffa4caea 100644
--- a/_distutils_importer/__init__.py
+++ b/_distutils_importer/__init__.py
@@ -1,4 +1,20 @@
+"""
+Ensure that the local copy of distutils is preferred over stdlib.
+
+See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
+for more motivation.
+"""
+
import sys
+import os
+
+
+def enabled():
+ """
+ Allow selection of distutils by environment variable.
+ """
+ which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib')
+ return which == 'local'
class DistutilsMetaFinder:
@@ -34,6 +50,3 @@ def remove_shim():
sys.path.remove(DISTUTILS_FINDER)
except ValueError:
pass
-
-
-add_shim()
diff --git a/_distutils_importer/install.py b/_distutils_importer/install.py
new file mode 100644
index 00000000..73f13b29
--- /dev/null
+++ b/_distutils_importer/install.py
@@ -0,0 +1,5 @@
+from . import enabled, add_shim
+
+
+if enabled():
+ add_shim()
diff --git a/setuptools/distutils_patch.py b/_distutils_importer/override.py
index 33f1e7f9..91738485 100644
--- a/setuptools/distutils_patch.py
+++ b/_distutils_importer/override.py
@@ -1,16 +1,10 @@
-"""
-Ensure that the local copy of distutils is preferred over stdlib.
-
-See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
-for more motivation.
-"""
-
import sys
import re
-import os
import importlib
import warnings
+from . import enabled
+
is_pypy = '__pypy__' in sys.builtin_module_names
@@ -37,14 +31,6 @@ def clear_distutils():
del sys.modules[name]
-def enabled():
- """
- Allow selection of distutils by environment variable.
- """
- which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib')
- return which == 'local'
-
-
def ensure_local_distutils():
clear_distutils()
distutils = importlib.import_module('setuptools._distutils')
diff --git a/conftest.py b/conftest.py
index 6013e187..868bf5be 100644
--- a/conftest.py
+++ b/conftest.py
@@ -15,7 +15,7 @@ collect_ignore = [
'tests/manual_test.py',
'setuptools/tests/mod_with_constant.py',
'setuptools/_distutils',
- 'setuptools/distutils_patch.py',
+ '_distutils_importer',
]
diff --git a/distutils_precedence.pth b/distutils_precedence.pth
deleted file mode 100644
index 2d9b996a..00000000
--- a/distutils_precedence.pth
+++ /dev/null
@@ -1 +0,0 @@
-import os; (os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib') == 'local' and __import__('_distutils_importer'))
diff --git a/setup.py b/setup.py
index cba37d3e..a6e1abc4 100755
--- a/setup.py
+++ b/setup.py
@@ -94,12 +94,8 @@ class install_with_pth(install):
def initialize_options(self):
install.initialize_options(self)
-
- name = 'distutils_precedence'
- with open(os.path.join(here, name + '.pth'), 'rt') as f:
- contents = f.read()
-
- self.extra_path = (name, contents)
+ self.extra_path = (
+ 'distutils-precedence', 'import _distutils_importer.install')
def finalize_options(self):
install.finalize_options(self)
diff --git a/setuptools/__init__.py b/setuptools/__init__.py
index d9740403..80b287b4 100644
--- a/setuptools/__init__.py
+++ b/setuptools/__init__.py
@@ -5,8 +5,7 @@ import functools
import os
import re
-# Disabled for now due to: #2228, #2230
-import setuptools.distutils_patch # noqa: F401
+import _distutils_importer.override # noqa: F401
import distutils.core
from distutils.errors import DistutilsOptionError