summaryrefslogtreecommitdiff
path: root/setuptools/command
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2014-07-05 15:06:51 -0400
committerJason R. Coombs <jaraco@jaraco.com>2014-07-05 15:06:51 -0400
commitb49435397a5094f94678adf3549cc8941aa469b7 (patch)
treeb123bdd63482393ba1e2859364920f40a3d9f71d /setuptools/command
parent5b865b1b6e23379d23aa80e74adb38db8b14b6ca (diff)
downloadpython-setuptools-git-b49435397a5094f94678adf3549cc8941aa469b7.tar.gz
Use six for Python 2 compatibility
--HG-- branch : feature/issue-229 extra : source : 7b1997ececc5772798ce33a0f8e77387cb55a977
Diffstat (limited to 'setuptools/command')
-rw-r--r--setuptools/command/bdist_egg.py5
-rwxr-xr-xsetuptools/command/develop.py5
-rwxr-xr-xsetuptools/command/easy_install.py34
-rwxr-xr-xsetuptools/command/egg_info.py11
-rwxr-xr-xsetuptools/command/rotate.py5
-rwxr-xr-xsetuptools/command/sdist.py5
-rwxr-xr-xsetuptools/command/setopt.py6
-rw-r--r--setuptools/command/test.py7
-rw-r--r--setuptools/command/upload_docs.py18
9 files changed, 51 insertions, 45 deletions
diff --git a/setuptools/command/bdist_egg.py b/setuptools/command/bdist_egg.py
index 34fdeec2..3d241b99 100644
--- a/setuptools/command/bdist_egg.py
+++ b/setuptools/command/bdist_egg.py
@@ -12,9 +12,10 @@ import os
import marshal
import textwrap
+import six
+
from pkg_resources import get_build_platform, Distribution, ensure_directory
from pkg_resources import EntryPoint
-from setuptools.compat import basestring
from setuptools.extension import Library
from setuptools import Command
@@ -418,7 +419,7 @@ def iter_symbols(code):
for name in code.co_names:
yield name
for const in code.co_consts:
- if isinstance(const, basestring):
+ if isinstance(const, six.string_types):
yield const
elif isinstance(const, CodeType):
for name in iter_symbols(const):
diff --git a/setuptools/command/develop.py b/setuptools/command/develop.py
index 368b64fe..9f0b6f47 100755
--- a/setuptools/command/develop.py
+++ b/setuptools/command/develop.py
@@ -4,9 +4,10 @@ from distutils.errors import DistutilsError, DistutilsOptionError
import os
import glob
+import six
+
from pkg_resources import Distribution, PathMetadata, normalize_path
from setuptools.command.easy_install import easy_install
-from setuptools.compat import PY3
import setuptools
@@ -86,7 +87,7 @@ class develop(easy_install):
" installation directory", p, normalize_path(os.curdir))
def install_for_development(self):
- if PY3 and getattr(self.distribution, 'use_2to3', False):
+ if six.PY3 and getattr(self.distribution, 'use_2to3', False):
# If we run 2to3 we can not do this inplace:
# Ensure metadata is up-to-date
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 68548272..3be6fd9a 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -35,6 +35,9 @@ import warnings
import site
import struct
+import six
+from six.moves import configparser
+
from setuptools import Command, _dont_write_bytecode
from setuptools.sandbox import run_setup
from setuptools.py31compat import get_path, get_config_vars
@@ -43,8 +46,6 @@ from setuptools.archive_util import unpack_archive
from setuptools.package_index import PackageIndex
from setuptools.package_index import URL_SCHEME
from setuptools.command import bdist_egg, egg_info
-from setuptools.compat import (iteritems, maxsize, basestring, unicode,
- reraise, PY2, PY3)
from pkg_resources import (
yield_lines, normalize_path, resource_string, ensure_directory,
get_distribution, find_distributions, Environment, Requirement,
@@ -77,13 +78,13 @@ def samefile(p1, p2):
return norm_p1 == norm_p2
-if PY2:
+if six.PY2:
def _to_ascii(s):
return s
def isascii(s):
try:
- unicode(s, 'ascii')
+ six.text_type(s, 'ascii')
return True
except UnicodeError:
return False
@@ -315,7 +316,7 @@ class easy_install(Command):
self.local_index = Environment(self.shadow_path + sys.path)
if self.find_links is not None:
- if isinstance(self.find_links, basestring):
+ if isinstance(self.find_links, six.string_types):
self.find_links = self.find_links.split()
else:
self.find_links = []
@@ -393,7 +394,7 @@ class easy_install(Command):
try:
pid = os.getpid()
except:
- pid = random.randint(0, maxsize)
+ pid = random.randint(0, sys.maxsize)
return os.path.join(self.install_dir, "test-easy-install-%s" % pid)
def warn_deprecated_options(self):
@@ -1217,7 +1218,7 @@ Please make the appropriate changes for your system and try again."""
f = open(sitepy, 'rb')
current = f.read()
# we want str, not bytes
- if PY3:
+ if six.PY3:
current = current.decode()
f.close()
@@ -1243,7 +1244,7 @@ Please make the appropriate changes for your system and try again."""
if not self.user:
return
home = convert_path(os.path.expanduser("~"))
- for name, path in iteritems(self.config_vars):
+ for name, path in six.iteritems(self.config_vars):
if path.startswith(home) and not os.path.isdir(path):
self.debug_print("os.makedirs('%s', 0o700)" % path)
os.makedirs(path, 0o700)
@@ -1374,7 +1375,7 @@ def expand_paths(inputs):
def extract_wininst_cfg(dist_filename):
"""Extract configuration data from a bdist_wininst .exe
- Returns a ConfigParser.RawConfigParser, or None
+ Returns a configparser.RawConfigParser, or None
"""
f = open(dist_filename, 'rb')
try:
@@ -1387,15 +1388,12 @@ def extract_wininst_cfg(dist_filename):
return None
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
f.seek(prepended - (12 + cfglen))
- cfg = ConfigParser.RawConfigParser(
+ cfg = configparser.RawConfigParser(
{'version': '', 'target_version': ''})
try:
part = f.read(cfglen)
@@ -1409,8 +1407,8 @@ def extract_wininst_cfg(dist_filename):
# Now the config is in bytes, but for RawConfigParser, it should
# be text, so decode it.
config = config.decode(sys.getfilesystemencoding())
- cfg.readfp(StringIO(config))
- except ConfigParser.Error:
+ cfg.readfp(six.StringIO(config))
+ except configparser.Error:
return None
if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
return None
@@ -1444,7 +1442,7 @@ def get_exe_prefixes(exe_filename):
continue
if parts[0].upper() in ('PURELIB', 'PLATLIB'):
contents = z.read(name)
- if PY3:
+ if six.PY3:
contents = contents.decode()
for pth in yield_lines(contents):
pth = pth.strip().replace('\\', '/')
@@ -1618,7 +1616,7 @@ def auto_chmod(func, arg, exc):
chmod(arg, stat.S_IWRITE)
return func(arg)
et, ev, _ = sys.exc_info()
- reraise(et, (ev[0], ev[1] + (" %s %s" % (func, arg))))
+ six.reraise(et, (ev[0], ev[1] + (" %s %s" % (func, arg))))
def update_dist_caches(dist_path, fix_zipimporter_caches):
@@ -2053,7 +2051,7 @@ def get_win_launcher(type):
def load_launcher_manifest(name):
manifest = pkg_resources.resource_string(__name__, 'launcher manifest.xml')
- if PY2:
+ if six.PY2:
return manifest % vars()
else:
return manifest.decode('utf-8') % vars()
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index 72493d0b..debb52e4 100755
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -10,9 +10,10 @@ import os
import re
import sys
+import six
+
from setuptools import Command
from setuptools.command.sdist import sdist
-from setuptools.compat import basestring, PY3, StringIO
from setuptools import svn_utils
from setuptools.command.sdist import walk_revctrl
from pkg_resources import (
@@ -132,7 +133,7 @@ class egg_info(Command):
to the file.
"""
log.info("writing %s to %s", what, filename)
- if PY3:
+ if six.PY3:
data = data.encode("utf-8")
if not self.dry_run:
f = open(filename, 'wb')
@@ -373,7 +374,7 @@ def _write_requirements(stream, reqs):
def write_requirements(cmd, basename, filename):
dist = cmd.distribution
- data = StringIO()
+ data = six.StringIO()
_write_requirements(data, dist.install_requires)
extras_require = dist.extras_require or {}
for extra in sorted(extras_require):
@@ -407,12 +408,12 @@ def write_arg(cmd, basename, filename, force=False):
def write_entries(cmd, basename, filename):
ep = cmd.distribution.entry_points
- if isinstance(ep, basestring) or ep is None:
+ if isinstance(ep, six.string_types) or ep is None:
data = ep
elif ep is not None:
data = []
for section, contents in sorted(ep.items()):
- if not isinstance(contents, basestring):
+ if not isinstance(contents, six.string_types):
contents = EntryPoint.parse_group(section, contents)
contents = '\n'.join(sorted(map(str, contents.values())))
data.append('[%s]\n%s\n\n' % (section, contents))
diff --git a/setuptools/command/rotate.py b/setuptools/command/rotate.py
index 1b073620..09eac496 100755
--- a/setuptools/command/rotate.py
+++ b/setuptools/command/rotate.py
@@ -3,8 +3,9 @@ from distutils import log
from distutils.errors import DistutilsOptionError
import os
+import six
+
from setuptools import Command
-from setuptools.compat import basestring
class rotate(Command):
@@ -36,7 +37,7 @@ class rotate(Command):
self.keep = int(self.keep)
except ValueError:
raise DistutilsOptionError("--keep must be an integer")
- if isinstance(self.match, basestring):
+ if isinstance(self.match, six.string_types):
self.match = [
convert_path(p.strip()) for p in self.match.split(',')
]
diff --git a/setuptools/command/sdist.py b/setuptools/command/sdist.py
index 2aa1ee20..c99ad9b1 100755
--- a/setuptools/command/sdist.py
+++ b/setuptools/command/sdist.py
@@ -6,8 +6,9 @@ import os
import re
import sys
+import six
+
from setuptools import svn_utils
-from setuptools.compat import PY3
import pkg_resources
READMES = ('README', 'README.rst', 'README.txt')
@@ -236,7 +237,7 @@ class sdist(orig.sdist):
manifest = open(self.manifest, 'rbU')
for line in manifest:
# The manifest must contain UTF-8. See #303.
- if PY3:
+ if six.PY3:
try:
line = line.decode('UTF-8')
except UnicodeDecodeError:
diff --git a/setuptools/command/setopt.py b/setuptools/command/setopt.py
index a04d6032..f78e0cd5 100755
--- a/setuptools/command/setopt.py
+++ b/setuptools/command/setopt.py
@@ -4,6 +4,8 @@ from distutils.errors import DistutilsOptionError
import distutils
import os
+from six.moves import configparser
+
from setuptools import Command
@@ -37,10 +39,8 @@ def edit_config(filename, settings, dry_run=False):
while a dictionary lists settings to be changed or deleted in that section.
A setting of ``None`` means to delete that setting.
"""
- from setuptools.compat import ConfigParser
-
log.debug("Reading configuration from %s", filename)
- opts = ConfigParser.RawConfigParser()
+ opts = configparser.RawConfigParser()
opts.read([filename])
for section, options in settings.items():
if options is None:
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index 1038da71..14dd2600 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -3,11 +3,12 @@ from unittest import TestLoader
import unittest
import sys
+import six
+
from pkg_resources import (resource_listdir, resource_exists, normalize_path,
working_set, _namespace_packages,
add_activation_listener, require, EntryPoint)
from setuptools import Command
-from setuptools.compat import PY3
from setuptools.py31compat import unittest_main
@@ -84,7 +85,7 @@ class test(Command):
self.test_runner = getattr(self.distribution, 'test_runner', None)
def with_project_on_sys_path(self, func):
- with_2to3 = PY3 and getattr(self.distribution, 'use_2to3', False)
+ with_2to3 = six.PY3 and getattr(self.distribution, 'use_2to3', False)
if with_2to3:
# If we run 2to3 we can not do this inplace:
@@ -145,7 +146,7 @@ class test(Command):
# Purge modules under test from sys.modules. The test loader will
# re-import them from the build location. Required when 2to3 is used
# with namespace packages.
- if PY3 and getattr(self.distribution, 'use_2to3', False):
+ if six.PY3 and getattr(self.distribution, 'use_2to3', False):
module = self.test_args[-1].split('.')[0]
if module in _namespace_packages:
del_modules = []
diff --git a/setuptools/command/upload_docs.py b/setuptools/command/upload_docs.py
index cd6c300c..360c10e8 100644
--- a/setuptools/command/upload_docs.py
+++ b/setuptools/command/upload_docs.py
@@ -16,17 +16,19 @@ import tempfile
import sys
import shutil
-from setuptools.compat import httplib, urlparse, unicode, iteritems, PY3
+from six.moves import http_client, urllib
+import six
+
from pkg_resources import iter_entry_points
-errors = 'surrogateescape' if PY3 else 'strict'
+errors = 'surrogateescape' if six.PY3 else '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):
+ if isinstance(s, six.text_type):
return s.encode(encoding, errors)
return s
@@ -113,7 +115,7 @@ class upload_docs(upload):
# set up the authentication
credentials = b(self.username + ':' + self.password)
credentials = standard_b64encode(credentials)
- if PY3:
+ if six.PY3:
credentials = credentials.decode('ascii')
auth = "Basic " + credentials
@@ -122,7 +124,7 @@ class upload_docs(upload):
sep_boundary = b('\n--') + b(boundary)
end_boundary = sep_boundary + b('--')
body = []
- for key, values in iteritems(data):
+ for key, values in six.iteritems(data):
title = '\nContent-Disposition: form-data; name="%s"' % key
# handle multiple entries for the same name
if not isinstance(values, list):
@@ -150,12 +152,12 @@ class upload_docs(upload):
# We can't use urllib2 since we need to send the Basic
# auth right with the first request
schema, netloc, url, params, query, fragments = \
- urlparse(self.repository)
+ urllib.parse.urlparse(self.repository)
assert not params and not query and not fragments
if schema == 'http':
- conn = httplib.HTTPConnection(netloc)
+ conn = http_client.HTTPConnection(netloc)
elif schema == 'https':
- conn = httplib.HTTPSConnection(netloc)
+ conn = http_client.HTTPSConnection(netloc)
else:
raise AssertionError("unsupported schema " + schema)