Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python313 for openSUSE:Factory checked in at 2026-10-13 17:43:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python313 (Old) and /work/SRC/openSUSE:Factory/.python313.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python313" Tue Oct 13 17:43:21 2026 rev:47 rq:1383077 version:3.13.16 Changes: -------- --- /work/SRC/openSUSE:Factory/python313/python313.changes 2026-10-01 16:41:27.654996286 +0200 +++ /work/SRC/openSUSE:Factory/.python313.new.3698736/python313.changes 2026-10-13 17:43:36.166933753 +0200 @@ -1,0 +2,556 @@ +Tue Oct 6 20:47:01 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 3.13.16: + - Security + - gh-158446: Fix a crash or incorrect output that could occur + when formatting a float or complex with a precision close + to the platform’s INT_MAX. PyOS_double_to_string() now + raises ValueError for any precision of that magnitude, + regardless of presentation type or value, as the format + string parsers already did for precisions above INT_MAX. + - gh-157190: Fixed a vulnerability in the tarfile data and + tar extraction filters where a crafted archive using a hard + link to a symbolic link could change the permissions and + modification time of a file outside the destination + directory, and expose its contents inside the extracted + tree. This addresses CVE 2026-82049. (bsc#1280459, + CVE-2026-82049) + - gh-156793: asyncio: loop.start_tls() and + loop.create_connection() now validate the server_hostname + argument if an ssl.SSLContext is passed with check_hostname + set to True. (bsc#1283826, CVE-2026-19553) + - gh-156793: ssl.SSLContext.wrap_bio() now validates its + server_side, server_hostname and session arguments similar + to ssl.SSLContext.wrap_socket(). + - In particular, a context with check_hostname enabled and no + server_hostname passed to wrap_bio() now raises ValueError + instead of completing a handshake that verified the + certificate chain without verifying the peer’s identity, + with no indication that the check had been skipped. + - gh-157265: In tarfile, when extracting a link falls back to + extracting a member of the archive, skip the member when + the filter function returns None when called with the + extracted member’s name replaced with the link’s. + - gh-157190: Fixed a vulnerability in the tarfile data and + tar extraction filters where a crafted archive using a hard + link to a symbolic link could change the permissions and + modification time of a file outside the destination + directory, and expose its contents inside the extracted + tree. This addresses CVE 2026-82049. (bsc#1280459, + CVE-2026-82049) + - gh-157953: Update bundled libexpat to version 2.8.5. + - gh-156002: Bound the amount of data zipfile decompresses + per read for members compressed with bzip2, LZMA, or + Zstandard, matching the existing limit for deflate. A small + archive member could previously expand into an unbounded + allocation even when read in small chunks. (bsc#1277111, + CVE-2026-15310) + - gh-155999: Fix the tarfile tar and data extraction filters + creating directories outside the destination for members + whose name leaves the destination and returns to it, such + as ../evil/../dest/sub/file. The containment check used the + resolved path, but intermediate directories were created + from the name as given. (bsc#1276227, CVE-2026-19672) + - gh-156293: Fix a crash in ssl when an sni_callback switches + a connection to another SSLContext and the context that + carries the callback is no longer referenced by the + application. Servers that keep their sni_callback context + alive (the usual case when it wraps the listening socket or + is stored on the server object) were not affected. This + addresses CVE 2026-19445. (bsc#1283969, CVE-2026-19445) + - gh-155292: Change the stringprep module and encodings.idna + codec to not consider Unicode codepoint attributes beyond + those defined in RFC 3454. (bsc#1276226, CVE-2026-17084) + - gh-155694: Fix CVE 2026-15806 by scoping HTTPPasswordMgr + credentials to the URL scheme, preventing credentials + stored for an HTTPS URL from being used for a matching HTTP + URL, while URIs without a scheme continue to match any + scheme (bsc#1276223, CVE-2026-15806). + - Core and Builtins + - gh-158364: Fix crash when sys._current_frames() or + sys._current_exceptions() is called while another + interpreter is running. + - gh-158254: Reverse iterators over a dict and its views now + raise RuntimeError if the dictionary’s keys change during + iteration, like forward iterators, instead of yielding + entries for the new keys. + - gh-154175: Move GIL drop request bit fetching to live under + the GIL so the PyThreadState it accesses is guaranteed not + to be deallocated. Deallocation could occur when a daemon + thread was shutting down after the main thread. + - gh-156091: Fix a crash when compiling deeply nested inlined + list, set, or dict comprehensions. A SyntaxError is now + raised when the nesting exceeds the compiler’s static + block limit. + - gh-156894: Fix the position of syntax errors which cover a + range if the line contains non-ASCII characters before the + error. + - gh-155525: Fix quadratic-time tokenization of modules + containing many f-strings. + - gh-156114: Fix a crash in the perf trampoline when a code + object has a name or filename that cannot be encoded to + UTF-8. Patched by Shamil Abdulaev. + - gh-156196: A failed assignment to an attribute defined with + PyMemberDef of type Py_T_LONG, Py_T_LONGLONG, Py_T_PYSSIZET + or Py_T_DOUBLE no longer changes its value. + - gh-156189: Fix a crash when deleting the f_trace_opcodes + attribute of a frame object. It now raises AttributeError. + - gh-155752: Fix a crash when a types.GenericAlias argument + gains a __typing_subst__ hook after the alias parameters + have been cached. + - gh-155526: Fix spurious OverflowError for abs(nanj) in case + errno was previously set to ERANGE by some library call. + Patch by Sergey B Kirpichev. + - gh-155515: Track the internal HAMT iterators, which back + iteration over a contextvars.Context, with the garbage + collector. A reference cycle running through such an + iterator was never collected, leaking the whole context it + iterated over. + - gh-154711: Fix a bug where a comment placed after a string + that ends with an escaped quote could leak into the output + of a debug f-string. Now the comment is stripped as + expected. + - gh-151464: Exclude invalid token <> from tokenize output. + SyntaxError for <> now suggests !=. + - gh-153578: Fix an out-of-bounds write in bytearray.extend() + when the bytearray is resized while the argument’s + __buffer__() is being acquired, for example by another + thread. Patch by tonghuaroot. + - gh-146096: Fixed segmentation fault when called repr for + BaseExceptionGroup with empty or 1-size tuple args. + - gh-130094: Fix two race conditions involving concurrent + imports that could lead to spurious failures with + ModuleNotFoundError. + - gh-85260: compile() now raises ValueError instead of + crashing on a debug build if an identifier field of an AST + node (such as the name of a function, a class, an imported + module or a caught exception) is "None", "True" or "False". + - C API + - gh-156995: _PyBytes_Resize(&obj, 1) no longer returns a + single byte singleton if the reference count is greater + than 1. Patch by Stan Ulbrych. + - Library + - gh-158169: Fix zlib.Decompress.unconsumed_tail duplicating + unused_data after end of stream when max_length was used. + - gh-157672: Fix tkinter on macOS: creating a Tk instance no + longer replaces the Python handlers of SIGINT, SIGHUP and + SIGTERM with Tk’s handler which exits the process, so + Ctrl-C raises KeyboardInterrupt again. + - gh-157639: Fix a crash in cProfile when an external timer + re-enters the profiler. Profiling events raised while the + external timer runs are now ignored. + - gh-157621: Fix a crash when a weak-reference callback is + attached to a typing.ParamSpecArgs or + typing.ParamSpecKwargs instance. + - gh-69919: code.InteractiveInterpreter.runsource() and the + REPL now report any exception raised by compiling the + source, such as MemoryError or RecursionError for too + deeply nested source, instead of propagating it or printing + a traceback of the REPL internals. + - gh-157451: Fix gettext plural form selection when the + Plural-Forms expression combines the unary ! operator with + a binary operator, for example !n + 1 or 2 * !n. The latter + raised SyntaxError. + - gh-157335: Fix out-of-bounds write in mmap.mmap.__setitem__ + that could occur when converting the index or the assigned + value (via __index__() for a single item, or via the buffer + protocol for a slice) resized or closed the mmap object + during the assignment. + - gh-157406: Fix the Python implementation of + xml.etree.ElementTree.XMLParser: the doctype() method of + the target is now called for a document type declaration + without an external identifier, like <!DOCTYPE html>, as in + the C implementation. + - gh-157325: Fix an out-of-bounds read in the hz incremental + decoder when the input ends with ~. + - gh-157301: Fix asyncio.Task hanging the event loop when an + eager start fails to enter the task’s context. + - gh-156002: zipfile again reads members through a + third-party decompressor installed by monkey-patching the + private _get_decompressor() to return an object that only + implements old BZ2Decompressor API from Python 3.3. Note + that decompressors without needs_input and two-argument + decompress() are vulnerable to CVE 2026-15310. + - gh-157159: The usage message printed by python -m tabnanny + when no arguments are given now suggests python -m instead + of the source file. + - gh-156933: Fix incorrect integer return values from ctypes + callbacks on some platforms, such as s390x. + - gh-157048: Preserve the position and contents of io.BytesIO + when BytesIO.__init__() fails because a buffer is exported. + - gh-156961: Fix tkinter.font.nametofont() and the + tkinter.font.Font constructor for a font name returned by + Tk as a Tcl object, for example by ttk.Style.lookup(). + - gh-156970: Set the docstring of + unittest.mock.Mock.return_value. + - gh-156946: Fix a crash in curses.panel when the finalizer + of a panel’s user pointer runs while the panel is being + deallocated. The panel is now taken off the panel stack + before its user pointer is dropped. + - gh-156920: Fix asyncio on Windows: closing a + DatagramTransport under ProactorEventLoop while datagrams + were still queued, or while an in-flight write failed right + as close() was draining the buffer, could strand the queued + data and never call connection_lost(), hanging the close + indefinitely. + - gh-156797: Fix xml.sax.saxutils.XMLGenerator: the namespace + URI is now escaped in the namespace declaration. Previously + a URI containing &, < or a quote character produced a + document which cannot be parsed. + - gh-83895: xml.etree.ElementTree now accepts input larger + than 2 GiB in the C implementation. The data is fed to + Expat in chunks, as xml.parsers.expat already did, instead + of raising OverflowError. + - gh-99064: Fix xml.etree.ElementTree.parse() with a text + file or other source of str data in the C implementation. + The encoding declared in the document was applied to the + already decoded text, which produced mojibake. It is now + ignored, as when parsing with XMLParser.feed() or + fromstring(). + - gh-156713: Fix nturl2path.pathname2url() and + nturl2path.url2pathname(): the filesystem encoding and + error handler are now used for percent-encoding and + decoding, as in urllib.request. Previously paths containing + surrogate characters raised UnicodeEncodeError. + - gh-156698: Fix asyncio.ProactorEventLoop UDP transports so + that a write error no longer strands a paused protocol: the + write loop is now rescheduled when data remains buffered, + and the protocol is resumed when the buffer has drained. + - gh-127057: Fix asyncio.ProactorEventLoop UDP transports so + that a ConnectionResetError raised by WSARecvFrom no longer + stops the read loop. + - gh-156658: xml.dom and xml.etree.ElementTree no longer + treat characters which are not white space in XML (such as + U+00A0) as white space. Previously they could be lost in + indent(), canonicalize() with strip_text=True, and when + parsing with the whitespace-in-element-content feature + turned off. + - gh-156476: The pure Python implementation of + queue.SimpleQueue.get() now ignores timeout when block is + false, matching the documented behavior and the C + implementation. It previously raised ValueError. + - gh-156444: Fix matching of a negated character set in a + bytes pattern compiled with both re.IGNORECASE and + re.LOCALE. The case closure is now applied to the members + of the set, so that [^bc] no longer matches b'B'. + - gh-156353: Fix configparser parsing when using whitespace + in delimiters. + - gh-156166: ssl: A failed assignment or deletion of the + _msg_callback attribute of ssl.SSLContext no longer removes + the current callback. Deleting it now raises AttributeError + instead of TypeError. + - gh-156173: Calling zlib.Decompress.flush() on invalid + compressed data now raises zlib.error instead of being + silently ignored. + - gh-152817: sqlite3: Disallow removing the row_factory + attribute of a cursor to prevent a crash on a query. + - gh-156112: _ios_support no longer fails to import when + ctypes.util.find_library() cannot resolve the ObjC runtime + through the dyld shared cache, as is the case on iOS 13. + The runtime is now loaded by name, which dyld resolves + against the cache directly. + - gh-156100: Fix crashes in sqlite3.Connection when deleting + the autocommit attribute or setting it to an integer which + does not fit in C long. Both now raise an exception. + - gh-156099: Fix a crash when deleting the keylog_filename + attribute of ssl.SSLContext. It now raises AttributeError. + - gh-156067: Fix error handling in the zoneinfo accelerator + module when a transition index is -1 or a TZ string’s + __bool__ raises. + - gh-155952: Fix the signatures of + sqlite3.Connection.execute(), warnings.warn() and + locale.setlocale() which rendered <unrepresentable> instead + of the correct defaults for parameters. + - gh-155835: hashlib: Fix data races when accessing + digest_size and block_size on SHA-3 objects. Patch by + Bénédikt Tran. + - gh-155775: Fix a regression in imaplib introduced in the + fix for gh-63121: refreshing the capabilities after a + successful login() or authenticate() consumed the + CAPABILITY response, so it could no longer be read with + response(). + - gh-113318: Fix crashes when deleting an attribute whose + setter is generated by Argument Clinic and is not prepared + for deletion, among them the context, owner and session + attributes of _ssl._SSLSocket. Deleting such attribute now + raises AttributeError. + - gh-155468: Fix netrc to distinguish empty quoted tokens + from end-of-file, so malformed files no longer cause the + remaining content to be silently ignored. + - gh-155336: Fix error handling in socket.gethostbyaddr() and + socket.gethostbyname_ex() when hostname resolution fails. + - gh-102475: Fix os.path.realpath() on Windows: the + unresolved part of the path is now appended, not joined, so + a file name which looks like a drive (e.g. spam:eggs) no + longer discards the resolved part. A path relative to + another drive is now resolved against the root directory of + that drive. + - gh-89760: Fix os.path.realpath() on Windows: the \\?\ + prefix is no longer stripped from a volume GUID path, which + made the result invalid. + - gh-84419: Fix os.stat() on Windows: trailing dots and + spaces, which are ignored by the operating system, are no + longer taken into account when the execute permissions are + guessed from the file extension. + - gh-155319: warnings.warn_explicit() now displays the source + line taken from the loader of the module whose globals are + passed as module_globals. It also no longer raises ++++ 259 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/python313/python313.changes ++++ and /work/SRC/openSUSE:Factory/.python313.new.3698736/python313.changes Old: ---- CVE-2026-15310-bound-zipfile-decompression.patch CVE-2026-17084-unicode-rfc3454.patch CVE-2026-19672-tarfile-outside-dirs.patch Python-3.13.15.tar.xz Python-3.13.15.tar.xz.sigstore New: ---- Python-3.13.16.tar.xz Python-3.13.16.tar.xz.sigstore ----------(Old B)---------- Old: * CVE-2026-19672-tarfile-outside-dirs.patch * CVE-2026-15310-bound-zipfile-decompression.patch - Update sphinx9-runtime-node.patch Old:- Removed upstreamed patches: * CVE-2026-17084-unicode-rfc3454.patch * CVE-2026-19672-tarfile-outside-dirs.patch Old: * CVE-2026-17084-unicode-rfc3454.patch * CVE-2026-19672-tarfile-outside-dirs.patch * CVE-2026-15310-bound-zipfile-decompression.patch ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python313.spec ++++++ --- /var/tmp/diff_new_pack.9pYSJx/_old 2026-10-13 17:43:43.076223298 +0200 +++ /var/tmp/diff_new_pack.9pYSJx/_new 2026-10-13 17:43:43.081223508 +0200 @@ -167,7 +167,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.13.15 +Version: 3.13.16 %define tarversion %{version} %define tarname Python-%{tarversion} Release: 0 @@ -234,7 +234,7 @@ # PATCH-FIX-OPENSUSE gh139257-Support-docutils-0.22.patch gh#python/cpython#139257 [email protected] Patch45: gh139257-Support-docutils-0.22.patch # PATCH-FIX-OPENSUSE sphinx9-runtime-node.patch [email protected] -# Import Node at runtime because Sphinx 9 evaluates extension annotations. +# Import extension annotation types at runtime because Sphinx 9 evaluates them. Patch46: sphinx9-runtime-node.patch # PATCH-FIX-UPSTREAM pass-test_write_read_limited_history.patch bsc#[0-9]+ [email protected] # Fix readline history truncation when length is reduced @@ -245,15 +245,6 @@ # PATCH-FIX-UPSTREAM CVE-2025-15366-pop3-ctrl-chars.patch bsc#1257041 [email protected] # Reject control characters in POP3 commands Patch55: CVE-2025-15366-pop3-ctrl-chars.patch -# PATCH-FIX-UPSTREAM CVE-2026-17084-unicode-rfc3454.patch bsc#1276226 Matej Cepl <[email protected]> -# Don't consider Unicode codepoint attributes outside RFC 3454 -Patch56: CVE-2026-17084-unicode-rfc3454.patch -# PATCH-FIX-UPSTREAM CVE-2026-19672-tarfile-outside-dirs.patch bsc#1276227 [email protected] -# in tarfile, handle a member that leaves the destination and comes back -Patch57: CVE-2026-19672-tarfile-outside-dirs.patch -# PATCH-FIX-UPSTREAM CVE-2026-15310-bound-zipfile-decompression.patch bsc#1277111 [email protected] -# Bound zipfile decompression for bzip2/LZMA/Zstandard (gh#python/cpython!156003) -Patch58: CVE-2026-15310-bound-zipfile-decompression.patch #### END OF PATCHES BuildRequires: autoconf-archive BuildRequires: automake ++++++ Python-3.13.15.tar.xz -> Python-3.13.16.tar.xz ++++++ /work/SRC/openSUSE:Factory/python313/Python-3.13.15.tar.xz /work/SRC/openSUSE:Factory/.python313.new.3698736/Python-3.13.16.tar.xz differ: char 26, line 1 ++++++ Python-3.13.15.tar.xz.sigstore -> Python-3.13.16.tar.xz.sigstore ++++++ --- /work/SRC/openSUSE:Factory/python313/Python-3.13.15.tar.xz.sigstore 2026-09-18 22:04:18.183972138 +0200 +++ /work/SRC/openSUSE:Factory/.python313.new.3698736/Python-3.13.16.tar.xz.sigstore 2026-10-13 17:43:36.124931993 +0200 @@ -1 +1 @@ -{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDJzCCAq2gAwIBAgIUXWNlTYdMQmOCSpYDVBJ/fVuHup8wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODA1MTMxNDQ5WhcNMjYwODA1MTMyNDQ5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6etBIDcOeTwyKUVbA36DpX87cjztnCA9hXmDuQT5lS3dPRd2rIw+wfmY0uegNebVX/5FZa9NKWQ/RjWdcPDZSqOCAcwwggHIMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUcVRz1rnUXRra3jTPdXefOMlaayEwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0RAQH/BBUwE4ERdGhvbWFzQHB5dGhvbi5vcmcwKQYKKwYBBAGDvzABAQQbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMCsGCisGAQQBg78wAQgEHQwbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMFsGCisGAQQBg78wARgETQxLQ2hVeE1UTXdNREkzTWpZek1UVXpOekkwT0RjNU1EVVNIMmgwZEhCek9pVXlSaVV5Um1GalkyOTFiblJ6TG1kdmIyZHNaUzVqYjIwMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGf0g/1ewAABAMARzBFAiBYvfhic5vW1gpr4OQtkpvdRbExDmqjHZlHTqSo6I55ZQIhAM8rV UFstYL8p9tfpVlMwZKlS6Thatp5sUiEbCxKs9CXMAoGCCqGSM49BAMDA2gAMGUCMQClHcHizN7tg6jMZMGHu+hlnEcjywWClT00qIu2JCBdsrQAoAiFbUxNBgBkvUTt6FsCMH9/lx1mrZI4bLRVEUA3TRtwhVgIDOruB4HwSr0YUe6uYb6Z9eHl4dojJTUetvYo/g=="},"tlogEntries":[{"logIndex":"2345087706","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1785935689","inclusionPromise":{"signedEntryTimestamp":"MEUCIQD+QBYbQQO3GddRk0/5ZV+UX4grdcipQP2p3lUBiUhBVgIgSdZLhvYtJnAuxx+vINxxH7jaxOQOMPZ19YtE7cBd438="},"inclusionProof":{"logIndex":"2223183444","rootHash":"Z5WtsbliahcGvHVaRGTyJ0//FmOXi1P6WnuxeU7wlwg=","treeSize":"2223183472","hashes":["oXSgq+0a4CsJIu7P/mtscxKdbd28/yKaMWb5Ltz6jk0=","0ahq9bkl1gZg42j/xbiW/kjLWARql4wS8sOKZ0iJjWw=","iiZ5I+WkYNc7RlX/Y5i6YSXwwpXPHi8Aj56zlnufIec=","xcPnknohcoDLs0ehfFc79RLJfwnivjdpU0H6psw4lW4=","I0beYI/2oyNuZ/Imh3ALjKcVdl7Of33vT7f/1WLZJ1I=","ZJcA5jT8wPGUT1t71wRA8uU9hlOUUmt8vsJRpAf/kxA=","p7xacxkr1Eri9HhfcfUAd22YFMYv9Hc2QSzrI14RcXA= ","1d5VTWYHfneKOL5npfE8I+gMpp8BFfog2aR2c1SWdlI=","rswPuCYwXTk59Z275E+zooCQopZedFulrLHPTHQY6PU=","k3b7jE001SHjaN7+Y5IQb7yS1tfU5c/XvlLpzum9ndo=","Pv4MBi/G9NUhyiLk1mrltT2GpL0W3bUx9EpJULS59wk=","eP9vZN4l1LpRy4jDtU5NyWBNISJEhUysW6rcbcuQnrc=","ScH++eGfXwQDzE/H9Ae7YYnPqN5zAS9Hiq5LGoXV7Hg=","i5Zl8FZrDwxCDv2e2DNO2M8JvpR/c11ElvCZS53/teA=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2223183472\nZ5WtsbliahcGvHVaRGTyJ0//FmOXi1P6WnuxeU7wlwg=\n\n— rekor.sigstore.dev wNI9ajBFAiEAxkRJeAFahmJ0eaVXZn5drnpm0Tjiy1MDCYasds2uplkCICyWVtHDHP2Thw8k3OeEn/QoT7g1lLSbQRpFkIHAm2BU\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxZTY2YTc5NDVhNDgzOTBlZTRjMmE0MjY4YTBlNDE4NTg4NDA1OWExM2M0YWFiNmQxNDhhYTIwOGRlZWE0YTc2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUMydmp5YkoxYjdpeFI1RGdqL1RJUU5OVlRDL0NmaWZzSW1DRFdUU0ZXeWFnSWdHbmNJWFJHdC9IV3Rz Y1hNZzYyUDgvSlZ2UGo4cXJjMUNaSXVicjl4dDlFPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUktla05EUVhFeVowRjNTVUpCWjBsVldGZE9iRlJaWkUxUmJVOURVM0JaUkZaQ1NpOW1WblZJZFhBNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFUVRGTlZFMTRUa1JSTlZkb1kwNU5hbGwzVDBSQk1VMVVUWGxPUkZFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUyWlhSQ1NVUmpUMlZVZDNsTFZWWmlRVE0yUkhCWU9EZGphbnAwYmtOQk9XaFliVVFLZFZGVU5XeFRNMlJRVW1ReWNrbDNLM2RtYlZrd2RXVm5UbVZpVmxndk5VWmFZVGxPUzFkUkwxSnFWMlJqVUVSYVUzRlBRMEZqZDNkblowaEpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZqVmxKNkNqRnlibFZZVW5KaE0ycFVVR1JZWldaUFRXeGhZWGxGZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoM1dVUldVakJTUVZGSUwwSkNWWGRGTkVWU1pFZG9kbUpYUm5wUlNFS TFaRWRvZG1KcE5YWmpiV04zUzFGWlMwdDNXVUpDUVVkRWRucEJRZ3BCVVZGaVlVaFNNR05JVFRaTWVUbG9XVEpPZG1SWE5UQmplVFZ1WWpJNWJtSkhWWFZaTWpsMFRVTnpSME5wYzBkQlVWRkNaemM0ZDBGUlowVklVWGRpQ21GSVVqQmpTRTAyVEhrNWFGa3lUblprVnpVd1kzazFibUl5T1c1aVIxVjFXVEk1ZEUxR2MwZERhWE5IUVZGUlFtYzNPSGRCVW1kRlZGRjRURkV5YUZZS1pVVXhWVlJZWkU1U1JXdDZWRmR3V21Wck1WVldXSEJQWld0cmQxUXdVbXBPVlRGRlZsWk9TVTF0WjNkYVJXaERaV3M1Y0ZaWWJGTmhWbFkxVlcweFJ3cGhiR3Q1VDFSR2FXSnNTalpVUnpGclpHMUplVnBJVG1GVmVsWnhXV3BKZDAxSlIwdENaMjl5UW1kRlJVRmtXalZCWjFGRFFraDNSV1ZuUWpSQlNGbEJDak5VTUhkaGMySklSVlJLYWtkU05HTnRWMk16UVhGS1MxaHlhbVZRU3pNdmFEUndlV2RET0hBM2J6UkJRVUZIWmpCbkx6RmxkMEZCUWtGTlFWSjZRa1lLUVdsQ1dYWm1hR2xqTlhaWE1XZHdjalJQVVhScmNIWmtVbUpGZUVSdGNXcElXbXhJVkhGVGJ6WkpOVFZhVVVsb1FVMDRjbFpWUm5OMFdVdzRjRGwwWmdwd1ZteE5kMXBMYkZNMlZHaGhkSEExYzFWcFJXSkRlRXR6T1VOWVRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVowRk5SMVZEVFZGRGJFaGpTR2w2VGpkMENtYzJhazFhVFVkSWRTdG9iRzVGWTJwNWQxZERiRlF3TUhGSmRUSktRMEprYzNKUlFXOUJhVVppVlhoT1FtZENhM1pWVkhRMlJuTkRUVWc1TDJ4NE1XMEtjbHBKTkdKTVVsWkZWVU V6VkZKMGQyaFdaMGxFVDNKMVFqUklkMU55TUZsVlpUWjFXV0kyV2psbFNHdzBaRzlxU2xSVlpYUjJXVzh2WnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6TADAgEAMIIE4AYJKoZIhvcNAQcCoIIE0TCCBM0CAQMxDTALBglghkgBZQMEAgEwgcIGCyqGSIb3DQEJEAEEoIGyBIGvMIGsAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgedJj741lxqDmKxlWZ+dSfQtyA6ywq2OU0SWR3N8czS0CFDq2Nn0T8VO8fJxsnDCFXnUjnCrOGA8yMDI2MDgwNTEzMTQ0OVowAwIBAQIJANU/4v8rsmiroDKkMDAuMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxFTATBgNVBAMTDHNpZ3N0b3JlLXRzYaCCAhQwggIQMIIBlqADAgECAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkMB4XDTI1MDQwODA2NTk0M1oXDTM1MDQwNjA2NTk0M1owLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATitrZnyEo2KDZP2QWMIBOgYbfSOTL5ZC/cHMv6Yq+HVIo1H9TC7Cx80KDiyvKhgB3wTqKyi9UDczhqg12b1AOLnRnydMTK+qB8M+1MjBci1+Jb8AV/VXu7CRuQCiPTHFyjajBoMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EF gQUif15Q4fP0GVGwwJGxyxzW3206wMwHwYDVR0jBBgwFoAUmOwB73+7Uf/UlR5vioiYUweJzr8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwCgYIKoZIzj0EAwMDaAAwZQIwO2mxX/opo7SrIX9QyxfZpJRcpAV2gZOm1AZzR+2rVyy6Uc8Ybp2ybIw13ckH4bcRAjEA5qO8FyOkmYpvg2/7ZNqiPxRzn5vqKHoVcIIqtpKq6l7TvOqzAxxclN7VwTG8e++XMYIB2jCCAdYCAQEwUTA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDALBglghkgBZQMEAgGggfwwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjA4MDUxMzE0NDlaMC8GCSqGSIb3DQEJBDEiBCBPBNPsScb99ghCO1ZnnpvKVrtSW36/zT3r28cVkjsRDzCBjgYLKoZIhvcNAQkQAi8xfzB9MHsweQQghfknvAerYsrDtENWwQ78gbLGiD/aernm2HDZ0TrNBbcwVTA9pDswOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCgYIKoZIzj0EAwIEZjBkAjATvTPnD8YDf3pvoXNClzuPUghLmuWbmz0ZWClv/PaTrwPw16+V8xVm/JBm+e/Dwb0CMBiKtFK3b4l8RIvWPNiqYjbW/YTYc1o8PGHlTHYt4oSqJwtK5bPDN8hZutn6KhU0CQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"HmanlFpIOQ7kwqQmig 5BhYhAWaE8SqttFIqiCN7qSnY="},"signature":"MEUCIQC2vjybJ1b7ixR5Dgj/TIQNNVTC/CfifsImCDWTSFWyagIgGncIXRGt/HWtscXMg62P8/JVvPj8qrc1CZIubr9xt9E="}} +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDJzCCAqygAwIBAgIUe68ZGYz9/VmKUx9TwYA8gtAuqjUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTMwMjEwMjA2WhcNMjYwOTMwMjExMjA2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVed432MsipEbQFLm+yKyNT8LlDrif+zBoglbqgbc0iZffJXf1QSPIrIVCL7Mw/BrLWv4TSPYNV+/soEmDyxiNKOCAcswggHHMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUNq47+r3vzMvSxpRXtzQ0PJ8VOfMwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0RAQH/BBUwE4ERdGhvbWFzQHB5dGhvbi5vcmcwKQYKKwYBBAGDvzABAQQbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMCsGCisGAQQBg78wAQgEHQwbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMFsGCisGAQQBg78wARgETQxLQ2hVeE1UTXdNREkzTWpZek1UVXpOekkwT0RjNU1EVVNIMmgwZEhCek9pVXlSaVV5Um1GalkyOTFiblJ6TG1kdmIyZHNaUzVqYjIwMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGg9B/k4wAABAMARjBEAiB0utGBNJUdIPioSj44TIv+BFitj1G60uSvn9sJ/uGyjgIgP6DU8 jOdQHBwyKLlt0M0OSBs4CTpqJjmR8s9i6gdVLQwCgYIKoZIzj0EAwMDaQAwZgIxAMfz3AARZ9jVq3yOc7dEdpzxDliRBUvUEfRN5Bw3Xr9gg/cF15kx9B6uRTTI9MCg6wIxAIiFQsw0J1S+Rj2ROKNkxENmT8P1M5jq4U6xwGNlMZykMhRsaEn5C6utZxuneoOlYw=="},"tlogEntries":[{"logIndex":"3025242362","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1790802126","inclusionPromise":{"signedEntryTimestamp":"MEQCIFF8LwfxT98/ohAvJWgJ7kpHirKJAaLEb01dYbTtuEQvAiAKlfoMTS/3S8QcdHfe+E/GhsWYXB4UCkfLjA6vMHfV4w=="},"inclusionProof":{"logIndex":"2903338100","rootHash":"hy6G4WMfNITrg8BKvDZqatK7AmFE+scANrKRf3KRdfA=","treeSize":"2903338120","hashes":["oXBfSGXI0Sr0whX2javuaXbnxVleEPhU1/T48blfTmA=","UyOW6q+80hIrflFXrKxXY1jSeTYTfkpFRoPaSZ2EYhA=","bjVXnmkozFu7FI49xsmqYMsIz2EnChze8WmhPcCKsOc=","L3KiFI/OM/8TaRzw6XSMTeMxYZz27Etu4DOb8ZMAFOM=","2pE1zHtbuzd9J/n+j2xdbNPx55jJqajo7KL7P3P21GE=","rsv0KqhcY0lTQI2imIb36eOXzulk+YM80HMpqLPcjjs=","M0f2Bbg2s/NyN2amSVB7ev0jQhZ5DYYb9v522PyYxIQ= ","Pn/p6/ki3B7mKkt1/ItnqjIoCW3liQKNgcxQ59ljYws=","XQHVQx9dIPmc2szOZmja7fcULUotkeuAfc2jBQ/seKk=","KB6FXumoExWEev8QlblfCrgh0+kOwcdutVaW4VJpbDM=","XHi1AHkNytdveMso4pw1ZaCgI1qfU+ZlAiDJbPhUBnc=","pJ4ZDPsptNfepakCzdep9FcVSOvgDrQcB/s15X8oGOs=","Ofb2lLpQCgDbuAT9cnT3VFX3f51EVxmLcYWUqfweNd4=","ZXL45Hv3wyggBdmE5C/zsqECV5g6XNqvvgOBR4PSAQg=","pYaLWQjbfWwfiUfqWddnJIt5PecHmyR38JKEZ6Ci2YE=","cIz1OY2tO8cVEgp0TmAffPApps2hJuAcAN+pESrpHHY=","4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=","ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2903338120\nhy6G4WMfNITrg8BKvDZqatK7AmFE+scANrKRf3KRdfA=\n\n— rekor.sigstore.dev wNI9ajBEAiAdHwH1mE73yaCOhaI5PjtgAJ95mFsNRUZObA8d38MhewIgVk3wArQ4P/y380J7R7g9zgC0/jVV5TfpnFrr16rzsPg=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtI joic2hhMjU2IiwidmFsdWUiOiJmNGIxYmZiM2M3OWI1YmIxMWI4ZDIyOGExMjUwNDE2M2I0YzBkYWI0ZDY3OTgyOGQ4ZjVmMjZiNmNiNmFiMzVkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQ2JCTTVUZTN6Z0JacHBLdlkzSU90dS8zWTNhQU5Xc2xHVFJrd04wT2hBY0FpQi81SzZxQ3dyVWFCUlhvTCszODV3M1JkU0hzYWdEVEJ0UkZ2NE0zZWVTaHc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUktla05EUVhGNVowRjNTVUpCWjBsVlpUWTRXa2RaZWprdlZtMUxWWGc1VkhkWlFUaG5kRUYxY1dwVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTmFrVjNUV3BCTWxkb1kwNU5hbGwzVDFSTmQwMXFSWGhOYWtFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZXWldRME16Sk5jMmx3UldKUlJreHRLM2xMZVU1VU9FeHNSSEpwWml0NlFtOW5iR0lLY1dkaVl6QnBXbVptU2xobU1WRlRVRWx5U1ZaRFREZE5keTlDY2t4WGRqUlVVMUJaVGxZckwzTnZSVzFFZVhocFRrdFBRMEZqYzNkblowaElUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTME puWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZPY1RRM0NpdHlNM1o2VFhaVGVIQlNXSFI2VVRCUVNqaFdUMlpOZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoM1dVUldVakJTUVZGSUwwSkNWWGRGTkVWU1pFZG9kbUpYUm5wUlNFSTFaRWRvZG1KcE5YWmpiV04zUzFGWlMwdDNXVUpDUVVkRWRucEJRZ3BCVVZGaVlVaFNNR05JVFRaTWVUbG9XVEpPZG1SWE5UQmplVFZ1WWpJNWJtSkhWWFZaTWpsMFRVTnpSME5wYzBkQlVWRkNaemM0ZDBGUlowVklVWGRpQ21GSVVqQmpTRTAyVEhrNWFGa3lUblprVnpVd1kzazFibUl5T1c1aVIxVjFXVEk1ZEUxR2MwZERhWE5IUVZGUlFtYzNPSGRCVW1kRlZGRjRURkV5YUZZS1pVVXhWVlJZWkU1U1JXdDZWRmR3V21Wck1WVldXSEJQWld0cmQxUXdVbXBPVlRGRlZsWk9TVTF0WjNkYVJXaERaV3M1Y0ZaWWJGTmhWbFkxVlcweFJ3cGhiR3Q1VDFSR2FXSnNTalpVUnpGclpHMUplVnBJVG1GVmVsWnhXV3BKZDAxSlIwcENaMjl5UW1kRlJVRmtXalZCWjFGRFFraHpSV1ZSUWpOQlNGVkJDak5VTUhkaGMySklSVlJLYWtkU05HTnRWMk16UVhGS1MxaHlhbVZRU3pNdmFEUndlV2RET0hBM2J6UkJRVUZIWnpsQ0wyczBkMEZCUWtGTlFWSnFRa1VLUVdsQ01IVjBSMEpPU2xWa1NWQnBiMU5xTkRSVVNYWXJRa1pwZEdveFJ6WXdkVk4yYmpselNpOTFSM2xxWjBsblVEWkVWVGhxVDJSUlNFSjNlVXRNYkFwME1FMHdUMU5DY3p SRFZIQnhTbXB0VWpoek9XazJaMlJXVEZGM1EyZFpTVXR2V2tsNmFqQkZRWGROUkdGUlFYZGFaMGw0UVUxbWVqTkJRVkphT1dwV0NuRXplVTlqTjJSRlpIQjZlRVJzYVZKQ1ZYWlZSV1pTVGpWQ2R6TlljamxuWnk5alJqRTFhM2c1UWpaMVVsUlVTVGxOUTJjMmQwbDRRVWxwUmxGemR6QUtTakZUSzFKcU1sSlBTMDVyZUVWT2JWUTRVREZOTldweE5GVTJlSGRIVG14TldubHJUV2hTYzJGRmJqVkROblYwV25oMWJtVnZUMnhaZHowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6jADAgEAMIIE4QYJKoZIhvcNAQcCoIIE0jCCBM4CAQMxDTALBglghkgBZQMEAgEwgcIGCyqGSIb3DQEJEAEEoIGyBIGvMIGsAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg5K8+4L1OItWmT7O9gJyng+Y4gj0b+/hPUwG6jzXd3pICFQCaAsckAIKdbVYrdXWrqVZ6dIooHBgPMjAyNjA5MzAyMTAyMDZaMAMCAQECCESLXWfa93b5oDKkMDAuMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxFTATBgNVBAMTDHNpZ3N0b3JlLXRzYaCCAhQwggIQMIIBlqADAgECAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkMB4XDTI1MDQwODA2NTk0M1oXDTM1MDQwNjA2NTk0M1owLjEVMBMGA1UEChMMc2lnc3Rvcm UuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATitrZnyEo2KDZP2QWMIBOgYbfSOTL5ZC/cHMv6Yq+HVIo1H9TC7Cx80KDiyvKhgB3wTqKyi9UDczhqg12b1AOLnRnydMTK+qB8M+1MjBci1+Jb8AV/VXu7CRuQCiPTHFyjajBoMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUif15Q4fP0GVGwwJGxyxzW3206wMwHwYDVR0jBBgwFoAUmOwB73+7Uf/UlR5vioiYUweJzr8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwCgYIKoZIzj0EAwMDaAAwZQIwO2mxX/opo7SrIX9QyxfZpJRcpAV2gZOm1AZzR+2rVyy6Uc8Ybp2ybIw13ckH4bcRAjEA5qO8FyOkmYpvg2/7ZNqiPxRzn5vqKHoVcIIqtpKq6l7TvOqzAxxclN7VwTG8e++XMYIB2zCCAdcCAQEwUTA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDALBglghkgBZQMEAgGggfwwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjA5MzAyMTAyMDZaMC8GCSqGSIb3DQEJBDEiBCCzAJzOyRxGgIi74w6PfX5eYkZCsK8M7SO0qwEIXijgUjCBjgYLKoZIhvcNAQkQAi8xfzB9MHsweQQghfknvAerYsrDtENWwQ78gbLGiD/aernm2HDZ0TrNBbcwVTA9pDswOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCgYIKoZIzj0EAwI EZzBlAjEAlWf3jhZ5Q/xBH8gPwmR4GIMvq9KuExqhTO2NmfC9wpDrr0heYmOMPVRyK77QpDhCAjBz+K/HaLpnxIDvbGnbKmJvTp334+61Cyq6YP58ZpP/+XLgmlvknmWpfqrGxTXqkOA="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"9LG/s8ebW7EbjSKKElBBY7TA2rTWeYKNj18mtstqs10="},"signature":"MEQCICbBM5Te3zgBZppKvY3IOtu/3Y3aANWslGTRkwN0OhAcAiB/5K6qCwrUaBRXoL+385w3RdSHsagDTBtRFv4M3eeShw=="}} ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.9pYSJx/_old 2026-10-13 17:43:43.487240523 +0200 +++ /var/tmp/diff_new_pack.9pYSJx/_new 2026-10-13 17:43:43.501241110 +0200 @@ -1,6 +1,6 @@ -mtime: 1789682175 -commit: a4015331750593d33e50b9ad172e8330b02afd3d9ecd2df7359a8f4ba5f65185 +mtime: 1791377204 +commit: 4a113343ac2c683c1e58d05c6d5aca750a49dcb2465da319dde99db9016a3dc1 url: https://src.opensuse.org/python-interpreters/python313 -revision: a4015331750593d33e50b9ad172e8330b02afd3d9ecd2df7359a8f4ba5f65185 +revision: 4a113343ac2c683c1e58d05c6d5aca750a49dcb2465da319dde99db9016a3dc1 projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj ++++++ 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-10-07 14:46:44.000000000 +0200 @@ -0,0 +1,6 @@ +.osc +*.obscpio +*.osc +_build.* +.pbuild +python313-*-build/ ++++++ doc-py38-to-py36.patch ++++++ --- /var/tmp/diff_new_pack.9pYSJx/_old 2026-10-13 17:43:44.005262231 +0200 +++ /var/tmp/diff_new_pack.9pYSJx/_new 2026-10-13 17:43:44.016262692 +0200 @@ -27,10 +27,10 @@ Doc/tools/extensions/pydoc_topics.py | 22 +++++----- 18 files changed, 159 insertions(+), 130 deletions(-) -Index: Python-3.13.15/Doc/Makefile +Index: Python-3.13.16/Doc/Makefile =================================================================== ---- Python-3.13.15.orig/Doc/Makefile 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/Makefile 2026-09-09 23:29:16.479880327 +0200 +--- Python-3.13.16.orig/Doc/Makefile 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/Makefile 2026-10-02 23:51:35.814379434 +0200 @@ -14,15 +14,15 @@ SOURCES = DISTVERSION = $(shell $(PYTHON) tools/extensions/patchlevel.py) @@ -51,10 +51,10 @@ $(PAPEROPT_$(PAPER)) \ $(SPHINXOPTS) $(SPHINXERRORHANDLING) \ . build/$(BUILDER) $(SOURCES) -Index: Python-3.13.15/Doc/c-api/arg.rst +Index: Python-3.13.16/Doc/c-api/arg.rst =================================================================== ---- Python-3.13.15.orig/Doc/c-api/arg.rst 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/c-api/arg.rst 2026-09-09 23:29:16.480264862 +0200 +--- Python-3.13.16.orig/Doc/c-api/arg.rst 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/c-api/arg.rst 2026-10-02 23:51:35.814677425 +0200 @@ -334,7 +334,6 @@ should raise an exception and leave the content of *address* unmodified. @@ -63,10 +63,10 @@ If the *converter* returns :c:macro:`!Py_CLEANUP_SUPPORTED`, it may get called a second time if the argument parsing eventually fails, giving the converter a -Index: Python-3.13.15/Doc/c-api/typeobj.rst +Index: Python-3.13.16/Doc/c-api/typeobj.rst =================================================================== ---- Python-3.13.15.orig/Doc/c-api/typeobj.rst 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/c-api/typeobj.rst 2026-09-09 23:29:16.480800075 +0200 +--- Python-3.13.16.orig/Doc/c-api/typeobj.rst 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/c-api/typeobj.rst 2026-10-02 23:51:35.815145738 +0200 @@ -610,7 +610,7 @@ Functions like :c:func:`PyObject_NewVar` will take the value of N as an argument, and store in the instance's :c:member:`~PyVarObject.ob_size` field. @@ -97,10 +97,10 @@ include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on whether :c:member:`~PyVarObject.ob_size` should be included). These are usually defined by the macro :c:macro:`PyObject_HEAD` or -Index: Python-3.13.15/Doc/conf.py +Index: Python-3.13.16/Doc/conf.py =================================================================== ---- Python-3.13.15.orig/Doc/conf.py 2026-09-09 23:29:03.479603005 +0200 -+++ Python-3.13.15/Doc/conf.py 2026-09-09 23:29:16.481205115 +0200 +--- Python-3.13.16.orig/Doc/conf.py 2026-10-02 23:50:35.480371934 +0200 ++++ Python-3.13.16/Doc/conf.py 2026-10-02 23:51:35.815614541 +0200 @@ -10,6 +10,8 @@ import sys from importlib.util import find_spec @@ -110,7 +110,7 @@ # Make our custom extensions available to Sphinx sys.path.append(os.path.abspath('tools/extensions')) sys.path.append(os.path.abspath('includes')) -@@ -56,11 +58,11 @@ +@@ -58,11 +60,11 @@ import _tkinter except ImportError: _tkinter = None @@ -127,7 +127,7 @@ ''' manpages_url = 'https://manpages.debian.org/{path}' -@@ -96,7 +98,7 @@ +@@ -100,7 +102,7 @@ # Minimum version of sphinx required # Keep this version in sync with ``Doc/requirements.txt``. @@ -136,7 +136,7 @@ # Create table of contents entries for domain objects (e.g. functions, classes, # attributes, etc.). Default is True. -@@ -247,6 +249,9 @@ +@@ -251,6 +253,9 @@ # Avoid a warning with Sphinx >= 4.0 root_doc = 'contents' @@ -146,7 +146,7 @@ # Allow translation of index directives gettext_additional_targets = [ 'index', -@@ -286,7 +291,7 @@ +@@ -290,7 +295,7 @@ # (See .readthedocs.yml and https://docs.readthedocs.io/en/stable/reference/environment-variables.html) is_deployment_preview = os.getenv("READTHEDOCS_VERSION_TYPE") == "external" repository_url = os.getenv("READTHEDOCS_GIT_CLONE_URL", "") @@ -155,7 +155,7 @@ html_context = { "is_deployment_preview": is_deployment_preview, "repository_url": repository_url or None, -@@ -562,6 +567,16 @@ +@@ -584,6 +589,16 @@ } extlinks_detect_hardcoded_links = True @@ -172,10 +172,10 @@ # Options for c_annotations extension # ----------------------------------- -Index: Python-3.13.15/Doc/library/doctest.rst +Index: Python-3.13.16/Doc/library/doctest.rst =================================================================== ---- Python-3.13.15.orig/Doc/library/doctest.rst 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/library/doctest.rst 2026-09-09 23:29:16.481515210 +0200 +--- Python-3.13.16.orig/Doc/library/doctest.rst 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/library/doctest.rst 2026-10-02 23:51:35.815906501 +0200 @@ -310,7 +310,6 @@ .. currentmodule:: None @@ -184,10 +184,10 @@ .. currentmodule:: doctest -Index: Python-3.13.15/Doc/library/email.compat32-message.rst +Index: Python-3.13.16/Doc/library/email.compat32-message.rst =================================================================== ---- Python-3.13.15.orig/Doc/library/email.compat32-message.rst 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/library/email.compat32-message.rst 2026-09-09 23:29:16.481886109 +0200 +--- Python-3.13.16.orig/Doc/library/email.compat32-message.rst 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/library/email.compat32-message.rst 2026-10-02 23:51:35.816255449 +0200 @@ -7,7 +7,6 @@ :synopsis: The base class representing email messages in a fashion backward compatible with Python 3.2 @@ -196,11 +196,11 @@ The :class:`Message` class is very similar to the -Index: Python-3.13.15/Doc/library/xml.etree.elementtree.rst +Index: Python-3.13.16/Doc/library/xml.etree.elementtree.rst =================================================================== ---- Python-3.13.15.orig/Doc/library/xml.etree.elementtree.rst 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/library/xml.etree.elementtree.rst 2026-09-09 23:29:16.482343402 +0200 -@@ -873,7 +873,6 @@ +--- Python-3.13.16.orig/Doc/library/xml.etree.elementtree.rst 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/library/xml.etree.elementtree.rst 2026-10-02 23:51:35.816515519 +0200 +@@ -905,7 +905,6 @@ .. module:: xml.etree.ElementTree :noindex: @@ -208,10 +208,10 @@ .. class:: Element(tag, attrib={}, **extra) -Index: Python-3.13.15/Doc/tools/check-warnings.py +Index: Python-3.13.16/Doc/tools/check-warnings.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/check-warnings.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/check-warnings.py 2026-09-09 23:29:16.482830300 +0200 +--- Python-3.13.16.orig/Doc/tools/check-warnings.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/check-warnings.py 2026-10-02 23:51:35.816795817 +0200 @@ -228,7 +228,8 @@ print(filename) for warning in warnings: @@ -231,10 +231,10 @@ for warning in warnings if "Doc/" in warning } -Index: Python-3.13.15/Doc/tools/extensions/audit_events.py +Index: Python-3.13.16/Doc/tools/extensions/audit_events.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/audit_events.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/audit_events.py 2026-09-09 23:29:16.483311898 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/audit_events.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/audit_events.py 2026-10-02 23:51:35.817037382 +0200 @@ -1,9 +1,6 @@ """Support for documenting audit events.""" @@ -370,10 +370,10 @@ ) -> nodes.row: row = nodes.row() name_node = nodes.paragraph("", nodes.Text(name)) -Index: Python-3.13.15/Doc/tools/extensions/availability.py +Index: Python-3.13.16/Doc/tools/extensions/availability.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/availability.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/availability.py 2026-09-09 23:29:16.483670163 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/availability.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/availability.py 2026-10-02 23:51:35.817352846 +0200 @@ -1,8 +1,6 @@ """Support for documenting platform availability""" @@ -427,10 +427,10 @@ app.add_directive("availability", Availability) return { -Index: Python-3.13.15/Doc/tools/extensions/c_annotations.py +Index: Python-3.13.16/Doc/tools/extensions/c_annotations.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/c_annotations.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/c_annotations.py 2026-09-09 23:29:16.483912099 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/c_annotations.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/c_annotations.py 2026-10-02 23:51:35.817546090 +0200 @@ -9,22 +9,26 @@ * Set ``stable_abi_file`` to the path to stable ABI list. """ @@ -569,10 +569,10 @@ return { "version": "1.0", "parallel_read_safe": True, -Index: Python-3.13.15/Doc/tools/extensions/changes.py +Index: Python-3.13.16/Doc/tools/extensions/changes.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/changes.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/changes.py 2026-09-09 23:29:41.298244669 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/changes.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/changes.py 2026-10-02 23:51:35.817758911 +0200 @@ -1,7 +1,5 @@ """Support for documenting version of changes, additions, deprecations.""" @@ -581,7 +581,7 @@ import re from docutils import nodes -@@ -28,7 +26,7 @@ +@@ -30,7 +28,7 @@ class PyVersionChange(VersionChange): @@ -590,7 +590,7 @@ # Replace the 'next' special token with the current development version self.arguments[0] = expand_version_arg( self.arguments[0], self.config.release -@@ -46,7 +44,7 @@ +@@ -48,7 +46,7 @@ "Deprecated since version %s, removed in version %s" ) @@ -599,8 +599,8 @@ # Replace the first two arguments (deprecated version and removed version) # with a single tuple of both versions. version_deprecated = expand_version_arg( -@@ -146,7 +144,7 @@ - break +@@ -174,7 +172,7 @@ + ) -def setup(app: Sphinx) -> ExtensionMetadata: @@ -608,10 +608,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.13.15/Doc/tools/extensions/glossary_search.py +Index: Python-3.13.16/Doc/tools/extensions/glossary_search.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/glossary_search.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/glossary_search.py 2026-09-09 23:29:16.484488436 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/glossary_search.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/glossary_search.py 2026-10-02 23:51:35.817922600 +0200 @@ -1,21 +1,27 @@ """Feature search results for glossary items prominently.""" @@ -655,10 +655,10 @@ app.connect('doctree-resolved', process_glossary_nodes) app.connect('build-finished', write_glossary_json) -Index: Python-3.13.15/Doc/tools/extensions/implementation_detail.py +Index: Python-3.13.16/Doc/tools/extensions/implementation_detail.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/implementation_detail.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/implementation_detail.py 2026-09-09 23:29:16.484673435 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/implementation_detail.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/implementation_detail.py 2026-10-02 23:51:35.818089274 +0200 @@ -1,17 +1,10 @@ """Support for marking up implementation details.""" @@ -709,10 +709,10 @@ app.add_directive("impl-detail", ImplementationDetail) return { -Index: Python-3.13.15/Doc/tools/extensions/issue_role.py +Index: Python-3.13.16/Doc/tools/extensions/issue_role.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/issue_role.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/issue_role.py 2026-09-09 23:29:16.484853795 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/issue_role.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/issue_role.py 2026-10-02 23:51:35.818298809 +0200 @@ -1,22 +1,18 @@ """Support for referencing issues in the tracker.""" @@ -758,10 +758,10 @@ app.add_role("issue", BPOIssue()) app.add_role("gh", GitHubIssue()) -Index: Python-3.13.15/Doc/tools/extensions/misc_news.py +Index: Python-3.13.16/Doc/tools/extensions/misc_news.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/misc_news.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/misc_news.py 2026-09-09 23:29:16.485049484 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/misc_news.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/misc_news.py 2026-10-02 23:51:35.818507231 +0200 @@ -1,7 +1,5 @@ """Support for including Misc/NEWS.""" @@ -814,10 +814,10 @@ app.add_directive("miscnews", MiscNews) return { -Index: Python-3.13.15/Doc/tools/extensions/patchlevel.py +Index: Python-3.13.16/Doc/tools/extensions/patchlevel.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/patchlevel.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/patchlevel.py 2026-09-09 23:29:16.485237418 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/patchlevel.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/patchlevel.py 2026-10-02 23:51:35.818674717 +0200 @@ -3,7 +3,7 @@ import re import sys @@ -855,10 +855,10 @@ version = f"{info.major}.{info.minor}" release = f"{info.major}.{info.minor}.{info.micro}" if info.releaselevel != "final": -Index: Python-3.13.15/Doc/tools/extensions/pydoc_topics.py +Index: Python-3.13.16/Doc/tools/extensions/pydoc_topics.py =================================================================== ---- Python-3.13.15.orig/Doc/tools/extensions/pydoc_topics.py 2026-08-05 14:25:43.000000000 +0200 -+++ Python-3.13.15/Doc/tools/extensions/pydoc_topics.py 2026-09-09 23:29:16.485427436 +0200 +--- Python-3.13.16.orig/Doc/tools/extensions/pydoc_topics.py 2026-09-30 20:57:20.000000000 +0200 ++++ Python-3.13.16/Doc/tools/extensions/pydoc_topics.py 2026-10-02 23:51:35.818838576 +0200 @@ -1,21 +1,23 @@ """Support for building "topic help" for pydoc.""" ++++++ sphinx9-runtime-node.patch ++++++ --- /var/tmp/diff_new_pack.9pYSJx/_old 2026-10-13 17:43:44.416279456 +0200 +++ /var/tmp/diff_new_pack.9pYSJx/_new 2026-10-13 17:43:44.429280001 +0200 @@ -1,28 +1,31 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matej Cepl <[email protected]> -Date: Thu, 10 Sep 2026 01:00:00 +0000 -Subject: [PATCH] docs: import Node at runtime for Sphinx 9 - -Sphinx 9 evaluates extension annotations while loading them. Import -Node at runtime instead of only under TYPE_CHECKING to avoid a NameError. - - ---- Python-3.13.15.orig/Doc/tools/extensions/changes.py -+++ Python-3.13.15/Doc/tools/extensions/changes.py -@@ -5,6 +5,7 @@ +Index: Python-3.13.16/Doc/tools/extensions/changes.py +=================================================================== +--- Python-3.13.16.orig/Doc/tools/extensions/changes.py ++++ Python-3.13.16/Doc/tools/extensions/changes.py +@@ -3,21 +3,18 @@ import re - + from docutils import nodes +from docutils.nodes import Node from sphinx import addnodes ++from sphinx.application import Sphinx + from sphinx.builders.changes import ChangesBuilder ++from sphinx.environment import BuildEnvironment from sphinx.domains.changeset import ( VersionChange, -@@ -15,7 +16,6 @@ - - TYPE_CHECKING = False - if TYPE_CHECKING: + versionlabel_classes, + versionlabels, + ) + from sphinx.locale import _ as sphinx_gettext +- +-TYPE_CHECKING = False +-if TYPE_CHECKING: - from docutils.nodes import Node - from sphinx.application import Sphinx - from sphinx.util.typing import ExtensionMetadata - +- from sphinx.application import Sphinx +- from sphinx.environment import BuildEnvironment +- from sphinx.util.typing import ExtensionMetadata ++from sphinx.util.typing import ExtensionMetadata + + + def expand_version_arg(argument: str, release: str) -> str:
