Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-distlib for openSUSE:Factory checked in at 2025-07-24 18:41:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-distlib (Old) and /work/SRC/openSUSE:Factory/.python-distlib.new.13279 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-distlib" Thu Jul 24 18:41:47 2025 rev:17 rq:1295267 version:0.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-distlib/python-distlib.changes 2024-12-06 14:25:00.113001519 +0100 +++ /work/SRC/openSUSE:Factory/.python-distlib.new.13279/python-distlib.changes 2025-07-24 18:46:05.467055052 +0200 @@ -1,0 +2,14 @@ +Wed Jul 23 09:15:41 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- Update to 0.4.0 + * Add the ``interpret_parsed`` function. + * Fix #238: Add build tag to wheel metadata if specified. + * Fix #243: Update to support free-threading version of Python (3.13t). + * Fix #246: Support subdirectories in the dist-info directory. + Thanks to Pieter P for the patch. + * Fix #248: Fix path normalisation issue caused by the fix for #246. + * Move import in script wrapper to "if __name__ == 'main'" clause. + * Fix #245: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA + environment variable is present. + +------------------------------------------------------------------- Old: ---- distlib-0.3.9.tar.gz New: ---- distlib-0.4.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-distlib.spec ++++++ --- /var/tmp/diff_new_pack.bSf72w/_old 2025-07-24 18:46:06.455095957 +0200 +++ /var/tmp/diff_new_pack.bSf72w/_new 2025-07-24 18:46:06.459096123 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-distlib # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-distlib -Version: 0.3.9 +Version: 0.4.0 Release: 0 Summary: Distribution utilities License: Python-2.0 ++++++ distlib-0.3.9.tar.gz -> distlib-0.4.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/CHANGES.rst new/distlib-0.4.0/CHANGES.rst --- old/distlib-0.3.9/CHANGES.rst 2024-10-09 19:36:53.000000000 +0200 +++ new/distlib-0.4.0/CHANGES.rst 2025-07-17 17:51:21.000000000 +0200 @@ -1,11 +1,36 @@ Change log for ``distlib`` -------------------------- -0.4.0 (future) +0.4.1 (future) ~~~~~~~~~~~~~~ Released: Not yet. +0.4.0 +~~~~~ + +Released: 2025-07-17 + +- markers + + - Add the ``interpret_parsed`` function. + +- wheel + + - Fix #238: Add build tag to wheel metadata if specified. + + - Fix #243: Update to support free-threading version of Python (3.13t). + + - Fix #246: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch. + + - Fix #248: Fix path normalisation issue caused by the fix for #246. + + - Move import in script wrapper to "if __name__ == 'main'" clause. + +- tests + + - Fix #245: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present. + 0.3.9 ~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/PKG-INFO new/distlib-0.4.0/PKG-INFO --- old/distlib-0.3.9/PKG-INFO 2024-10-09 20:32:18.000000000 +0200 +++ new/distlib-0.4.0/PKG-INFO 2025-07-17 18:50:01.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: distlib -Version: 0.3.9 +Version: 0.4.0 Summary: Distribution utilities Home-page: https://github.com/pypa/distlib Author: Vinay Sajip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/distlib/__init__.py new/distlib-0.4.0/distlib/__init__.py --- old/distlib-0.3.9/distlib/__init__.py 2024-10-09 19:08:12.000000000 +0200 +++ new/distlib-0.4.0/distlib/__init__.py 2025-07-17 18:43:17.000000000 +0200 @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2023 Vinay Sajip. +# Copyright (C) 2012-2024 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # import logging -__version__ = '0.3.9' +__version__ = '0.4.0' class DistlibException(Exception): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/distlib/markers.py new/distlib-0.4.0/distlib/markers.py --- old/distlib-0.3.9/distlib/markers.py 2024-03-19 11:20:34.000000000 +0100 +++ new/distlib-0.4.0/distlib/markers.py 2024-10-15 20:10:51.000000000 +0200 @@ -140,6 +140,11 @@ evaluator = Evaluator() +def interpret_parsed(expr, execution_context=None): + context = dict(DEFAULT_CONTEXT) + if execution_context: + context.update(execution_context) + return evaluator.evaluate(expr, context) def interpret(marker, execution_context=None): """ @@ -156,7 +161,4 @@ raise SyntaxError('Unable to interpret marker syntax: %s: %s' % (marker, e)) if rest and rest[0] != '#': raise SyntaxError('unexpected trailing data in marker: %s: %s' % (marker, rest)) - context = dict(DEFAULT_CONTEXT) - if execution_context: - context.update(execution_context) - return evaluator.evaluate(expr, context) + return interpret_parsed(expr, execution_context) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/distlib/scripts.py new/distlib-0.4.0/distlib/scripts.py --- old/distlib-0.3.9/distlib/scripts.py 2024-10-09 10:23:50.000000000 +0200 +++ new/distlib-0.4.0/distlib/scripts.py 2025-07-14 10:29:08.000000000 +0200 @@ -42,8 +42,8 @@ SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- import re import sys -from %(module)s import %(import_name)s if __name__ == '__main__': + from %(module)s import %(import_name)s sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(%(func)s()) ''' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/distlib/wheel.py new/distlib-0.4.0/distlib/wheel.py --- old/distlib-0.3.9/distlib/wheel.py 2024-10-07 16:43:10.000000000 +0200 +++ new/distlib-0.4.0/distlib/wheel.py 2025-06-09 16:40:01.000000000 +0200 @@ -71,6 +71,8 @@ us = sysconfig.get_config_var('Py_UNICODE_SIZE') if us == 4 or (us is None and sys.maxunicode == 0x10FFFF): parts.append('u') + if bool(sysconfig.get_config_var("Py_GIL_DISABLED")): + parts.append('t') return ''.join(parts) ABI = _derive_abi() @@ -440,19 +442,22 @@ rp = to_posix(os.path.relpath(p, path)) archive_paths.append((rp, p)) - # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. - files = os.listdir(distinfo) - for fn in files: - if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): - p = fsdecode(os.path.join(distinfo, fn)) - ap = to_posix(os.path.join(info_dir, fn)) - archive_paths.append((ap, p)) + # Now distinfo. It may contain subdirectories (e.g. PEP 639) + for root, _, files in os.walk(distinfo): + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(root, fn)) + r = os.path.relpath(root, distinfo) + ap = to_posix(os.path.normpath(os.path.join(info_dir, r, fn))) + archive_paths.append((ap, p)) wheel_metadata = [ 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), 'Generator: distlib %s' % __version__, 'Root-Is-Purelib: %s' % is_pure, ] + if self.buildver: + wheel_metadata.append('Build: %s' % self.buildver) for pyver, abi, arch in self.tags: wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) p = os.path.join(distinfo, 'WHEEL') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/distlib.egg-info/PKG-INFO new/distlib-0.4.0/distlib.egg-info/PKG-INFO --- old/distlib-0.3.9/distlib.egg-info/PKG-INFO 2024-10-09 20:32:18.000000000 +0200 +++ new/distlib-0.4.0/distlib.egg-info/PKG-INFO 2025-07-17 18:50:01.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: distlib -Version: 0.3.9 +Version: 0.4.0 Summary: Distribution utilities Home-page: https://github.com/pypa/distlib Author: Vinay Sajip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/tests/test_scripts.py new/distlib-0.4.0/tests/test_scripts.py --- old/distlib-0.3.9/tests/test_scripts.py 2024-10-07 12:45:08.000000000 +0200 +++ new/distlib-0.4.0/tests/test_scripts.py 2024-10-28 19:35:55.000000000 +0100 @@ -341,8 +341,10 @@ def test_script_run(self): if sys.version_info[:2] < (3, 13): target = 'cgi:print_directory' - else: + elif os.name != 'nt': target = 'test.support.interpreters:list_all' + else: + raise unittest.SkipTest('test not available on Windows for Python >= 3.13') files = self.maker.make('test = %s' % target) self.assertEqual(len(files), 2) p = subprocess.Popen([sys.executable, files[0]], stdout=subprocess.PIPE, stderr=subprocess.PIPE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/tests/test_util.py new/distlib-0.4.0/tests/test_util.py --- old/distlib-0.3.9/tests/test_util.py 2024-10-07 16:43:10.000000000 +0200 +++ new/distlib-0.4.0/tests/test_util.py 2025-07-17 18:03:48.000000000 +0200 @@ -429,7 +429,8 @@ name = os.path.join(HERE, name) td = tempfile.mkdtemp() try: - self.assertRaises(ValueError, unarchive, name, td) + # OSError is raised on Windows on CPython 3.13, pypy-3.11 + self.assertRaises((OSError, ValueError), unarchive, name, td) finally: shutil.rmtree(td) @@ -440,6 +441,7 @@ self.assertRaises(AssertionError, is_string_sequence, []) @unittest.skipIf('SKIP_ONLINE' in os.environ, 'Skipping online test') + @unittest.skipIf('SKIP_EXT_PACKAGE_DATA' in os.environ, 'Skipping test requiring external package data') @unittest.skipUnless(ssl, 'SSL required for this test.') def test_package_data(self): data = get_package_data(name='config', version='0.3.6') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/tests/test_wheel.py new/distlib-0.4.0/tests/test_wheel.py --- old/distlib-0.3.9/tests/test_wheel.py 2024-10-07 16:43:10.000000000 +0200 +++ new/distlib-0.4.0/tests/test_wheel.py 2025-04-19 10:01:56.000000000 +0200 @@ -17,7 +17,7 @@ from compat import unittest from support import DistlibTestCase -from distlib import DistlibException +from distlib import __version__, DistlibException from distlib.compat import ZipFile, sysconfig, fsencode from distlib.database import DistributionPath from distlib.manifest import Manifest @@ -405,6 +405,33 @@ expected = b'#!python\n' + expected self.assertTrue(data, expected) + def check_built_metadata(self, wheel): + # Check the metadata of the built wheel (see #238). + name, version = wheel.name, wheel.version + fn = os.path.join(wheel.dirname, wheel.filename) + self.assertTrue(os.path.exists(fn)) + arcname = '%s-%s.dist-info/WHEEL' % (name, version) + with ZipFile(fn, 'r') as zf: + with zf.open(arcname) as bf: + data = bf.read().decode('utf-8') + if wheel.arch[0] == 'any': + is_pure = 'true' + else: + is_pure = 'false' + expected = { + 'Wheel-Version': '%d.%d' % wheel.wheel_version, + 'Generator': 'distlib %s' % __version__, + 'Root-Is-Purelib': is_pure, + 'Build': '1foobar', + 'Tag': '%s-%s-%s' % (wheel.pyver[0], wheel.abi[0], wheel.arch[0]), + } + actual = {} + for line in data.splitlines(): + i = line.find(':') + key, value = line[:i], line[i + 1:].lstrip() + actual[key] = value + self.assertEqual(actual, expected) + def test_build_tags(self): workdir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, workdir) @@ -453,14 +480,17 @@ self.check_built_wheel(wheel, expected) # Make a non-pure wheel with default tags + # On this last build in the test, set a buildver and check the metadata paths.pop('purelib') paths['platlib'] = platlib + wheel.buildver = '1foobar' wheel.build(paths) expected['pyver'] = [IMPVER] expected['abi'] = [ABI] expected['arch'] = [ARCH] - expected['filename'] = 'dummy-0.1-%s-%s-%s.whl' % (IMPVER, ABI, ARCH) + expected['filename'] = 'dummy-0.1-%s-%s-%s-%s.whl' % (wheel.buildver, IMPVER, ABI, ARCH) self.check_built_wheel(wheel, expected) + self.check_built_metadata(wheel) def do_build_and_install(self, dist): srcdir = tempfile.mkdtemp() @@ -689,6 +719,8 @@ us = sysconfig.get_config_var('Py_UNICODE_SIZE') if us == 4 or (us is None and sys.maxunicode == 0x10FFFF): parts.append('u') + if bool(sysconfig.get_config_var("Py_GIL_DISABLED")): + parts.append('t') if vi < (3, 5): abi = ABI else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distlib-0.3.9/tox.ini new/distlib-0.4.0/tox.ini --- old/distlib-0.3.9/tox.ini 2023-10-23 18:35:53.000000000 +0200 +++ new/distlib-0.4.0/tox.ini 2025-07-14 10:29:41.000000000 +0200 @@ -5,7 +5,11 @@ [testenv] setenv = PYTHONHASHSEED=0 + SKIP_EXT_PACKAGE_DATA=1 + passenv = APPVEYOR SSL_CERT_DIR + SKIP_ONLINE + SKIP_EXT_PACKAGE_DATA commands = python tests/test_all.py