Hello community, here is the log from the commit of package python-wheel for openSUSE:Factory checked in at 2015-09-30 06:37:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-wheel (Old) and /work/SRC/openSUSE:Factory/.python-wheel.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-wheel" Changes: -------- --- /work/SRC/openSUSE:Factory/python-wheel/python-wheel.changes 2015-04-07 09:29:25.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-wheel.new/python-wheel.changes 2015-09-30 06:37:38.000000000 +0200 @@ -1,0 +2,12 @@ +Tue Sep 29 08:01:25 UTC 2015 - tbechtold@suse.com + +- update to 0.26.0: + * Fix multiple entrypoint comparison failure on Python 3 (Issue #148) + * Add Python 3.5 to tox configuration + * Deterministic (sorted) metadata + * Fix tagging for Python 3.5 compatibility + * Support py2-none-'arch' and py3-none-'arch' tags + * Treat data-only wheels as pure + * Write to temporary file and rename when using wheel install --force + +------------------------------------------------------------------- Old: ---- wheel-0.24.0.tar.gz New: ---- wheel-0.26.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-wheel.spec ++++++ --- /var/tmp/diff_new_pack.qRyULk/_old 2015-09-30 06:37:39.000000000 +0200 +++ /var/tmp/diff_new_pack.qRyULk/_new 2015-09-30 06:37:39.000000000 +0200 @@ -17,7 +17,7 @@ Name: python-wheel -Version: 0.24.0 +Version: 0.26.0 Release: 0 Summary: A built-package format for Python License: MIT ++++++ wheel-0.24.0.tar.gz -> wheel-0.26.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/CHANGES.txt new/wheel-0.26.0/CHANGES.txt --- old/wheel-0.24.0/CHANGES.txt 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/CHANGES.txt 2015-09-18 20:02:17.000000000 +0200 @@ -1,3 +1,16 @@ +0.26.0 +====== +- Fix multiple entrypoint comparison failure on Python 3 (Issue #148) + +0.25.0 +====== +- Add Python 3.5 to tox configuration +- Deterministic (sorted) metadata +- Fix tagging for Python 3.5 compatibility +- Support py2-none-'arch' and py3-none-'arch' tags +- Treat data-only wheels as pure +- Write to temporary file and rename when using wheel install --force + 0.24.0 ====== - The python tag used for pure-python packages is now .pyN (major version @@ -14,7 +27,7 @@ 0.23.0 ====== -- Compatibiltiy tag flags added to the bdist_wheel command +- Compatibility tag flags added to the bdist_wheel command - sdist should include files necessary for tests - 'wheel convert' can now also convert unpacked eggs to wheel - Rename pydist.json to metadata.json to avoid stepping on the PEP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/PKG-INFO new/wheel-0.26.0/PKG-INFO --- old/wheel-0.24.0/PKG-INFO 2014-07-06 18:56:22.000000000 +0200 +++ new/wheel-0.26.0/PKG-INFO 2015-09-18 20:03:13.000000000 +0200 @@ -1,8 +1,8 @@ Metadata-Version: 1.1 Name: wheel -Version: 0.24.0 +Version: 0.26.0 Summary: A built-package format for Python. -Home-page: http://bitbucket.org/pypa/wheel/ +Home-page: https://bitbucket.org/pypa/wheel/ Author: Daniel Holth Author-email: dholth@fastmail.fm License: MIT @@ -49,6 +49,19 @@ + 0.26.0 + ====== + - Fix multiple entrypoint comparison failure on Python 3 (Issue #148) + + 0.25.0 + ====== + - Add Python 3.5 to tox configuration + - Deterministic (sorted) metadata + - Fix tagging for Python 3.5 compatibility + - Support py2-none-'arch' and py3-none-'arch' tags + - Treat data-only wheels as pure + - Write to temporary file and rename when using wheel install --force + 0.24.0 ====== - The python tag used for pure-python packages is now .pyN (major version @@ -65,7 +78,7 @@ 0.23.0 ====== - - Compatibiltiy tag flags added to the bdist_wheel command + - Compatibility tag flags added to the bdist_wheel command - sdist should include files necessary for tests - 'wheel convert' can now also convert unpacked eggs to wheel - Rename pydist.json to metadata.json to avoid stepping on the PEP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/entry_points.txt new/wheel-0.26.0/entry_points.txt --- old/wheel-0.24.0/entry_points.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/wheel-0.26.0/entry_points.txt 2015-09-15 19:28:15.000000000 +0200 @@ -0,0 +1,5 @@ +[console_scripts] +wheel = wheel.tool:main + +[distutils.commands] +bdist_wheel = wheel.bdist_wheel:bdist_wheel \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/setup.py new/wheel-0.26.0/setup.py --- old/wheel-0.24.0/setup.py 2014-07-06 18:48:58.000000000 +0200 +++ new/wheel-0.26.0/setup.py 2015-09-15 19:28:15.000000000 +0200 @@ -28,7 +28,7 @@ ], author='Daniel Holth', author_email='dholth@fastmail.fm', - url='http://bitbucket.org/pypa/wheel/', + url='https://bitbucket.org/pypa/wheel/', keywords=['wheel', 'packaging'], license='MIT', packages=[ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/__init__.py new/wheel-0.26.0/wheel/__init__.py --- old/wheel-0.24.0/wheel/__init__.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/__init__.py 2015-09-18 20:03:01.000000000 +0200 @@ -1,2 +1,2 @@ # __variables__ with double-quoted values will be available in setup.py: -__version__ = "0.24.0" +__version__ = "0.26.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/bdist_wheel.py new/wheel-0.26.0/wheel/bdist_wheel.py --- old/wheel-0.24.0/wheel/bdist_wheel.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/bdist_wheel.py 2015-09-15 20:10:36.000000000 +0200 @@ -90,7 +90,7 @@ self.dist_dir = None self.distinfo_dir = None self.egginfo_dir = None - self.root_is_purelib = None + self.root_is_pure = None self.skip_build = None self.relative = False self.owner = None @@ -110,7 +110,8 @@ self.set_undefined_options('bdist', *zip(need_options, need_options)) - self.root_is_purelib = self.distribution.is_pure() + self.root_is_pure = not (self.distribution.has_ext_modules() + or self.distribution.has_c_libraries()) # Support legacy [wheel] section for setting universal wheel = self.distribution.get_option_dict('wheel') @@ -129,7 +130,7 @@ def get_tag(self): supported_tags = pep425tags.get_supported() - if self.distribution.is_pure(): + if self.root_is_pure: if self.universal: impl = 'py2.py3' else: @@ -148,7 +149,7 @@ # sys.pypy_version_info.minor) abi_tag = sysconfig.get_config_vars().get('SOABI', 'none') if abi_tag.startswith('cpython-'): - abi_tag = 'cp' + abi_tag.rsplit('-', 1)[-1] + abi_tag = 'cp' + abi_tag.split('-')[1] tag = (impl_name + impl_ver, abi_tag, plat_name) # XXX switch to this alternate implementation for non-pure: @@ -203,7 +204,7 @@ self.install_libbase = self.install_lib = basedir_observed setattr(install, - 'install_purelib' if self.root_is_purelib else 'install_platlib', + 'install_purelib' if self.root_is_pure else 'install_platlib', basedir_observed) logger.info("installing to %s", self.bdist_dir) @@ -255,7 +256,7 @@ msg = Message() msg['Wheel-Version'] = '1.0' # of the spec msg['Generator'] = generator - msg['Root-Is-Purelib'] = str(self.root_is_purelib).lower() + msg['Root-Is-Purelib'] = str(self.root_is_pure).lower() # Doesn't work for bdist_wininst impl_tag, abi_tag, plat_tag = self.get_tag() @@ -421,7 +422,8 @@ def walk(): for dir, dirs, files in os.walk(bdist_dir): - for f in files: + dirs.sort() + for f in sorted(files): yield os.path.join(dir, f) def skip(path): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/metadata.py new/wheel-0.26.0/wheel/metadata.py --- old/wheel-0.24.0/wheel/metadata.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/metadata.py 2015-09-18 19:56:57.000000000 +0200 @@ -2,8 +2,13 @@ Tools for converting old- to new-style metadata. """ -from collections import defaultdict, namedtuple +from collections import namedtuple from .pkginfo import read_pkg_info +from .util import OrderedDefaultDict +try: + from collections import OrderedDict +except ImportError: + OrderedDict = dict import re import os.path @@ -51,8 +56,8 @@ """ Place the runtime requirements from pkg_info into metadata. """ - may_requires = defaultdict(list) - for value in pkg_info.get_all(key): + may_requires = OrderedDefaultDict(list) + for value in sorted(pkg_info.get_all(key)): extra_match = EXTRA_RE.search(value) if extra_match: groupdict = extra_match.groupdict() @@ -70,7 +75,7 @@ if may_requires: metadata['run_requires'] = [] for key, value in may_requires.items(): - may_requirement = {'requires':value} + may_requirement = OrderedDict((('requires', value),)) if key.extra: may_requirement['extra'] = key.extra if key.condition: @@ -93,7 +98,7 @@ distribution: optional distutils Distribution() """ - metadata = defaultdict(lambda: defaultdict(lambda: defaultdict(dict))) + metadata = OrderedDefaultDict(lambda: OrderedDefaultDict(lambda: OrderedDefaultDict(OrderedDict))) metadata["generator"] = "bdist_wheel (" + wheel.__version__ + ")" try: unicode @@ -121,7 +126,7 @@ if description: pkg_info['description'] = description - for key in unique(k.lower() for k in pkg_info.keys()): + for key in sorted(unique(k.lower() for k in pkg_info.keys())): low_key = key.replace('-', '_') if low_key in SKIP_FIELDS: @@ -130,7 +135,7 @@ if low_key in UNKNOWN_FIELDS and pkg_info.get(key) == 'UNKNOWN': continue - if low_key in PLURAL_FIELDS: + if low_key in sorted(PLURAL_FIELDS): metadata[PLURAL_FIELDS[low_key]] = pkg_info.get_all(key) elif low_key == "requires_dist": @@ -161,7 +166,7 @@ try: requirements = getattr(distribution, attr) if isinstance(requirements, list): - new_requirements = list(convert_requirements(requirements)) + new_requirements = sorted(convert_requirements(requirements)) metadata[requires] = [{'requires':new_requirements}] except AttributeError: pass @@ -169,8 +174,8 @@ # handle contacts contacts = [] for contact_type, role in CONTACT_FIELDS: - contact = {} - for key in contact_type: + contact = OrderedDict() + for key in sorted(contact_type): if contact_type[key] in metadata: contact[key] = metadata.pop(contact_type[key]) if contact: @@ -183,11 +188,11 @@ try: with open(os.path.join(os.path.dirname(path), "entry_points.txt"), "r") as ep_file: ep_map = pkg_resources.EntryPoint.parse_map(ep_file.read()) - exports = {} - for group, items in ep_map.items(): - exports[group] = {} - for item in items.values(): - name, export = str(item).split(' = ', 1) + exports = OrderedDict() + for group, items in sorted(ep_map.items()): + exports[group] = OrderedDict() + for item in sorted(map(str, items.values())): + name, export = item.split(' = ', 1) exports[group][name] = export if exports: metadata['extensions']['python.exports'] = exports @@ -233,7 +238,8 @@ requires_path = os.path.join(egg_info_path, 'requires.txt') if os.path.exists(requires_path): requires = open(requires_path).read() - for extra, reqs in pkg_resources.split_sections(requires): + for extra, reqs in sorted(pkg_resources.split_sections(requires), + key=lambda x: x[0] or ''): condition = '' if extra and ':' in extra: # setuptools extra:condition syntax extra, condition = extra.split(':', 1) @@ -244,7 +250,7 @@ condition += 'extra == %s' % repr(extra) if condition: condition = '; ' + condition - for new_req in convert_requirements(reqs): + for new_req in sorted(convert_requirements(reqs)): pkg_info['Requires-Dist'] = new_req + condition description = pkg_info['Description'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/pep425tags.py new/wheel-0.26.0/wheel/pep425tags.py --- old/wheel-0.24.0/wheel/pep425tags.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/pep425tags.py 2015-09-15 20:10:36.000000000 +0200 @@ -60,7 +60,7 @@ soabi = sysconfig.get_config_var('SOABI') if soabi and soabi.startswith('cpython-'): - abis[0:0] = ['cp' + soabi.split('-', 1)[-1]] + abis[0:0] = ['cp' + soabi.split('-')[1]] abi3s = set() import imp @@ -85,7 +85,10 @@ # Tagged specifically as being cross-version compatible # (with just the major version specified) supported.append(('%s%s' % (impl, versions[0][0]), 'none', 'any')) - + + # Major Python version + platform; e.g. binaries not using the Python API + supported.append(('py%s' % (versions[0][0]), 'none', arch)) + # No abi / arch, generic Python for i, version in enumerate(versions): supported.append(('py%s' % (version,), 'none', 'any')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/test/complex-dist/setup.py new/wheel-0.26.0/wheel/test/complex-dist/setup.py --- old/wheel-0.24.0/wheel/test/complex-dist/setup.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/test/complex-dist/setup.py 2015-09-18 19:56:57.000000000 +0200 @@ -20,6 +20,11 @@ install_requires=["quux", "splort"], extras_require={'simple':['simple.dist']}, tests_require=["foo", "bar>=10.0.0"], - entry_points={'console_scripts':['complex-dist=complexdist:main']} + entry_points={ + 'console_scripts': [ + 'complex-dist=complexdist:main', + 'complex-dist2=complexdist:main', + ], + }, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel/util.py new/wheel-0.26.0/wheel/util.py --- old/wheel-0.24.0/wheel/util.py 2014-07-06 18:40:16.000000000 +0200 +++ new/wheel-0.26.0/wheel/util.py 2015-09-15 19:28:15.000000000 +0200 @@ -5,6 +5,10 @@ import base64 import json import hashlib +try: + from collections import OrderedDict +except ImportError: + OrderedDict = dict __all__ = ['urlsafe_b64encode', 'urlsafe_b64decode', 'utf8', 'to_json', 'from_json', 'matches_requirement'] @@ -91,6 +95,23 @@ digest = self.hash.digest() return self.hashtype + '=' + native(urlsafe_b64encode(digest)) +class OrderedDefaultDict(OrderedDict): + def __init__(self, *args, **kwargs): + if not args: + self.default_factory = None + else: + if not (args[0] is None or callable(args[0])): + raise TypeError('first argument must be callable or None') + self.default_factory = args[0] + args = args[1:] + super(OrderedDefaultDict, self).__init__(*args, **kwargs) + + def __missing__ (self, key): + if self.default_factory is None: + raise KeyError(key) + self[key] = default = self.default_factory() + return default + if sys.platform == 'win32': import ctypes.wintypes # CSIDL_APPDATA for reference - not used here for compatibility with diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel.egg-info/PKG-INFO new/wheel-0.26.0/wheel.egg-info/PKG-INFO --- old/wheel-0.24.0/wheel.egg-info/PKG-INFO 2014-07-06 18:56:21.000000000 +0200 +++ new/wheel-0.26.0/wheel.egg-info/PKG-INFO 2015-09-18 20:03:12.000000000 +0200 @@ -1,8 +1,8 @@ Metadata-Version: 1.1 Name: wheel -Version: 0.24.0 +Version: 0.26.0 Summary: A built-package format for Python. -Home-page: http://bitbucket.org/pypa/wheel/ +Home-page: https://bitbucket.org/pypa/wheel/ Author: Daniel Holth Author-email: dholth@fastmail.fm License: MIT @@ -49,6 +49,19 @@ + 0.26.0 + ====== + - Fix multiple entrypoint comparison failure on Python 3 (Issue #148) + + 0.25.0 + ====== + - Add Python 3.5 to tox configuration + - Deterministic (sorted) metadata + - Fix tagging for Python 3.5 compatibility + - Support py2-none-'arch' and py3-none-'arch' tags + - Treat data-only wheels as pure + - Write to temporary file and rename when using wheel install --force + 0.24.0 ====== - The python tag used for pure-python packages is now .pyN (major version @@ -65,7 +78,7 @@ 0.23.0 ====== - - Compatibiltiy tag flags added to the bdist_wheel command + - Compatibility tag flags added to the bdist_wheel command - sdist should include files necessary for tests - 'wheel convert' can now also convert unpacked eggs to wheel - Rename pydist.json to metadata.json to avoid stepping on the PEP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel.egg-info/SOURCES.txt new/wheel-0.26.0/wheel.egg-info/SOURCES.txt --- old/wheel-0.24.0/wheel.egg-info/SOURCES.txt 2014-07-06 18:56:22.000000000 +0200 +++ new/wheel-0.26.0/wheel.egg-info/SOURCES.txt 2015-09-18 20:03:13.000000000 +0200 @@ -2,6 +2,7 @@ LICENSE.txt MANIFEST.in README.txt +entry_points.txt setup.cfg setup.py vendorize.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.24.0/wheel.egg-info/requires.txt new/wheel-0.26.0/wheel.egg-info/requires.txt --- old/wheel-0.24.0/wheel.egg-info/requires.txt 2014-07-06 18:56:21.000000000 +0200 +++ new/wheel-0.26.0/wheel.egg-info/requires.txt 2015-09-18 20:03:12.000000000 +0200 @@ -1,16 +1,14 @@ - -[tool] - - -[signatures] -keyring +[:python_version=="2.6"] +argparse [faster-signatures] ed25519ll -[:python_version=="2.6"] -argparse +[signatures] +keyring [signatures:sys_platform!="win32"] -pyxdg \ No newline at end of file +pyxdg + +[tool]