summaryrefslogtreecommitdiff
path: root/setuptools/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/__init__.py')
-rw-r--r--setuptools/__init__.py63
1 files changed, 38 insertions, 25 deletions
diff --git a/setuptools/__init__.py b/setuptools/__init__.py
index 07d6b6fa..4d9b8357 100644
--- a/setuptools/__init__.py
+++ b/setuptools/__init__.py
@@ -1,37 +1,31 @@
"""Extensions to the 'distutils' for large or complex distributions"""
-import os
+from fnmatch import fnmatchcase
import functools
-import distutils.core
-import distutils.filelist
+import os
import re
+
+import _distutils_hack.override # noqa: F401
+
+import distutils.core
from distutils.errors import DistutilsOptionError
from distutils.util import convert_path
-from fnmatch import fnmatchcase
from ._deprecation_warning import SetuptoolsDeprecationWarning
-from setuptools.extern.six import PY3, string_types
-from setuptools.extern.six.moves import filter, map
-
import setuptools.version
from setuptools.extension import Extension
-from setuptools.dist import Distribution, Feature
+from setuptools.dist import Distribution
from setuptools.depends import Require
from . import monkey
-__metaclass__ = type
-
__all__ = [
- 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require',
+ 'setup', 'Distribution', 'Command', 'Extension', 'Require',
'SetuptoolsDeprecationWarning',
- 'find_packages'
+ 'find_packages', 'find_namespace_packages',
]
-if PY3:
- __all__.append('find_namespace_packages')
-
__version__ = setuptools.version.__version__
bootstrap_install_from = None
@@ -120,18 +114,33 @@ class PEP420PackageFinder(PackageFinder):
find_packages = PackageFinder.find
-
-if PY3:
- find_namespace_packages = PEP420PackageFinder.find
+find_namespace_packages = PEP420PackageFinder.find
def _install_setup_requires(attrs):
# Note: do not use `setuptools.Distribution` directly, as
# our PEP 517 backend patch `distutils.core.Distribution`.
- dist = distutils.core.Distribution(dict(
- (k, v) for k, v in attrs.items()
- if k in ('dependency_links', 'setup_requires')
- ))
+ class MinimalDistribution(distutils.core.Distribution):
+ """
+ A minimal version of a distribution for supporting the
+ fetch_build_eggs interface.
+ """
+ def __init__(self, attrs):
+ _incl = 'dependency_links', 'setup_requires'
+ filtered = {
+ k: attrs[k]
+ for k in set(_incl) & set(attrs)
+ }
+ distutils.core.Distribution.__init__(self, filtered)
+
+ def finalize_options(self):
+ """
+ Disable finalize_options to avoid building the working set.
+ Ref #2158.
+ """
+
+ dist = MinimalDistribution(attrs)
+
# Honor setup.cfg's options.
dist.parse_config_files(ignore_option_errors=True)
if dist.setup_requires:
@@ -168,7 +177,7 @@ class Command(_Command):
if val is None:
setattr(self, option, default)
return default
- elif not isinstance(val, string_types):
+ elif not isinstance(val, str):
raise DistutilsOptionError("'%s' must be a %s (got `%s`)"
% (option, what, val))
return val
@@ -182,11 +191,11 @@ class Command(_Command):
val = getattr(self, option)
if val is None:
return
- elif isinstance(val, string_types):
+ elif isinstance(val, str):
setattr(self, option, re.split(r',\s*|\s+', val))
else:
if isinstance(val, list):
- ok = all(isinstance(v, string_types) for v in val)
+ ok = all(isinstance(v, str) for v in val)
else:
ok = False
if not ok:
@@ -224,5 +233,9 @@ def findall(dir=os.curdir):
return list(files)
+class sic(str):
+ """Treat this string as-is (https://en.wikipedia.org/wiki/Sic)"""
+
+
# Apply monkey patches
monkey.patch_all()