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) \
