Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python312 for openSUSE:Factory 
checked in at 2026-09-11 18:59:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python312 (Old)
 and      /work/SRC/openSUSE:Factory/.python312.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python312"

Fri Sep 11 18:59:52 2026 rev:53 rq:1376614 version:3.12.14

Changes:
--------
--- /work/SRC/openSUSE:Factory/python312/python312.changes      2026-08-15 
22:41:01.662434495 +0200
+++ /work/SRC/openSUSE:Factory/.python312.new.1265/python312.changes    
2026-09-11 18:59:59.022248624 +0200
@@ -1,0 +2,167 @@
+Fri Sep  4 16:52:54 UTC 2026 - Matej Cepl <[email protected]>
+
+- Update to 3.12.14:
+  - Core and Builtins
+    - gh-139808: Add branch protections for AArch64 (BTI/PAC) in
+      assembly code used by -X perf_jit (Linux perf profiler
+      integration).
+  - Documentation
+    - gh-136155: We are now checking for fatal errors in EPUB
+      builds in CI.
+  - Library
+    - gh-109638: Fix exponential time in csv.Sniffer.sniff() for
+      a sample which contains many quote characters. A doubled
+      quote character is now also detected in a field which
+      contains the delimiter or a line break.
+    - gh-98820: Fix quadratic time in csv.Sniffer.sniff() for
+      a sample which contains quoted fields, in particular for
+      a single column of quoted fields.
+    - gh-149231: In tomllib, the number of parts in TOML keys is
+      now limited.
+    - gh-146083: Update bundled libexpat to version 2.7.5.
+    - gh-141707: Don’t change tarfile.TarInfo type from AREGTYPE
+      to DIRTYPE when parsing GNU long name or link headers
+      (bsc#1259611, CVE-2025-13462).
+    - gh-90949: Add
+      SetBillionLaughsAttackProtectionActivationThreshold() and
+      SetBillionLaughsAttackProtectionMaximumAmplification() to
+      xmlparser objects to tune protections against billion
+      laughs attacks. Patch by Bénédikt Tran.
+  - Security
+    - gh-155558: Update bundled libexpat to version 2.8.3 for the
+      fix to CVE 2026-72522.
+    - gh-153030: Fixed quadratic complexity in incremental
+      parsing of long unterminated constructs (such as tags or
+      comments) in html.parser.HTMLParser, which could be
+      exploited for a denial of service (bsc#1271192,
+      CVE-2026-15308).
+    - gh-152674: The xml.etree.ElementTree.Element methods
+      findall(), iterfind() and find() avoid quadratic behavior
+      when using XPath index predicates ([1], [last()],
+      [last()-N]) on XML documents with many same-tag siblings.
+    - gh-152216: Update bundled libexpat to version 2.8.2.
+    - gh-151987: The tarfile.TarFile.extract() method now applies
+      the given filter when it extracts a link target from the
+      archive as a fallback (bsc#1269959, CVE-2026-4360).
+    - gh-151981: In tarfile, seeking a stream now stops when end
+      of the stream is reached (bsc#1269788, CVE-2026-11972).
+    - gh-151544: Modules/Setup.local is no longer used as
+      a landmark to discover whether Python is running in
+      a source tree, as it could potentially affect actual
+      installs. The pybuilddir.txt file is now the sole indicator
+      of running in a source tree.
+    - gh-151558: Fixed an vulnerability in the tarfile data and
+      tar extraction filters where crafted archives could create
+      a symlink pointing outside the destination directory. This
+      was a bypass of CVE 2025-4330 (bsc#1268977,
+      CVE-2026-11940).
+    - gh-150599: Fix a possible stack buffer overflow in bz2 when
+      a bz2.BZ2Decompressor is reused after a decompression
+      error. The decompressor now becomes unusable after libbz2
+      reports an error (bsc#1267974, CVE-2026-9669).
+    - gh-150743: http.client now limits the number of
+      chunked-response trailer lines it will read to 100, and the
+      number of interim (1xx) responses it will skip to 100.
+      A malicious or broken server could previously stream
+      trailer lines or 100 Continue responses forever, hanging
+      the client even when a socket timeout was in use. Reported
+      by @YLChen-007 via GHSA-w4q2-g22w-6fr4.
+    - gh-149698: Update bundled libexpat to version 2.8.1 for the
+      fix for CVE 2026-45186.
+    - gh-87451: The ftplib module’s undocumented ftpcp function
+      no longer trusts the IPv4 address value returned from the
+      source server in response to the PASV command by default,
+      completing the fix for CVE-2021-4189. As with ftplib.FTP,
+      the former behavior can be re-enabled by setting the
+      trust_server_pasv_ipv4_address attribute on the source
+      ftplib.FTP instance to True. Thanks to Qi Deng at Aurascape
+      AI for the report (bsc#1265268, CVE-2026-8328).
+    - gh-149486: tarfile.data_filter() now validates link targets
+      using the same normalised value that is written to disk,
+      strips trailing separators from the member name when
+      resolving a symlink’s directory, and rejects link members
+      that would replace the destination directory itself. This
+      closes several path-traversal bypasses of the data
+      extraction filter (bsc#1267821, CVE-2026-7774).
+    - gh-149079: Fix a potential denial of service in
+      unicodedata.normalize(). The canonical ordering step of
+      Unicode normalization used a quadratic-time insertion sort
+      for reordering combining characters, which could be
+      exploited with crafted input containing many combining
+      characters in non-canonical order. Replaced with
+      a linear-time counting sort for long runs (bsc#1267581,
+      CVE-2026-3276).
+    - gh-149018: Improved protection against XML hash-flooding
+      attacks in xml.parsers.expat and xml.etree.ElementTree when
+      Python is compiled with libExpat 2.8.0 or later
+      (bsc#1264962, CVE-2026-7210).
+    - gh-149017: Update bundled libexpat to version 2.8.0.
+    - gh-148808: Added buffer boundary check when using nbytes
+      parameter with
+      asyncio.AbstractEventLoop.sock_recvfrom_into(). Only
+      relevant for Windows and the asyncio.ProactorEventLoop.
+    - gh-148395: Fix a dangling input pointer in
+      lzma.LZMADecompressor, bz2.BZ2Decompressor, and internal
+      zlib._ZlibDecompressor when memory allocation fails with
+      MemoryError, which could let a subsequent decompress() call
+      read or write through a stale pointer to the
+      already-released caller buffer (bsc#1262098, CVE-2026-6100,
+      seems like it has been incompletely applied
+      gh#python/cpython#151605).
+    - gh-148169: A bypass in webbrowser allowed URLs prefixed
+      with %action to pass the dash-prefix safety check
+      (bsc#1262098, CVE-2026-6100).
+    - gh-146581: Fix vulnerability in shutil.unpack_archive() for
+      ZIP files on Windows which allowed to write files outside
+      of the destination tree if the patch in the archive
+      contains a Windows drive prefix. Now such invalid paths
+      will be skipped. Files containing “..” in the name (like
+      “foo..bar”) are no longer skipped.
+    - gh-146333: Fix quadratic backtracking in
+      configparser.RawConfigParser option parsing regexes (OPTCRE
+      and OPTCRE_NV). A crafted configuration line with many
+      whitespace characters could cause excessive CPU usage.
+    - gh-146211: Reject CR/LF characters in tunnel request
+      headers for the HTTPConnection.set_tunnel() method
+      (bsc#1261969, CVE-2026-1502).
+    - gh-145986: xml.parsers.expat: Fixed a crash caused by
+      unbounded C recursion when converting deeply nested XML
+      content models with ElementDeclHandler(). This addresses
+      CVE 2026-4224 (bsc#1259735, CVE-2026-4224).
+    - gh-145599: Reject control characters in http.cookies.Morsel
+      update() and js_output(). This addresses CVE 2026-3644.
+    - gh-145506: Fixes CVE 2026-2297 by ensuring that
+      SourcelessFileLoader uses io.open_code() when opening .pyc
+      files (bsc#1259240, CVE-2026-2297).
+    - gh-144370: Disallow usage of control characters in status
+      in wsgiref.handlers to prevent HTTP header injections.
+      Patch by Benedikt Johannes.
+    - gh-143930: Reject leading dashes in URLs passed to
+      webbrowser.open() (bsc#1260026, CVE-2026-4519).
+    - gh-143927: Normalize all line endings (CR, CRLF, and LF) to
+      LF+TAB when writing multi-line configparser values
+      (bsc#1269066, CVE-2026-0864).
+  - Tests
+    - gh-149776: Fix test_socket on Linux kernel 7.1 and newer:
+      skip UDP Lite tests if it’s not supported. Patch by Victor
+      Stinner.
+- Remove upstreamed patches:
+  - CVE-2025-13462-tarinfo-header-parse.patch
+  - CVE-2026-0864-normalize-LFTAB-configparser.patch
+  - CVE-2026-11940-tarfile-escape.patch
+  - CVE-2026-11972-tarfile-Stream-seek-EOF.patch
+  - CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
+  - CVE-2026-15308-HTMLParser-CPU-exhaust.patch
+  - CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
+  - CVE-2026-3276-On2-unicodedata-normalize.patch
+  - CVE-2026-4224-expat-unbound-C-recursion.patch
+  - CVE-2026-4360-filter_function-TarFile-extractone.patch
+  - CVE-2026-4519-webbrowser-open-dashes.patch
+  - CVE-2026-4786-webbrowser-open-action.patch
+  - CVE-2026-6100-use-after-free-decompression.patch
+  - CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
+  - CVE-2026-7774-tarfile-data_filter-symlink.patch
+  - CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
+  - test_UDPLITE_support.patch
+
+-------------------------------------------------------------------
@@ -13 +180 @@
-CVE-2026-3276-On2-unicodedata-normalize.patch
+  - CVE-2026-3276-On2-unicodedata-normalize.patch

Old:
----
  CVE-2025-13462-tarinfo-header-parse.patch
  CVE-2026-0864-normalize-LFTAB-configparser.patch
  CVE-2026-11940-tarfile-escape.patch
  CVE-2026-11972-tarfile-Stream-seek-EOF.patch
  CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
  CVE-2026-15308-HTMLParser-CPU-exhaust.patch
  CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
  CVE-2026-3276-On2-unicodedata-normalize.patch
  CVE-2026-4224-expat-unbound-C-recursion.patch
  CVE-2026-4360-filter_function-TarFile-extractone.patch
  CVE-2026-4519-webbrowser-open-dashes.patch
  CVE-2026-4786-webbrowser-open-action.patch
  CVE-2026-6100-use-after-free-decompression.patch
  CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
  CVE-2026-7774-tarfile-data_filter-symlink.patch
  CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
  Python-3.12.13.tar.xz
  Python-3.12.13.tar.xz.asc
  Python-3.12.13.tar.xz.sigstore
  test_UDPLITE_support.patch

New:
----
  Python-3.12.14.tar.xz
  Python-3.12.14.tar.xz.asc
  Python-3.12.14.tar.xz.sigstore

----------(Old B)----------
  Old:- Remove upstreamed patches:
  - CVE-2025-13462-tarinfo-header-parse.patch
  - CVE-2026-0864-normalize-LFTAB-configparser.patch
  Old:  - CVE-2025-13462-tarinfo-header-parse.patch
  - CVE-2026-0864-normalize-LFTAB-configparser.patch
  - CVE-2026-11940-tarfile-escape.patch
  Old:  - CVE-2026-0864-normalize-LFTAB-configparser.patch
  - CVE-2026-11940-tarfile-escape.patch
  - CVE-2026-11972-tarfile-Stream-seek-EOF.patch
  Old:  - CVE-2026-11940-tarfile-escape.patch
  - CVE-2026-11972-tarfile-Stream-seek-EOF.patch
  - CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
  Old:  - CVE-2026-11972-tarfile-Stream-seek-EOF.patch
  - CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
  - CVE-2026-15308-HTMLParser-CPU-exhaust.patch
  Old:  - CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
  - CVE-2026-15308-HTMLParser-CPU-exhaust.patch
  - CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
  Old:  - CVE-2026-15308-HTMLParser-CPU-exhaust.patch
  - CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
  - CVE-2026-3276-On2-unicodedata-normalize.patch
  Old:  - CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
  - CVE-2026-3276-On2-unicodedata-normalize.patch
  - CVE-2026-4224-expat-unbound-C-recursion.patch
  Old:  - CVE-2026-3276-On2-unicodedata-normalize.patch
  - CVE-2026-4224-expat-unbound-C-recursion.patch
  - CVE-2026-4360-filter_function-TarFile-extractone.patch
  Old:  - CVE-2026-4224-expat-unbound-C-recursion.patch
  - CVE-2026-4360-filter_function-TarFile-extractone.patch
  - CVE-2026-4519-webbrowser-open-dashes.patch
  Old:  - CVE-2026-4360-filter_function-TarFile-extractone.patch
  - CVE-2026-4519-webbrowser-open-dashes.patch
  - CVE-2026-4786-webbrowser-open-action.patch
  Old:  - CVE-2026-4519-webbrowser-open-dashes.patch
  - CVE-2026-4786-webbrowser-open-action.patch
  - CVE-2026-6100-use-after-free-decompression.patch
  Old:  - CVE-2026-4786-webbrowser-open-action.patch
  - CVE-2026-6100-use-after-free-decompression.patch
  - CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
  Old:  - CVE-2026-6100-use-after-free-decompression.patch
  - CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
  - CVE-2026-7774-tarfile-data_filter-symlink.patch
  Old:  - CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
  - CVE-2026-7774-tarfile-data_filter-symlink.patch
  - CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
  Old:  - CVE-2026-7774-tarfile-data_filter-symlink.patch
  - CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
  - test_UDPLITE_support.patch
  Old:  - CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
  - test_UDPLITE_support.patch
----------(Old E)----------

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

Other differences:
------------------
++++++ python312.spec ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.530353150 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.533353275 +0200
@@ -118,7 +118,7 @@
 # _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.12.13
+Version:        3.12.14
 Release:        0
 Summary:        Python 3 Interpreter
 License:        Python-2.0
@@ -197,74 +197,23 @@
 # PATCH-FIX-UPSTREAM CVE-2025-15366-imap-ctrl-chars.patch bsc#1257044 
[email protected]
 # Reject control characters in wsgiref.headers.Headers
 Patch56:        CVE-2025-15366-imap-ctrl-chars.patch
-# PATCH-FIX-OPENSUSE test_UDPLITE_support.patch bsc#1268375 [email protected]
-# improve testing of the presence of IPPROTO_UDPLITE support
-Patch57:        test_UDPLITE_support.patch
 # PATCH-FIX-UPSTREAM CVE-2025-15367-poplib-ctrl-chars.patch bsc#1257041 
[email protected]
 # Reject control characters in poplib
 Patch58:        CVE-2025-15367-poplib-ctrl-chars.patch
-# PATCH-FIX-UPSTREAM CVE-2026-2297-SourcelessFileLoader-io_open_code.patch 
bsc#1259240 [email protected]
-# Ensure SourcelessFileLoader uses io.open_code
-Patch59:        CVE-2026-2297-SourcelessFileLoader-io_open_code.patch
 # PATCH-FIX-UPSTREAM CVE-2026-3644-cookies-Morsel-update-II.patch bsc#1259734 
[email protected]
 # Reject control characters in http.cookies.Morsel.update() and 
http.cookies.BaseCookie.js_output
 Patch60:        CVE-2026-3644-cookies-Morsel-update-II.patch
-# PATCH-FIX-UPSTREAM CVE-2026-4224-expat-unbound-C-recursion.patch bsc#1259735 
[email protected]
-# Avoid unbound C recursion in conv_content_model
-Patch61:        CVE-2026-4224-expat-unbound-C-recursion.patch
-# PATCH-FIX-UPSTREAM CVE-2025-13462-tarinfo-header-parse.patch bsc#1259611 
[email protected]
-# Skip TarInfo DIRTYPE normalization during GNU long name handling
-Patch62:        CVE-2025-13462-tarinfo-header-parse.patch
-# PATCH-FIX-UPSTREAM CVE-2026-4519-webbrowser-open-dashes.patch bsc#1260026 
[email protected]
-# reject leading dashes in webbrowser URLs
-Patch63:        CVE-2026-4519-webbrowser-open-dashes.patch
 # PATCH-FIX-UPSTREAM CVE-2026-3479-pkgutil_get_data.patch bsc#1259989 
[email protected]
 # pkgutil.get_data() reject invalid resource arguments
 Patch64:        CVE-2026-3479-pkgutil_get_data.patch
 # PATCH-FIX-UPSTREAM CVE-2026-3446-base64-padding.patch bsc#1261970 
[email protected]
 # Do not ignore excess Base64 data after the first padded quad
 Patch65:        CVE-2026-3446-base64-padding.patch
-# PATCH-FIX-UPSTREAM CVE-2026-6100-use-after-free-decompression.patch 
bsc#1262098 [email protected]
-# NULL dangling pointer to avoid use-after-free error
-Patch66:        CVE-2026-6100-use-after-free-decompression.patch
-# PATCH-FIX-UPSTREAM CVE-2026-4786-webbrowser-open-action.patch bsc#1262319 
[email protected]
-# Fix webbrowser %action substitution bypass of dash-prefix check
-Patch67:        CVE-2026-4786-webbrowser-open-action.patch
-# PATCH-FIX-UPSTREAM CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch bsc#1261969 
[email protected]
-# Reject CR/LF in HTTP tunnel request headers
-Patch68:        CVE-2026-1502-reject-CRLF-HTTP-tunnel.patch
 # PATCH-FIX-UPSTREAM CVE-2026-6019-Morsel-js_output.patch bsc#1262654 
[email protected]
 # Base64-encode cookie values embedded in JS
 Patch69:        CVE-2026-6019-Morsel-js_output.patch
-# PATCH-FIX-UPSTREAM CVE-2026-11940-tarfile-escape.patch bsc#1268977 
[email protected]
-# Fix symlink escape via tarfile hardlink-extraction fallback
-Patch70:        CVE-2026-11940-tarfile-escape.patch
-# PATCH-FIX-UPSTREAM CVE-2026-8328-ftplib-no-trust-PASV-resp.patch bsc#1265268 
[email protected]
-# Make ftplib not trust the PASV response
-Patch71:        CVE-2026-8328-ftplib-no-trust-PASV-resp.patch
-# PATCH-FIX-UPSTREAM CVE-2026-7210-pyexpat-entropy-hash-flooding.patch 
bsc#1264962 [email protected]
-# Use XML_SetHashSalt16Bytes in pyexpat/_elementtree when possible
-Patch72:        CVE-2026-7210-pyexpat-entropy-hash-flooding.patch
 # PATCH-FIX-UPSTREAM Based on gh#python/cpython#142057 Support fixes required 
for Sphinx 9
 Patch73:        support-sphinx-9.patch
-# PATCH-FIX-UPSTREAM CVE-2026-15308-HTMLParser-CPU-exhaust.patch bsc#1271192 
[email protected]
-# Fix quadratic complexity in incremental parsing in HTMLParser
-Patch74:        CVE-2026-15308-HTMLParser-CPU-exhaust.patch
-# PATCH-FIX-UPSTREAM CVE-2026-4360-filter_function-TarFile-extractone.patch 
bsc#1269959 [email protected]
-# Pass filter_function to TarFile._extract_one() during .extract()
-Patch75:        CVE-2026-4360-filter_function-TarFile-extractone.patch
-# PATCH-FIX-UPSTREAM CVE-2026-11972-tarfile-Stream-seek-EOF.patch bsc#1269788 
[email protected]
-# Make tarfile._Stream.seek break at EOF
-Patch76:        CVE-2026-11972-tarfile-Stream-seek-EOF.patch
-# PATCH-FIX-UPSTREAM CVE-2026-0864-normalize-LFTAB-configparser.patch 
bsc#1269066 [email protected]
-# Normalize all line endings (CR, CRLF, and LF) in configparser
-Patch77:        CVE-2026-0864-normalize-LFTAB-configparser.patch
-# PATCH-FIX-UPSTREAM CVE-2026-7774-tarfile-data_filter-symlink.patch 
bsc#1267821 [email protected]
-# tarfile.data_filter: validate written link target
-Patch78:        CVE-2026-7774-tarfile-data_filter-symlink.patch
-# PATCH-FIX-UPSTREAM CVE-2026-3276-On2-unicodedata-normalize.patch bsc#1267581 
[email protected]
-# gh-149079: Fix O(n^2) canonical ordering in unicodedata.normalize()
-Patch79:        CVE-2026-3276-On2-unicodedata-normalize.patch
 # PATCH-FIX-UPSTREAM bsc1263083-http-cookies-atob-utf8.patch bsc#1263083 
[email protected]
 # Use decodeURIComponent() for UTF-8 support in js_output()
 Patch80:        bsc1263083-http-cookies-atob-utf8.patch

++++++ CVE-2025-12781-b64decode-alt-chars.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.583355359 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.588355567 +0200
@@ -12,10 +12,10 @@
  Misc/NEWS.d/next/Library/2025-11-06-12-03-29.gh-issue-125346.7Gfpgw.rst |    
5 +
  4 files changed, 91 insertions(+), 14 deletions(-)
 
-Index: Python-3.12.13/Doc/library/base64.rst
+Index: Python-3.12.14/Doc/library/base64.rst
 ===================================================================
---- Python-3.12.13.orig/Doc/library/base64.rst 2026-03-03 13:39:30.000000000 
+0100
-+++ Python-3.12.13/Doc/library/base64.rst      2026-03-06 20:24:47.155493487 
+0100
+--- Python-3.12.14.orig/Doc/library/base64.rst 2026-09-04 19:11:04.793514964 
+0200
++++ Python-3.12.14/Doc/library/base64.rst      2026-09-04 19:11:37.781206101 
+0200
 @@ -74,15 +74,20 @@
     A :exc:`binascii.Error` exception is raised
     if *s* is incorrectly padded.
@@ -52,11 +52,11 @@
  
  .. function:: b32encode(s)
  
-Index: Python-3.12.13/Lib/base64.py
+Index: Python-3.12.14/Lib/base64.py
 ===================================================================
---- Python-3.12.13.orig/Lib/base64.py  2026-03-06 20:21:12.189779055 +0100
-+++ Python-3.12.13/Lib/base64.py       2026-03-06 20:24:47.156270051 +0100
-@@ -71,20 +71,39 @@
+--- Python-3.12.14.orig/Lib/base64.py  2026-09-04 19:11:04.793514964 +0200
++++ Python-3.12.14/Lib/base64.py       2026-09-04 19:11:37.781650479 +0200
+@@ -72,20 +72,39 @@
      The result is returned as a bytes object.  A binascii.Error is raised if
      s is incorrectly padded.
  
@@ -100,7 +100,7 @@
  
  
  def standard_b64encode(s):
-@@ -129,8 +148,19 @@
+@@ -130,8 +149,19 @@
      The alphabet uses '-' instead of '+' and '_' instead of '/'.
      """
      s = _bytes_from_decode_data(s)
@@ -121,10 +121,10 @@
  
  
  
-Index: Python-3.12.13/Lib/test/test_base64.py
+Index: Python-3.12.14/Lib/test/test_base64.py
 ===================================================================
---- Python-3.12.13.orig/Lib/test/test_base64.py        2026-03-06 
20:21:14.072714339 +0100
-+++ Python-3.12.13/Lib/test/test_base64.py     2026-03-06 20:24:47.156769814 
+0100
+--- Python-3.12.14.orig/Lib/test/test_base64.py        2026-09-04 
19:11:04.793514964 +0200
++++ Python-3.12.14/Lib/test/test_base64.py     2026-09-04 19:11:37.782000610 
+0200
 @@ -232,6 +232,25 @@
                                 b'\xd3V\xbeo\xf7\x1d')
          self.check_decode_type_errors(base64.urlsafe_b64decode)
@@ -181,10 +181,10 @@
  
      def test_b32encode(self):
          eq = self.assertEqual
-Index: 
Python-3.12.13/Misc/NEWS.d/next/Library/2025-11-06-12-03-29.gh-issue-125346.7Gfpgw.rst
+Index: 
Python-3.12.14/Misc/NEWS.d/next/Library/2025-11-06-12-03-29.gh-issue-125346.7Gfpgw.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.12.13/Misc/NEWS.d/next/Library/2025-11-06-12-03-29.gh-issue-125346.7Gfpgw.rst
     2026-03-06 20:24:47.157181851 +0100
++++ 
Python-3.12.14/Misc/NEWS.d/next/Library/2025-11-06-12-03-29.gh-issue-125346.7Gfpgw.rst
     2026-09-04 19:11:37.782529837 +0200
 @@ -0,0 +1,5 @@
 +Accepting ``+`` and ``/`` characters with an alternative alphabet in
 +:func:`base64.b64decode` and :func:`base64.urlsafe_b64decode` is now

++++++ CVE-2026-3446-base64-padding.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.618356817 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.625357109 +0200
@@ -19,10 +19,10 @@
  3 files changed, 74 insertions(+), 60 deletions(-)
  create mode 100644 
Misc/NEWS.d/next/Library/2026-02-26-20-13-16.gh-issue-145264.4pggX_.rst
 
-Index: Python-3.12.13/Lib/test/test_binascii.py
+Index: Python-3.12.14/Lib/test/test_binascii.py
 ===================================================================
---- Python-3.12.13.orig/Lib/test/test_binascii.py      2026-04-15 
20:00:26.336287241 +0200
-+++ Python-3.12.13/Lib/test/test_binascii.py   2026-04-15 20:00:37.138209710 
+0200
+--- Python-3.12.14.orig/Lib/test/test_binascii.py      2026-09-04 
12:53:14.576204688 +0200
++++ Python-3.12.14/Lib/test/test_binascii.py   2026-09-04 15:51:51.243528574 
+0200
 @@ -136,17 +136,16 @@
              _assertRegexTemplate(r'(?i)Excess padding', data, 
non_strict_mode_expected_result)
  
@@ -72,19 +72,19 @@
  
      def test_base64errors(self):
          # Test base64 with invalid padding
-Index: 
Python-3.12.13/Misc/NEWS.d/next/Library/2026-02-26-20-13-16.gh-issue-145264.4pggX_.rst
+Index: 
Python-3.12.14/Misc/NEWS.d/next/Library/2026-02-26-20-13-16.gh-issue-145264.4pggX_.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.12.13/Misc/NEWS.d/next/Library/2026-02-26-20-13-16.gh-issue-145264.4pggX_.rst
     2026-04-15 20:00:37.138381544 +0200
++++ 
Python-3.12.14/Misc/NEWS.d/next/Library/2026-02-26-20-13-16.gh-issue-145264.4pggX_.rst
     2026-09-04 15:51:51.243948375 +0200
 @@ -0,0 +1,4 @@
 +Base64 decoder (see :func:`binascii.a2b_base64`, :func:`base64.b64decode`, 
etc) no
 +longer ignores excess data after the first padded quad in non-strict
 +(default) mode.  Instead, in conformance with :rfc:`4648`, section 3.3, it 
now ignores
 +the pad character, "=", if it is present before the end of the encoded data.
-Index: Python-3.12.13/Modules/binascii.c
+Index: Python-3.12.14/Modules/binascii.c
 ===================================================================
---- Python-3.12.13.orig/Modules/binascii.c     2026-03-03 13:39:30.000000000 
+0100
-+++ Python-3.12.13/Modules/binascii.c  2026-04-15 20:00:37.138762021 +0200
+--- Python-3.12.14.orig/Modules/binascii.c     2026-08-12 15:57:54.000000000 
+0200
++++ Python-3.12.14/Modules/binascii.c  2026-09-04 15:51:51.244751698 +0200
 @@ -393,7 +393,6 @@
      const unsigned char *ascii_data = data->buf;
      size_t ascii_len = data->len;

++++++ CVE-2026-3479-pkgutil_get_data.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.650358151 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.655358359 +0200
@@ -14,10 +14,10 @@
  4 files changed, 48 insertions(+), 2 deletions(-)
  create mode 100644 
Misc/NEWS.d/next/Security/2026-03-16-18-07-00.gh-issue-146121.vRbdro.rst
 
-Index: Python-3.12.13/Doc/library/pkgutil.rst
+Index: Python-3.12.14/Doc/library/pkgutil.rst
 ===================================================================
---- Python-3.12.13.orig/Doc/library/pkgutil.rst        2026-03-03 
13:39:30.000000000 +0100
-+++ Python-3.12.13/Doc/library/pkgutil.rst     2026-04-07 23:56:28.234986304 
+0200
+--- Python-3.12.14.orig/Doc/library/pkgutil.rst        2026-08-12 
15:57:54.000000000 +0200
++++ Python-3.12.14/Doc/library/pkgutil.rst     2026-09-04 15:51:46.700865872 
+0200
 @@ -191,24 +191,45 @@
     :meth:`get_data <importlib.abc.ResourceLoader.get_data>` API.  The
     *package* argument should be the name of a package, in standard module 
format
@@ -66,10 +66,10 @@
  
  .. function:: resolve_name(name)
  
-Index: Python-3.12.13/Lib/pkgutil.py
+Index: Python-3.12.14/Lib/pkgutil.py
 ===================================================================
---- Python-3.12.13.orig/Lib/pkgutil.py 2026-04-07 23:56:05.837708559 +0200
-+++ Python-3.12.13/Lib/pkgutil.py      2026-04-07 23:56:17.522189128 +0200
+--- Python-3.12.14.orig/Lib/pkgutil.py 2026-09-04 12:53:14.035130108 +0200
++++ Python-3.12.14/Lib/pkgutil.py      2026-09-04 15:51:46.701330627 +0200
 @@ -448,6 +448,9 @@
      # signature - an os.path format "filename" starting with the dirname of
      # the package's __file__
@@ -80,10 +80,10 @@
      parts.insert(0, os.path.dirname(mod.__file__))
      resource_name = os.path.join(*parts)
      return loader.get_data(resource_name)
-Index: Python-3.12.13/Lib/test/test_pkgutil.py
+Index: Python-3.12.14/Lib/test/test_pkgutil.py
 ===================================================================
---- Python-3.12.13.orig/Lib/test/test_pkgutil.py       2026-04-07 
23:56:07.533481940 +0200
-+++ Python-3.12.13/Lib/test/test_pkgutil.py    2026-04-07 23:56:17.522457624 
+0200
+--- Python-3.12.14.orig/Lib/test/test_pkgutil.py       2026-09-04 
12:53:15.895798280 +0200
++++ Python-3.12.14/Lib/test/test_pkgutil.py    2026-09-04 15:51:46.701677751 
+0200
 @@ -61,6 +61,25 @@
  
          del sys.modules[pkg]
@@ -110,10 +110,10 @@
      def test_getdata_zipfile(self):
          zip = 'test_getdata_zipfile.zip'
          pkg = 'test_getdata_zipfile'
-Index: 
Python-3.12.13/Misc/NEWS.d/next/Security/2026-03-16-18-07-00.gh-issue-146121.vRbdro.rst
+Index: 
Python-3.12.14/Misc/NEWS.d/next/Security/2026-03-16-18-07-00.gh-issue-146121.vRbdro.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.12.13/Misc/NEWS.d/next/Security/2026-03-16-18-07-00.gh-issue-146121.vRbdro.rst
    2026-04-07 23:56:17.522707896 +0200
++++ 
Python-3.12.14/Misc/NEWS.d/next/Security/2026-03-16-18-07-00.gh-issue-146121.vRbdro.rst
    2026-09-04 15:51:46.702003645 +0200
 @@ -0,0 +1,3 @@
 +:func:`pkgutil.get_data` now raises rejects *resource* arguments containing 
the
 +parent directory components or that is an absolute path.

++++++ CVE-2026-3644-cookies-Morsel-update-II.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.684359568 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.689359776 +0200
@@ -11,77 +11,18 @@
 Co-authored-by: Victor Stinner <[email protected]>
 Co-authored-by: Victor Stinner <[email protected]>
 ---
- Lib/http/cookies.py                                                      |   
24 +++++-
  Lib/test/test_http_cookies.py                                            |   
38 ++++++++++
  Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst |    
4 +
- 3 files changed, 62 insertions(+), 4 deletions(-)
+ 2 files changed, 42 insertions(+)
  create mode 100644 
Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst
 
-Index: Python-3.12.13/Lib/http/cookies.py
+Index: Python-3.12.14/Lib/test/test_http_cookies.py
 ===================================================================
---- Python-3.12.13.orig/Lib/http/cookies.py    2026-03-23 18:31:24.882402102 
+0100
-+++ Python-3.12.13/Lib/http/cookies.py 2026-03-23 18:32:06.098683524 +0100
-@@ -335,9 +335,16 @@
-             key = key.lower()
-             if key not in self._reserved:
-                 raise CookieError("Invalid attribute %r" % (key,))
-+            if _has_control_character(key, val):
-+                raise CookieError("Control characters are not allowed in "
-+                                  f"cookies {key!r} {val!r}")
-             data[key] = val
-         dict.update(self, data)
- 
-+    def __ior__(self, values):
-+        self.update(values)
-+        return self
-+
-     def isReservedKey(self, K):
-         return K.lower() in self._reserved
- 
-@@ -363,9 +370,15 @@
-         }
- 
-     def __setstate__(self, state):
--        self._key = state['key']
--        self._value = state['value']
--        self._coded_value = state['coded_value']
-+        key = state['key']
-+        value = state['value']
-+        coded_value = state['coded_value']
-+        if _has_control_character(key, value, coded_value):
-+            raise CookieError("Control characters are not allowed in cookies "
-+                              f"{key!r} {value!r} {coded_value!r}")
-+        self._key = key
-+        self._value = value
-+        self._coded_value = coded_value
- 
-     def output(self, attrs=None, header="Set-Cookie:"):
-         return "%s %s" % (header, self.OutputString(attrs))
-@@ -377,13 +390,16 @@
- 
-     def js_output(self, attrs=None):
-         # Print javascript
-+        output_string = self.OutputString(attrs)
-+        if _has_control_character(output_string):
-+            raise CookieError("Control characters are not allowed in cookies")
-         return """
-         <script type="text/javascript">
-         <!-- begin hiding
-         document.cookie = \"%s\";
-         // end hiding -->
-         </script>
--        """ % (self.OutputString(attrs).replace('"', r'\"'))
-+        """ % (output_string.replace('"', r'\"'))
- 
-     def OutputString(self, attrs=None):
-         # Build up our result
-Index: Python-3.12.13/Lib/test/test_http_cookies.py
-===================================================================
---- Python-3.12.13.orig/Lib/test/test_http_cookies.py  2026-03-23 
18:31:26.797590700 +0100
-+++ Python-3.12.13/Lib/test/test_http_cookies.py       2026-03-23 
18:32:06.098900964 +0100
-@@ -573,6 +573,14 @@
+--- Python-3.12.14.orig/Lib/test/test_http_cookies.py  2026-09-04 
12:53:15.263464690 +0200
++++ Python-3.12.14/Lib/test/test_http_cookies.py       2026-09-04 
13:14:24.259834752 +0200
+@@ -581,6 +581,14 @@
              with self.assertRaises(cookies.CookieError):
-                 morsel["path"] = c0
+                 morsel.__setstate__({'key': 'key', 'value': 'val', 
'coded_value': c0})
  
 +            # .__setstate__()
 +            with self.assertRaises(cookies.CookieError):
@@ -94,9 +35,9 @@
              # .setdefault()
              with self.assertRaises(cookies.CookieError):
                  morsel.setdefault("path", c0)
-@@ -587,6 +595,18 @@
+@@ -607,6 +615,18 @@
              with self.assertRaises(cookies.CookieError):
-                 morsel.set("path", "val", c0)
+                 morsel |= {c0: "val"}
  
 +            # .update()
 +            with self.assertRaises(cookies.CookieError):
@@ -113,12 +54,10 @@
      def test_control_characters_output(self):
          # Tests that even if the internals of Morsel are modified
          # that a call to .output() has control character safeguards.
-@@ -607,6 +627,24 @@
-             with self.assertRaises(cookies.CookieError):
-                 cookie.output()
+@@ -629,6 +649,24 @@
  
-+        # Tests that .js_output() also has control character safeguards.
-+        for c0 in support.control_characters_c0():
+         # Tests that .js_output() also has control character safeguards.
+         for c0 in support.control_characters_c0():
 +            morsel = cookies.Morsel()
 +            morsel.set("key", "value", "coded-value")
 +            morsel._key = c0  # Override private variable.
@@ -135,13 +74,15 @@
 +            with self.assertRaises(cookies.CookieError):
 +                cookie.js_output()
 +
- 
- def load_tests(loader, tests, pattern):
-     tests.addTest(doctest.DocTestSuite(cookies))
-Index: 
Python-3.12.13/Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst
++        # Tests that .js_output() also has control character safeguards.
++        for c0 in support.control_characters_c0():
+             morsel = cookies.Morsel()
+             morsel.set("key", "value", "coded-value")
+             morsel._key = c0  # Override private variable.
+Index: 
Python-3.12.14/Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.12.13/Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst
    2026-03-23 18:32:06.099117222 +0100
++++ 
Python-3.12.14/Misc/NEWS.d/next/Security/2026-03-06-17-03-38.gh-issue-145599.kchwZV.rst
    2026-09-04 13:14:24.260306060 +0200
 @@ -0,0 +1,4 @@
 +Reject control characters in :class:`http.cookies.Morsel`
 +:meth:`~http.cookies.Morsel.update` and

++++++ Python-3.12.13.tar.xz -> Python-3.12.14.tar.xz ++++++
/work/SRC/openSUSE:Factory/python312/Python-3.12.13.tar.xz 
/work/SRC/openSUSE:Factory/.python312.new.1265/Python-3.12.14.tar.xz differ: 
char 26, line 1

++++++ Python-3.12.13.tar.xz.sigstore -> Python-3.12.14.tar.xz.sigstore ++++++
--- /work/SRC/openSUSE:Factory/python312/Python-3.12.13.tar.xz.sigstore 
2026-03-09 16:13:09.137408698 +0100
+++ 
/work/SRC/openSUSE:Factory/.python312.new.1265/Python-3.12.14.tar.xz.sigstore   
    2026-09-11 18:59:57.440182692 +0200
@@ -1 +1 @@
-{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", 
"verificationMaterial": {"certificate": {"rawBytes": 
"MIICyjCCAlGgAwIBAgIUO7TJR+RHchxVU5kgvbim2H9+cbcwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwMzAzMTMxMjIwWhcNMjYwMzAzMTMyMjIwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELwC+xgTfcROEXl4pozmTWsTNPZLTeacmkg6Hg0WATZMDJ+lr38EW6hvCs6TDkHrSaW6cdK1cwiJkn1Fll29q/KOCAXAwggFsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUmvaaERiEcY/i892YYr9Mxt7u1pAwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0RAQH/BBUwE4ERdGhvbWFzQHB5dGhvbi5vcmcwKQYKKwYBBAGDvzABAQQbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMCsGCisGAQQBg78wAQgEHQwbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGcs9P79QAABAMASDBGAiEAtjJfOYWsz9g9ZW3xOzvooREK151hFSCpuGGQfA0CoEECIQChliLi08aP9JK7exWp1EUkEsLQ8xS3k6dKzK08r1FK3jAKBggqhkjOPQQDAwNnADBkAjA5RnsbbOv8594Rg66k8ehuGKRy9tuwnGeh+Ms/7QH9azMryf4lq2MW
 
W6gs3oJFeYcCMC/oCuy0KqaSKLjL+Bjkw206Xydj9Wcxzi6n/HeqnxiZrBz790kpkwjsxOJnaUIQyg=="},
 "tlogEntries": [{"logIndex": "1017907816", "logId": {"keyId": 
"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": 
"hashedrekord", "version": "0.0.1"}, "integratedTime": "1772543540", 
"inclusionPromise": {"signedEntryTimestamp": 
"MEYCIQDT7wtacuqV+7MUnwBq5Rqq3l63sLEGHZI1XuWp0421qgIhAP1/dl8he7N/t5VMUhca4SFy/Wd1VCYHhB8pvaVeTnG6"},
 "inclusionProof": {"logIndex": "896003554", "rootHash": 
"dduWJQVh9hToIh7KBktgBf1ZmjzxXKBtY6RlC8Qvck8=", "treeSize": "896003562", 
"hashes": ["c24gaFO/5zpzzLClPoHIHcfL0tXHo4KM0fe1kRP1mXA=", 
"2TTK3bhgXfKMKbX6Sykzb4FK7KWTGFwZt3cL6RDnrhQ=", 
"UDmpPuP1lUhqv/P+G1TT3lwHHar8e66rgtFoftcCyFA=", 
"1cimjEHaKfeVzMwQ2g5aNI2AY+mKuyefuKu4bl3dYYY=", 
"ov3364KQKY67aOFB2yraPDt2tN2J3ubsoFc0Qz4Uyqc=", 
"QDY5M9oZY+lj4k8u1dw8TLSPZMx2RaFU6azxmtI/DYk=", 
"wjOmQYl/uPBoLszh0aCCIaStXoKgMBx2hr8/yd8mrxw=", 
"SWlkQuEKVKLExEBBYik+E2ntQcWU8FXaStLk5OR58Hw=", 
"TT/C2pqjIfvIL3alv8+8t803UUA+J7F3G3RJBG
 X47qo=", "QIvLvG9kOJaMYUH84Qv3nYMwHBgvO09NBWZgAQxV/XQ=", 
"Xu3Ph++KXQYw4sr2FXO+m6ejdFnRdvIq0sNIXZ3JPeI=", 
"X/ABFC6+4cGeNLxsbeuvEES5P1gqWZNVz354NrulKvs=", 
"JRrqNWh/H7qLgers5uYHsZhlBeUG0Iq15/rzmx5nOnM=", 
"zqeC5oCJfF7U0j+xFOZMczDTNKLpXtPqv1Bm2CRa+q8=", 
"3MUmJMn+WmTO/xZck3ZnB+/1ODBh1XagFTFyOYA8fGg=", 
"9kv572LTRu9iSxQwHZ/9IjIVAil7jC0UKQGvJ1+OSIc=", 
"Qiu5gIc/ZjU7HM63IWVs3PCkgNTV4cY0dnn0aOI66WY=", 
"TowAI7Ml+oo4i97aYU8IPGwFN1B4qy+pdx75ciLu3E8=", 
"Xo5tam8gxbsWohATkFEqn5hvHpPFwBJ0SDjNE5DiI2A=", 
"ZleKYeRKwUF3HP3HO0kxHMVeJgY3N/euGinVhlVWaq0=", 
"fLAvE46NqCVV86EpB2pKkwJlFjjFk7ntX3lC+PiZuIo=", 
"T4DqWD42hAtN+vX8jKCWqoC4meE4JekI9LxYGCcPy1M="], "checkpoint": {"envelope": 
"rekor.sigstore.dev - 
1193050959916656506\n896003562\ndduWJQVh9hToIh7KBktgBf1ZmjzxXKBtY6RlC8Qvck8=\n\n\u2014
 rekor.sigstore.dev 
wNI9ajBEAiBkoWZ7HDLN0R8PyB2wRfwbnaOwvM8cdqelTzCaeOAFzQIgREZTN2XN/tZDjqkuie8cGAVFpOtF05VIsGCgvUZX9+s=\n"}},
 "canonicalizedBody": 
"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp
 
7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjMDhiYzY1YTgxOTcxYzFkZDU3ODMxODI4MjY1MDMzNjk0NjZjN2U2NzM3NGQxNjQ2NTE5YWRmMDUyMDdiNjg0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURpN3FEa0c3UGQvaEpiYnVCK0MwZlF1bDlUaDlwY253Y2I0QVpnSFY0L09RSWdhVDdqZkg0cWdQbWJOSE5jbzFpMVdWdTUzS3ZBanI1bVBIRGVBcVY5RThvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjVha05EUVd4SFowRjNTVUpCWjBsVlR6ZFVTbElyVWtoamFIaFdWVFZyWjNaaWFXMHlTRGtyWTJKamQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDE2UVhwTlZFMTRUV3BKZDFkb1kwNU5hbGwzVFhwQmVrMVVUWGxOYWtsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZNZDBNcmVHZFVabU5TVDBWWWJEUndiM3B0VkZkelZFNVFXa3hVWldGamJXdG5Oa2dLWnpCWFFWUmFUVVJLSzJ4eU16aEZWelpvZGtOek5sUkVhMGh5VTJGWE5tTmtTekZqZDJsS2EyNHhSbXhzTWpseEwwdFBRMEZZUVhkblowWnpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBS
 
QlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ0ZG1GaENrVlNhVVZqV1M5cE9Ea3lXVmx5T1UxNGREZDFNWEJCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoM1dVUldVakJTUVZGSUwwSkNWWGRGTkVWU1pFZG9kbUpYUm5wUlNFSTFaRWRvZG1KcE5YWmpiV04zUzFGWlMwdDNXVUpDUVVkRWRucEJRZ3BCVVZGaVlVaFNNR05JVFRaTWVUbG9XVEpPZG1SWE5UQmplVFZ1WWpJNWJtSkhWWFZaTWpsMFRVTnpSME5wYzBkQlVWRkNaemM0ZDBGUlowVklVWGRpQ21GSVVqQmpTRTAyVEhrNWFGa3lUblprVnpVd1kzazFibUl5T1c1aVIxVjFXVEk1ZEUxSlIweENaMjl5UW1kRlJVRmtXalZCWjFGRFFrZ3dSV1YzUWpVS1FVaGpRVE5VTUhkaGMySklSVlJLYWtkU05HTnRWMk16UVhGS1MxaHlhbVZRU3pNdmFEUndlV2RET0hBM2J6UkJRVUZIWTNNNVVEYzVVVUZCUWtGTlFRcFRSRUpIUVdsRlFYUnFTbVpQV1ZkemVqbG5PVnBYTTNoUGVuWnZiMUpGU3pFMU1XaEdVME53ZFVkSFVXWkJNRU52UlVWRFNWRkRhR3hwVEdrd09HRlFDamxLU3pkbGVGZHdNVVZWYTBWelRGRTRlRk16YXpaa1MzcExNRGh5TVVaTE0ycEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtNUJSRUpyUVdwQk5WSnVjMklLWWs5Mk9EVTVORkpuTmpack9HVm9kVWRMVW5rNWRIVjNia2RsYUN0TmN5ODNVVWc1WVhwTmNubG1OR3h4TWsxWFZ6Wm5jek52U2tabFdXT
 
kRUVU12YndwRGRYa3dTM0ZoVTB0TWFrd3JRbXByZHpJd05saDVaR281VjJONGVtazJiaTlJWlhGdWVHbGFja0o2Tnprd2EzQnJkMnB6ZUU5S2JtRlZTVkY1WnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],
 "timestampVerificationData": {}}, "messageSignature": {"messageDigest": 
{"algorithm": "SHA2_256", "digest": 
"wIvGWoGXHB3VeDGCgmUDNpRmx+ZzdNFkZRmt8FIHtoQ="}, "signature": 
"MEUCIQDi7qDkG7Pd/hJbbuB+C0fQul9Th9pcnwcb4AZgHV4/OQIgaT7jfH4qgPmbNHNco1i1WVu53KvAjr5mPHDeAqV9E8o="}}
+{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDJjCCAq2gAwIBAgIUDyNFtKzxsS/hKZli6j+0pSAVnJYwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODEyMjEzODA5WhcNMjYwODEyMjE0ODA5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFcKzlOwyDhgYyFEsg1WTANwPTyLZ341KV/txV0ZBCktbuJ6lPGUuqT1d88pTA3ddZohoVQqhB1R6dXQejSZo96OCAcwwggHIMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUKEBQYaiV3BCM6jZpq0tRSOBT5ZwwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0RAQH/BBUwE4ERdGhvbWFzQHB5dGhvbi5vcmcwKQYKKwYBBAGDvzABAQQbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMCsGCisGAQQBg78wAQgEHQwbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMFsGCisGAQQBg78wARgETQxLQ2hVeE1UTXdNREkzTWpZek1UVXpOekkwT0RjNU1EVVNIMmgwZEhCek9pVXlSaVV5Um1GalkyOTFiblJ6TG1kdmIyZHNaUzVqYjIwMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGf9+lNNwAABAMARzBFAiEA2KAVf3uYGkLITUKLakuOsofO+/LmesA9VqhRGoI6lZECIAxe7
 
b5WbNuGjudihJ9E+n5qwXmGN3h9KHJoUUzs38+nMAoGCCqGSM49BAMDA2cAMGQCMCo1eMW0YKspL3ek7fviEVw+yqLVsDcd6Eqhk4QMCTAuty8/k/Q1SjgknPdEzQ5VsAIwcRd8ULUJS9L4U1XLsv320jUE9Q/gArOog+I5Lp6GYlwI0BQuTKqB2Q0RtImvPTEb"},"tlogEntries":[{"logIndex":"2441123454","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1786570690","inclusionPromise":{"signedEntryTimestamp":"MEUCIHkQAX1WjKx2YzOOcV6Vqk8a3HRvTOKcgkf5sv2lhPDYAiEA5ZuhSB7HZdH299pDg4+iIvMYrw+r/8VD0noKgzFYEJI="},"inclusionProof":{"logIndex":"2319219192","rootHash":"UqmttF8wGwT/hVHuKV33pJAL+Fr3dq3zaJ4FDiZeCp0=","treeSize":"2319219240","hashes":["Dv75o0xBOpkEtiaUAVXmHhy31FHtbBvdvW0625aBxqk=","gn0ho6O4sXlOVuBbCc1Umk14DyTPahvCjvqxfTdVEg8=","vRACyrmr1SMffCYL13VlV4aC2wf0prLgIPtdRHTDWIE=","t/ZfvQYhBl7naWvy4bn2bhNEHUNWntEXijjxWxX+aPY=","C9PxoIMFQG2mg0rYZdvCxNwh8lD6ssPihWCav8TPXqA=","J/GW95TgkKOQ4xzq3LJIQUReaqMIvdeSq/V2opXf6ag=","HSqdjV9K59+toi383qwMa/hInRV2Wdf1MuvF6rKLHZw=","A
 
u6tRfibTPIja6fDRd0/It+nqzfAXyJYx2eVO5Cc+JI=","NDzlHSXr2DQHJFczQZ5Pg0EEbEI3bcTT+QXRSkrlleg=","6rWxKaESvwWL0hl2YZStGOimiLOzPvLATS/BWnstazQ=","sx3EvhD66xa6viDlAjW2Po40RHkoWUTYRzkATOwj9jU=","MAC8G2pJ/0T1Iia9RDzMc80G6hD5Ldil01IstwGCo2c=","9L/+iGPHgmgJ7WDUcpE1NUjV+sbHopVooLacs2tRsW4=","2cOWZiAWXaEaHmrvid1tSi5zfmMXJKuK+l0kbGctdyY=","/3m8sK7ftyBCGxHv/wN5Ui9LM7Mwoy3jP7a0PXk86gU=","kJhEBqXFhOI2S7AAcYZnFkOVk4oFlfOW0PRFiINwCTE=","t0mkaxQ4fw9aKmIfYOnoyfYFOplQHNdkgJcfamLv1ys=","XSxOwG3OOcLZKmz63eZsCs2meyCMl1YtmU2DNsxBM5Q=","mYkFdqU5C9m3w88wTn9l6UpYo+PI93c232s+vBiBEpM=","ygTG08vB2EEmJQPXRvF5H06Tlac72AkODENK7PhCPkw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev
 - 
1193050959916656506\n2319219240\nUqmttF8wGwT/hVHuKV33pJAL+Fr3dq3zaJ4FDiZeCp0=\n\n—
 rekor.sigstore.dev 
wNI9ajBFAiEA2y66uMcmOZrURycmmxBuItrhybtDMHZ3R32QPNrvFJMCIGiiyIYauZLvKU5oKCc+BEmRg+LdkgSNNq619oO47jbY\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3
 
BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1Yzg0NjJhZjU3OTBiYWY0M2EzMjFhMTU1OWRiZTBkYjA2ZDFiZTQzMDBmYjg1ZmI1M2M0MDA2MDY2OGU1NDhhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRG5QVURheDkrVzlrZ3BqaDkxbnBBOHUrcWl1dFRoaDRVQmhDcEFaQUtzMkFpRUFwblpxQzdHY1RVVS9Qb2RSUElnMmR0dGttWlVqWVFTdkZQdDRTM0JBYnA0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUktha05EUVhFeVowRjNTVUpCWjBsVlJIbE9SblJMZW5oelV5OW9TMXBzYVRacUt6QndVMEZXYmtwWmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFUlhsTmFrVjZUMFJCTlZkb1kwNU5hbGwzVDBSRmVVMXFSVEJQUkVFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZHWTB0NmJFOTNlVVJvWjFsNVJrVnpaekZYVkVGT2QxQlVlVXhhTXpReFMxWXZkSGdLVmpCYVFrTnJkR0oxU2pac1VFZFZkWEZVTVdRNE9IQlVRVE5rWkZwdmFHOVdVWEZvUWpGU05tUllVV1ZxVTFwdk9UWlBRMEZqZDNkblowaEpUVUUwUndwQk1WVmtSSGRGUWk
 
5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZMUlVKUkNsbGhhVll6UWtOTk5tcGFjSEV3ZEZKVFQwSlVOVnAzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoM1dVUldVakJTUVZGSUwwSkNWWGRGTkVWU1pFZG9kbUpYUm5wUlNFSTFaRWRvZG1KcE5YWmpiV04zUzFGWlMwdDNXVUpDUVVkRWRucEJRZ3BCVVZGaVlVaFNNR05JVFRaTWVUbG9XVEpPZG1SWE5UQmplVFZ1WWpJNWJtSkhWWFZaTWpsMFRVTnpSME5wYzBkQlVWRkNaemM0ZDBGUlowVklVWGRpQ21GSVVqQmpTRTAyVEhrNWFGa3lUblprVnpVd1kzazFibUl5T1c1aVIxVjFXVEk1ZEUxR2MwZERhWE5IUVZGUlFtYzNPSGRCVW1kRlZGRjRURkV5YUZZS1pVVXhWVlJZWkU1U1JXdDZWRmR3V21Wck1WVldXSEJQWld0cmQxUXdVbXBPVlRGRlZsWk9TVTF0WjNkYVJXaERaV3M1Y0ZaWWJGTmhWbFkxVlcweFJ3cGhiR3Q1VDFSR2FXSnNTalpVUnpGclpHMUplVnBJVG1GVmVsWnhXV3BKZDAxSlIwdENaMjl5UW1kRlJVRmtXalZCWjFGRFFraDNSV1ZuUWpSQlNGbEJDak5VTUhkaGMySklSVlJLYWtkU05HTnRWMk16UVhGS1MxaHlhbVZRU3pNdmFEUndlV2RET0hBM2J6UkJRVUZIWmprcmJFNU9kMEZCUWtGTlFWSjZRa1lLUVdsRlFUSkxRVlptTTNWWlIydE1TVlJWUzB4aGEzVlBjMjltVHlzdlRHMWxjMEU1Vm5Gb1VrZHZTVFpzV2tWRFNV
 
RjRaVGRpTlZkaVRuVkhhblZrYVFwb1NqbEZLMjQxY1hkWWJVZE9NMmc1UzBoS2IxVlZlbk16T0N0dVRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVkwRk5SMUZEVFVOdk1XVk5WekJaUzNOd0Nrd3paV3MzWm5acFJWWjNLM2x4VEZaelJHTmtOa1Z4YUdzMFVVMURWRUYxZEhrNEwyc3ZVVEZUYW1kcmJsQmtSWHBSTlZaelFVbDNZMUprT0ZWTVZVb0tVemxNTkZVeFdFeHpkak15TUdwVlJUbFJMMmRCY2s5dlp5dEpOVXh3TmtkWmJIZEpNRUpSZFZSTGNVSXlVVEJTZEVsdGRsQlVSV0lLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6DADAgEAMIIE3wYJKoZIhvcNAQcCoIIE0DCCBMwCAQMxDTALBglghkgBZQMEAgEwgcEGCyqGSIb3DQEJEAEEoIGxBIGuMIGrAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgBgi6df4N5ChG9KSjxBBcsWxXCaZ7uXjQJyi0EOEQxD4CFDnI6c5h7ruRC4NuBnR4Eu/UKyrtGA8yMDI2MDgxMjIxMzgxMFowAwIBAQIId424rXU/wEKgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoIICFDCCAhAwggGWoAMCAQICFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMDMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQwHhcNMjUwNDA4MDY1OTQzWhcNMzUwNDA
 
2MDY1OTQzWjAuMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxFTATBgNVBAMTDHNpZ3N0b3JlLXRzYTB2MBAGByqGSM49AgEGBSuBBAAiA2IABOK2tmfISjYoNk/ZBYwgE6Bht9I5MvlkL9wcy/pir4dUijUf1MLsLHzQoOLK8qGAHfBOorKL1QNzOGqDXZvUA4udGfJ0xMr6oHwz7UyMFyLX4lvwBX9Ve7sJG5AKI9McXKNqMGgwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBSJ/XlDh8/QZUbDAkbHLHNbfbTrAzAfBgNVHSMEGDAWgBSY7AHvf7tR/9SVHm+KiJhTB4nOvzAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAKBggqhkjOPQQDAwNoADBlAjA7abFf+imjtKshf1DLF9mklFykBXaBk6bUBnNH7atXLLpRzxhunbJsjDXdyQfhtxECMQDmo7wXI6SZim+Db/tk2qI/FHOfm+ooehVwgiq2kqrqXtO86rMDHFyU3tXBMbx775cxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgxMjIxMzgxMFowLwYJKoZIhvcNAQkEMSIEIAvzw+gPARVyzwZUhqJyRbfNgNekKPFPO8dTBs2zG+vkMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1Qv
 
DJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMEhWKqD6lf5RcX7lI+2/SqJI99aHCWRFKkS9vDSlhiXmMDBil7GYH1CqJAuNAAALUAIwRlZXCQo9Ytk5orTwNxHR++VyTKPnedHh7P3oRlSjgK9NkJVnvkTfXBBgHGjmVcID"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"XIRir1eQuvQ6MhoVWdvg2wbRvkMA+4X7U8QAYGaOVIo="},"signature":"MEUCIDnPUDax9+W9kgpjh91npA8u+qiutThh4UBhCpAZAKs2AiEApnZqC7GcTUU/PodRPIg2dttkmZUjYQSvFPt4S3BAbp4="}}

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.932369904 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:01.938370154 +0200
@@ -1,6 +1,6 @@
-mtime: 1786312529
-commit: dbfdd41cea966f9f8c52f560faa4bfbf69985b8f6a72bff8984c10913233b5cf
+mtime: 1788802631
+commit: e24f32c25aa84fbf2ecb177e934005ac9bc1d6d33b8602a483bfcf8d1642a793
 url: https://src.opensuse.org/python-interpreters/python312
-revision: dbfdd41cea966f9f8c52f560faa4bfbf69985b8f6a72bff8984c10913233b5cf
+revision: e24f32c25aa84fbf2ecb177e934005ac9bc1d6d33b8602a483bfcf8d1642a793
 projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj
 

++++++ bpo-31046_ensurepip_honours_prefix.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:01.997372613 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:02.006372988 +0200
@@ -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.12.10/Doc/library/ensurepip.rst
+Index: Python-3.12.14/Doc/library/ensurepip.rst
 ===================================================================
---- Python-3.12.10.orig/Doc/library/ensurepip.rst      2025-04-08 
13:35:47.000000000 +0200
-+++ Python-3.12.10/Doc/library/ensurepip.rst   2025-04-11 21:16:06.140273604 
+0200
+--- Python-3.12.14.orig/Doc/library/ensurepip.rst      2026-09-04 
19:11:05.368520921 +0200
++++ Python-3.12.14/Doc/library/ensurepip.rst   2026-09-04 19:11:22.285696209 
+0200
 @@ -61,7 +61,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.12.10/Lib/ensurepip/__init__.py
+Index: Python-3.12.14/Lib/ensurepip/__init__.py
 ===================================================================
---- Python-3.12.10.orig/Lib/ensurepip/__init__.py      2025-04-11 
21:04:42.789443156 +0200
-+++ Python-3.12.10/Lib/ensurepip/__init__.py   2025-04-11 21:13:01.303399067 
+0200
+--- Python-3.12.14.orig/Lib/ensurepip/__init__.py      2026-09-04 
19:11:05.368520921 +0200
++++ Python-3.12.14/Lib/ensurepip/__init__.py   2026-09-04 19:11:22.286728089 
+0200
 @@ -120,27 +120,27 @@
      os.environ['PIP_CONFIG_FILE'] = os.devnull
  
@@ -123,10 +123,10 @@
          upgrade=args.upgrade,
          user=args.user,
          verbosity=args.verbosity,
-Index: Python-3.12.10/Lib/test/test_ensurepip.py
+Index: Python-3.12.14/Lib/test/test_ensurepip.py
 ===================================================================
---- Python-3.12.10.orig/Lib/test/test_ensurepip.py     2025-04-11 
21:04:44.274413027 +0200
-+++ Python-3.12.10/Lib/test/test_ensurepip.py  2025-04-11 21:13:01.303691075 
+0200
+--- Python-3.12.14.orig/Lib/test/test_ensurepip.py     2026-09-04 
19:11:05.368520921 +0200
++++ Python-3.12.14/Lib/test/test_ensurepip.py  2026-09-04 19:11:22.287163350 
+0200
 @@ -105,6 +105,17 @@
              unittest.mock.ANY,
          )
@@ -145,11 +145,11 @@
      def test_bootstrapping_with_user(self):
          ensurepip.bootstrap(user=True)
  
-Index: Python-3.12.10/Makefile.pre.in
+Index: Python-3.12.14/Makefile.pre.in
 ===================================================================
---- Python-3.12.10.orig/Makefile.pre.in        2025-04-11 21:04:58.388346212 
+0200
-+++ Python-3.12.10/Makefile.pre.in     2025-04-11 21:13:01.304095180 +0200
-@@ -1914,7 +1914,7 @@
+--- Python-3.12.14.orig/Makefile.pre.in        2026-09-04 19:11:18.858660700 
+0200
++++ Python-3.12.14/Makefile.pre.in     2026-09-04 19:11:22.287588401 +0200
+@@ -1919,7 +1919,7 @@
                        install|*) ensurepip="" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -158,7 +158,7 @@
        fi
  
  .PHONY: altinstall
-@@ -1925,7 +1925,7 @@
+@@ -1930,7 +1930,7 @@
                        install|*) ensurepip="--altinstall" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -167,10 +167,10 @@
        fi
  
  .PHONY: commoninstall
-Index: 
Python-3.12.10/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
+Index: 
Python-3.12.14/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.12.10/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst  
   2025-04-11 21:13:01.304672632 +0200
++++ 
Python-3.12.14/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst  
   2026-09-04 19:11:22.287978216 +0200
 @@ -0,0 +1 @@
 +A directory prefix can now be specified when using :mod:`ensurepip`.
 

++++++ bsc1263083-http-cookies-atob-utf8.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:02.042374488 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:02.050374822 +0200
@@ -10,10 +10,10 @@
  Lib/test/test_http_cookies.py |   27 ++++++++++++++-------------
  2 files changed, 17 insertions(+), 16 deletions(-)
 
-Index: Python-3.12.13/Lib/http/cookies.py
+Index: Python-3.12.14/Lib/http/cookies.py
 ===================================================================
---- Python-3.12.13.orig/Lib/http/cookies.py    2026-08-08 22:17:38.717876965 
+0200
-+++ Python-3.12.13/Lib/http/cookies.py 2026-08-08 22:17:42.129593311 +0200
+--- Python-3.12.14.orig/Lib/http/cookies.py    2026-09-04 16:20:20.949697392 
+0200
++++ Python-3.12.14/Lib/http/cookies.py 2026-09-04 18:51:53.108598022 +0200
 @@ -389,18 +389,18 @@
          return '<%s: %s>' % (self.__class__.__name__, self.OutputString())
  
@@ -36,10 +36,10 @@
          // end hiding -->
          </script>
          """ % (output_encoded,)
-Index: Python-3.12.13/Lib/test/test_http_cookies.py
+Index: Python-3.12.14/Lib/test/test_http_cookies.py
 ===================================================================
---- Python-3.12.13.orig/Lib/test/test_http_cookies.py  2026-08-08 
22:17:38.718292458 +0200
-+++ Python-3.12.13/Lib/test/test_http_cookies.py       2026-08-08 
22:17:42.129751609 +0200
+--- Python-3.12.14.orig/Lib/test/test_http_cookies.py  2026-09-04 
16:20:20.950146018 +0200
++++ Python-3.12.14/Lib/test/test_http_cookies.py       2026-09-04 
18:51:53.108978502 +0200
 @@ -1,10 +1,10 @@
  # Simple test suite for http/cookies.py
 -import base64

++++++ 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-09-07 19:37:11.000000000 +0200
@@ -0,0 +1,6 @@
+_build.*
+*.obscpio
+*.osc
+.osc
+.pbuild
+python312-3.12.*-build

++++++ doc-py38-to-py36.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:02.321386116 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:02.330386491 +0200
@@ -14,10 +14,10 @@
  Doc/tools/extensions/pydoc_topics.py          |   22 +++++-----
  13 files changed, 126 insertions(+), 118 deletions(-)
 
-Index: Python-3.12.12/Doc/Makefile
+Index: Python-3.12.14/Doc/Makefile
 ===================================================================
---- Python-3.12.12.orig/Doc/Makefile   2025-10-09 13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/Makefile        2025-11-16 00:10:17.204996992 +0100
+--- Python-3.12.14.orig/Doc/Makefile   2026-09-04 19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/Makefile        2026-09-04 19:11:32.314800126 +0200
 @@ -14,15 +14,15 @@
  SOURCES      =
  DISTVERSION  = $(shell $(PYTHON) tools/extensions/patchlevel.py)
@@ -38,10 +38,10 @@
                  $(PAPEROPT_$(PAPER)) \
                  $(SPHINXOPTS) $(SPHINXERRORHANDLING) \
                  . build/$(BUILDER) $(SOURCES)
-Index: Python-3.12.12/Doc/conf.py
+Index: Python-3.12.14/Doc/conf.py
 ===================================================================
---- Python-3.12.12.orig/Doc/conf.py    2025-11-16 00:09:22.481046078 +0100
-+++ Python-3.12.12/Doc/conf.py 2025-11-16 00:09:33.435219937 +0100
+--- Python-3.12.14.orig/Doc/conf.py    2026-09-04 19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/conf.py 2026-09-04 19:11:32.315490885 +0200
 @@ -11,6 +11,8 @@
  from importlib import import_module
  from importlib.util import find_spec
@@ -69,7 +69,7 @@
  html_context = {
      "is_deployment_preview": is_deployment_preview,
      "repository_url": repository_url or None,
-@@ -588,6 +590,16 @@
+@@ -589,6 +591,16 @@
  }
  extlinks_detect_hardcoded_links = True
  
@@ -86,10 +86,10 @@
  # Options for c_annotations extension
  # -----------------------------------
  
-Index: Python-3.12.12/Doc/tools/check-warnings.py
+Index: Python-3.12.14/Doc/tools/check-warnings.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/check-warnings.py    2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/check-warnings.py 2025-11-16 00:09:33.435482474 
+0100
+--- Python-3.12.14.orig/Doc/tools/check-warnings.py    2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/check-warnings.py 2026-09-04 19:11:32.315764391 
+0200
 @@ -228,7 +228,8 @@
              print(filename)
              for warning in warnings:
@@ -109,10 +109,10 @@
          for warning in warnings
          if "Doc/" in warning
      }
-Index: Python-3.12.12/Doc/tools/extensions/audit_events.py
+Index: Python-3.12.14/Doc/tools/extensions/audit_events.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/audit_events.py   2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/audit_events.py        2025-11-16 
00:09:38.867031380 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/audit_events.py   2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/audit_events.py        2026-09-04 
19:11:32.315800136 +0200
 @@ -1,9 +1,6 @@
  """Support for documenting audit events."""
  
@@ -253,10 +253,10 @@
      ) -> nodes.row:
          row = nodes.row()
          name_node = nodes.paragraph("", nodes.Text(name))
-Index: Python-3.12.12/Doc/tools/extensions/availability.py
+Index: Python-3.12.14/Doc/tools/extensions/availability.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/availability.py   2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/availability.py        2025-11-16 
00:09:33.436104069 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/availability.py   2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/availability.py        2026-09-04 
19:11:32.316408836 +0200
 @@ -1,8 +1,6 @@
  """Support for documenting platform availability"""
  
@@ -310,10 +310,10 @@
      app.add_directive("availability", Availability)
  
      return {
-Index: Python-3.12.12/Doc/tools/extensions/c_annotations.py
+Index: Python-3.12.14/Doc/tools/extensions/c_annotations.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/c_annotations.py  2025-11-16 
00:09:33.421429756 +0100
-+++ Python-3.12.12/Doc/tools/extensions/c_annotations.py       2025-11-16 
00:09:33.436337970 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/c_annotations.py  2026-09-04 
19:11:30.557269581 +0200
++++ Python-3.12.14/Doc/tools/extensions/c_annotations.py       2026-09-04 
19:11:32.316618592 +0200
 @@ -9,22 +9,18 @@
  * Set ``stable_abi_file`` to the path to stable ABI list.
  """
@@ -443,10 +443,10 @@
      return {
          "version": "1.0",
          "parallel_read_safe": True,
-Index: Python-3.12.12/Doc/tools/extensions/changes.py
+Index: Python-3.12.14/Doc/tools/extensions/changes.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/changes.py        2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/changes.py     2025-11-16 
00:09:33.436590030 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/changes.py        2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/changes.py     2026-09-04 
19:11:32.316824850 +0200
 @@ -1,7 +1,5 @@
  """Support for documenting version of changes, additions, deprecations."""
  
@@ -482,10 +482,10 @@
      # Override Sphinx's directives with support for 'next'
      app.add_directive("versionadded", PyVersionChange, override=True)
      app.add_directive("versionchanged", PyVersionChange, override=True)
-Index: Python-3.12.12/Doc/tools/extensions/glossary_search.py
+Index: Python-3.12.14/Doc/tools/extensions/glossary_search.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/glossary_search.py        
2025-11-16 00:09:33.421856281 +0100
-+++ Python-3.12.12/Doc/tools/extensions/glossary_search.py     2025-11-16 
00:09:33.436945736 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/glossary_search.py        
2026-09-04 19:11:30.557633066 +0200
++++ Python-3.12.14/Doc/tools/extensions/glossary_search.py     2026-09-04 
19:11:32.316992036 +0200
 @@ -1,18 +1,14 @@
  """Feature search results for glossary items prominently."""
  
@@ -516,10 +516,10 @@
      app.connect('doctree-resolved', process_glossary_nodes)
      app.connect('build-finished', write_glossary_json)
  
-Index: Python-3.12.12/Doc/tools/extensions/implementation_detail.py
+Index: Python-3.12.14/Doc/tools/extensions/implementation_detail.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/implementation_detail.py  
2025-10-09 13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/implementation_detail.py       
2025-11-16 00:09:33.437321346 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/implementation_detail.py  
2026-09-04 19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/implementation_detail.py       
2026-09-04 19:11:32.317177786 +0200
 @@ -1,17 +1,10 @@
  """Support for marking up implementation details."""
  
@@ -570,10 +570,10 @@
      app.add_directive("impl-detail", ImplementationDetail)
  
      return {
-Index: Python-3.12.12/Doc/tools/extensions/issue_role.py
+Index: Python-3.12.14/Doc/tools/extensions/issue_role.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/issue_role.py     2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/issue_role.py  2025-11-16 
00:09:33.437543863 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/issue_role.py     2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/issue_role.py  2026-09-04 
19:11:32.317339942 +0200
 @@ -1,22 +1,18 @@
  """Support for referencing issues in the tracker."""
  
@@ -619,10 +619,10 @@
      app.add_role("issue", BPOIssue())
      app.add_role("gh", GitHubIssue())
  
-Index: Python-3.12.12/Doc/tools/extensions/misc_news.py
+Index: Python-3.12.14/Doc/tools/extensions/misc_news.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/misc_news.py      2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/misc_news.py   2025-11-16 
00:09:33.437781606 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/misc_news.py      2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/misc_news.py   2026-09-04 
19:11:32.317517066 +0200
 @@ -1,7 +1,5 @@
  """Support for including Misc/NEWS."""
  
@@ -675,10 +675,10 @@
      app.add_directive("miscnews", MiscNews)
  
      return {
-Index: Python-3.12.12/Doc/tools/extensions/patchlevel.py
+Index: Python-3.12.14/Doc/tools/extensions/patchlevel.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/patchlevel.py     2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/patchlevel.py  2025-11-16 
00:09:33.437983170 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/patchlevel.py     2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/patchlevel.py  2026-09-04 
19:11:32.317684591 +0200
 @@ -3,7 +3,7 @@
  import re
  import sys
@@ -716,10 +716,10 @@
      version = f"{info.major}.{info.minor}"
      release = f"{info.major}.{info.minor}.{info.micro}"
      if info.releaselevel != "final":
-Index: Python-3.12.12/Doc/tools/extensions/pydoc_topics.py
+Index: Python-3.12.14/Doc/tools/extensions/pydoc_topics.py
 ===================================================================
---- Python-3.12.12.orig/Doc/tools/extensions/pydoc_topics.py   2025-10-09 
13:07:00.000000000 +0200
-+++ Python-3.12.12/Doc/tools/extensions/pydoc_topics.py        2025-11-16 
00:09:33.438175026 +0100
+--- Python-3.12.14.orig/Doc/tools/extensions/pydoc_topics.py   2026-09-04 
19:11:05.045517575 +0200
++++ Python-3.12.14/Doc/tools/extensions/pydoc_topics.py        2026-09-04 
19:11:32.317853320 +0200
 @@ -1,21 +1,23 @@
  """Support for building "topic help" for pydoc."""
  

++++++ fix_configure_rst.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:02.438390992 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:02.446391326 +0200
@@ -3,10 +3,10 @@
  Misc/NEWS               |    2 +-
  2 files changed, 1 insertion(+), 3 deletions(-)
 
-Index: Python-3.12.13/Doc/using/configure.rst
+Index: Python-3.12.14/Doc/using/configure.rst
 ===================================================================
---- Python-3.12.13.orig/Doc/using/configure.rst        2026-03-06 
20:22:08.230317302 +0100
-+++ Python-3.12.13/Doc/using/configure.rst     2026-03-06 20:22:22.242697945 
+0100
+--- Python-3.12.14.orig/Doc/using/configure.rst        2026-09-04 
19:11:05.228519471 +0200
++++ Python-3.12.14/Doc/using/configure.rst     2026-09-04 19:11:26.329970874 
+0200
 @@ -640,13 +640,11 @@
  
  See ``Mac/README.rst``.
@@ -21,11 +21,11 @@
  .. option:: --enable-framework=INSTALLDIR
  
     Create a Python.framework rather than a traditional Unix install. Optional
-Index: Python-3.12.13/Misc/NEWS
+Index: Python-3.12.14/Misc/NEWS
 ===================================================================
---- Python-3.12.13.orig/Misc/NEWS      2026-03-06 20:22:08.230317302 +0100
-+++ Python-3.12.13/Misc/NEWS   2026-03-06 20:22:22.248451941 +0100
-@@ -15317,7 +15317,7 @@
+--- Python-3.12.14.orig/Misc/NEWS      2026-09-04 19:11:05.228519471 +0200
++++ Python-3.12.14/Misc/NEWS   2026-09-04 19:11:26.335738174 +0200
+@@ -15514,7 +15514,7 @@
  - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
  
  - bpo-43795: The list in :ref:`limited-api-list` now shows the public name

++++++ python-3.3.0b1-fix_date_time_compiler.patch ++++++
--- /var/tmp/diff_new_pack.WV1lUH/_old  2026-09-11 19:00:02.668400578 +0200
+++ /var/tmp/diff_new_pack.WV1lUH/_new  2026-09-11 19:00:02.685401286 +0200
@@ -2,11 +2,11 @@
  Makefile.pre.in |    7 +++++++
  1 file changed, 7 insertions(+)
 
-Index: Python-3.12.4/Makefile.pre.in
+Index: Python-3.12.14/Makefile.pre.in
 ===================================================================
---- Python-3.12.4.orig/Makefile.pre.in
-+++ Python-3.12.4/Makefile.pre.in
-@@ -1337,11 +1337,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+--- Python-3.12.14.orig/Makefile.pre.in        2026-09-04 19:11:16.991641355 
+0200
++++ Python-3.12.14/Makefile.pre.in     2026-09-04 19:11:18.858660700 +0200
+@@ -1342,11 +1342,18 @@
                $(DTRACE_OBJS) \
                $(srcdir)/Modules/getbuildinfo.c
        $(CC) -c $(PY_CORE_CFLAGS) \

Reply via email to