Hello community,
here is the log from the commit of package python3-setuptools for
openSUSE:Factory checked in at 2016-08-10 19:55:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-setuptools (Old)
and /work/SRC/openSUSE:Factory/.python3-setuptools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-setuptools"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-setuptools/python3-setuptools.changes
2016-08-03 11:39:59.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python3-setuptools.new/python3-setuptools.changes
2016-08-10 19:55:14.000000000 +0200
@@ -1,0 +2,27 @@
+Sat Aug 6 02:42:11 UTC 2016 - [email protected]
+
+- update to version 25.1.6:
+ * #725
+
+- changes from version 25.1.5:
+ * #720
+ * #723
+
+- changes from version 25.1.4:
+ * #717
+ * #713
+ * #707 via #715
+
+- changes from version 25.1.3:
+ * #714 and #704: Revert fix as it breaks other components downstream
+ that can't handle unicode. See #709, #710, and #712.
+
+- changes from version 25.1.2:
+ * #704: Fix errors when installing a zip sdist that contained files
+ named with non-ascii characters on Windows would crash the
+ install when it attempted to clean up the build.
+ * #646: MSVC compatibility - catch errors properly in
+ RegistryInfo.lookup.
+ * #702: Prevent UnboundLocalError when initial working_set is empty.
+
+-------------------------------------------------------------------
Old:
----
setuptools-25.1.1.tar.gz
New:
----
setuptools-25.1.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-setuptools.spec ++++++
--- /var/tmp/diff_new_pack.kHSUfs/_old 2016-08-10 19:55:15.000000000 +0200
+++ /var/tmp/diff_new_pack.kHSUfs/_new 2016-08-10 19:55:15.000000000 +0200
@@ -17,7 +17,7 @@
Name: python3-setuptools
-Version: 25.1.1
+Version: 25.1.6
Release: 0
Url: http://pypi.python.org/pypi/setuptools
Summary: Easily download, build, install, upgrade, and uninstall Python
packages
++++++ setuptools-25.1.1.tar.gz -> setuptools-25.1.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/CHANGES.rst
new/setuptools-25.1.6/CHANGES.rst
--- old/setuptools-25.1.1/CHANGES.rst 2016-07-28 21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/CHANGES.rst 2016-08-05 18:15:48.000000000 +0200
@@ -2,6 +2,42 @@
CHANGES
=======
+v25.1.6
+-------
+
+* #725
+
+v25.1.5
+-------
+
+* #720
+* #723
+
+v25.1.4
+-------
+
+* #717
+* #713
+* #707 via #715
+
+v25.1.3
+-------
+
+* #714 and #704: Revert fix as it breaks other components
+ downstream that can't handle unicode. See #709, #710,
+ and #712.
+
+v25.1.2
+-------
+
+* #704: Fix errors when installing a zip sdist that contained
+ files named with non-ascii characters on Windows would
+ crash the install when it attempted to clean up the build.
+* #646: MSVC compatibility - catch errors properly in
+ RegistryInfo.lookup.
+* #702: Prevent UnboundLocalError when initial working_set
+ is empty.
+
v25.1.1
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/PKG-INFO
new/setuptools-25.1.6/PKG-INFO
--- old/setuptools-25.1.1/PKG-INFO 2016-07-28 21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/PKG-INFO 2016-08-05 18:16:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools
-Version: 25.1.1
+Version: 25.1.6
Summary: Easily download, build, install, upgrade, and uninstall Python
packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/pkg_resources/__init__.py
new/setuptools-25.1.6/pkg_resources/__init__.py
--- old/setuptools-25.1.1/pkg_resources/__init__.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/pkg_resources/__init__.py 2016-08-05
18:15:48.000000000 +0200
@@ -1468,16 +1468,11 @@
def has_metadata(self, name):
return self.egg_info and self._has(self._fn(self.egg_info, name))
- if sys.version_info <= (3,):
- def get_metadata(self, name):
- if not self.egg_info:
- return ""
- return self._get(self._fn(self.egg_info, name))
- else:
- def get_metadata(self, name):
- if not self.egg_info:
- return ""
- return self._get(self._fn(self.egg_info, name)).decode("utf-8")
+ def get_metadata(self, name):
+ if not self.egg_info:
+ return ""
+ value = self._get(self._fn(self.egg_info, name))
+ return value.decode('utf-8') if six.PY3 else value
def get_metadata_lines(self, name):
return yield_lines(self.get_metadata(name))
@@ -2981,6 +2976,7 @@
# ensure that all distributions added to the working set in the future
# (e.g. by calling ``require()``) will get activated as well,
# with higher priority (replace=True).
+ dist = None # ensure dist is defined for del dist below
for dist in working_set:
dist.activate(replace=False)
del dist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setup.cfg
new/setuptools-25.1.6/setup.cfg
--- old/setuptools-25.1.1/setup.cfg 2016-07-28 21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/setup.cfg 2016-08-05 18:16:14.000000000 +0200
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 25.1.1
+current_version = 25.1.6
commit = True
tag = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setup.py
new/setuptools-25.1.6/setup.py
--- old/setuptools-25.1.1/setup.py 2016-07-28 21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setup.py 2016-08-05 18:15:48.000000000 +0200
@@ -88,7 +88,7 @@
setup_params = dict(
name="setuptools",
- version="25.1.1",
+ version="25.1.6",
description="Easily download, build, install, upgrade, and uninstall "
"Python packages",
author="Python Packaging Authority",
@@ -167,11 +167,11 @@
""").strip().splitlines(),
extras_require={
"ssl:sys_platform=='win32'": "wincertstore==0.2",
- "certs": "certifi==2016.2.28",
+ "certs": "certifi==2016.8.2",
},
dependency_links=[
pypi_link(
- 'certifi-2016.2.28.tar.gz#md5=5d672aa766e1f773c75cfeccd02d3650',
+ 'certifi-2016.8.2.tar.gz#md5=004ae166985d3a684bcac5368e22ed63',
),
pypi_link(
'wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/archive_util.py
new/setuptools-25.1.6/setuptools/archive_util.py
--- old/setuptools-25.1.1/setuptools/archive_util.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/archive_util.py 2016-08-05
18:15:48.000000000 +0200
@@ -1,11 +1,5 @@
"""Utilities for extracting common archive formats"""
-
-__all__ = [
- "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter",
- "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
-]
-
import zipfile
import tarfile
import os
@@ -13,9 +7,16 @@
import posixpath
import contextlib
from distutils.errors import DistutilsError
+
from pkg_resources import ensure_directory, ContextualZipFile
+__all__ = [
+ "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter",
+ "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
+]
+
+
class UnrecognizedFormat(DistutilsError):
"""Couldn't recognize the archive type"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/command/bdist_egg.py
new/setuptools-25.1.6/setuptools/command/bdist_egg.py
--- old/setuptools-25.1.1/setuptools/command/bdist_egg.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/command/bdist_egg.py 2016-08-05
18:15:48.000000000 +0200
@@ -129,7 +129,7 @@
self.distribution.data_files.append(item)
try:
- log.info("installing package data to %s" % self.bdist_dir)
+ log.info("installing package data to %s", self.bdist_dir)
self.call_command('install_data', force=0, root=None)
finally:
self.distribution.data_files = old
@@ -152,7 +152,7 @@
self.run_command("egg_info")
# We run install_lib before install_data, because some data hacks
# pull their data path from the install_lib command.
- log.info("installing library code to %s" % self.bdist_dir)
+ log.info("installing library code to %s", self.bdist_dir)
instcmd = self.get_finalized_command('install')
old_root = instcmd.root
instcmd.root = None
@@ -169,7 +169,7 @@
pyfile = os.path.join(self.bdist_dir, strip_module(filename) +
'.py')
self.stubs.append(pyfile)
- log.info("creating stub loader for %s" % ext_name)
+ log.info("creating stub loader for %s", ext_name)
if not self.dry_run:
write_stub(os.path.basename(ext_name), pyfile)
to_compile.append(pyfile)
@@ -186,14 +186,14 @@
self.mkpath(egg_info)
if self.distribution.scripts:
script_dir = os.path.join(egg_info, 'scripts')
- log.info("installing scripts to %s" % script_dir)
+ log.info("installing scripts to %s", script_dir)
self.call_command('install_scripts', install_dir=script_dir,
no_ep=1)
self.copy_metadata_to(egg_info)
native_libs = os.path.join(egg_info, "native_libs.txt")
if all_outputs:
- log.info("writing %s" % native_libs)
+ log.info("writing %s", native_libs)
if not self.dry_run:
ensure_directory(native_libs)
libs_file = open(native_libs, 'wt')
@@ -201,7 +201,7 @@
libs_file.write('\n')
libs_file.close()
elif os.path.isfile(native_libs):
- log.info("removing %s" % native_libs)
+ log.info("removing %s", native_libs)
if not self.dry_run:
os.unlink(native_libs)
@@ -458,7 +458,7 @@
p = path[len(base_dir) + 1:]
if not dry_run:
z.write(path, p)
- log.debug("adding '%s'" % p)
+ log.debug("adding '%s'", p)
compression = zipfile.ZIP_DEFLATED if compress else zipfile.ZIP_STORED
if not dry_run:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/command/easy_install.py
new/setuptools-25.1.6/setuptools/command/easy_install.py
--- old/setuptools-25.1.1/setuptools/command/easy_install.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/command/easy_install.py 2016-08-05
18:15:48.000000000 +0200
@@ -2230,39 +2230,7 @@
def rmtree(path, ignore_errors=False, onerror=auto_chmod):
- """Recursively delete a directory tree.
-
- This code is taken from the Python 2.4 version of 'shutil', because
- the 2.3 version doesn't really work right.
- """
- if ignore_errors:
- def onerror(*args):
- pass
- elif onerror is None:
- def onerror(*args):
- raise
- names = []
- try:
- names = os.listdir(path)
- except os.error:
- onerror(os.listdir, path, sys.exc_info())
- for name in names:
- fullname = os.path.join(path, name)
- try:
- mode = os.lstat(fullname).st_mode
- except os.error:
- mode = 0
- if stat.S_ISDIR(mode):
- rmtree(fullname, ignore_errors, onerror)
- else:
- try:
- os.remove(fullname)
- except os.error:
- onerror(os.remove, fullname, sys.exc_info())
- try:
- os.rmdir(path)
- except os.error:
- onerror(os.rmdir, path, sys.exc_info())
+ return shutil.rmtree(path, ignore_errors, onerror)
def current_umask():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/extension.py
new/setuptools-25.1.6/setuptools/extension.py
--- old/setuptools-25.1.1/setuptools/extension.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/extension.py 2016-08-05
18:15:48.000000000 +0200
@@ -19,7 +19,7 @@
"""
Return True if Cython can be imported.
"""
- cython_impl = 'Cython.Distutils.build_ext',
+ cython_impl = 'Cython.Distutils.build_ext'
try:
# from (cython_impl) import build_ext
__import__(cython_impl, fromlist=['build_ext']).build_ext
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/msvc.py
new/setuptools-25.1.6/setuptools/msvc.py
--- old/setuptools-25.1.1/setuptools/msvc.py 2016-07-28 21:01:16.000000000
+0200
+++ new/setuptools-25.1.6/setuptools/msvc.py 2016-08-05 18:15:48.000000000
+0200
@@ -357,22 +357,11 @@
self.pi = platform_info
@property
- def microsoft(self):
- """
- Microsoft software registry key.
- """
- return os.path.join(
- 'Software',
- '' if self.pi.current_is_x86() else 'Wow6432Node',
- 'Microsoft',
- )
-
- @property
def visualstudio(self):
"""
Microsoft Visual Studio root registry key.
"""
- return os.path.join(self.microsoft, 'VisualStudio')
+ return 'VisualStudio'
@property
def sxs(self):
@@ -400,15 +389,14 @@
"""
Microsoft Visual C++ for Python registry key.
"""
- path = r'DevDiv\VCForPython'
- return os.path.join(self.microsoft, path)
+ return r'DevDiv\VCForPython'
@property
def microsoft_sdk(self):
"""
Microsoft SDK registry key.
"""
- return os.path.join(self.microsoft, 'Microsoft SDKs')
+ return 'Microsoft SDKs'
@property
def windows_sdk(self):
@@ -429,11 +417,29 @@
"""
Microsoft Windows Kits Roots registry key.
"""
- return os.path.join(self.microsoft, r'Windows Kits\Installed Roots')
+ return r'Windows Kits\Installed Roots'
+
+ def microsoft(self, key, x86=False):
+ """
+ Return key in Microsoft software registry.
+
+ Parameters
+ ----------
+ key: str
+ Registry key path where look.
+ x86: str
+ Force x86 software registry.
+
+ Return
+ ------
+ str: value
+ """
+ node64 = '' if self.pi.current_is_x86() or x86 else r'\Wow6432Node'
+ return os.path.join('Software', node64, 'Microsoft', key)
def lookup(self, key, name):
"""
- Look for values in registry.
+ Look for values in registry in Microsoft software registry.
Parameters
----------
@@ -446,14 +452,23 @@
------
str: value
"""
+ KEY_READ = winreg.KEY_READ
+ openkey = winreg.OpenKey
+ ms = self.microsoft
for hkey in self.HKEYS:
try:
- bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ)
- except IOError:
- continue
+ bkey = openkey(hkey, ms(key), 0, KEY_READ)
+ except (OSError, IOError):
+ if not self.pi.current_is_x86():
+ try:
+ bkey = openkey(hkey, ms(key, True), 0, KEY_READ)
+ except (OSError, IOError):
+ continue
+ else:
+ continue
try:
return winreg.QueryValueEx(bkey, name)[0]
- except IOError:
+ except (OSError, IOError):
pass
@@ -496,7 +511,7 @@
for key in vckeys:
try:
bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ)
- except IOError:
+ except (OSError, IOError):
continue
subkeys, values, _ = winreg.QueryInfoKey(bkey)
for i in range(values):
@@ -809,7 +824,7 @@
Microsoft Visual C++ & Microsoft Foundation Class Includes
"""
return [os.path.join(self.si.VCInstallDir, 'Include'),
- os.path.join(self.si.VCInstallDir, 'ATLMFC\Include')]
+ os.path.join(self.si.VCInstallDir, r'ATLMFC\Include')]
@property
def VCLibraries(self):
@@ -1195,5 +1210,5 @@
if name:
return '%s\\' % name[0]
return ''
- except IOError:
+ except (OSError, IOError):
return ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/package_index.py
new/setuptools-25.1.6/setuptools/package_index.py
--- old/setuptools-25.1.1/setuptools/package_index.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/package_index.py 2016-08-05
18:15:48.000000000 +0200
@@ -290,7 +290,12 @@
self.package_pages = {}
self.allows = re.compile('|'.join(map(translate, hosts))).match
self.to_scan = []
- if verify_ssl and ssl_support.is_available and (ca_bundle or
ssl_support.find_ca_bundle()):
+ use_ssl = (
+ verify_ssl
+ and ssl_support.is_available
+ and (ca_bundle or ssl_support.find_ca_bundle())
+ )
+ if use_ssl:
self.opener = ssl_support.opener_for(ca_bundle)
else:
self.opener = urllib.request.urlopen
@@ -320,7 +325,8 @@
self.info("Reading %s", url)
self.fetched_urls[url] = True # prevent multiple fetch attempts
- f = self.open_url(url, "Download error on %s: %%s -- Some packages may
not be found!" % url)
+ tmpl = "Download error on %s: %%s -- Some packages may not be found!"
+ f = self.open_url(url, tmpl % url)
if f is None:
return
self.fetched_urls[f.url] = True
@@ -362,7 +368,8 @@
def url_ok(self, url, fatal=False):
s = URL_SCHEME(url)
- if (s and s.group(1).lower() == 'file') or
self.allows(urllib.parse.urlparse(url)[1]):
+ is_file = s and s.group(1).lower() == 'file'
+ if is_file or self.allows(urllib.parse.urlparse(url)[1]):
return True
msg = ("\nNote: Bypassing %s (disallowed host; see "
"http://bit.ly/1dg9ijs for details).\n")
@@ -1039,7 +1046,7 @@
if cred:
auth = str(cred)
info = cred.username, url
- log.info('Authenticating as %s for %s (from .pypirc)' % info)
+ log.info('Authenticating as %s for %s (from .pypirc)', *info)
if auth:
auth = "Basic " + _encode_auth(auth)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/tests/fixtures.py
new/setuptools-25.1.6/setuptools/tests/fixtures.py
--- old/setuptools-25.1.1/setuptools/tests/fixtures.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/tests/fixtures.py 2016-08-05
18:15:48.000000000 +0200
@@ -1,24 +1,20 @@
-try:
- from unittest import mock
-except ImportError:
- import mock
import pytest
from . import contexts
@pytest.yield_fixture
-def user_override():
+def user_override(monkeypatch):
"""
Override site.USER_BASE and site.USER_SITE with temporary directories in
a context.
"""
with contexts.tempdir() as user_base:
- with mock.patch('site.USER_BASE', user_base):
- with contexts.tempdir() as user_site:
- with mock.patch('site.USER_SITE', user_site):
- with contexts.save_user_site_setting():
- yield
+ monkeypatch.setattr('site.USER_BASE', user_base)
+ with contexts.tempdir() as user_site:
+ monkeypatch.setattr('site.USER_SITE', user_site)
+ with contexts.save_user_site_setting():
+ yield
@pytest.yield_fixture
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-25.1.1/setuptools/tests/test_archive_util.py
new/setuptools-25.1.6/setuptools/tests/test_archive_util.py
--- old/setuptools-25.1.1/setuptools/tests/test_archive_util.py 1970-01-01
01:00:00.000000000 +0100
+++ new/setuptools-25.1.6/setuptools/tests/test_archive_util.py 2016-08-05
18:15:48.000000000 +0200
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+from setuptools.extern import six
+
+import pytest
+
+from setuptools import archive_util
+
+
[email protected]
+def tarfile_with_unicode(tmpdir):
+ """
+ Create a tarfile containing only a file whose name is
+ a zero byte file called testimàˆge.png.
+
+ TODO: Is it possible to generate this file programmatically?
+ """
+ data = (
+ b'\x1f\x8b\x08\x00R\xfe\x9fW\x00\x03\xed\xd6AO\x13A\x14\x00'
+ b'\xe0\x11b\x8c\x8d\' z\xf02\x07=x\xd9\xce\xcc\xce\xec\xd4\xc3'
+ b'&\xa21\xb4X\\lI\xa3r0\xc3v\xc1\x8a\xec6\xcbbz3\x1cH\x80x\x93'
+ b'x\xeaQ\x12\x13\x0f$z\xd5\x13\x17\xa9U\x8e&\xfc\x06\x13\xff'
+ b'\x82\xb3\xa5\n\xb6J!\x16\x8c\xf0\xbed2\x9d\xd7\xe9v\xba\xb3'
+ b'\xafo\x8c\xe4\xa8\xaa\xa4=U\xf4\xc2\xa4\xf1 \xf2f\xa3\xd2\xcc'
+ b'\xfa\xcb)\xcf(\xfbS\xa8K\x08!\x16\xe78\xee\xa5%\x1a=a\xdb'
+ b'\xe3\x06FLL\x99\xe4R#\x9cbB%\xa5\x1c\xe1J\xb7\x16\xb0\x97'
+ b'\xb9\xd9H\x85z)\x8fT\xa8\xdc\xe0\xcf\xf3\xf4\xb4\xc9\xc9=\xae'
+ b'\xb3\xfdS\xf0\xcf\xfe?\xc1$.\xab\xe8\xa1m\xb4\xed~\x82\x11'
+ b'\xec\xea\xb1gS.\t%&e,\x8e\xa9\xdd1"S\tf\xe2\xfc\x8dt&{\xcf(zO'
+ b'lj\xe9]d\x8c\xec\n\x97\xfc\xc0\xe6\xdc\x12\x84\x9a2AS?\xc2\xfe'
+ b'\xe3\x92?m\xd3\xc4\xbf\xbe\x05\'Z\xfb\xbew\xff;:\xe5\xbf)dK\xfe'
+ b'\x0b*\x04\xc2\xa4\xfbKiw\xc2\xf3\x1f\x9d>\x7f\x06\xf5 4\xa2\\'
+ b'\xec\xe4\xf1]\xdc\x14\xc7\xd0Y\xdd\x98n\xefu\x8b\xc7\xdf\xf6w'
+ b'\xc9\xc1\xb1\xb1\\\xf3e\xfc\x89\xaan\xf9\x96)\xa7v\xe2\x17\xdc'
+ b'`\xc6(\x86Ay"\xa8\x18*\x8a\xc2\xd2\xc4\x9c~"\xf5\x9b\x95\xea'
+ b'\xeb\xc2\xf0\x95Z2][[t>\xd63\x9f\xb2K\x9b\x1b\xce\xed\xfa\x9d7'
+ b'\xb9W\x85\xdaH\xf6\xf3\x87z\xef\xd2\xe5\x17+\x03\xf3\x0b\xb9'
+ b'\xbe[}\xf3\xe7V\xab+h\xa8w\xbd\xecl\x86\xfd\xce\xf3\x9e/\xd7'
+ b'\x9e\xbe}\xb6|ih||uk\xeb>z\xb7v\xf1\xeb\xdf\xdf\xafcf\xa7\xfa'
+ b'\x1f\xde\xbf@\xc7\xfa\xcfEK\xfe[B\x10\xa8\xffGAW\xe9F\xfd\xefP'
+ b'\xfb\x894\x7f[\xfb\xcd\x14\xcef\xae\x0f\xe6tE/\xdc4\xdc\xd0'
+ b'\xd33\x02\xbf9\xcbJq}f\xe0t\xdf\'\x04~\x95\xeb0\x9c\x10\x8e'
+ b'\xd0a\xd7\xfeX\xa7\xfc\x8f\xf3\xe5\xd7\xfc\xe7\xc2\xe2P\xff'
+ b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x008\xa8\xef\xb1g\xe1Z\x00(\x00\x00'
+ )
+ target = tmpdir / 'unicode-pkg-1.0.tar.gz'
+ with open(str(target), mode='wb') as tf:
+ tf.write(data)
+ return str(target)
+
+
[email protected](reason="#710 and #712")
+def test_unicode_files(tarfile_with_unicode, tmpdir):
+ target = tmpdir / 'out'
+ archive_util.unpack_archive(tarfile_with_unicode, six.text_type(target))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/tests/test_dist_info.py
new/setuptools-25.1.6/setuptools/tests/test_dist_info.py
--- old/setuptools-25.1.1/setuptools/tests/test_dist_info.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/tests/test_dist_info.py 2016-08-05
18:15:48.000000000 +0200
@@ -1,8 +1,7 @@
"""Test .dist-info style distributions.
"""
-import os
-import shutil
-import tempfile
+
+from __future__ import unicode_literals
from setuptools.extern.six.moves import map
@@ -14,10 +13,48 @@
class TestDistInfo:
- def test_distinfo(self):
+ metadata_base = DALS("""
+ Metadata-Version: 1.2
+ Requires-Dist: splort (==4)
+ Provides-Extra: baz
+ Requires-Dist: quux (>=1.1); extra == 'baz'
+ """)
+
+ @classmethod
+ def build_metadata(cls, **kwargs):
+ lines = (
+ '{key}: {value}\n'.format(**locals())
+ for key, value in kwargs.items()
+ )
+ return cls.metadata_base + ''.join(lines)
+
+ @pytest.fixture
+ def metadata(self, tmpdir):
+ dist_info_name = 'VersionedDistribution-2.718.dist-info'
+ versioned = tmpdir / dist_info_name
+ versioned.mkdir()
+ filename = versioned / 'METADATA'
+ content = self.build_metadata(
+ Name='VersionedDistribution',
+ )
+ filename.write_text(content, encoding='utf-8')
+
+ dist_info_name = 'UnversionedDistribution.dist-info'
+ unversioned = tmpdir / dist_info_name
+ unversioned.mkdir()
+ filename = unversioned / 'METADATA'
+ content = self.build_metadata(
+ Name='UnversionedDistribution',
+ Version='0.3',
+ )
+ filename.write_text(content, encoding='utf-8')
+
+ return str(tmpdir)
+
+ def test_distinfo(self, metadata):
dists = dict(
(d.project_name, d)
- for d in pkg_resources.find_distributions(self.tmpdir)
+ for d in pkg_resources.find_distributions(metadata)
)
assert len(dists) == 2, dists
@@ -28,46 +65,14 @@
assert versioned.version == '2.718' # from filename
assert unversioned.version == '0.3' # from METADATA
- def test_conditional_dependencies(self):
+ def test_conditional_dependencies(self, metadata):
specs = 'splort==4', 'quux>=1.1'
requires = list(map(pkg_resources.Requirement.parse, specs))
- for d in pkg_resources.find_distributions(self.tmpdir):
+ for d in pkg_resources.find_distributions(metadata):
assert d.requires() == requires[:1]
assert d.requires(extras=('baz',)) == [
requires[0],
- pkg_resources.Requirement.parse('quux>=1.1;extra=="baz"')]
+ pkg_resources.Requirement.parse('quux>=1.1;extra=="baz"'),
+ ]
assert d.extras == ['baz']
-
- metadata_template = DALS("""
- Metadata-Version: 1.2
- Name: {name}
- {version}
- Requires-Dist: splort (==4)
- Provides-Extra: baz
- Requires-Dist: quux (>=1.1); extra == 'baz'
- """)
-
- def setup_method(self, method):
- self.tmpdir = tempfile.mkdtemp()
- dist_info_name = 'VersionedDistribution-2.718.dist-info'
- versioned = os.path.join(self.tmpdir, dist_info_name)
- os.mkdir(versioned)
- with open(os.path.join(versioned, 'METADATA'), 'w+') as metadata_file:
- metadata = self.metadata_template.format(
- name='VersionedDistribution',
- version='',
- ).replace('\n\n', '\n')
- metadata_file.write(metadata)
- dist_info_name = 'UnversionedDistribution.dist-info'
- unversioned = os.path.join(self.tmpdir, dist_info_name)
- os.mkdir(unversioned)
- with open(os.path.join(unversioned, 'METADATA'), 'w+') as
metadata_file:
- metadata = self.metadata_template.format(
- name='UnversionedDistribution',
- version='Version: 0.3',
- )
- metadata_file.write(metadata)
-
- def teardown_method(self, method):
- shutil.rmtree(self.tmpdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-25.1.1/setuptools/tests/test_easy_install.py
new/setuptools-25.1.6/setuptools/tests/test_easy_install.py
--- old/setuptools-25.1.1/setuptools/tests/test_easy_install.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/tests/test_easy_install.py 2016-08-05
18:15:48.000000000 +0200
@@ -14,6 +14,7 @@
import itertools
import distutils.errors
import io
+import zipfile
import time
from setuptools.extern.six.moves import urllib
@@ -135,6 +136,60 @@
monkeypatch.delattr(site, 'getsitepackages', raising=False)
assert ei.get_site_dirs()
+ @pytest.fixture
+ def sdist_unicode(self, tmpdir):
+ files = [
+ (
+ 'setup.py',
+ DALS("""
+ import setuptools
+ setuptools.setup(
+ name="setuptools-test-unicode",
+ version="1.0",
+ packages=["mypkg"],
+ include_package_data=True,
+ )
+ """),
+ ),
+ (
+ 'mypkg/__init__.py',
+ "",
+ ),
+ (
+ u'mypkg/\u2603.txt',
+ "",
+ ),
+ ]
+ sdist_name = 'setuptools-test-unicode-1.0.zip'
+ sdist = tmpdir / sdist_name
+ # can't use make_sdist, because the issue only occurs
+ # with zip sdists.
+ sdist_zip = zipfile.ZipFile(str(sdist), 'w')
+ for filename, content in files:
+ sdist_zip.writestr(filename, content)
+ sdist_zip.close()
+ return str(sdist)
+
+ @pytest.mark.xfail(reason="#709 and #710")
+ # also
+ #@pytest.mark.xfail(setuptools.tests.is_ascii,
+ # reason="https://github.com/pypa/setuptools/issues/706")
+ def test_unicode_filename_in_sdist(self, sdist_unicode, tmpdir,
monkeypatch):
+ """
+ The install command should execute correctly even if
+ the package has unicode filenames.
+ """
+ dist = Distribution({'script_args': ['easy_install']})
+ target = (tmpdir / 'target').ensure_dir()
+ cmd = ei.easy_install(
+ dist,
+ install_dir=str(target),
+ args=['x'],
+ )
+ monkeypatch.setitem(os.environ, 'PYTHONPATH', str(target))
+ cmd.ensure_finalized()
+ cmd.easy_install(sdist_unicode)
+
class TestPTHFileWriter:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools/tests/test_msvc.py
new/setuptools-25.1.6/setuptools/tests/test_msvc.py
--- old/setuptools-25.1.1/setuptools/tests/test_msvc.py 2016-07-28
21:01:16.000000000 +0200
+++ new/setuptools-25.1.6/setuptools/tests/test_msvc.py 2016-08-05
18:15:48.000000000 +0200
@@ -6,6 +6,8 @@
import contextlib
import distutils.errors
+from setuptools.extern import six
+
import pytest
try:
from unittest import mock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools.egg-info/PKG-INFO
new/setuptools-25.1.6/setuptools.egg-info/PKG-INFO
--- old/setuptools-25.1.1/setuptools.egg-info/PKG-INFO 2016-07-28
21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/setuptools.egg-info/PKG-INFO 2016-08-05
18:16:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools
-Version: 25.1.1
+Version: 25.1.6
Summary: Easily download, build, install, upgrade, and uninstall Python
packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools.egg-info/SOURCES.txt
new/setuptools-25.1.6/setuptools.egg-info/SOURCES.txt
--- old/setuptools-25.1.1/setuptools.egg-info/SOURCES.txt 2016-07-28
21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/setuptools.egg-info/SOURCES.txt 2016-08-05
18:16:14.000000000 +0200
@@ -114,6 +114,7 @@
setuptools/tests/py26compat.py
setuptools/tests/script-with-bom.py
setuptools/tests/server.py
+setuptools/tests/test_archive_util.py
setuptools/tests/test_bdist_egg.py
setuptools/tests/test_build_ext.py
setuptools/tests/test_build_py.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-25.1.1/setuptools.egg-info/dependency_links.txt
new/setuptools-25.1.6/setuptools.egg-info/dependency_links.txt
--- old/setuptools-25.1.1/setuptools.egg-info/dependency_links.txt
2016-07-28 21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/setuptools.egg-info/dependency_links.txt
2016-08-05 18:16:14.000000000 +0200
@@ -1,2 +1,2 @@
-https://pypi.python.org/packages/source/c/certifi/certifi-2016.2.28.tar.gz#md5=5d672aa766e1f773c75cfeccd02d3650
+https://pypi.python.org/packages/source/c/certifi/certifi-2016.8.2.tar.gz#md5=004ae166985d3a684bcac5368e22ed63
https://pypi.python.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-25.1.1/setuptools.egg-info/requires.txt
new/setuptools-25.1.6/setuptools.egg-info/requires.txt
--- old/setuptools-25.1.1/setuptools.egg-info/requires.txt 2016-07-28
21:01:42.000000000 +0200
+++ new/setuptools-25.1.6/setuptools.egg-info/requires.txt 2016-08-05
18:16:14.000000000 +0200
@@ -1,6 +1,6 @@
[certs]
-certifi==2016.2.28
+certifi==2016.8.2
[ssl:sys_platform=='win32']
wincertstore==0.2