Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python315 for openSUSE:Factory 
checked in at 2026-03-16 14:16:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python315 (Old)
 and      /work/SRC/openSUSE:Factory/.python315.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python315"

Mon Mar 16 14:16:48 2026 rev:7 rq:1339137 version:3.15.0~a7

Changes:
--------
--- /work/SRC/openSUSE:Factory/python315/python315.changes      2026-02-05 
18:06:55.012010080 +0100
+++ /work/SRC/openSUSE:Factory/.python315.new.8177/python315.changes    
2026-03-16 14:19:56.435789972 +0100
@@ -1,0 +2,1049 @@
+Wed Mar 11 13:41:39 UTC 2026 - Matej Cepl <[email protected]>
+
+- Add gh-145802-atomic-profile-update-for-PGO.patch
+  (gh#python/cpython#145803) to use gcc -fprofile-update=atomic
+  for PGO builds.
+
+-------------------------------------------------------------------
+Tue Mar 10 20:38:32 UTC 2026 - Matej Cepl <[email protected]>
+
+- Update to 3.15.0a7:
+  - Tests
+    - gh-144741: Fix test_frame_pointer_unwind when Python is
+      built with --enable-shared. Classify also libpython frames
+      as "python". Patch by Victor Stinner.
+    - gh-144739: When Python was compiled with system expat older
+      then 2.7.2 but tests run with newer expat, still skip
+      test.test_pyexpat.MemoryProtectionTest.
+  - Security
+    - gh-145506: Fixes CVE 2026-2297 by ensuring that
+      SourcelessFileLoader uses io.open_code() when opening .pyc
+      files.
+    - gh-144370: Disallow usage of control characters in status
+      in wsgiref.handlers to prevent HTTP header injections.
+      Patch by Benedikt Johannes.
+  - Library
+    - gh-145623: Fix crash in struct when calling repr() or
+      __sizeof__() on an uninitialized struct.Struct object
+      created via Struct.__new__() without calling __init__().
+    - gh-145551: Fix InvalidStateError when cancelling process
+      created by asyncio.create_subprocess_exec() or
+      asyncio.create_subprocess_shell(). Patch by Daan De Meyer.
+    - gh-141510: marshal now supports frozendict objects. The
+      marshal format version was increased to 6. Patch by Victor
+      Stinner.
+    - gh-145417: venv: Prevent incorrect preservation of SELinux
+      context when copying the Activate.ps1 script. The script
+      inherited the SELinux security context of the system
+      template directory, rather than the destination project
+      directory.
+    - gh-145335: os.listdir(-1) and os.scandir(-1) now fail with
+      OSError(errno.EBADF) rather than listing the current
+      directory. os.listxattr(-1) now fails with
+      OSError(errno.EBADF) rather than listing extended
+      attributes of the current directory. Patch by Victor
+      Stinner.
+    - gh-145376: Fix double free and null pointer dereference in
+      unusual error scenarios in hashlib and hmac modules.
+    - gh-145301: hmac: fix a crash when the initialization of the
+      underlying C extension module fails.
+    - gh-145301: hashlib: fix a crash when the initialization of
+      the underlying C extension module fails.
+    - gh-76007: The version attribute of the tarfile module is
+      deprecated and slated for removal in Python 3.20.
+    - gh-145158: Avoid undefined behaviour from signed integer
+      overflow when parsing format strings in the struct module.
+    - gh-123853: Removed Windows 95 compatibility for
+      locale.getdefaultlocale().
+    - gh-66802: Add unicodedata.block() function to return the
+      Unicode block of a character.
+    - gh-145033: Add typing.TypeForm, implementing PEP 747. Patch
+      by Jelle Zijlstra.
+    - gh-141510: dataclasses.field(): if metadata is None, use an
+      empty frozendict, instead of a MappingProxyType() of an
+      empty dict. Patch by Victor Stinner.
+    - gh-145006: Add ModuleNotFoundError hints when a module for
+      a different ABI exists.
+    - gh-141510: ParameterizedMIMEHeader.params of
+      email.headerregistry is now a frozendict instead of
+      a types.MappingProxyType. Patch by Victor Stinner.
+    - gh-134872: Add valid import name suggestions on
+      ModuleNotFoundError.
+    - gh-88091: Fix unicodedata.decomposition() for Hangul
+      characters.
+    - gh-144986: Fix a memory leak in atexit.register(). Patch by
+      Shamil Abdulaev.
+    - gh-144777: Fix data races in io.IncrementalNewlineDecoder
+      in the free-threaded build.
+    - gh-144809: Make collections.deque copy atomic in the
+      free-threaded build.
+    - gh-141510: The copy module now supports the frozendict
+      type. Patch by Pieter Eendebak based on work by Victor
+      Stinner.
+    - gh-141510: The json module now supports the frozendict
+      type. Patch by Victor Stinner.
+    - gh-144835: Added missing explanations for some parameters
+      in glob.glob() and glob.iglob().
+    - gh-144833: Fixed a use-after-free in ssl when SSL_new()
+      returns NULL in newPySSLSocket(). The error was reported
+      via a dangling pointer after the object had already been
+      freed.
+    - gh-140715: Add '%D' support to strptime().
+    - gh-144782: Fix argparse.ArgumentParser to be pickleable.
+    - gh-144763: Fix a race condition in tracemalloc: it no
+      longer detaches the attached thread state to acquire its
+      internal lock. Patch by Victor Stinner.
+    - gh-142224: unicodedata.bidirectional() now return the
+      correct default bidi class for unassigned code points.
+    - gh-117865: Reduce the import time of inspect module by
+      ~20%.
+    - gh-144156: Fix the folding of headers by the email library
+      when RFC 2047 encoded words are used. Now whitespace is
+      correctly preserved and also correctly added between
+      adjacent encoded words. The latter property was broken by
+      the fix for gh-92081, which mostly fixed previous failures
+      to preserve whitespace.
+    - gh-66305: Fixed a hang on Windows in the tempfile module
+      when trying to create a temporary file or subdirectory in
+      a non-writable directory.
+    - gh-144615: Methods directly decorated with
+      @functools.singledispatchmethod now dispatch on the second
+      argument when called after being accessed as class
+      attributes. Patch by Bartosz Sławecki.
+    - gh-144321: The functional syntax for creating
+      typing.NamedTuple classes now supports passing any iterable
+      of fields and types. Previously, only sequences were
+      supported.
+    - gh-144475: Calling repr() on functools.partial() is now
+      safer when the partial object’s internal attributes are
+      replaced while the string representation is being
+      generated.
+    - gh-144285: Attribute suggestions in AttributeError
+      tracebacks are now formatted differently to make them
+      easier to understand, for example: Did you mean
+      '.datetime.now' instead of '.now'. Contributed by Bartosz
+      Sławecki.
+    - gh-144316: Fix crash in _remote_debugging that caused
+      test_external_inspection to intermittently fail. Patch by
+      Taegyun Kim.
+    - gh-143637: Fixed a crash in socket.sendmsg() that could
+      occur if ancillary data is mutated re-entrantly during
+      argument parsing.
+    - gh-140652: Fix a crash in _interpchannels.list_all() after
+      closing a channel.
+    - gh-143698: Allow scheduler and setpgroup arguments to be
+      explicitly None when calling os.posix_spawn() or
+      os.posix_spawnp(). Patch by Bénédikt Tran.
+    - gh-143698: Raise TypeError instead of SystemError when the
+      scheduler in os.posix_spawn() or os.posix_spawnp() is not
+      a tuple. Patch by Bénédikt Tran.
+    - gh-142516: ssl: fix reference leaks in ssl.SSLContext
+      objects. Patch by Bénédikt Tran.
+    - gh-85809: Added path-like object support for
+      shutil.make_archive().
+    - gh-143304: Fix ctypes.CDLL to honor the handle parameter on
+      POSIX systems.
+    - gh-142781: zoneinfo: fix a crash when instantiating
+      ZoneInfo objects for which the internal class-level cache
+      is inconsistent.
+    - gh-142787: Fix assertion failure in sqlite3 blob subscript
+      when slicing with indices that result in an empty slice.
+    - gh-142352: Fix asyncio.StreamWriter.start_tls() to transfer
+      buffered data from StreamReader to the SSL layer,
+      preventing data loss when upgrading a connection to TLS
+      mid-stream (e.g., when implementing PROXY protocol
+      support).
+    - gh-139899: Introduced
+      importlib.abc.MetaPathFinder.discover() and
+      importlib.abc.PathEntryFinder.discover() to allow module
+      and submodule name discovery without assuming the use of
+      traditional filesystem based imports.
+    - gh-137335: Get rid of any possibility of a name conflict
+      for named pipes in multiprocessing and asyncio on Windows,
+      no matter how small.
+    - gh-135883: Fix sqlite3’s interactive shell keeping part of
+      previous commands when scrolling history.
+    - gh-124748: Improve TypeError error message when
+      weakref.WeakKeyDictionary.update() is used with
+      keyword-only parameters.
+    - gh-80667: Add support for Tangut Ideographs names in
+      unicodedata.
+    - bpo-42353: The re module gains a new re.prefixmatch()
+      function as an explicit spelling of what has to date always
+      been known as re.match(). re.Pattern similary gains
+      a re.Pattern.prefixmatch() method.
+    - Why? Explicit is better than implicit. Other widely used
+      languages all use the term “match” to mean what Python uses
+      the term “search” for. The unadorened “match” name in
+      Python has been a frequent case of confusion and coding
+      bugs due to the inconsistency with the rest if the software
+      industry.
+    - We do not plan to deprecate and remove the older match
+      name.
+    - bpo-40243: Fix unicodedata.ucd_3_2_0.numeric() for
+      non-decimal values.
+    - bpo-40212: Re-enable os.posix_fallocate() and
+      os.posix_fadvise() on AIX.
+    - bpo-3405: Add support for user data of Tk virtual events
+      and detail for Enter, Leave, FocusIn, FocusOut, and
+      ConfigureRequest events to tkinter.
+    - bpo-32234: mailbox.Mailbox instances can now be used as
+      a context manager. The Mailbox is locked on context entry
+      and unlocked and closed at context exit.
+  - Documentation
+    - gh-145450: Document missing public wave.Wave_write getter
+      methods.
+    - gh-110937: Document rest of full public
+      importlib.metadata.Distribution API. Also add the (already
+      documented) PackagePath to __all__.
+    - gh-136246: A new “Improve this page” link is available in
+      the left-hand sidebar of the docs, offering links to create
+      GitHub issues, discussion forum posts, or pull requests.
+  - Core and Builtins
+    - gh-145701: Fix SystemError when __classdict__ or
+      __conditional_annotations__ is in a class-scope inlined
+      comprehension. Found by OSS Fuzz in #491105000.
+    - gh-145615: Fixed a memory leak in the free-threaded build
+      where mimalloc pages could become permanently unreclaimable
+      until the owning thread exited.
+    - gh-116738: Make mmap.mmap.set_name() thread-safe on the
+      free threaded build.
+    - gh-145566: In the free threading build, skip the
+      stop-the-world pause when reassigning __class__ on a newly
+      created object.
+    - gh-143055: Fix crash in AST unparser when unparsing dict
+      comprehension unpacking. Found by OSS Fuzz in #489790200.
+    - gh-145335: Fix a crash in os.pathconf() when called with -1
+      as the path argument.
+    - gh-145376: Fix reference leaks in various unusual error
+      scenarios.
+    - gh-145234: Fixed a SystemError in the parser when an
+      encoding cookie (for example, UTF-7) decodes to carriage
+      returns (\r). Newlines are now normalized after decoding in
+      the string tokenizer.
+    - Patch by Pablo Galindo.
+    - gh-145275: Added the -X pathconfig_warnings and
+      PYTHON_PATHCONFIG_WARNINGS options, allowing to disable
+      warnings from The initialization of the sys.path module
+      search path.
+    - gh-145273: A warning is now shown during The initialization
+      of the sys.path module search path if it can’t find a valid
+      standard library.
+    - gh-145241: Specialized the parser error for when with items
+      are followed by a trailing comma (for example, with
+      item,:), raising a clearer SyntaxError message. Patch by
+      Pablo Galindo and Bartosz Sławecki.
+    - gh-130555: Fix use-after-free in dict.clear() when the
+      dictionary values are embedded in an object and
+      a destructor causes re-entrant mutation of the dictionary.
+    - gh-145197: Fix JIT trace crash when recording function from
+      cleared generator frame.
+    - gh-145187: Fix compiler assertion fail when a type
+      parameter bound contains an invalid expression in
+      a conditional block.
+    - gh-145142: Fix a crash in the free-threaded build when the
+      dictionary argument to str.maketrans() is concurrently
+      modified.
+    - gh-145118: str.maketrans() now accepts frozendict.
+    - gh-144015: Speed up bytes.hex(), bytearray.hex(),
+      binascii.hexlify(), and hashlib .hexdigest() operations
+      with SIMD on x86-64, ARM64, and ARM32 with NEON when built
+      with gcc (version 12 or higher) or clang (version 3 or
+      higher) compilers. Around 1.1-3x faster for common 16-64
+      byte inputs such as hashlib hex digests, and up to 8x
+      faster for larger data.
+    - gh-145118: type() now accepts frozendict as an argument.
+    - gh-145064: Fix JIT optimizer assertion failure during
+      CALL_ALLOC_AND_ENTER_INIT side exit.
+    - gh-145055: exec() and eval() now accept frozendict for
+      globals. Patch by Victor Stinner.
+    - gh-145058: Fix a crash when __lazy_import__() is passed
+      a non-string argument, by raising an TypeError instead.
+    - gh-144995: Optimize memoryview comparison: a memoryview is
+      equal to itself, there is no need to compare values. Patch
+      by Victor Stinner.
+    - gh-141510: Update specializer to support frozendict. Patch
+      by Donghee Na.
+    - gh-141510: Optimize frozendict.fromkeys() to avoid
+      unnecessary thread-safety operations in frozendict cases.
+      Patch by Donghee Na.
+    - gh-100239: Speedup BINARY_OP_EXTEND for exact floats and
+      medium-size integers by up to 15%. Patch by Chris Eibl.
+    - gh-144914: Use mimalloc for raw memory allocations such as
+      via PyMem_RawMalloc() for better performance on
+      free-threaded builds. Patch by Kumar Aditya.
+    - gh-144872: Fix heap buffer overflow in the parser found by
+      OSS-Fuzz.
+    - gh-144766: Fix a crash in fork child process when perf
+      support is enabled.
+    - gh-144759: Fix undefined behavior in the lexer when start
+      and multi_line_start pointers are NULL in
+      _PyLexer_remember_fstring_buffers() and
+      _PyLexer_restore_fstring_buffers(). The NULL pointer
+      arithmetic (NULL - valid_pointer) is now guarded with
+      explicit NULL checks.
+    - gh-141510: Add built-in frozendict type. Patch by Victor
+      Stinner.
+    - gh-144681: Fix a JIT assertion failure when a conditional
+      branch jumps to the same target as the fallthrough path.
+    - gh-143300: Add PyUnstable_SetImmortal() C-API function to
+      mark objects as immortal.
+    - gh-144702: Clarify the error message raised when a class
+      pattern is used to match on a non-class object.
+    - gh-144569: Optimize BINARY_SLICE for list, tuple, and
+      unicode by avoiding temporary slice object creation.
+    - gh-144438: Align the QSBR thread state array to a 64-byte
+      cache line boundary to avoid false sharing in the
+      free-threaded build.
++++ 752 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/python315/python315.changes
++++ and /work/SRC/openSUSE:Factory/.python315.new.8177/python315.changes

Old:
----
  CVE-2024-6923-follow-up-EOL-email-headers.patch
  CVE-2025-11468-email-hdr-fold-comment.patch
  CVE-2025-12781-b64decode-alt-chars.patch
  CVE-2025-15282-urllib-ctrl-chars.patch
  CVE-2025-15366-imap-ctrl-chars.patch
  CVE-2025-15367-poplib-ctrl-chars.patch
  CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch
  CVE-2026-0865-wsgiref-ctrl-chars.patch
  Python-3.15.0a3.tar.xz
  Python-3.15.0a3.tar.xz.sigstore
  longer-time-test_thread_time.patch

New:
----
  Python-3.15.0a7.tar.xz
  Python-3.15.0a7.tar.xz.sigstore
  gh-145802-atomic-profile-update-for-PGO.patch
  skip-test_array_alignment.patch
  test_ci_fuzz_stdlib-failure.patch

----------(Old B)----------
  Old:- Remove upstreamed patches:
  - CVE-2024-6923-follow-up-EOL-email-headers.patch
  - CVE-2025-11468-email-hdr-fold-comment.patch
  Old:  - CVE-2024-6923-follow-up-EOL-email-headers.patch
  - CVE-2025-11468-email-hdr-fold-comment.patch
  - CVE-2025-12781-b64decode-alt-chars.patch
  Old:  - CVE-2025-11468-email-hdr-fold-comment.patch
  - CVE-2025-12781-b64decode-alt-chars.patch
  - CVE-2025-15282-urllib-ctrl-chars.patch
  Old:  - CVE-2025-12781-b64decode-alt-chars.patch
  - CVE-2025-15282-urllib-ctrl-chars.patch
  - CVE-2025-15366-imap-ctrl-chars.patch
  Old:  - CVE-2025-15282-urllib-ctrl-chars.patch
  - CVE-2025-15366-imap-ctrl-chars.patch
  - CVE-2025-15367-poplib-ctrl-chars.patch
  Old:  - CVE-2025-15366-imap-ctrl-chars.patch
  - CVE-2025-15367-poplib-ctrl-chars.patch
  - CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch
  Old:  - CVE-2025-15367-poplib-ctrl-chars.patch
  - CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch
  - CVE-2026-0865-wsgiref-ctrl-chars.patch
  Old:  - CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch
  - CVE-2026-0865-wsgiref-ctrl-chars.patch
  Old:- Remove upstreamed patch:
  - longer-time-test_thread_time.patch
----------(Old E)----------

----------(New B)----------
  New:
- Add gh-145802-atomic-profile-update-for-PGO.patch
  (gh#python/cpython#145803) to use gcc -fprofile-update=atomic
  New:
- Add skip-test_array_alignment.patch skipping failing test
  test.test_buffer.TestBufferProtocol.test_array_alignment
  New:      ./configure.
- Add test_ci_fuzz_stdlib-failure.patch to fix
  gh#python/cpython#145762.
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python315.spec ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:57.703842612 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:57.707842778 +0100
@@ -162,8 +162,8 @@
 # _md5.cpython-38m-x86_64-linux-gnu.so
 %define dynlib() 
%{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
 Name:           %{python_pkg_name}%{psuffix}
-Version:        3.15.0~a3
-%define         tarversion 3.15.0a3
+Version:        3.15.0~a7
+%define         tarversion 3.15.0a7
 %define         tarname    Python-%{tarversion}
 Release:        0
 Summary:        Python 3 Interpreter
@@ -225,34 +225,15 @@
 Patch41:        bsc1243155-sphinx-non-determinism.patch
 # PATCH-FIX-OPENSUSE gh139257-Support-docutils-0.22.patch 
gh#python/cpython#139257 [email protected]
 Patch42:        gh139257-Support-docutils-0.22.patch
-# PATCH-FIX-UPSTREAM longer-time-test_thread_time.patch 
gh#python/cpython!143558 [email protected]
-# tolerate 100 ms instead of 20 ms to support slow CIs.
-Patch43:        longer-time-test_thread_time.patch
-# PATCH-FIX-UPSTREAM CVE-2024-6923-follow-up-EOL-email-headers.patch 
bsc#1257181 [email protected]
-# Encode newlines in headers when using ByteGenerator
-# patch from gh#python/cpython#144125
-Patch44:        CVE-2024-6923-follow-up-EOL-email-headers.patch
-# PATCH-FIX-UPSTREAM CVE-2025-11468-email-hdr-fold-comment.patch bsc#1257029 
[email protected]
-# Email preserve parens when folding comments
-Patch45:        CVE-2025-11468-email-hdr-fold-comment.patch
-# PATCH-FIX-UPSTREAM CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch 
bsc#1257031 [email protected]
-# Reject control characters in http cookies
-Patch46:        CVE-2026-0672-http-hdr-inject-cookie-Morsel.patch
-# PATCH-FIX-UPSTREAM CVE-2025-12781-b64decode-alt-chars.patch bsc#1257108 
[email protected]
-# Fix decoding with non-standard Base64 alphabet gh#python/cpython#125346
-Patch47:        CVE-2025-12781-b64decode-alt-chars.patch
-# PATCH-FIX-UPSTREAM CVE-2026-0865-wsgiref-ctrl-chars.patch bsc#1257042 
[email protected]
-# Reject control characters in wsgiref.headers.Headers
-Patch48:        CVE-2026-0865-wsgiref-ctrl-chars.patch
-# PATCH-FIX-UPSTREAM CVE-2025-15366-imap-ctrl-chars.patch bsc#1257044 
[email protected]
-# Reject control characters in wsgiref.headers.Headers
-Patch49:        CVE-2025-15366-imap-ctrl-chars.patch
-# PATCH-FIX-UPSTREAM CVE-2025-15282-urllib-ctrl-chars.patch bsc#1257046 
[email protected]
-# Reject control characters in wsgiref.headers.Headers
-Patch50:        CVE-2025-15282-urllib-ctrl-chars.patch
-# PATCH-FIX-UPSTREAM CVE-2025-15367-poplib-ctrl-chars.patch bsc#1257041 
[email protected]
-# Reject control characters in poplib
-Patch51:        CVE-2025-15367-poplib-ctrl-chars.patch
+# PATCH-FIX-UPSTREAM skip-test_array_alignment.patch gh#python/cpython#144725 
[email protected]
+# skip failing test
+Patch43:        skip-test_array_alignment.patch
+# PATCH-FIX-UPSTREAM test_ci_fuzz_stdlib-failure.patch 
gh#python/cpython#145762 [email protected]
+# skip over more files, which shouldn't be included in the test
+Patch44:        test_ci_fuzz_stdlib-failure.patch
+# PATCH-FIX-UPSTREAM gh-145802-atomic-profile-update-for-PGO.patch 
gh#python/cpython#145803 [email protected]
+# Use gcc -fprofile-update=atomic for PGO builds
+Patch45:        gh-145802-atomic-profile-update-for-PGO.patch
 #### Python 3.15 DEVELOPMENT PATCHES
 BuildRequires:  autoconf-archive
 BuildRequires:  automake

++++++ CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:57.743844273 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:57.747844438 +0100
@@ -4,10 +4,10 @@
  Lib/test/test_xml_etree.py |   10 ++++++++++
  3 files changed, 17 insertions(+)
 
-Index: Python-3.15.0a3/Lib/test/test_pyexpat.py
+Index: Python-3.15.0a5/Lib/test/test_pyexpat.py
 ===================================================================
---- Python-3.15.0a3.orig/Lib/test/test_pyexpat.py      2025-12-16 
13:26:12.000000000 +0100
-+++ Python-3.15.0a3/Lib/test/test_pyexpat.py   2025-12-19 02:26:33.964969539 
+0100
+--- Python-3.15.0a5.orig/Lib/test/test_pyexpat.py      2026-02-08 
14:31:48.498838928 +0100
++++ Python-3.15.0a5/Lib/test/test_pyexpat.py   2026-02-08 14:31:58.465492442 
+0100
 @@ -860,6 +860,10 @@
          self.assertEqual(started, ['doc'])
  
@@ -19,10 +19,10 @@
          started = []
  
          def start_element(name, _):
-Index: Python-3.15.0a3/Lib/test/test_sax.py
+Index: Python-3.15.0a5/Lib/test/test_sax.py
 ===================================================================
---- Python-3.15.0a3.orig/Lib/test/test_sax.py  2025-12-16 13:26:12.000000000 
+0100
-+++ Python-3.15.0a3/Lib/test/test_sax.py       2025-12-19 02:26:33.966048947 
+0100
+--- Python-3.15.0a5.orig/Lib/test/test_sax.py  2026-02-08 14:31:48.575186151 
+0100
++++ Python-3.15.0a5/Lib/test/test_sax.py       2026-02-08 14:31:58.465928363 
+0100
 @@ -1241,6 +1241,9 @@
  
          self.assertEqual(result.getvalue(), start + b"<doc></doc>")
@@ -33,10 +33,10 @@
      def test_flush_reparse_deferral_disabled(self):
          result = BytesIO()
          xmlgen = XMLGenerator(result)
-Index: Python-3.15.0a3/Lib/test/test_xml_etree.py
+Index: Python-3.15.0a5/Lib/test/test_xml_etree.py
 ===================================================================
---- Python-3.15.0a3.orig/Lib/test/test_xml_etree.py    2025-12-16 
13:26:12.000000000 +0100
-+++ Python-3.15.0a3/Lib/test/test_xml_etree.py 2025-12-19 02:26:33.966681016 
+0100
+--- Python-3.15.0a5.orig/Lib/test/test_xml_etree.py    2026-02-08 
14:31:49.084155592 +0100
++++ Python-3.15.0a5/Lib/test/test_xml_etree.py 2026-02-08 14:31:58.466519056 
+0100
 @@ -138,6 +138,11 @@
      return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq)
  
@@ -49,7 +49,7 @@
  def checkwarnings(*filters, quiet=False):
      def decorator(test):
          def newtest(*args, **kwargs):
-@@ -1620,9 +1625,11 @@
+@@ -1619,9 +1624,11 @@
          self.assert_event_tags(parser, [('end', 'root')])
          self.assertIsNone(parser.close())
  
@@ -61,7 +61,7 @@
      def test_simple_xml_chunk_5(self):
          self.test_simple_xml(chunk_size=5, flush=True)
  
-@@ -1849,6 +1856,9 @@
+@@ -1848,6 +1855,9 @@
  
          self.assert_event_tags(parser, [('end', 'doc')])
  

++++++ Python-3.15.0a3.tar.xz -> Python-3.15.0a7.tar.xz ++++++
/work/SRC/openSUSE:Factory/python315/Python-3.15.0a3.tar.xz 
/work/SRC/openSUSE:Factory/.python315.new.8177/Python-3.15.0a7.tar.xz differ: 
char 26, line 1

++++++ Python-3.15.0a3.tar.xz.sigstore -> Python-3.15.0a7.tar.xz.sigstore ++++++
--- /work/SRC/openSUSE:Factory/python315/Python-3.15.0a3.tar.xz.sigstore        
2025-12-22 22:52:41.409554067 +0100
+++ 
/work/SRC/openSUSE:Factory/.python315.new.8177/Python-3.15.0a7.tar.xz.sigstore  
    2026-03-16 14:19:56.371787315 +0100
@@ -1 +1 @@
-{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", 
"verificationMaterial": {"certificate": {"rawBytes": 
"MIICzjCCAlOgAwIBAgIUWGdIw6jkonGGlxTefVWR5dycYMUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUxMjE2MTQzNDE1WhcNMjUxMjE2MTQ0NDE1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMeXAUdFRAMUwkol7S3TfLRDGSmTBLxrIQ3KpDiKGHVX13ZTBQwnQnTwV+sIwP787IJZHObALFx34l925AS5oSKOCAXIwggFuMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU1KEmc4ZWtSbp0HrR7xEl632FVQEwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABmyeVUi8AAAQDAEYwRAIgeNcEmGEuUlpapxVCjn9ssKb5U0FKgDx1cACe+m//GqwCIHaMa36eZ/5Ov9IQNyTUkm0bquaYWBvG5iGXMccaNkI+MAoGCCqGSM49BAMDA2kAMGYCMQDE+zTm1YaPVjKhhV7UrybXV88rHo7p1wedZglYz/WTQ6tdfXme
 
WXd4XcY8qvdMXxECMQCKipA6iUBoyWfYxM9wwNk1R0+YPpDvApKpuKcJssq7UBMH+qsVU2mYROAeVI/cTUc="},
 "tlogEntries": [{"logIndex": "767379108", "logId": {"keyId": 
"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": 
"hashedrekord", "version": "0.0.1"}, "integratedTime": "1765895656", 
"inclusionPromise": {"signedEntryTimestamp": 
"MEYCIQC/gr68tewjyDayVY1YgkSx3wyJr1gDp9niugBN6CuI3QIhAI+AI17ZFMXpBHbN6nqzRRSF3gkcOFeiztd/ddPiR3Qr"},
 "inclusionProof": {"logIndex": "645474846", "rootHash": 
"+7pvZSc1vkrbz1NYkRJTW6ebJVNEKnBbysMwrYfqBBw=", "treeSize": "645474850", 
"hashes": ["3IExMYCGoBe2wYmaUDFh/NwM9Yfz+YqErksZ9FiJMdU=", 
"5OlXK7CbwTpuOXJUjRBnsTRYTjVw1n5Yy8FU5TBL0XA=", 
"k7H5SO2fy1fisX7nQuhceTTJDt+OYrkbDLi4yA4s8x8=", 
"OUxbxHF4gP/nb0YaEJsiu5bD9WwjbSKIysm29uO2Wg8=", 
"xhz07XLYNXp0QZ6l+zMHq2ou8fUvEBzrXHj5p8bhW0w=", 
"TBrb22/2hnzqPGPgryvf9E/XySk6biXtuETjbuLr4iQ=", 
"XXiywYiYcfd6pMWvLjChESCzRvayGZ5Ga9vLoivArTc=", 
"6ymuOfiti8iWpSzihumjs587leNSK8iia3j2fQWYQvQ=", 
"x/rIPkrAoE9rz9kw44ofjWopN9MMV2UwNq4
 ZZxyk6gA=", "Jx3nGngq60bR51zwd8OmKd+Jv0wh/mwftjiOc6qQXgo=", 
"1Vd3rUmNolkFfJocF+ehhHicx+XZCI1oORVzpl1WD3k=", 
"STJBwmMYjQL7nNE7RtmufqTzKydDq3utsDtdFqjV83Q=", 
"volnUoGNFpLYblGf83KDzlbqdAQlS0WvwWzyZgIHQjo=", 
"1j4lDTV8P+GITn6Cn5v42uy3JK42BtPmPkJMt5IcMy0=", 
"X6vkxz0poxK2DIlRur/7LbEdz3iDXj5QY/gLk/ewXjA=", 
"ZmUkYkHBy1B723JrEgiKvepTdHYrP6y2a4oODYvi5VY=", 
"T4DqWD42hAtN+vX8jKCWqoC4meE4JekI9LxYGCcPy1M="], "checkpoint": {"envelope": 
"rekor.sigstore.dev - 
1193050959916656506\n645474850\n+7pvZSc1vkrbz1NYkRJTW6ebJVNEKnBbysMwrYfqBBw=\n\n\u2014
 rekor.sigstore.dev 
wNI9ajBDAh8xrHp05yLv6Q/03Lpwf+xo601cjQSlyFVx6fhX4g6QAiAHV2ukAWeKPX30txbAW2ymQCsMCjyaxXVyMi5ohj7Dvg==\n"}},
 "canonicalizedBody": 
"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2YWIwMmNkYWMyNDUwNTc3OTg3N2JiMWQ5MTg5NDMyZDY3ZTkwZGRmMmE5YjhiN2IzNzNlYWQ1NGFjMDdiNjA3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQ0hPTThHQjNyZFVTZTZzSFNMLzZWeDE3TkVabmlqRG1qZ2tVdXdDS0xu
 
YkFpQU54VFdKRFk4dmhhVEF2NDVpWFlDM0dvTjl6RDVtYllpdUFkM3FockN2MGc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4UFowRjNTVUpCWjBsVlYwZGtTWGMyYW10dmJrZEhiSGhVWldaV1YxSTFaSGxqV1UxVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZlRTFxUlRKTlZGRjZUa1JGTVZkb1kwNU5hbFY0VFdwRk1rMVVVVEJPUkVVeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZOWlZoQlZXUkdVa0ZOVlhkcmIydzNVek5VWmt4U1JFZFRiVlJDVEhoeVNWRXpTM0FLUkdsTFIwaFdXREV6V2xSQ1VYZHVVVzVVZDFZcmMwbDNVRGM0TjBsS1draFBZa0ZNUm5nek5HdzVNalZCVXpWdlUwdFBRMEZZU1hkblowWjFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlV4UzBWdENtTTBXbGQwVTJKd01FaHlVamQ0Uld3Mk16SkdWbEZGZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV
 
1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVZGWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpjS1FraHJRV1IzUWpGQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnRlV1ZXVldrNFFRcEJRVkZFUVVWWmQxSkJTV2RsVG1ORmJVZEZkVlZzY0dGd2VGWkRhbTQ1YzNOTFlqVlZNRVpMWjBSNE1XTkJRMlVyYlM4dlIzRjNRMGxJWVUxaE16WmxDbG92TlU5Mk9VbFJUbmxVVld0dE1HSnhkV0ZaVjBKMlJ6VnBSMWhOWTJOaFRtdEpLMDFCYjBkRFEzRkhVMDAwT1VKQlRVUkJNbXRCVFVkWlEwMVJSRVVLSzNwVWJURlpZVkJXYWt0b2FGWTNWWEo1WWxoV09EaHlTRzgzY0RGM1pXUmFaMnhaZWk5WFZGRTJkR1JtV0cxbFYxaGtORmhqV1RoeGRtUk5XSGhGUXdwTlVVTkxhWEJCTm1sVlFtOTVWMlpaZUUwNWQzZE9hekZTTUN0WlVIQkVka0Z3UzNCMVMyTktjM054TjFWQ1RVZ3JjWE5XVlRKdFdWSlBRV1ZXU1M5akNsUlZZejBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],
 "timestampVerificationData": {}}, "messag
 eSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": 
"arAs2sJFBXeYd7sdkYlDLWfpDd8qm4t7Nz6tVKwHtgc="}, "signature": 
"MEQCICHOM8GB3rdUSe6sHSL/6Vx17NEZnijDmjgkUuwCKLnbAiANxTWJDY8vhaTAv45iXYC3GoN9zD5mbYiuAd3qhrCv0g=="}}
+{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", 
"verificationMaterial": {"certificate": {"rawBytes": 
"MIICzTCCAlOgAwIBAgIUQCZFNes864rkYbM9NBz8OwDv9pQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwMzEwMTQ1ODEyWhcNMjYwMzEwMTUwODEyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh5/+e07IE5gUVYUjQUMQkdy8NV7T7dBBCkxozkwKFc+yIOUpQVisNcYeq/TCjDOlAm0+iTUPY9vsn24aUeF4BKOCAXIwggFuMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU6zNDX+aZ1xGvyRr1jRGqini+qvcwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnNhBbQ0AAAQDAEYwRAIgGrs+7t9NoN9lvjNM0DDXlkRD1b8Eg62uV9DfuQDm/CgCIHRHbu1mLM4sAi4WCZBQtVa9PjsQ2rUeFVLJW6Xh1jXAMAoGCCqGSM49BAMDA2gAMGUCMCHy1qAEyFvtUdTvKYvRdvAK5ZCp1DMubOsilMkioaArtwib4m0C
 
JhvNGiJSviC+zQIxANlwE9fAPPhReIpRAdcOf3F2JkiHePNNsHNXWZFV33ZHIDEHi/Z68d5NzPic7S8qXA=="},
 "tlogEntries": [{"logIndex": "1075912528", "logId": {"keyId": 
"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": 
"hashedrekord", "version": "0.0.1"}, "integratedTime": "1773154692", 
"inclusionPromise": {"signedEntryTimestamp": 
"MEUCIQD42RMmUhsa7IBS0XjRCLV57MBOUrrdIuL9sN4GGyP8NQIgBYTz8p4lqY6/jYKnj0g9gmy+krHJCYNk4K0g0ASLNXo="},
 "inclusionProof": {"logIndex": "954008266", "rootHash": 
"54UgPm7teHz/hbrEfZ2FL5lvQUl9ers0x++YVvXj9yk=", "treeSize": "954008272", 
"hashes": ["sg4M8SNINOlWlLyPZkCEbnlG9bPHZnyvggG+kxf9h4k=", 
"nL220iemcefeFxrr+wESPUEiePeLRdLQl4oaiswL308=", 
"3dyHvYKU5K2LoeJi7RzFRFCr6iZcUIh7OfkkTZpi3Vk=", 
"6ykjElNqdL5OxTRuzrF0igQr5ktyON3GvYE/6U7CsUE=", 
"QFtROGTbs6hnbqrhVzviz2Ip9TP8MI0WcSsFW1HrKrQ=", 
"3XUycL7YKpJlmrmCR8fG5rr6QpJ6mPlTT+fuFPflAZ4=", 
"S4JBeU7NYErZ27PHxLZQ88r904KImEXScxOmLFgcQHA=", 
"Umdyn/GrCi9GlujFSR8NGgOatDps+IEUnEhY74KkAKg=", 
"i6gdL+8LJXAQhGgtuzaDlKcEe696yTy9TU
 n9m+FquKA=", "8JR4pkSgDSLjVN1kMGkmaw/YH9wJ+wq1yLJ4IjS40fs=", 
"j0adZ1oa5riJVt3rCiB/z4Dn8ys8YtW90w669vyBjGs=", 
"iGPJqoaMERVmVoJI6Wf+JMw+K4vN4KjhYjD6t0ZGL44=", 
"7dklf5Lm6jfXBWXMt6kEv3EXBajmauMii6AHUtJf6+k=", 
"eRlAy3G7QgM2MWo2Jrz6/6oltT7/FwGiHfkpiaoARlI=", 
"fLAvE46NqCVV86EpB2pKkwJlFjjFk7ntX3lC+PiZuIo=", 
"T4DqWD42hAtN+vX8jKCWqoC4meE4JekI9LxYGCcPy1M="], "checkpoint": {"envelope": 
"rekor.sigstore.dev - 
1193050959916656506\n954008272\n54UgPm7teHz/hbrEfZ2FL5lvQUl9ers0x++YVvXj9yk=\n\n\u2014
 rekor.sigstore.dev 
wNI9ajBFAiEA9ory9YYyrWo49FT1GEuV3aV6L8PxEx2sN7OvJfR6akYCIHDv6yHU9PjOuLVsN7JDCl7Atv9AvxfsfYARFveK3TKG\n"}},
 "canonicalizedBody": 
"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4ZjU5MGM0MjhiN2YwZDQwNmRmOTI4Yjg1NzM3ZTdhM2FmYTI4ZWRkZDRkMTQxOTQxMGVhODA5Njg3ZWQxZWE3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJREN3V2o1a3kva3d2SWpXcnF5WVpYemhjcGt3YjJXK3ZDQkpFU0ZldlRzcUFpQjRUYkNMVXdHOUNFQUk4dkF3Yzl6dlNyaHdwZk10TXB
 
nL2JkTnhMa3NxWEE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZWRU5EUVd4UFowRjNTVUpCWjBsVlVVTmFSazVsY3pnMk5ISnJXV0pOT1U1Q2VqaFBkMFIyT1hCUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDE2UlhkTlZGRXhUMFJGZVZkb1kwNU5hbGwzVFhwRmQwMVVWWGRQUkVWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZvTlM4clpUQTNTVVUxWjFWV1dWVnFVVlZOVVd0a2VUaE9WamRVTjJSQ1FrTnJlRzhLZW10M1MwWmpLM2xKVDFWd1VWWnBjMDVqV1dWeEwxUkRha1JQYkVGdE1DdHBWRlZRV1RsMmMyNHlOR0ZWWlVZMFFrdFBRMEZZU1hkblowWjFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlUyZWs1RUNsZ3JZVm94ZUVkMmVWSnlNV3BTUjNGcGJta3JjWFpqZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RI
 
UTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVZGWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpjS1FraHJRV1IzUWpGQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnVUbWhDWWxFd1FRcEJRVkZFUVVWWmQxSkJTV2RIY25Nck4zUTVUbTlPT1d4MmFrNU5NRVJFV0d4clVrUXhZamhGWnpZeWRWWTVSR1oxVVVSdEwwTm5RMGxJVWtoaWRURnRDa3hOTkhOQmFUUlhRMXBDVVhSV1lUbFFhbk5STW5KVlpVWldURXBYTmxob01XcFlRVTFCYjBkRFEzRkhVMDAwT1VKQlRVUkJNbWRCVFVkVlEwMURTSGtLTVhGQlJYbEdkblJWWkZSMlMxbDJVbVIyUVVzMVdrTndNVVJOZFdKUGMybHNUV3RwYjJGQmNuUjNhV0kwYlRCRFNtaDJUa2RwU2xOMmFVTXJlbEZKZUFwQlRteDNSVGxtUVZCUWFGSmxTWEJTUVdSalQyWXpSakpLYTJsSVpWQk9Ubk5JVGxoWFdrWldNek5hU0VsRVJVaHBMMW8yT0dRMVRucFFhV00zVXpoeENsaEJQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],
 "timestampVerificationData": {}}, "messageSignature": {"messageDigest": 
{"algorithm": "S
 HA2_256", "digest": "j1kMQot/DUBt+Si4Vzfno6+ijt3U0UGUEOqAloftHqc="}, 
"signature": 
"MEQCIDCwWj5ky/kwvIjWrqyYZXzhcpkwb2W+vCBJESFevTsqAiB4TbCLUwG9CEAI8vAwc9zvSrhwpfMtMpg/bdNxLksqXA=="}}

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:57.855848922 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:57.859849088 +0100
@@ -1,6 +1,6 @@
-mtime: 1770240166
-commit: 3312e86ee4a2708afdaa23ebdcf981dbd3c3306d7f68bb406a9e3f321c0a4fa6
+mtime: 1773307978
+commit: 5590875d279841a26c266d3aa3af3e638e5f13af0985791c76374c9819929ebc
 url: https://src.opensuse.org/python-interpreters/python315.git
-revision: 3312e86ee4a2708afdaa23ebdcf981dbd3c3306d7f68bb406a9e3f321c0a4fa6
+revision: 5590875d279841a26c266d3aa3af3e638e5f13af0985791c76374c9819929ebc
 projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj
 

++++++ bpo-31046_ensurepip_honours_prefix.patch ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:57.887850251 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:57.887850251 +0100
@@ -13,10 +13,10 @@
  5 files changed, 37 insertions(+), 9 deletions(-)
  create mode 100644 
Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
 
-Index: Python-3.15.0a3/Doc/library/ensurepip.rst
+Index: Python-3.15.0a7/Doc/library/ensurepip.rst
 ===================================================================
---- Python-3.15.0a3.orig/Doc/library/ensurepip.rst     2025-12-16 
13:26:12.000000000 +0100
-+++ Python-3.15.0a3/Doc/library/ensurepip.rst  2026-01-21 18:16:58.317178174 
+0100
+--- Python-3.15.0a7.orig/Doc/library/ensurepip.rst     2026-03-10 
13:31:15.000000000 +0100
++++ Python-3.15.0a7/Doc/library/ensurepip.rst  2026-03-10 21:56:04.065215023 
+0100
 @@ -65,7 +65,11 @@
  By default, ``pip`` is installed into the current virtual environment
  (if one is active) or into the system site packages (if there is no
@@ -57,10 +57,10 @@
     .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
  
     .. note::
-Index: Python-3.15.0a3/Lib/ensurepip/__init__.py
+Index: Python-3.15.0a7/Lib/ensurepip/__init__.py
 ===================================================================
---- Python-3.15.0a3.orig/Lib/ensurepip/__init__.py     2026-01-21 
18:16:36.646076159 +0100
-+++ Python-3.15.0a3/Lib/ensurepip/__init__.py  2026-01-21 18:16:58.317562933 
+0100
+--- Python-3.15.0a7.orig/Lib/ensurepip/__init__.py     2026-03-10 
21:55:34.138824888 +0100
++++ Python-3.15.0a7/Lib/ensurepip/__init__.py  2026-03-10 21:56:04.065631508 
+0100
 @@ -106,27 +106,27 @@
      os.environ['PIP_CONFIG_FILE'] = os.devnull
  
@@ -103,7 +103,7 @@
          if upgrade:
              args += ["--upgrade"]
          if user:
-@@ -247,6 +249,11 @@
+@@ -249,6 +251,11 @@
          help="Install everything relative to this alternate root directory.",
      )
      parser.add_argument(
@@ -115,7 +115,7 @@
          "--altinstall",
          action="store_true",
          default=False,
-@@ -265,6 +272,7 @@
+@@ -267,6 +274,7 @@
  
      return _bootstrap(
          root=args.root,
@@ -123,11 +123,11 @@
          upgrade=args.upgrade,
          user=args.user,
          verbosity=args.verbosity,
-Index: Python-3.15.0a3/Lib/test/test_ensurepip.py
+Index: Python-3.15.0a7/Lib/test/test_ensurepip.py
 ===================================================================
---- Python-3.15.0a3.orig/Lib/test/test_ensurepip.py    2026-01-21 
18:16:38.055385060 +0100
-+++ Python-3.15.0a3/Lib/test/test_ensurepip.py 2026-01-21 18:16:58.317858155 
+0100
-@@ -105,6 +105,17 @@
+--- Python-3.15.0a7.orig/Lib/test/test_ensurepip.py    2026-03-10 
21:55:35.709593640 +0100
++++ Python-3.15.0a7/Lib/test/test_ensurepip.py 2026-03-10 21:56:04.065975767 
+0100
+@@ -111,6 +111,17 @@
              unittest.mock.ANY,
          )
  
@@ -145,11 +145,11 @@
      def test_bootstrapping_with_user(self):
          ensurepip.bootstrap(user=True)
  
-Index: Python-3.15.0a3/Makefile.pre.in
+Index: Python-3.15.0a7/Makefile.pre.in
 ===================================================================
---- Python-3.15.0a3.orig/Makefile.pre.in       2026-01-21 18:16:49.104742043 
+0100
-+++ Python-3.15.0a3/Makefile.pre.in    2026-01-21 18:16:58.318353823 +0100
-@@ -2391,7 +2391,7 @@
+--- Python-3.15.0a7.orig/Makefile.pre.in       2026-03-10 21:55:56.002096854 
+0100
++++ Python-3.15.0a7/Makefile.pre.in    2026-03-10 21:56:04.066350363 +0100
+@@ -2418,7 +2418,7 @@
                        install|*) ensurepip="" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -158,7 +158,7 @@
        fi
  
  .PHONY: altinstall
-@@ -2402,7 +2402,7 @@
+@@ -2429,7 +2429,7 @@
                        install|*) ensurepip="--altinstall" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -167,10 +167,10 @@
        fi
  
  .PHONY: commoninstall
-Index: 
Python-3.15.0a3/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
+Index: 
Python-3.15.0a7/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.15.0a3/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 
   2026-01-21 18:16:58.318910394 +0100
++++ 
Python-3.15.0a7/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 
   2026-03-10 21:56:04.067139341 +0100
 @@ -0,0 +1 @@
 +A directory prefix can now be specified when using :mod:`ensurepip`.
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-03-13 13:31:22.000000000 +0100
@@ -0,0 +1,6 @@
+*.obscpio
+*.orig
+*.osc
+_build.*
+.pbuild
+python315-*-build/

++++++ gh-145802-atomic-profile-update-for-PGO.patch ++++++
>From dfb0a1a7f16430fa34e886d8fbe1991cb7a06e51 Mon Sep 17 00:00:00 2001
From: Victor Stinner <[email protected]>
Date: Wed, 11 Mar 2026 11:55:36 +0100
Subject: [PATCH] gh-145801: Use gcc -fprofile-update=atomic for PGO builds

When Python build is optimized by PGO, use GCC
-fprofile-update=atomic option to use atomic operations when updating
profile information. This option reduces the risk of gcov Data Files
(.gcda) corruption which can cause random GCC crashes.
---
 Misc/NEWS.d/next/Build/2026-03-11-11-58-42.gh-issue-145801.iCXa3v.rst |    4 
++++
 configure                                                             |    2 +-
 configure.ac                                                          |    2 +-
 3 files changed, 6 insertions(+), 2 deletions(-)
 create mode 100644 
Misc/NEWS.d/next/Build/2026-03-11-11-58-42.gh-issue-145801.iCXa3v.rst

Index: 
Python-3.15.0a7/Misc/NEWS.d/next/Build/2026-03-11-11-58-42.gh-issue-145801.iCXa3v.rst
===================================================================
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
+++ 
Python-3.15.0a7/Misc/NEWS.d/next/Build/2026-03-11-11-58-42.gh-issue-145801.iCXa3v.rst
       2026-03-11 14:40:47.055558773 +0100
@@ -0,0 +1,4 @@
+When Python build is optimized by PGO, use GCC ``-fprofile-update=atomic``
+option to use atomic operations when updating profile information. This option
+reduces the risk of gcov Data Files (.gcda) corruption which can cause random
+GCC crashes. Patch by Victor Stinner.
Index: Python-3.15.0a7/configure
===================================================================
--- Python-3.15.0a7.orig/configure      2026-03-10 13:31:15.000000000 +0100
+++ Python-3.15.0a7/configure   2026-03-11 14:40:47.059323607 +0100
@@ -9083,7 +9083,7 @@
     fi
     ;;
   gcc)
-    PGO_PROF_GEN_FLAG="-fprofile-generate"
+    PGO_PROF_GEN_FLAG="-fprofile-generate -fprofile-update=atomic"
     PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
     LLVM_PROF_MERGER="true"
     LLVM_PROF_FILE=""
Index: Python-3.15.0a7/configure.ac
===================================================================
--- Python-3.15.0a7.orig/configure.ac   2026-03-11 14:40:40.007249549 +0100
+++ Python-3.15.0a7/configure.ac        2026-03-11 14:40:47.061622097 +0100
@@ -2084,7 +2084,7 @@
     fi
     ;;
   gcc)
-    PGO_PROF_GEN_FLAG="-fprofile-generate"
+    PGO_PROF_GEN_FLAG="-fprofile-generate -fprofile-update=atomic"
     PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
     LLVM_PROF_MERGER="true"
     LLVM_PROF_FILE=""

++++++ python-3.3.0b1-fix_date_time_compiler.patch ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:58.159861543 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:58.163861709 +0100
@@ -16,11 +16,11 @@
  Makefile.pre.in |    7 +++++++
  1 file changed, 7 insertions(+)
 
-Index: Python-3.15.0a3/Makefile.pre.in
+Index: Python-3.15.0a7/Makefile.pre.in
 ===================================================================
---- Python-3.15.0a3.orig/Makefile.pre.in       2025-12-16 13:26:12.000000000 
+0100
-+++ Python-3.15.0a3/Makefile.pre.in    2026-01-21 18:16:49.104742043 +0100
-@@ -1926,6 +1926,13 @@
+--- Python-3.15.0a7.orig/Makefile.pre.in       2026-03-10 13:31:15.000000000 
+0100
++++ Python-3.15.0a7/Makefile.pre.in    2026-03-10 21:55:56.002096854 +0100
+@@ -1932,6 +1932,13 @@
              -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
              -o $@ $(srcdir)/Modules/getbuildinfo.c
  

++++++ python-3.3.0b1-localpath.patch ++++++
--- /var/tmp/diff_new_pack.Uohlvg/_old  2026-03-16 14:19:58.175862207 +0100
+++ /var/tmp/diff_new_pack.Uohlvg/_new  2026-03-16 14:19:58.179862373 +0100
@@ -2,9 +2,11 @@
  Lib/site.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
---- a/Lib/site.py
-+++ b/Lib/site.py
-@@ -78,7 +78,7 @@ import stat
+Index: Python-3.15.0a7/Lib/site.py
+===================================================================
+--- Python-3.15.0a7.orig/Lib/site.py   2026-03-10 21:55:34.774030935 +0100
++++ Python-3.15.0a7/Lib/site.py        2026-03-10 21:55:45.838165991 +0100
+@@ -80,7 +80,7 @@
  import errno
  
  # Prefixes for site-packages; add additional prefixes like /usr/local here

++++++ skip-test_array_alignment.patch ++++++
---
 Lib/test/test_buffer.py |    1 +
 1 file changed, 1 insertion(+)

Index: Python-3.15.0a6/Lib/test/test_buffer.py
===================================================================
--- Python-3.15.0a6.orig/Lib/test/test_buffer.py        2026-02-12 
00:38:25.599265172 +0100
+++ Python-3.15.0a6/Lib/test/test_buffer.py     2026-02-12 00:46:24.303091378 
+0100
@@ -4463,6 +4463,7 @@
         self.assertEqual([ptr % align for ptr in ptrs], [0]*len(ptrs))
 
     @support.cpython_only
+    @unittest.skip('test fails; gh#python/cpython#144725')
     @unittest.skipIf(_testcapi is None, "requires _testcapi")
     def test_array_alignment(self):
         # gh-140557: pointer alignment of buffers including empty allocation

++++++ test_ci_fuzz_stdlib-failure.patch ++++++
>From 9c7dfebd7744198ad9bb1585bf31b05b19fbf778 Mon Sep 17 00:00:00 2001
From: Chris Eibl <[email protected]>
Date: Tue, 10 Mar 2026 18:28:27 +0100
Subject: [PATCH] Fix test_ci_fuzz_stdlib

when running the tests after building from the source archive
---
 Lib/test/test_tools/test_compute_changes.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Lib/test/test_tools/test_compute_changes.py 
b/Lib/test/test_tools/test_compute_changes.py
index 351fb06a885006..eb1ecd447a7ce0 100644
--- a/Lib/test/test_tools/test_compute_changes.py
+++ b/Lib/test/test_tools/test_compute_changes.py
@@ -55,7 +55,7 @@ def test_ci_fuzz_stdlib(self):
                     elif p.is_file():
                         f = p
                     else:
-                        self.fail(f"LIBRARY_FUZZER_PATHS contains an invalid 
entry: {p!r}")
+                        continue
                     result = process_changed_files({f})
                     self.assertTrue(result.run_ci_fuzz_stdlib)
                     self.assertTrue(is_fuzzable_library_file(f))

Reply via email to