summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2015-12-31 16:30:47 -0500
committerJason R. Coombs <jaraco@jaraco.com>2015-12-31 16:30:47 -0500
commitd93c343d2612589b9d9b81b5b038425bb931f5f6 (patch)
treeb9d21aff8e04c51d17bf5fc7711f79c86f6a51f0
parent9fed012172521fb5cd8edb75e088fb20ea293387 (diff)
downloadpython-setuptools-bitbucket-d93c343d2612589b9d9b81b5b038425bb931f5f6.tar.gz
Modeling after Astropy's technique for bundling libraries, the imports are now much cleaner. Thanks @embray. Ref #229.
-rwxr-xr-xpytest.ini2
-rw-r--r--setuptools/__init__.py7
-rw-r--r--setuptools/command/bdist_egg.py7
-rwxr-xr-xsetuptools/command/develop.py7
-rwxr-xr-xsetuptools/command/easy_install.py10
-rwxr-xr-xsetuptools/command/egg_info.py7
-rwxr-xr-xsetuptools/command/rotate.py7
-rwxr-xr-xsetuptools/command/sdist.py7
-rwxr-xr-xsetuptools/command/setopt.py7
-rw-r--r--setuptools/command/test.py7
-rw-r--r--setuptools/command/upload_docs.py10
-rw-r--r--setuptools/depends.py7
-rw-r--r--setuptools/dist.py7
-rw-r--r--setuptools/extern/__init__.py0
-rw-r--r--setuptools/extern/six.py46
-rwxr-xr-xsetuptools/package_index.py10
-rwxr-xr-xsetuptools/sandbox.py10
-rw-r--r--setuptools/ssl_support.py7
-rw-r--r--setuptools/tests/__init__.py7
-rw-r--r--setuptools/tests/contexts.py7
-rw-r--r--setuptools/tests/server.py7
-rw-r--r--setuptools/tests/test_develop.py7
-rw-r--r--setuptools/tests/test_easy_install.py10
-rw-r--r--setuptools/tests/test_integration.py9
-rw-r--r--setuptools/tests/test_packageindex.py10
-rw-r--r--setuptools/tests/test_sdist.py7
-rw-r--r--setuptools/unicode_utils.py8
27 files changed, 77 insertions, 160 deletions
diff --git a/pytest.ini b/pytest.ini
index 351942f4..bfb4e4f8 100755
--- a/pytest.ini
+++ b/pytest.ini
@@ -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):