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:
 

Reply via email to