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

Reply via email to