update shared dependencies
This commit is contained in:
parent
d4d3d82be3
commit
736cd598a8
521 changed files with 45146 additions and 22574 deletions
|
|
@ -2,7 +2,7 @@ __all__ = [
|
|||
'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop',
|
||||
'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
|
||||
'sdist', 'setopt', 'test', 'install_egg_info', 'install_scripts',
|
||||
'register', 'bdist_wininst', 'upload_docs',
|
||||
'register', 'bdist_wininst', 'upload_docs', 'upload',
|
||||
]
|
||||
|
||||
from distutils.command.bdist import bdist
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
from distutils.errors import DistutilsOptionError
|
||||
|
||||
from setuptools.extern.six.moves import map
|
||||
|
||||
from setuptools.command.setopt import edit_config, option_base, config_file
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,10 @@ import os
|
|||
import marshal
|
||||
import textwrap
|
||||
|
||||
from setuptools.extern 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
|
||||
|
||||
|
|
@ -413,7 +414,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):
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import distutils.errors
|
|||
import collections
|
||||
import itertools
|
||||
|
||||
from setuptools.extern.six.moves import map
|
||||
|
||||
try:
|
||||
from setuptools.lib2to3_ex import Mixin2to3
|
||||
|
|
@ -59,9 +60,10 @@ class build_py(orig.build_py, Mixin2to3):
|
|||
self.byte_compile(orig.build_py.get_outputs(self, include_bytecode=0))
|
||||
|
||||
def __getattr__(self, attr):
|
||||
if attr == 'data_files': # lazily compute data files
|
||||
self.data_files = files = self._get_data_files()
|
||||
return files
|
||||
"lazily compute data files"
|
||||
if attr == 'data_files':
|
||||
self.data_files = self._get_data_files()
|
||||
return self.data_files
|
||||
return orig.build_py.__getattr__(self, attr)
|
||||
|
||||
def build_module(self, module, module_file, package):
|
||||
|
|
@ -74,23 +76,21 @@ class build_py(orig.build_py, Mixin2to3):
|
|||
def _get_data_files(self):
|
||||
"""Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
|
||||
self.analyze_manifest()
|
||||
data = []
|
||||
for package in self.packages or ():
|
||||
# Locate package source directory
|
||||
src_dir = self.get_package_dir(package)
|
||||
return list(map(self._get_pkg_data_files, self.packages or ()))
|
||||
|
||||
# Compute package build directory
|
||||
build_dir = os.path.join(*([self.build_lib] + package.split('.')))
|
||||
def _get_pkg_data_files(self, package):
|
||||
# Locate package source directory
|
||||
src_dir = self.get_package_dir(package)
|
||||
|
||||
# Length of path to strip from found files
|
||||
plen = len(src_dir) + 1
|
||||
# Compute package build directory
|
||||
build_dir = os.path.join(*([self.build_lib] + package.split('.')))
|
||||
|
||||
# Strip directory from globbed filenames
|
||||
filenames = [
|
||||
file[plen:] for file in self.find_data_files(package, src_dir)
|
||||
]
|
||||
data.append((package, src_dir, build_dir, filenames))
|
||||
return data
|
||||
# Strip directory from globbed filenames
|
||||
filenames = [
|
||||
os.path.relpath(file, src_dir)
|
||||
for file in self.find_data_files(package, src_dir)
|
||||
]
|
||||
return package, src_dir, build_dir, filenames
|
||||
|
||||
def find_data_files(self, package, src_dir):
|
||||
"""Return filenames for package's data files in 'src_dir'"""
|
||||
|
|
|
|||
|
|
@ -5,9 +5,10 @@ import os
|
|||
import glob
|
||||
import io
|
||||
|
||||
from setuptools.extern 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
|
||||
|
||||
|
||||
|
|
@ -87,7 +88,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
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ import subprocess
|
|||
import shlex
|
||||
import io
|
||||
|
||||
from setuptools.extern import six
|
||||
from setuptools.extern.six.moves import configparser, map
|
||||
|
||||
from setuptools import Command
|
||||
from setuptools.sandbox import run_setup
|
||||
from setuptools.py31compat import get_path, get_config_vars
|
||||
|
|
@ -48,8 +51,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,
|
||||
|
|
@ -82,13 +83,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
|
||||
|
|
@ -320,7 +321,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 = []
|
||||
|
|
@ -413,7 +414,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):
|
||||
|
|
@ -1245,7 +1246,7 @@ class easy_install(Command):
|
|||
f = open(sitepy, 'rb')
|
||||
current = f.read()
|
||||
# we want str, not bytes
|
||||
if PY3:
|
||||
if six.PY3:
|
||||
current = current.decode()
|
||||
|
||||
f.close()
|
||||
|
|
@ -1271,7 +1272,7 @@ class easy_install(Command):
|
|||
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)
|
||||
|
|
@ -1415,9 +1416,6 @@ 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
|
||||
|
|
@ -1432,7 +1430,7 @@ 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))
|
||||
cfg.readfp(six.StringIO(config))
|
||||
except configparser.Error:
|
||||
return None
|
||||
if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
|
||||
|
|
@ -1467,7 +1465,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('\\', '/')
|
||||
|
|
@ -1643,7 +1641,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):
|
||||
|
|
@ -1878,17 +1876,6 @@ def chmod(path, mode):
|
|||
log.debug("chmod failed: %s", e)
|
||||
|
||||
|
||||
def fix_jython_executable(executable, options):
|
||||
warnings.warn("Use JythonCommandSpec", DeprecationWarning, stacklevel=2)
|
||||
|
||||
if not JythonCommandSpec.relevant():
|
||||
return executable
|
||||
|
||||
cmd = CommandSpec.best().from_param(executable)
|
||||
cmd.install_options(options)
|
||||
return cmd.as_header().lstrip('#!').rstrip('\n')
|
||||
|
||||
|
||||
class CommandSpec(list):
|
||||
"""
|
||||
A command spec for a #! header, specified as a list of arguments akin to
|
||||
|
|
@ -1903,7 +1890,7 @@ class CommandSpec(list):
|
|||
"""
|
||||
Choose the best CommandSpec class based on environmental conditions.
|
||||
"""
|
||||
return cls if not JythonCommandSpec.relevant() else JythonCommandSpec
|
||||
return cls
|
||||
|
||||
@classmethod
|
||||
def _sys_executable(cls):
|
||||
|
|
@ -1970,36 +1957,6 @@ class WindowsCommandSpec(CommandSpec):
|
|||
split_args = dict(posix=False)
|
||||
|
||||
|
||||
class JythonCommandSpec(CommandSpec):
|
||||
@classmethod
|
||||
def relevant(cls):
|
||||
return (
|
||||
sys.platform.startswith('java')
|
||||
and
|
||||
__import__('java').lang.System.getProperty('os.name') != 'Linux'
|
||||
)
|
||||
|
||||
def as_header(self):
|
||||
"""
|
||||
Workaround Jython's sys.executable being a .sh (an invalid
|
||||
shebang line interpreter)
|
||||
"""
|
||||
if not is_sh(self[0]):
|
||||
return super(JythonCommandSpec, self).as_header()
|
||||
|
||||
if self.options:
|
||||
# Can't apply the workaround, leave it broken
|
||||
log.warn(
|
||||
"WARNING: Unable to adapt shebang line for Jython,"
|
||||
" the following script is NOT executable\n"
|
||||
" see http://bugs.jython.org/issue1112 for"
|
||||
" more information.")
|
||||
return super(JythonCommandSpec, self).as_header()
|
||||
|
||||
items = ['/usr/bin/env'] + self + list(self.options)
|
||||
return self._render(items)
|
||||
|
||||
|
||||
class ScriptWriter(object):
|
||||
"""
|
||||
Encapsulates behavior around writing entry point scripts for console and
|
||||
|
|
@ -2076,7 +2033,10 @@ class ScriptWriter(object):
|
|||
"""
|
||||
Select the best ScriptWriter for this environment.
|
||||
"""
|
||||
return WindowsScriptWriter.best() if sys.platform == 'win32' else cls
|
||||
if sys.platform == 'win32' or (os.name == 'java' and os._name == 'nt'):
|
||||
return WindowsScriptWriter.best()
|
||||
else:
|
||||
return cls
|
||||
|
||||
@classmethod
|
||||
def _get_script_args(cls, type_, name, header, script_text):
|
||||
|
|
@ -2209,7 +2169,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()
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ import io
|
|||
import warnings
|
||||
import time
|
||||
|
||||
from setuptools.compat import basestring, PY3, StringIO
|
||||
from setuptools.extern import six
|
||||
from setuptools.extern.six.moves import map
|
||||
|
||||
from setuptools import Command
|
||||
from setuptools.command.sdist import sdist
|
||||
|
|
@ -26,7 +27,7 @@ from pkg_resources import (
|
|||
safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename)
|
||||
import setuptools.unicode_utils as unicode_utils
|
||||
|
||||
from pkg_resources import packaging
|
||||
from pkg_resources.extern import packaging
|
||||
|
||||
try:
|
||||
from setuptools_svn import svn_utils
|
||||
|
|
@ -148,7 +149,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')
|
||||
|
|
@ -412,7 +413,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):
|
||||
|
|
@ -452,12 +453,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))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
from distutils import log, dir_util
|
||||
import os
|
||||
|
||||
from setuptools.extern.six.moves import map
|
||||
|
||||
from setuptools import Command
|
||||
from setuptools.archive_util import unpack_archive
|
||||
import pkg_resources
|
||||
|
|
@ -27,7 +29,7 @@ class install_egg_info(Command):
|
|||
).egg_name() + '.egg-info'
|
||||
self.source = ei_cmd.egg_info
|
||||
self.target = os.path.join(self.install_dir, basename)
|
||||
self.outputs = [self.target]
|
||||
self.outputs = []
|
||||
|
||||
def run(self):
|
||||
self.run_command('egg_info')
|
||||
|
|
|
|||
|
|
@ -3,8 +3,9 @@ from distutils import log
|
|||
from distutils.errors import DistutilsOptionError
|
||||
import os
|
||||
|
||||
from setuptools.extern 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(',')
|
||||
]
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ import os
|
|||
import sys
|
||||
import io
|
||||
|
||||
from setuptools.compat import PY3
|
||||
from setuptools.extern import six
|
||||
|
||||
from setuptools.utils import cs_path_exists
|
||||
|
||||
import pkg_resources
|
||||
|
|
@ -181,7 +182,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:
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ from distutils.errors import DistutilsOptionError
|
|||
import distutils
|
||||
import os
|
||||
|
||||
from setuptools.extern.six.moves import configparser
|
||||
|
||||
from setuptools import Command
|
||||
|
||||
|
||||
|
|
@ -37,8 +39,6 @@ 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.read([filename])
|
||||
|
|
|
|||
|
|
@ -2,11 +2,13 @@ from distutils.errors import DistutilsOptionError
|
|||
from unittest import TestLoader
|
||||
import sys
|
||||
|
||||
from setuptools.extern import six
|
||||
from setuptools.extern.six.moves import map
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
@ -100,7 +102,7 @@ class test(Command):
|
|||
yield self.test_suite
|
||||
|
||||
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:
|
||||
|
|
@ -160,7 +162,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_suite.split('.')[0]
|
||||
if module in _namespace_packages:
|
||||
del_modules = []
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
from distutils.command import upload as orig
|
||||
|
||||
|
||||
class upload(orig.upload):
|
||||
"""
|
||||
Override default upload behavior to look up password
|
||||
in the keyring if available.
|
||||
"""
|
||||
|
||||
def finalize_options(self):
|
||||
orig.upload.finalize_options(self)
|
||||
self.password or self._load_password_from_keyring()
|
||||
|
||||
def _load_password_from_keyring(self):
|
||||
"""
|
||||
Attempt to load password from keyring. Suppress Exceptions.
|
||||
"""
|
||||
try:
|
||||
keyring = __import__('keyring')
|
||||
self.password = keyring.get_password(self.repository,
|
||||
self.username)
|
||||
except Exception:
|
||||
pass
|
||||
|
|
@ -8,25 +8,26 @@ PyPI's pythonhosted.org).
|
|||
from base64 import standard_b64encode
|
||||
from distutils import log
|
||||
from distutils.errors import DistutilsOptionError
|
||||
from distutils.command.upload import upload
|
||||
import os
|
||||
import socket
|
||||
import zipfile
|
||||
import tempfile
|
||||
import sys
|
||||
import shutil
|
||||
|
||||
from setuptools.compat import httplib, urlparse, unicode, iteritems, PY3
|
||||
from setuptools.extern import six
|
||||
from setuptools.extern.six.moves import http_client, urllib
|
||||
|
||||
from pkg_resources import iter_entry_points
|
||||
from .upload import upload
|
||||
|
||||
|
||||
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 +114,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 +123,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 +151,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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue