Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python315 for openSUSE:Factory checked in at 2026-08-01 18:31:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python315 (Old) and /work/SRC/openSUSE:Factory/.python315.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python315" Sat Aug 1 18:31:00 2026 rev:17 rq:1368661 version:3.15.0~b4 Changes: -------- --- /work/SRC/openSUSE:Factory/python315/python315.changes 2026-07-15 17:01:57.443833352 +0200 +++ /work/SRC/openSUSE:Factory/.python315.new.16738/python315.changes 2026-08-01 18:33:29.800434002 +0200 @@ -1,0 +2,529 @@ +Thu Jul 30 13:37:06 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 3.15.0~b4: + - Security + - 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-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-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. + - gh-150743: http.client now limits the number of + chunked-response trailer lines it will read to + max_response_headers (100 by default), 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-143927: Normalize all line endings (CR, CRLF, and LF) to + LF+TAB when writing multi-line configparser values + (bsc#1269066, CVE-2026-0864). + - Core and Builtins + - gh-153298: Fixes a data race in types.GenericAlias + __parameters__ initialization on free-threading builds. + - gh-153205: Fix a potential SystemError during vector calls + when memory allocation fails. A MemoryError is now raised + instead. + - gh-152682: Fix NULL pointer dereference in compile() when + a reserved name (e.g. __classdict__) is used as a type + parameter name and memory allocation fails while formatting + the error message. + - gh-152635: Fix a crash caused when running out of memory + creating a _interpchannels channel. Now a MemoryError is + correctly raised. + - gh-152405: Do not expose the internal mapping of + types.MappingProxyType when performing rich-compare + operations with non-stdlib types. Previously, it was + possible to mutate the internal mapping of a proxy there. + Now we pass not the original dict instance, but its copy, + when dealing with custom types. + - gh-152492: collections.OrderedDict update method can now + accept frozendict as an argument. + - gh-152375: Fix undefined behaviour when a sys.monitoring + callback raised an exception while the program was + following a branch or loop. + - gh-152235: Defer GC tracking of set.intersection(), + set.difference(), set.symmetric_difference(), set.union() + and set.__sub__. + - gh-152235: Defer GC tracking of a set or frozenset to the + end of its construction from iterable. + - gh-152228: Fix an assertion failure when python is built in + a debug mode that happened in str.replace() under a limited + memory situation. + - gh-151722: frozendict.fromkeys() now only tracks the + frozendict in the garbage collector once the dictionary is + fully initialized. + - gh-151763: Fixes possible crash on types.CodeType + deallocation. + - gh-152020: On the free-threaded build, asyncio.all_tasks() + no longer loses eager-started tasks when called from + a thread other than the one running the event loop. + - gh-151763: Fix a potential crash in compile(), exec(), + eval() and ast.parse() when an allocation fails: the parser + or compiler could return without setting an exception. + - gh-151912: Fixed a crash in type() when selecting + a metaclass whose tp_new slot is NULL. Such metaclasses are + now rejected with TypeError instead of causing a NULL + pointer dereference. + - gh-151773: Fix a crash in contextvars.ContextVar.set() when + memory allocation fails. + - gh-151672: Fix an inconsistency where calling + __lazy_import__ with a string fromlist would return + a types.LazyImportType that resolves to the named member, + rather than the module being imported. + - gh-151619: Fix an issue where using non-module global or + builtin namespaces (such as dictionaries passed to exec()) + could cause cached global loads to produce unresolved lazy + imports. + - gh-151126: Fix a crash when sharing memoryview objects + between interpreters fails due to running out of memory. It + now raises a proper MemoryError. + - gh-151644: Fix a data race in sys.setdlopenflags() and + sys.getdlopenflags() when called concurrently in the + free-threaded build. The underlying + _PyImport_GetDLOpenFlags and _PyImport_SetDLOpenFlags + functions now use atomic load/store operations. + - gh-151126: Avoid possible crash in _winapi.c where a device + has no memory left. Now it properly raises a MemoryError. + - gh-151029: On Linux, fix sys.remote_exec() unable to find + remote writable memory when libpython replaced on disk. + - gh-150459: Fix SyntaxError error message for from x lazy + import y. Raise SyntaxWarning on from . lazy import x (with + whitespace between the dots and a module named lazy). + - gh-150858: Fix a data race while changing __qualname__ of + a type concurrently on free-threaded builds. + - gh-144774: Fix data race in BaseException when an exception + is copied while being mutated. + - gh-150411: Fix a data race in the free-threaded build when + gc.get_count() reads the young generation allocation count + while another thread updates it. + - gh-149689: Fix missing error propagation in parser action + helpers when memory allocation fails. + - gh-149162: Fix a potential deadlock in + PyUnicode_InternFromString() and other interning functions + in the free-threaded build when called from C++ static + local initializers. + - gh-148825: Fix build error if specialization is disabled. + - Library + - gh-153695: Hashing a sqlite3.Row that contains an + unhashable value now raises TypeError instead of + SystemError. + - gh-153658: Fix sqlite3.Connection.iterdump() raising + sqlite3.OperationalError when a table name contains + a single quote. + - gh-85943: Fix struct functions raising BytesWarning under + the -bb command line option when a str format is used after + an equal bytes format (or vice versa). The internal format + cache no longer mixes str and bytes keys. + - gh-151292: Store the sample count in profiling.sampling + binary format, as a 64-bit integer, widening from + previously used 32-bit integer. This breaks the existing + recordings. Long or thread-heavy profiling sessions will no + longer fail because of OverflowError. + - gh-153417: Error messages from imaplib.IMAP4.select() and + imaplib.IMAP4.uid() no longer raise BytesWarning under -bb + when the mailbox or command argument is bytes. + - gh-153406: email.utils.parsedate_to_datetime() now raises + ValueError instead of OverflowError when the parsed year or + timezone offset is out of range, matching its documented + behavior. + - gh-153333: The readprofile method of tkinter.Tk now reads + the user’s profile scripts using the encoding declared in + the file, instead of the locale encoding. + - gh-153083: Defer GC tracking of an array.array to the end + of its construction. + - gh-153292: Fix data race in repr of threading.RLock in + free-threading build. + - gh-153293: Fix the live sampling profiler TUI keeping stale + aggregated opcode statistics after a stats reset. + - gh-143990: A tkinter.font.Font created from a named font, + including by copy(), now copies its configured options + rather than the options resolved by Tcl’s font actual, + preserving a size specified in pixels (a negative size). + - gh-148286: Fix undefined behavior in + compression.zstd.ZstdDecompressor.unused_data when + a complete frame was decompressed in a single call. + - gh-153210: Fix crash on array import under a memory + pressure. + - gh-153200: Fix math.isqrt() returning an incorrect result + for arguments not less than 2**64 that are instances of an + int subclass with an overridden comparison operator. + - gh-153068: Fix cProfile.Profile.enable() to no longer + overwrite errors from sys.monitoring. + - gh-153062: Fix a crash when concurrently iterating an + itertools.tee() iterator on the free-threaded build. + - gh-153056: Fix string.Template raising a spurious + ValueError when the pattern attribute is a compiled regular + expression object, which the documentation allows. On the + free-threaded build this also occurred as a data race on + the first concurrent use. + - gh-143921: Narrow the control character check in imaplib + commands: only NUL, CR and LF are now rejected. Other + control characters are valid in quoted strings and can + occur in mailbox names returned by the server, so they are + now accepted and sent quoted. + - gh-153037: Fix ZstdFile raising AttributeError instead of + io.UnsupportedOperation when iterating over a file that is + not open for reading. + - gh-135661: Fix html.parser.HTMLParser: an abruptly closed + empty comment (<!--> or <!--->) no longer extends up to + a later --> in the same feed() call. + - gh-152851: Prevent a crash when allocation fails while + copying a BLAKE-2s/2b object. + - gh-54930: Error responses of + http.server.BaseHTTPRequestHandler to malformed request + lines now include a status line and headers instead of + being sent in the bare HTTP/0.9 style. Only a valid + HTTP/0.9 request (a two-word GET request line) now receives + an HTTP/0.9 style response. + - gh-119592: Fix concurrent.futures.ProcessPoolExecutor + stranding submitted work forever when a worker process + exited upon reaching its max_tasks_per_child limit after + shutdown() was called with wait=False: a replacement worker + is now spawned and the remaining work executed as + documented. If the executor has instead been garbage + collected without shutdown() (gh-152967), or a replacement + worker cannot be started, the remaining futures now fail + with BrokenProcessPool instead of never resolving. A worker + exit racing shutdown(wait=False) can also no longer crash + the executor management thread. + - gh-150579: concurrent.futures now uses lazy imports for its + executor submodules instead of a module __getattr__ hook. + - gh-152951: collections.deque prevent rare crash when + calling extend under high memory pressure conditions. + - gh-150880: Normalize non-extended Windows paths before + appending the wildcard used by os.listdir() and + os.scandir(), making paths with trailing spaces behave + consistently with other filesystem APIs. + - gh-152068: Fixes a bug when a line was split (particularly + on macOS Terminal.app) in the middle of a colorized + keyword, causing the ANSI Color Reset sequence (ESC0m) to + not be properly printed, causing the output to be colored + when it shouldn’t + - gh-152849: Out-of-range float and integer timestamps now + raise OverflowError with the same message. + - gh-152847: Reject a POSIX TZ transition rule with non-digit + characters in the day-of-year field in the pure-Python + zoneinfo parser. + - gh-152718: Fix unbounded memory allocation in the + profiling.sampling binary profile reader when a file + declares more string or frame entries than it contains. + - gh-108280: Connecting imaplib to a server that does not + send a valid IMAP4 greeting (for example a POP3 server + answering on the IMAP port) now raises an error reporting + the server’s response instead of imaplib.IMAP4.error: None. + - gh-63121: imaplib now refreshes the cached capability list + after a successful login() or authenticate(), using the + CAPABILITY response sent by the server or, if none was + sent, by querying it, so that capabilities that become + available only after authentication (such as ENABLE on + Gmail) are recognized. Capabilities advertised in the + server greeting are now also used, avoiding a redundant + CAPABILITY command. + - gh-88574: imaplib no longer fails when a server sends + a spurious blank line after the counted data of a literal, + including after a literal that terminates a response (such + as a mailbox name returned by LIST). Such blank lines are + now skipped without swallowing the following line. + - gh-152502: Detect the curses mouse interface (getmouse(), + the BUTTON* constants, and others) with a configure + capability probe or library macros instead of gating it on + ncurses-specific macros. It is now also available with + other curses implementations that provide it, such as + NetBSD curses and PDCurses (the latter underpins + windows-curses). + - gh-151842: Fix a crash in _interpreters.capture_exception() + when MemoryError happens. + - gh-40038: imaplib now again quotes command arguments when + necessary, for example mailbox names containing a space. + Such quoting was inadvertently disabled when the module was + ported to Python 3, and the arguments are now quoted + according to the RFC 3501 grammar. For backward + compatibility, an argument already enclosed in double + quotes is left unchanged, so code that quotes arguments + itself keeps working. + - gh-50966: Fix unbounded recursion in turtle when a mouse + event handler that moves the turtle is reentered while the + screen is being redrawn, for example with + screen.ondrag(turtle.goto). This could previously crash the + interpreter. + - gh-152569: Fix asyncio.wait() leaking waiting tasks via the + await-graph when racing a future that never resolves. The + waiting task is now discarded from every future’s + awaited_by set once wait() returns, even for pending + futures. + - gh-110357: Importing hashlib no longer logs an error to + stderr when a normally guaranteed hash algorithm is + unavailable in the current runtime (for example under an + OpenSSL FIPS configuration or a build using + --without-builtin-hashlib-hashes). Code that actually uses + the missing algorithm still gets a clear ValueError. + - gh-152356: Fix a hang in profiling.sampling run --blocking + on Windows when the target process exits. The profiler now + finalizes binary profiles instead of continuing to sample + the exited process. + - gh-78335: Update the docstrings of tkinter and tkinter.ttk + widget classes to list all supported widget options, + including options added in Tk 9.0 and 9.1. + tkinter.Menubutton and tkinter.Message previously had no + option list at all. + - gh-151126: Fix two crashes in tkinter and socket modules + initialization under a memory pressure. Sets missing + MemoryError. + - gh-133031: curses.textpad.Textbox now enters and reads back + the non-ASCII characters of an 8-bit locale encoding, + instead of mangling them with a 7-bit mask. + - gh-71880: curses.textpad.Textbox now lets the lower-right + cell of the window be edited. Writing it with addch() would + move the cursor past the end of the window, raising an + error and scrolling a scrollable window, so it is now + written with insch(), which keeps the cursor in place. + - gh-83274: Deallocating a tkinter application from a thread + other than the one it was created in no longer crashes the + interpreter. The underlying Tcl interpreter is leaked + instead, and a RuntimeWarning is reported. + - gh-152305: Fix the pure-Python datetime.time.strftime() + implementation raising AttributeError for the year + directives. ++++ 232 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/python315/python315.changes ++++ and /work/SRC/openSUSE:Factory/.python315.new.16738/python315.changes Old: ---- CVE-2026-11940-tarfile-escape.patch Python-3.15.0b3.tar.xz Python-3.15.0b3.tar.xz.sigstore New: ---- Python-3.15.0b4.tar.xz Python-3.15.0b4.tar.xz.sigstore ----------(Old B)---------- Old:- Remove upstreamed patches: - CVE-2026-11940-tarfile-escape.patch ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python315.spec ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.012544783 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.016544921 +0200 @@ -162,8 +162,8 @@ # _md5.cpython-38m-x86_64-linux-gnu.so %define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so Name: %{python_pkg_name}%{psuffix} -Version: 3.15.0~b3 -%define tarversion 3.15.0b3 +Version: 3.15.0~b4 +%define tarversion 3.15.0b4 %define tarname Python-%{tarversion} Release: 0 Summary: Python 3 Interpreter @@ -230,9 +230,6 @@ # PATCH-FIX-OPENSUSE test_UDPLITE_support.patch gh#python/cpython#149078 [email protected] # improve testing of the presence of IPPROTO_UDPLITE support Patch49: test_UDPLITE_support.patch -# PATCH-FIX-UPSTREAM CVE-2026-11940-tarfile-escape.patch bsc#1268977 [email protected] -# Fix symlink escape via tarfile hardlink-extraction fallback -Patch50: CVE-2026-11940-tarfile-escape.patch #### Python 3.15 DEVELOPMENT PATCHES BuildRequires: autoconf-archive BuildRequires: automake @@ -275,8 +272,8 @@ %if 0%{?suse_version} >= 1500 BuildRequires: python3-python-docs-theme >= 2022.1 %endif - %endif + %endif # end of {with doc} @@ -358,26 +355,6 @@ An easy to use interface for Unix DBM databases, and more specifically, the GNU implementation GDBM. -%package -n %{python_pkg_name}-profiling -Summary: Python Statistical Sampling Profiler -Requires: %{python_pkg_name} = %{version} -%obsolete_python_versioned profiling - -%description -n %{python_pkg_name}-profiling -Statistical sampling profiler as profiling.sampling. This -profiler enables low-overhead performance analysis of running -Python processes without requiring code modification or process -restart. - -Unlike deterministic profilers (cProfile and profile) that -instrument every function call, the sampling profiler -periodically captures stack traces from running processes. -This approach provides virtually zero overhead while achieving -sampling rates of up to 1,000,000 Hz, making it the fastest -sampling profiler available for Python (at the time of its -contribution) and ideal for debugging performance issues in -production environments. - %package -n %{python_pkg_name}-idle Summary: An Integrated Development Environment for Python Requires: %{python_pkg_name} = %{version} @@ -427,6 +404,9 @@ %obsolete_python_versioned typing # python3-xml was merged into python3, now moved into -base Provides: %{python_pkg_name}-xml = %{version} +# profiling subpackage was merged into the `base` subpackage +Obsoletes: %{python_pkg_name}-profiling < %{version}-%{release} +Provides: %{python_pkg_name}-profiling = %{version}-%{release} # Explicitly provided because rpm-build-python (which auto-generates this) # cannot be installed in the base flavor build root due to a bootstrap cycle: # rpm-build-python -> python3-base -> (this package) @@ -721,7 +701,7 @@ for module in \ asyncio compression ctypes collections concurrent email encodings \ ensurepip html http re pathlib _pyrepl \ - importlib json logging multiprocessing pydoc_data unittest \ + importlib json logging multiprocessing profiling pydoc_data unittest \ urllib venv wsgiref test string sysconfig tomllib turtledemo \ xml xmlrpc zipfile zoneinfo __phello__ do @@ -796,7 +776,7 @@ mkdir -p %{buildroot}%{_prefix}/lib/python%{python_abi}/site-packages/__pycache__ # cleanup parts that don't belong -for dir in curses dbm sqlite3 tkinter idlelib profiling; do +for dir in curses dbm sqlite3 tkinter idlelib; do find "%{buildroot}/%{sitedir}/$dir"/* -maxdepth 0 -name "test" -o -exec rm -rf {} + done @@ -929,10 +909,6 @@ %dir %{_datadir}/icons/hicolor/32x32 %dir %{_datadir}/icons/hicolor/48x48 %dir %{_datadir}/icons/hicolor/*/apps - -%files -n %{python_pkg_name}-profiling -%{sitedir}/profiling - # endif for if general %endif @@ -1102,6 +1078,7 @@ %{sitedir}/logging %{sitedir}/multiprocessing %{sitedir}/pathlib +%{sitedir}/profiling %{sitedir}/pydoc_data %{sitedir}/re %{sitedir}/string ++++++ CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.056546300 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.064546577 +0200 @@ -4,11 +4,11 @@ Lib/test/test_xml_etree.py | 10 ++++++++++ 3 files changed, 17 insertions(+) -Index: Python-3.15.0a8/Lib/test/test_pyexpat.py +Index: Python-3.15.0b4/Lib/test/test_pyexpat.py =================================================================== ---- Python-3.15.0a8.orig/Lib/test/test_pyexpat.py 2026-04-08 13:45:33.923094710 +0200 -+++ Python-3.15.0a8/Lib/test/test_pyexpat.py 2026-04-08 13:45:52.854328088 +0200 -@@ -918,6 +918,10 @@ +--- Python-3.15.0b4.orig/Lib/test/test_pyexpat.py 2026-07-30 17:01:51.587822606 +0200 ++++ Python-3.15.0b4/Lib/test/test_pyexpat.py 2026-07-30 17:02:10.146040283 +0200 +@@ -1071,6 +1071,10 @@ self.assertEqual(started, ['doc']) def test_reparse_deferral_disabled(self): @@ -19,10 +19,10 @@ started = [] def start_element(name, _): -Index: Python-3.15.0a8/Lib/test/test_sax.py +Index: Python-3.15.0b4/Lib/test/test_sax.py =================================================================== ---- Python-3.15.0a8.orig/Lib/test/test_sax.py 2026-04-08 13:45:33.923094710 +0200 -+++ Python-3.15.0a8/Lib/test/test_sax.py 2026-04-08 13:45:52.854835623 +0200 +--- Python-3.15.0b4.orig/Lib/test/test_sax.py 2026-07-30 17:01:51.665436436 +0200 ++++ Python-3.15.0b4/Lib/test/test_sax.py 2026-07-30 17:02:10.147605243 +0200 @@ -1241,6 +1241,9 @@ self.assertEqual(result.getvalue(), start + b"<doc></doc>") @@ -33,10 +33,10 @@ def test_flush_reparse_deferral_disabled(self): result = BytesIO() xmlgen = XMLGenerator(result) -Index: Python-3.15.0a8/Lib/test/test_xml_etree.py +Index: Python-3.15.0b4/Lib/test/test_xml_etree.py =================================================================== ---- Python-3.15.0a8.orig/Lib/test/test_xml_etree.py 2026-04-08 13:45:33.923094710 +0200 -+++ Python-3.15.0a8/Lib/test/test_xml_etree.py 2026-04-08 13:45:52.855476530 +0200 +--- Python-3.15.0b4.orig/Lib/test/test_xml_etree.py 2026-07-30 17:01:52.172313387 +0200 ++++ Python-3.15.0b4/Lib/test/test_xml_etree.py 2026-07-30 17:02:10.148338185 +0200 @@ -138,6 +138,11 @@ return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq) @@ -49,7 +49,7 @@ def checkwarnings(*filters, quiet=False): def decorator(test): def newtest(*args, **kwargs): -@@ -1654,9 +1659,11 @@ +@@ -1693,9 +1698,11 @@ self.assert_event_tags(parser, [('end', 'root')]) self.assertIsNone(parser.close()) @@ -61,7 +61,7 @@ def test_simple_xml_chunk_5(self): self.test_simple_xml(chunk_size=5, flush=True) -@@ -1883,6 +1890,9 @@ +@@ -1922,6 +1929,9 @@ self.assert_event_tags(parser, [('end', 'doc')]) ++++++ Python-3.15.0b3.tar.xz -> Python-3.15.0b4.tar.xz ++++++ /work/SRC/openSUSE:Factory/python315/Python-3.15.0b3.tar.xz /work/SRC/openSUSE:Factory/.python315.new.16738/Python-3.15.0b4.tar.xz differ: char 48, line 1 ++++++ Python-3.15.0b3.tar.xz.sigstore -> Python-3.15.0b4.tar.xz.sigstore ++++++ --- /work/SRC/openSUSE:Factory/python315/Python-3.15.0b3.tar.xz.sigstore 2026-06-29 17:31:40.440722133 +0200 +++ /work/SRC/openSUSE:Factory/.python315.new.16738/Python-3.15.0b4.tar.xz.sigstore 2026-08-01 18:33:28.704396201 +0200 @@ -1 +1 @@ -{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIIDJDCCAqmgAwIBAgIUZQc8HC3BVCV8oJD7+JSYknD7hPowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNjIzMTMzMTA0WhcNMjYwNjIzMTM0MTA0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMBfW6m5q1TX1g/9HQHZfDc/TSIxStahYmjRTSusJDlGLExH+ZiJg9rsWQ3NJXapI2IFL176UQLvoF2JXAiipFaOCAcgwggHEMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU9sEAXij4s8GXLTCEYcXiTYKmkGIwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDBSBgorBgEEAYO/MAEYBEQMQkNnY3hNekkwTWpJMUVpWm9kSFJ3Y3pvbE1rWWxNa1puYVhSb2RXSXVZMjl0SlRKR2JHOW5hVzRsTWtadllYVjBhQTCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnvStZHoAAAQDAEgwRgIhAKeQztx4T2Q7mrLnox/6r5XOLzRl3o96jm9MI9tN1ul5AiEAsgn9 xxbGC7C92sD8iH7Fn1Du/haNggNd84cX4H5LFZswCgYIKoZIzj0EAwMDaQAwZgIxANdoTu6n7pAIksnDkAowk+yMs+20S661gpaBs9Vu6+ykGgNLNw1AUBftVHIVr30+FAIxAKY0RGzkqB+qR9tkWvKUZe8DiaQUXemzuppFZe9UgKQOnVE1WhrLERcrs887+W+j7w=="}, "tlogEntries": [{"logIndex": "1927037556", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1782221466", "inclusionPromise": {"signedEntryTimestamp": "MEYCIQCxre/xAuSN6ClcY6uUNU9GCsydKPDVPbt9iY1NMmnn4AIhAKj2DG+As/B6dlQVT0JgOrBTT/3BB4445c+gAkwv7kyK"}, "inclusionProof": {"logIndex": "1805133294", "rootHash": "2tVzL0ysJ8SsCQco/2LiJeOoCzHTUxH9ZYMpcvsZb08=", "treeSize": "1805133379", "hashes": ["l7suGfCnLfypvggTM7KjKSJv2nFWCIbeiyJOJ3zH/YQ=", "KF4k30EVBMdfZGlDfxw+bKCRHAR9UWZzrS8mJKW8jGU=", "IevYAq+VKg0Yw29/zejEY7xfOWtuzgm0i8QCXDj09+U=", "KVNAcRMLmD1JWca/jAoTLpcmox+ciS5xTAkLLD+9ENM=", "jS9kaPoaLqzmJcVgi7kLkeMphEKS/4qEutpCo8e122s=", "prR7iKnWxftJ/sbK8jI4+HkAcFWLEHUAN3lFJxjkivE=", "ACppXOGZYC/V qCkdVkJQ1nhbOP6CUXTY3bdf/u1HyEQ=", "HctR1fjEs1pDGxGHvfyhLBNNAxi/IB8Kux5WEm4V6Ps=", "hYn41smhFjVSYc/5yTk11fIRgxQ1GjvwsIDAaqX2Bgs=", "9q1IekJxYyR+kMudPimESHf3+W/qxT8AogA4SSdS+cs=", "kr83lMoZ5gCq4EmPdP5CqTvhq9i9+nQjeQXdzwSqmSM=", "v8zdK/ozmFIwpIQFNSxTqyji3j3x5z8eT5M6Qa8b/Kc=", "ZXrex+0eF5KisPWFrbV4dU4sABvVX5VCWS6IPJzJTfI=", "+SdULakto7HyVLdyxex2WHH+ActKh/STEFaWrp8/9Ak=", "OMfDh4k9YD0E+t4sjqJsh+vg8D1ueo1cC07exyxmr6s=", "+vHKm4wNwGJ46ceyZ8mePD7Vn1SediStNHCStRoTSWQ=", "5HwWjuGNDisetbiWM0cWIXM65TIM3EJlqk13ntCQlcU=", "NDIRlqxO0IaGr94q86MIU7VCAN3yEEgOHS4loya5lu4=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n1805133379\n2tVzL0ysJ8SsCQco/2LiJeOoCzHTUxH9ZYMpcvsZb08=\n\n\u2014 rekor.sigstore.dev wNI9ajBFAiBKtWYtMfGakAPby2E0Z3nlx25LkB/UDLvLsMyPfaee6QIhAMmBxCwiQ5uAi6ZmzLffjqtvbcxCihw+NI7ilRzzTOS/\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVr b3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2YTkzNWFlMjM0YTY3ZTY1NDk4OTQzNzNiMGNmZWI4MzYxMTgyZDAzYjIxNDQyMzI4YWU5NTk4YWI3NDIyMTI3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRG5FQ2grQm5pdnR2b3kvdTFHdFZIR1JSS1hsdGZmQkRCSHZKTkFNK2QxQUFpRUEvRTdkSno3SGNoM0ozYTYyaXpRQUZYQzYxeVRxRHFyWG1DdzFyVllKQlZzPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUktSRU5EUVhGdFowRjNTVUpCWjBsVldsRmpPRWhETTBKV1ExWTRiMHBFTnl0S1UxbHJia1EzYUZCdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDVxU1hwTlZFMTZUVlJCTUZkb1kwNU5hbGwzVG1wSmVrMVVUVEJOVkVFd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZOUW1aWE5tMDFjVEZVV0RGbkx6bElVVWhhWmtSakwxUlRTWGhUZEdGb1dXMXFVbFFLVTNWelNrUnNSMHhGZUVncldtbEtaemx5YzFkUk0wNUtXR0Z3U1RKSlJrd3hOelpWVVV4MmIwWXlTbGhCYVdsd1JtRlBRMEZqWjNkblowaEZUVUUwUndwQk1WV mtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlU1YzBWQkNsaHBhalJ6T0VkWVRGUkRSVmxqV0dsVVdVdHRhMGRKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRUpUUW1kdmNrSm5SVVZCV1U4dlRVRkZXVUpGVVUwS1VXdE9ibGt6YUU1bGEydDNWRmR3U2sxVlZuQlhiVGxyVTBaS00xa3pjSFppUlRGeVYxZDRUbUV4Y0hWWlZtaFRZakpTV0ZOWVZscE5hbXd3VTJ4U1N3cFNNa3BJVDFjMWFGWjZVbk5VVjNSaFpHeHNXVlpxUW1oUlZFTkNhWGRaUzB0M1dVSkNRVWhYWlZGSlJVRm5VamxDU0hOQlpWRkNNMEZPTURsTlIzSkhDbmg0UlhsWmVHdGxTRXBzYms1M1MybFRiRFkwTTJwNWRDODBaVXRqYjBGMlMyVTJUMEZCUVVKdWRsTjBXa2h2UVVGQlVVUkJSV2QzVW1kSmFFRkxaVkVLZW5SNE5GUXlVVGR0Y2t4dWIzZ3ZObkkxV0U5TWVsSnNNMjg1Tm1wdE9VMUpPWFJPTVhWc05VRnBSVU Z6WjI0NWVIaGlSME0zUXpreWMwUTRhVWczUmdwdU1VUjFMMmhoVG1kblRtUTROR05ZTkVnMVRFWmFjM2REWjFsSlMyOWFTWHBxTUVWQmQwMUVZVkZCZDFwblNYaEJUbVJ2VkhVMmJqZHdRVWxyYzI1RUNtdEJiM2RySzNsTmN5c3lNRk0yTmpGbmNHRkNjemxXZFRZcmVXdEhaMDVNVG5jeFFWVkNablJXU0VsV2NqTXdLMFpCU1hoQlMxa3dVa2Q2YTNGQ0szRUtVamwwYTFkMlMxVmFaVGhFYVdGUlZWaGxiWHAxY0hCR1dtVTVWV2RMVVU5dVZrVXhWMmh5VEVWU1kzSnpPRGczSzFjcmFqZDNQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}], "timestampVerificationData": {}}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "apNa4jSmfmVJiUNzsM/rg2EYLQOyFEIyiulZirdCISc="}, "signature": "MEUCIDnECh+Bnivtvoy/u1GtVHGRRKXltffBDBHvJNAM+d1AAiEA/E7dJz7Hch3J3a62izQAFXC61yTqDqrXmCw1rVYJBVs="}} +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDIjCCAqigAwIBAgIUN3KATLbVUNRGDV3nGr+IpfN8U9owCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzE4MTMxMTUwWhcNMjYwNzE4MTMyMTUwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEP/mLsMZ733g1VB/kAgrkF77ieLaCy4JS2RKYswt3KDnhHag+d14Rr3lLloiUpnCwOw+Nvp4VpAly9KwTozJKJKOCAccwggHDMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUm1tdwp94Y8hAlZqezruhSFJs0c4wHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDBSBgorBgEEAYO/MAEYBEQMQkNnY3hNekkwTWpJMUVpWm9kSFJ3Y3pvbE1rWWxNa1puYVhSb2RXSXVZMjl0SlRKR2JHOW5hVzRsTWtadllYVjBhQTCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn3Vaw6UAAAQDAEcwRQIgJIvd6u7+l+JuCL7ql6aPTZW/b+7eW5IReU1VUqtT8goCIQCBxixwVlADU 61NThUtsDbLg5XCOwqqnPzs+ooQlCsZlzAKBggqhkjOPQQDAwNoADBlAjAYOQvFHW4WytSW/tzK6+l0+ukbO021DzG+bXWwmk6g2hecuA/eL4JrT/++ZPoZlIECMQCOB5HSfMrh759YUs8gpe0Oe1EMKFMZX3j7VRuTA5tGdgcsod//gv9iMoaRn7SvhiQ="},"tlogEntries":[{"logIndex":"2194684306","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1784380311","inclusionPromise":{"signedEntryTimestamp":"MEUCIAb2CoqDi8Xr9q17Cg4Mm3E2Pb8rpn//hQzHqRgxJMIDAiEA5RyPn67UnofJ5xCcEWamIvzse0ZptErA92rPrluXdXs="},"inclusionProof":{"logIndex":"2072780044","rootHash":"SY3SDjvxJC3nq1B4o0vAky7W/OIJfvE+IwGvwV2Q/uc=","treeSize":"2072780045","hashes":["0WlfWTp0PoMLmXc3QY9BPSWJKmKcp2T19t2EEAe+4lI=","5H1bF1WFzmj9cX9NzTEuI3YwKTymRi7FmG77OjtzVNA=","H7+hDcCI+0hTWdMM/bbVfi66+A5RpMu108wMK7Ge9Gg=","XHUUBKRduQxPj+UWpUKnO8psb9iT3PaiUpkAz3TAXTo=","A4wbPmd6qJ6Wy/Hmt3c8XCn599lIS9gsk+d/iPcTGL4=","vauqql7Pelcq9qxckzvv1zOfQgucwcJKdK4FPXHzl2c=","UwPn3fIHQVP2NCABt5FtphzO8LJqZ+b03j33DxvJUF8=","hWzOH qG/S8Ck4cgHnJasw5wfeweX1fKLJBpUZv8PpWw=","yW2bz6raKCbYH+92WmM9Mkd7A1Ssm1W+WHwKUNNimz4=","LN4BQlVURhC2M/Xc4OivrIZ9N84ymrzP2D5nh03wLQU=","A7J53Hp6UjtklJa/6DOOwBFIBojnOs0IWvgZtejKFMY=","Rq/A2aTC9e54ldNjcpsJ26rX/h8JlN6ZHxgw7yEa6C0=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2072780045\nSY3SDjvxJC3nq1B4o0vAky7W/OIJfvE+IwGvwV2Q/uc=\n\n— rekor.sigstore.dev wNI9ajBEAiBbPQwCpskR2L1ywk3hoUGtnCc+3EX3QK58yTXhrveY3wIgBrQPZ6rIz2MnpmaFYXgnpbc+IflLnBobWttKbJvtMdo=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI5M2VmYjljODhkN2I2NjMzMzY4ZTdmN2I4ZjhkYjZlOTg5ODhmN2Y3NjFjMDliNzc4NDk0NDcyNjI4NDFjZTNhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR05iWXVHSDY0bWpvalFRc2NPZm15YVAzREhDQTJnM3JZYUkrbzhFYnM2TEFpQnBLSWw3eU05WGV6RFFteW5JUEFT ZzhuTVBtQ0hpT25jR2ZTcDJCWTY3eGc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUkpha05EUVhGcFowRjNTVUpCWjBsVlRqTkxRVlJNWWxaVlRsSkhSRll6YmtkeUswbHdaazQ0VlRsdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UlRSTlZFMTRUVlJWZDFkb1kwNU5hbGwzVG5wRk5FMVVUWGxOVkZWM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZRTDIxTWMwMWFOek16WnpGV1FpOXJRV2R5YTBZM04ybGxUR0ZEZVRSS1V6SlNTMWtLYzNkME0wdEVibWhJWVdjclpERTBVbkl6YkV4c2IybFZjRzVEZDA5M0swNTJjRFJXY0VGc2VUbExkMVJ2ZWtwTFNrdFBRMEZqWTNkblowaEVUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ0TVhSa0NuZHdPVFJaT0doQmJGcHhaWHB5ZFdoVFJrcHpNR00wZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZ FdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRUpUUW1kdmNrSm5SVVZCV1U4dlRVRkZXVUpGVVUwS1VXdE9ibGt6YUU1bGEydDNWRmR3U2sxVlZuQlhiVGxyVTBaS00xa3pjSFppUlRGeVYxZDRUbUV4Y0hWWlZtaFRZakpTV0ZOWVZscE5hbXd3VTJ4U1N3cFNNa3BJVDFjMWFGWjZVbk5VVjNSaFpHeHNXVlpxUW1oUlZFTkNhV2RaUzB0M1dVSkNRVWhYWlZGSlJVRm5VamhDU0c5QlpVRkNNa0ZPTURsTlIzSkhDbmg0UlhsWmVHdGxTRXBzYms1M1MybFRiRFkwTTJwNWRDODBaVXRqYjBGMlMyVTJUMEZCUVVKdU0xWmhkelpWUVVGQlVVUkJSV04zVWxGSlowcEpkbVFLTm5VM0syd3JTblZEVERkeGJEWmhVRlJhVnk5aUt6ZGxWelZKVW1WVk1WWlZjWFJVT0dkdlEwbFJRMEo0YVhoM1ZteEJSRlUyTVU1VWFGVjBjMFJpVEFwbk5WaERUM2R4Y1c1UWVuTXJiMjlSYkVOeldteDZRVXRDWjJkeGFHdHFUMUJSVVVSQmQwNXZRVVJDYkVGcVFWbFBVWFpHU0ZjMFYzbDBVMWN2ZEhwTENqWXJiREFyZFd0aVR6QXlNVVI2Unl0aVdGZDNiV3MyWnpKb1pXTjFRUzlsVERSS2NsUXZLeXRhVUc5YWJFbEZRMDFSUTA5Q05VaFRaazF5YURjMU9Wa0tWWE00WjNCbE1FOWxNVVZOUzBaTl dsZ3phamRXVW5WVVFUVjBSMlJuWTNOdlpDOHZaM1k1YVUxdllWSnVOMU4yYUdsUlBRb3RMUzB0TFVWT1JDQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENnPT0ifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6jADAgEAMIIE4QYJKoZIhvcNAQcCoIIE0jCCBM4CAQMxDTALBglghkgBZQMEAgEwgcMGCyqGSIb3DQEJEAEEoIGzBIGwMIGtAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgvPKiY4EW/eoX4OD1GH6C1VqcGk85nOuMPSRFxT6eSuwCFQC341Fo+L8iyCqPCwFyhOF7cxh0KRgPMjAyNjA3MTgxMzExNTBaMAMCAQECCQD7p6Pmz+z6CaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgggIUMIICEDCCAZagAwIBAgIUOhNULwyQYe68wUMvy4qOiyojiwwwCgYIKoZIzj0EAwMwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZDAeFw0yNTA0MDgwNjU5NDNaFw0zNTA0MDYwNjU5NDNaMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE4ra2Z8hKNig2T9kFjCAToGG30jky+WQv3BzL+mKvh1SKNR/UwuwsfNCg4sryoYAd8E6isovVA3M4aoNdm9QDi50Z8nTEyvqgfDPtTIwXItfiW/AFf1V7uwkbkAoj0xxco2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFIn9eUOHz9BlR sMCRscsc1t9tOsDMB8GA1UdIwQYMBaAFJjsAe9/u1H/1JUeb4qImFMHic6/MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMAoGCCqGSM49BAMDA2gAMGUCMDtpsV/6KaO0qyF/UMsX2aSUXKQFdoGTptQGc0ftq1csulHPGG6dsmyMNd3JB+G3EQIxAOajvBcjpJmKb4Nv+2Taoj8Uc5+b6ih6FXCCKraSqupe07zqswMcXJTe1cExvHvvlzGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzE4MTMxMTUwWjAvBgkqhkiG9w0BCQQxIgQgYhR3j/GF7sFg6LX9v5squKjFQ+3gfE6JsX7C7h0XlmAwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwRpicsDdBmURiBCOG8l7xnLXROhWsn4GzKadEtlLP2A8QPN3C6o5/+RWdyq8+e0zBAjB/x4K2F9wFTNbHb5I5M4x/nUKhD9CTv2HmsqQJOlKeIte+zULXRypjupIx3uVjCw8="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"k++5yI17ZjM2jn97j4226YmI9/dhwJt3hJ RHJihBzjo="},"signature":"MEQCIGNbYuGH64mjojQQscOfmyaP3DHCA2g3rYaI+o8Ebs6LAiBpKIl7yM9XezDQmynIPASg8nMPmCHiOncGfSp2BY67xg=="}} ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.200551267 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.204551405 +0200 @@ -1,6 +1,6 @@ -mtime: 1782986381 -commit: aeb0b976aba17ecc9a6e9e572bfe964b06957c2682f69cef8729937d4ddb7fe0 +mtime: 1785426904 +commit: 6e9601fd57fbeb011e940e4851b8e67bd8d72f3e0e6717b4534eb417dfebee0c url: https://src.opensuse.org/python-interpreters/python315 -revision: aeb0b976aba17ecc9a6e9e572bfe964b06957c2682f69cef8729937d4ddb7fe0 +revision: 6e9601fd57fbeb011e940e4851b8e67bd8d72f3e0e6717b4534eb417dfebee0c projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj ++++++ bpo-31046_ensurepip_honours_prefix.patch ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.240552646 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.244552785 +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.15.0a8/Doc/library/ensurepip.rst +Index: Python-3.15.0b4/Doc/library/ensurepip.rst =================================================================== ---- Python-3.15.0a8.orig/Doc/library/ensurepip.rst 2026-04-08 13:45:34.016095348 +0200 -+++ Python-3.15.0a8/Doc/library/ensurepip.rst 2026-04-08 13:45:43.944138830 +0200 +--- Python-3.15.0b4.orig/Doc/library/ensurepip.rst 2026-07-18 09:57:43.000000000 +0200 ++++ Python-3.15.0b4/Doc/library/ensurepip.rst 2026-07-30 17:02:06.220367965 +0200 @@ -65,7 +65,11 @@ By default, ``pip`` is installed into the current virtual environment (if one is active) or into the system site packages (if there is no @@ -57,10 +57,10 @@ .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap .. note:: -Index: Python-3.15.0a8/Lib/ensurepip/__init__.py +Index: Python-3.15.0b4/Lib/ensurepip/__init__.py =================================================================== ---- Python-3.15.0a8.orig/Lib/ensurepip/__init__.py 2026-04-08 13:45:34.016095348 +0200 -+++ Python-3.15.0a8/Lib/ensurepip/__init__.py 2026-04-08 13:45:43.944472088 +0200 +--- Python-3.15.0b4.orig/Lib/ensurepip/__init__.py 2026-07-30 17:01:48.743625962 +0200 ++++ Python-3.15.0b4/Lib/ensurepip/__init__.py 2026-07-30 17:02:06.220909877 +0200 @@ -107,27 +107,27 @@ os.environ['PIP_CONFIG_FILE'] = os.devnull @@ -123,10 +123,10 @@ upgrade=args.upgrade, user=args.user, verbosity=args.verbosity, -Index: Python-3.15.0a8/Lib/test/test_ensurepip.py +Index: Python-3.15.0b4/Lib/test/test_ensurepip.py =================================================================== ---- Python-3.15.0a8.orig/Lib/test/test_ensurepip.py 2026-04-08 13:45:34.016095348 +0200 -+++ Python-3.15.0a8/Lib/test/test_ensurepip.py 2026-04-08 13:45:43.944750522 +0200 +--- Python-3.15.0b4.orig/Lib/test/test_ensurepip.py 2026-07-30 17:01:50.497809821 +0200 ++++ Python-3.15.0b4/Lib/test/test_ensurepip.py 2026-07-30 17:02:06.221271238 +0200 @@ -121,6 +121,17 @@ unittest.mock.ANY, ) @@ -145,11 +145,11 @@ def test_bootstrapping_with_user(self): ensurepip.bootstrap(user=True) -Index: Python-3.15.0a8/Makefile.pre.in +Index: Python-3.15.0b4/Makefile.pre.in =================================================================== ---- Python-3.15.0a8.orig/Makefile.pre.in 2026-04-08 13:45:42.151151268 +0200 -+++ Python-3.15.0a8/Makefile.pre.in 2026-04-08 13:45:43.945249382 +0200 -@@ -2418,7 +2418,7 @@ +--- Python-3.15.0b4.orig/Makefile.pre.in 2026-07-30 17:02:01.059249436 +0200 ++++ Python-3.15.0b4/Makefile.pre.in 2026-07-30 17:02:06.221893021 +0200 +@@ -2463,7 +2463,7 @@ install|*) ensurepip="" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -158,7 +158,7 @@ fi .PHONY: altinstall -@@ -2429,7 +2429,7 @@ +@@ -2474,7 +2474,7 @@ install|*) ensurepip="--altinstall" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -167,10 +167,10 @@ fi .PHONY: commoninstall -Index: Python-3.15.0a8/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst +Index: Python-3.15.0b4/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ Python-3.15.0a8/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2026-04-08 13:45:43.945767177 +0200 ++++ Python-3.15.0b4/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2026-07-30 17:02:06.222499795 +0200 @@ -0,0 +1 @@ +A directory prefix can now be specified when using :mod:`ensurepip`. ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-30 17:55:04.000000000 +0200 @@ -0,0 +1,5 @@ +*.obscpio +*.osc +_build.* +.pbuild +python315-*-build/ ++++++ python-3.3.0b1-fix_date_time_compiler.patch ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.504561752 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.512562028 +0200 @@ -16,11 +16,11 @@ Makefile.pre.in | 7 +++++++ 1 file changed, 7 insertions(+) -Index: Python-3.15.0a7/Makefile.pre.in +Index: Python-3.15.0b4/Makefile.pre.in =================================================================== ---- Python-3.15.0a7.orig/Makefile.pre.in 2026-03-10 13:31:15.000000000 +0100 -+++ Python-3.15.0a7/Makefile.pre.in 2026-03-10 21:55:56.002096854 +0100 -@@ -1932,6 +1932,13 @@ +--- Python-3.15.0b4.orig/Makefile.pre.in 2026-07-18 09:57:43.000000000 +0200 ++++ Python-3.15.0b4/Makefile.pre.in 2026-07-30 17:02:01.059249436 +0200 +@@ -1976,6 +1976,13 @@ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ -o $@ $(srcdir)/Modules/getbuildinfo.c ++++++ subprocess-raise-timeout.patch ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.556563546 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.560563684 +0200 @@ -2,11 +2,11 @@ Lib/test/test_subprocess.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -Index: Python-3.14.0b1/Lib/test/test_subprocess.py +Index: Python-3.15.0b4/Lib/test/test_subprocess.py =================================================================== ---- Python-3.14.0b1.orig/Lib/test/test_subprocess.py 2025-05-09 10:36:08.150615546 +0200 -+++ Python-3.14.0b1/Lib/test/test_subprocess.py 2025-05-09 10:36:21.907614565 +0200 -@@ -160,7 +160,11 @@ +--- Python-3.15.0b4.orig/Lib/test/test_subprocess.py 2026-07-30 17:01:51.784137045 +0200 ++++ Python-3.15.0b4/Lib/test/test_subprocess.py 2026-07-30 17:02:03.865301397 +0200 +@@ -161,7 +161,11 @@ # child. self.assertRaises(subprocess.TimeoutExpired, subprocess.call, [sys.executable, "-c", "while True: pass"], ++++++ test_UDPLITE_support.patch ++++++ --- /var/tmp/diff_new_pack.osW0oE/_old 2026-08-01 18:33:33.576564235 +0200 +++ /var/tmp/diff_new_pack.osW0oE/_new 2026-08-01 18:33:33.584564512 +0200 @@ -2,10 +2,10 @@ Lib/test/test_socket.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) -Index: Python-3.15.0b2/Lib/test/test_socket.py +Index: Python-3.15.0b4/Lib/test/test_socket.py =================================================================== ---- Python-3.15.0b2.orig/Lib/test/test_socket.py 2026-06-16 20:06:50.647664953 +0200 -+++ Python-3.15.0b2/Lib/test/test_socket.py 2026-06-16 20:07:44.984538637 +0200 +--- Python-3.15.0b4.orig/Lib/test/test_socket.py 2026-07-30 17:01:51.705823990 +0200 ++++ Python-3.15.0b4/Lib/test/test_socket.py 2026-07-30 17:02:16.051109546 +0200 @@ -170,6 +170,22 @@ return (cid is not None)
