summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools')
-rwxr-xr-xsetuptools/command/easy_install.py8
-rwxr-xr-xsetuptools/command/egg_info.py6
-rwxr-xr-xsetuptools/command/install_egg_info.py1
-rw-r--r--setuptools/command/test.py2
-rw-r--r--setuptools/command/upload_docs.py12
-rw-r--r--setuptools/compat.py4
-rw-r--r--setuptools/extension.py2
-rwxr-xr-xsetuptools/package_index.py14
-rwxr-xr-xsetuptools/sandbox.py3
-rw-r--r--setuptools/script template (dev).py5
-rw-r--r--setuptools/ssl_support.py5
-rw-r--r--setuptools/tests/__init__.py3
-rw-r--r--setuptools/tests/test_develop.py2
-rw-r--r--setuptools/tests/test_easy_install.py1
-rw-r--r--setuptools/tests/test_sdist.py5
15 files changed, 48 insertions, 25 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 731a4dc3..000fefa0 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -58,7 +58,10 @@ from pkg_resources import yield_lines, normalize_path, resource_string, \
DistributionNotFound, VersionConflict, \
DEVELOP_DIST
-sys_executable = os.path.normpath(sys.executable)
+if '__VENV_LAUNCHER__' in os.environ:
+ sys_executable = os.environ['__VENV_LAUNCHER__']
+else:
+ sys_executable = os.path.normpath(sys.executable)
__all__ = [
'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
@@ -282,6 +285,8 @@ class easy_install(Command):
self.script_dir = self.install_scripts
# default --record from the install command
self.set_undefined_options('install', ('record', 'record'))
+ # Should this be moved to the if statement below? It's not used
+ # elsewhere
normpath = map(normalize_path, sys.path)
self.all_site_dirs = get_site_dirs()
if self.site_dirs is not None:
@@ -1486,7 +1491,6 @@ def extract_wininst_cfg(dist_filename):
f.seek(prepended-12)
from setuptools.compat import StringIO, ConfigParser
- import struct
tag, cfglen, bmlen = struct.unpack("<iii",f.read(12))
if tag not in (0x1234567A, 0x1234567B):
return None # not a valid tag
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index ae14bb54..6b0d2426 100755
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -235,7 +235,7 @@ class egg_info(Command):
log.warn("unrecognized .svn/entries format; skipping %s", base)
dirs[:] = []
continue
-
+
data = list(map(str.splitlines,data.split('\n\x0c\n')))
del data[0][0] # get rid of the '8' or '9' or '10'
dirurl = data[0][3]
@@ -283,7 +283,7 @@ class FileList(_FileList):
item = item[:-1]
path = convert_path(item)
- if sys.version_info >= (3,):
+ if PY3:
try:
if os.path.exists(path) or os.path.exists(path.encode('utf-8')):
self.files.append(path)
@@ -337,7 +337,7 @@ class manifest_maker(sdist):
named by 'self.manifest'.
"""
# The manifest must be UTF-8 encodable. See #303.
- if sys.version_info >= (3,):
+ if PY3:
files = []
for file in self.filelist.files:
try:
diff --git a/setuptools/command/install_egg_info.py b/setuptools/command/install_egg_info.py
index f44b34b5..87ddff9c 100755
--- a/setuptools/command/install_egg_info.py
+++ b/setuptools/command/install_egg_info.py
@@ -1,5 +1,6 @@
from setuptools import Command
from setuptools.archive_util import unpack_archive
+from setuptools.compat import PY3
from distutils import log, dir_util
import os, shutil, pkg_resources
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index a02ac142..db2fc7b1 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -154,7 +154,7 @@ class test(Command):
for name in sys.modules:
if name.startswith(module):
del_modules.append(name)
- map(sys.modules.__delitem__, del_modules)
+ list(map(sys.modules.__delitem__, del_modules))
loader_ep = EntryPoint.parse("x="+self.test_loader)
loader_class = loader_ep.load(require=False)
diff --git a/setuptools/command/upload_docs.py b/setuptools/command/upload_docs.py
index a75c3b7e..12bc916b 100644
--- a/setuptools/command/upload_docs.py
+++ b/setuptools/command/upload_docs.py
@@ -23,15 +23,21 @@ try:
except ImportError:
from setuptools.command.upload import upload
-from setuptools.compat import httplib, urlparse
+from setuptools.compat import httplib, urlparse, unicode, iteritems
_IS_PYTHON3 = sys.version > '3'
+if _IS_PYTHON3:
+ errors = 'surrogateescape'
+else:
+ errors = 'strict'
+
+
# This is not just a replacement for byte literals
# but works as a general purpose encoder
def b(s, encoding='utf-8'):
if isinstance(s, unicode):
- return s.encode(encoding)
+ return s.encode(encoding, errors)
return s
@@ -127,7 +133,7 @@ class upload_docs(upload):
sep_boundary = b('\n--') + b(boundary)
end_boundary = sep_boundary + b('--')
body = []
- for key, values in data.iteritems():
+ for key, values in iteritems(data):
title = '\nContent-Disposition: form-data; name="%s"' % key
# handle multiple entries for the same name
if type(values) != type([]):
diff --git a/setuptools/compat.py b/setuptools/compat.py
index e2f64de2..437fb710 100644
--- a/setuptools/compat.py
+++ b/setuptools/compat.py
@@ -26,7 +26,7 @@ if sys.version_info[0] < 3:
reduce = reduce
unichr = unichr
unicode = unicode
- from urllib import url2pathname
+ from urllib import url2pathname, quote # Python 2.4 has no quote in urllib2
import urllib2
from urllib2 import urlopen, HTTPError, URLError, unquote, splituser
from urlparse import urlparse, urlunparse, urljoin
@@ -72,7 +72,7 @@ else:
from urllib.error import HTTPError, URLError
import urllib.request as urllib2
from urllib.request import urlopen, url2pathname
- from urllib.parse import urlparse, urlunparse, unquote, splituser, urljoin
+ from urllib.parse import urlparse, urlunparse, quote, unquote, splituser, urljoin
xrange = range
filterfalse = itertools.filterfalse
diff --git a/setuptools/extension.py b/setuptools/extension.py
index eb8b836c..d7892d3d 100644
--- a/setuptools/extension.py
+++ b/setuptools/extension.py
@@ -35,7 +35,7 @@ class Extension(_Extension):
if source.endswith('.pyx'):
source = source[:-4] + '.c'
return source
- self.sources = map(pyx_to_c, self.sources)
+ self.sources = list(map(pyx_to_c, self.sources))
class Library(Extension):
"""Just like a regular Extension, but built as a library instead"""
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index 99247ef1..61a66c6d 100755
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -179,7 +179,7 @@ def find_external_links(url, page):
for match in REL.finditer(page):
tag, rel = match.groups()
- rels = map(str.strip, rel.lower().split(','))
+ rels = set(map(str.strip, rel.lower().split(',')))
if 'homepage' in rels or 'download' in rels:
for match in HREF.finditer(tag):
yield urljoin(url, htmldecode(match.group(1)))
@@ -699,7 +699,7 @@ class PackageIndex(Environment):
elif scheme.startswith('hg+'):
return self._download_hg(url, filename)
elif scheme=='file':
- return url2pathname(urlparse.urlparse(url)[2])
+ return url2pathname(urlparse(url)[2])
else:
self.url_ok(url, True) # raises error if not allowed
return self._attempt_download(url, filename)
@@ -749,10 +749,10 @@ class PackageIndex(Environment):
url = url.split('#',1)[0] # remove any fragment for svn's sake
creds = ''
if url.lower().startswith('svn:') and '@' in url:
- scheme, netloc, path, p, q, f = urlparse.urlparse(url)
+ scheme, netloc, path, p, q, f = urlparse(url)
if not netloc and path.startswith('//') and '/' in path[2:]:
netloc, path = path[2:].split('/',1)
- auth, host = urllib.splituser(netloc)
+ auth, host = splituser(netloc)
if auth:
if ':' in auth:
user, pw = auth.split(':',1)
@@ -760,13 +760,13 @@ class PackageIndex(Environment):
else:
creds = " --username="+auth
netloc = host
- url = urlparse.urlunparse((scheme, netloc, url, p, q, f))
+ url = urlunparse((scheme, netloc, url, p, q, f))
self.info("Doing subversion checkout from %s to %s", url, filename)
os.system("svn checkout%s -q %s %s" % (creds, url, filename))
return filename
def _vcs_split_rev_from_url(self, url, pop_prefix=False):
- scheme, netloc, path, query, frag = urlparse.urlsplit(url)
+ scheme, netloc, path, query, frag = urlsplit(url)
scheme = scheme.split('+', 1)[-1]
@@ -778,7 +778,7 @@ class PackageIndex(Environment):
path, rev = path.rsplit('@', 1)
# Also, discard fragment
- url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
+ url = urlunsplit((scheme, netloc, path, query, ''))
return url, rev
diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py
index 441cae01..91dfc519 100755
--- a/setuptools/sandbox.py
+++ b/setuptools/sandbox.py
@@ -9,6 +9,7 @@ except NameError:
_file = None
_open = open
from distutils.errors import DistutilsError
+from setuptools.compat import builtins, execfile, reduce
from pkg_resources import working_set
from setuptools.compat import builtins, execfile, reduce
@@ -86,7 +87,7 @@ def run_setup(setup_script, args):
# exclude any encodings modules. See #285
and not mod_name.startswith('encodings.')
]
- map(sys.modules.__delitem__, del_modules)
+ list(map(sys.modules.__delitem__, del_modules))
os.chdir(old_dir)
sys.path[:] = save_path
sys.argv[:] = save_argv
diff --git a/setuptools/script template (dev).py b/setuptools/script template (dev).py
index 6dd9dd45..901790e7 100644
--- a/setuptools/script template (dev).py
+++ b/setuptools/script template (dev).py
@@ -3,4 +3,7 @@ __requires__ = """%(spec)r"""
from pkg_resources import require; require("""%(spec)r""")
del require
__file__ = """%(dev_path)r"""
-execfile(__file__)
+try:
+ execfile(__file__)
+except NameError:
+ exec(compile(open(__file__).read(), __file__, 'exec'))
diff --git a/setuptools/ssl_support.py b/setuptools/ssl_support.py
index 2aec655a..e749b312 100644
--- a/setuptools/ssl_support.py
+++ b/setuptools/ssl_support.py
@@ -4,6 +4,11 @@ from pkg_resources import ResolutionError, ExtractionError
from setuptools.compat import urllib2
try:
+ import urllib2
+except ImportError:
+ import urllib.request as urllib2
+
+try:
import ssl
except ImportError:
ssl = None
diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py
index 298141a7..b5328ce6 100644
--- a/setuptools/tests/__init__.py
+++ b/setuptools/tests/__init__.py
@@ -2,7 +2,7 @@
import sys
import os
import unittest
-import doctest
+from setuptools.tests import doctest
import distutils.core
import distutils.cmd
from distutils.errors import DistutilsOptionError, DistutilsPlatformError
@@ -11,6 +11,7 @@ from distutils.core import Extension
from distutils.version import LooseVersion
from setuptools.compat import func_code
+from setuptools.compat import func_code
import setuptools.dist
import setuptools.depends as dep
from setuptools import Feature
diff --git a/setuptools/tests/test_develop.py b/setuptools/tests/test_develop.py
index 9d7ce711..7b90161a 100644
--- a/setuptools/tests/test_develop.py
+++ b/setuptools/tests/test_develop.py
@@ -51,7 +51,7 @@ class TestDevelopTest(unittest.TestCase):
site.USER_SITE = tempfile.mkdtemp()
def tearDown(self):
- if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
+ if sys.version < "2.6" or hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
return
os.chdir(self.old_cwd)
diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py
index 277b4844..b0609eb1 100644
--- a/setuptools/tests/test_easy_install.py
+++ b/setuptools/tests/test_easy_install.py
@@ -12,6 +12,7 @@ import textwrap
import tarfile
import distutils.core
+from setuptools.compat import StringIO, BytesIO, next, urlparse
from setuptools.sandbox import run_setup, SandboxViolation
from setuptools.command.easy_install import easy_install, fix_jython_executable, get_script_args
from setuptools.command.easy_install import PthDistributions
diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py
index 438f7ced..a58b749c 100644
--- a/setuptools/tests/test_sdist.py
+++ b/setuptools/tests/test_sdist.py
@@ -9,7 +9,8 @@ import tempfile
import unittest
import unicodedata
-from setuptools.compat import StringIO, unicode
+
+from setuptools.compat import StringIO, quote, unicode
from setuptools.command.sdist import sdist
from setuptools.command.egg_info import manifest_maker
from setuptools.dist import Distribution
@@ -55,7 +56,7 @@ def b(s, encoding='utf-8'):
# Convert to POSIX path
def posix(path):
- if sys.version_info >= (3,) and not isinstance(path, str):
+ if sys.version_info >= (3,) and not isinstance(path, unicode):
return path.replace(os.sep.encode('ascii'), b('/'))
else:
return path.replace(os.sep, '/')