diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-12-31 16:30:47 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-12-31 16:30:47 -0500 |
commit | d93c343d2612589b9d9b81b5b038425bb931f5f6 (patch) | |
tree | b9d21aff8e04c51d17bf5fc7711f79c86f6a51f0 | |
parent | 9fed012172521fb5cd8edb75e088fb20ea293387 (diff) | |
download | python-setuptools-bitbucket-d93c343d2612589b9d9b81b5b038425bb931f5f6.tar.gz |
Modeling after Astropy's technique for bundling libraries, the imports are now much cleaner. Thanks @embray. Ref #229.
27 files changed, 77 insertions, 160 deletions
@@ -1,3 +1,3 @@ [pytest] addopts=--doctest-modules --ignore release.py --ignore setuptools/lib2to3_ex.py --ignore tests/manual_test.py --ignore tests/shlib_test --doctest-glob=pkg_resources/api_tests.txt --ignore scripts/upload-old-releases-as-zip.py -norecursedirs=dist build *.egg +norecursedirs=dist build *.egg setuptools/extern diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 6e1e5aa4..ec0d5dc2 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -8,12 +8,7 @@ from distutils.core import Command as _Command from distutils.util import convert_path from fnmatch import fnmatchcase -try: - from setuptools._vendor.six.moves import filterfalse -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import filterfalse +from setuptools.extern.six.moves import filterfalse import setuptools.version from setuptools.extension import Extension diff --git a/setuptools/command/bdist_egg.py b/setuptools/command/bdist_egg.py index 78164819..9cebd7fa 100644 --- a/setuptools/command/bdist_egg.py +++ b/setuptools/command/bdist_egg.py @@ -11,12 +11,7 @@ import os import marshal import textwrap -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from pkg_resources import get_build_platform, Distribution, ensure_directory from pkg_resources import EntryPoint diff --git a/setuptools/command/develop.py b/setuptools/command/develop.py index c401c8d4..11b5df10 100755 --- a/setuptools/command/develop.py +++ b/setuptools/command/develop.py @@ -5,12 +5,7 @@ import os import glob import io -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from pkg_resources import Distribution, PathMetadata, normalize_path from setuptools.command.easy_install import easy_install diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 51c38ddf..a11618d1 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -40,14 +40,8 @@ import subprocess import shlex import io -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import configparser -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import configparser +from setuptools.extern import six +from setuptools.extern.six.moves import configparser from setuptools import Command from setuptools.sandbox import run_setup diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index 5b996a11..cf46d24a 100755 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -14,12 +14,7 @@ import io import warnings import time -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from setuptools import Command from setuptools.command.sdist import sdist diff --git a/setuptools/command/rotate.py b/setuptools/command/rotate.py index 1ee1c538..804f962a 100755 --- a/setuptools/command/rotate.py +++ b/setuptools/command/rotate.py @@ -3,12 +3,7 @@ from distutils import log from distutils.errors import DistutilsOptionError import os -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from setuptools import Command diff --git a/setuptools/command/sdist.py b/setuptools/command/sdist.py index 59990cd6..6640d4e3 100755 --- a/setuptools/command/sdist.py +++ b/setuptools/command/sdist.py @@ -5,12 +5,7 @@ import os import sys import io -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from setuptools.utils import cs_path_exists diff --git a/setuptools/command/setopt.py b/setuptools/command/setopt.py index 1441e512..7f332be5 100755 --- a/setuptools/command/setopt.py +++ b/setuptools/command/setopt.py @@ -4,12 +4,7 @@ from distutils.errors import DistutilsOptionError import distutils import os -try: - from setuptools._vendor.six.moves import configparser -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import configparser +from setuptools.extern.six.moves import configparser from setuptools import Command diff --git a/setuptools/command/test.py b/setuptools/command/test.py index 32ff7f15..3a2a9b93 100644 --- a/setuptools/command/test.py +++ b/setuptools/command/test.py @@ -2,12 +2,7 @@ from distutils.errors import DistutilsOptionError from unittest import TestLoader import sys -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from pkg_resources import (resource_listdir, resource_exists, normalize_path, working_set, _namespace_packages, diff --git a/setuptools/command/upload_docs.py b/setuptools/command/upload_docs.py index 60e9fb7e..ca35a3ce 100644 --- a/setuptools/command/upload_docs.py +++ b/setuptools/command/upload_docs.py @@ -16,14 +16,8 @@ import tempfile import sys import shutil -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import http_client, urllib -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import http_client, urllib +from setuptools.extern import six +from setuptools.extern.six.moves import http_client, urllib from pkg_resources import iter_entry_points diff --git a/setuptools/depends.py b/setuptools/depends.py index e633c05b..9f7c9a35 100644 --- a/setuptools/depends.py +++ b/setuptools/depends.py @@ -4,12 +4,7 @@ import marshal from imp import PKG_DIRECTORY, PY_COMPILED, PY_SOURCE, PY_FROZEN from distutils.version import StrictVersion -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six __all__ = [ 'Require', 'find_module', 'get_module_constant', 'extract_constant' diff --git a/setuptools/dist.py b/setuptools/dist.py index 11b42d19..70731225 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -13,12 +13,7 @@ from distutils.core import Distribution as _Distribution from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, DistutilsSetupError) -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six from setuptools.depends import Require from setuptools import windows_support diff --git a/setuptools/extern/__init__.py b/setuptools/extern/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/setuptools/extern/__init__.py diff --git a/setuptools/extern/six.py b/setuptools/extern/six.py new file mode 100644 index 00000000..2685c5e6 --- /dev/null +++ b/setuptools/extern/six.py @@ -0,0 +1,46 @@ +""" +Handle loading six package from system or from the bundled copy +""" + +import imp + + +_SIX_SEARCH_PATH = ['setuptools._vendor.six', 'six'] + + +def _find_module(name, path=None): + """ + Alternative to `imp.find_module` that can also search in subpackages. + """ + + parts = name.split('.') + + for part in parts: + if path is not None: + path = [path] + + fh, path, descr = imp.find_module(part, path) + + return fh, path, descr + + +def _import_six(search_path=_SIX_SEARCH_PATH): + for mod_name in search_path: + try: + mod_info = _find_module(mod_name) + except ImportError: + continue + + imp.load_module(__name__, *mod_info) + + break + + else: + raise ImportError( + "The 'six' module of minimum version {0} is required; " + "normally this is bundled with this package so if you get " + "this warning, consult the packager of your " + "distribution.") + + +_import_six() diff --git a/setuptools/package_index.py b/setuptools/package_index.py index 08c36890..ea136c09 100755 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -14,14 +14,8 @@ try: except ImportError: from urllib2 import splituser -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import urllib, http_client, configparser -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import urllib, http_client, configparser +from setuptools.extern import six +from setuptools.extern.six.moves import urllib, http_client, configparser from pkg_resources import ( CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST, diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 47d7f40c..37035f37 100755 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -8,14 +8,8 @@ import re import contextlib import pickle -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import builtins -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import builtins +from setuptools.extern import six +from setuptools.extern.six.moves import builtins import pkg_resources diff --git a/setuptools/ssl_support.py b/setuptools/ssl_support.py index 327c2fcb..7baedd19 100644 --- a/setuptools/ssl_support.py +++ b/setuptools/ssl_support.py @@ -3,12 +3,7 @@ import socket import atexit import re -try: - from setuptools._vendor.six.moves import urllib, http_client -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import urllib, http_client +from setuptools.extern.six.moves import urllib, http_client import pkg_resources from pkg_resources import ResolutionError, ExtractionError diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py index 0a625993..32447356 100644 --- a/setuptools/tests/__init__.py +++ b/setuptools/tests/__init__.py @@ -8,12 +8,7 @@ from distutils.errors import DistutilsSetupError from distutils.core import Extension from distutils.version import LooseVersion -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six import pytest import setuptools.dist diff --git a/setuptools/tests/contexts.py b/setuptools/tests/contexts.py index 3a0ce6b5..8c9a2d3e 100644 --- a/setuptools/tests/contexts.py +++ b/setuptools/tests/contexts.py @@ -5,12 +5,7 @@ import sys import contextlib import site -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six @contextlib.contextmanager diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index ef5c8f62..6a687937 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,12 +4,7 @@ import time import threading -try: - from setuptools._vendor.six.moves import BaseHTTPServer, SimpleHTTPServer -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import BaseHTTPServer, SimpleHTTPServer +from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer class IndexServer(BaseHTTPServer.HTTPServer): diff --git a/setuptools/tests/test_develop.py b/setuptools/tests/test_develop.py index 71aaed6a..1b844499 100644 --- a/setuptools/tests/test_develop.py +++ b/setuptools/tests/test_develop.py @@ -5,12 +5,7 @@ import site import sys import io -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six import pytest diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index de34ca27..94e317b3 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -16,14 +16,8 @@ import itertools import distutils.errors import io -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import urllib -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import urllib +from setuptools.extern import six +from setuptools.extern.six.moves import urllib import pytest try: diff --git a/setuptools/tests/test_integration.py b/setuptools/tests/test_integration.py index 1c574020..04772ba5 100644 --- a/setuptools/tests/test_integration.py +++ b/setuptools/tests/test_integration.py @@ -7,14 +7,7 @@ import glob import os import sys -try: - from setuptools._vendor.six.moves import urllib -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import urllib - - +from setuptools.extern.six.moves import urllib import pytest from setuptools.command.easy_install import easy_install diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index 649e8a4e..6a76b5fc 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -4,14 +4,8 @@ import sys import os import distutils.errors -try: - from setuptools._vendor import six - from setuptools._vendor.six.moves import urllib, http_client -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six - from six.moves import urllib, http_client +from setuptools.extern import six +from setuptools.extern.six.moves import urllib, http_client from .textwrap import DALS import pkg_resources diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py index ea176733..753b507d 100644 --- a/setuptools/tests/test_sdist.py +++ b/setuptools/tests/test_sdist.py @@ -9,12 +9,7 @@ import unicodedata import contextlib import io -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six import pytest diff --git a/setuptools/unicode_utils.py b/setuptools/unicode_utils.py index 1fdb0a91..18903d9e 100644 --- a/setuptools/unicode_utils.py +++ b/setuptools/unicode_utils.py @@ -1,13 +1,7 @@ import unicodedata import sys - -try: - from setuptools._vendor import six -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - import six +from setuptools.extern import six # HFS Plus uses decomposed UTF-8 def decompose(path): |