Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python315 for openSUSE:Factory 
checked in at 2025-12-22 22:49:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python315 (Old)
 and      /work/SRC/openSUSE:Factory/.python315.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python315"

Mon Dec 22 22:49:55 2025 rev:3 rq:1324009 version:3.15.0~a3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python315/python315.changes      2025-12-01 
11:12:40.904883450 +0100
+++ /work/SRC/openSUSE:Factory/.python315.new.1928/python315.changes    
2025-12-22 22:52:41.529559016 +0100
@@ -1,0 +2,848 @@
+Fri Dec 19 01:05:54 UTC 2025 - Matej Cepl <[email protected]>
+
+Update to 3.15.0~a3:
+- Security
+    - gh-142145: Remove quadratic behavior in xml.minidom node ID
+      cache clearing (CVE-2025-12084, bsc#1254997).
+    - gh-42400: Fix buffer overflow in _Py_wrealpath() for paths
+      exceeding MAXPATHLEN bytes by using dynamic memory
+      allocation instead of fixed-size buffer. Patch by Shamil
+      Abdulaev.
+    - gh-119451: Fix a potential memory denial of service in the
+      http.client module. When connecting to a malicious server,
+      it could cause an arbitrary amount of memory to be
+      allocated. This could have led to symptoms including
+      a MemoryError, swapping, out of memory (OOM) killed
+      processes or containers, or even system crashes
+      (CVE-2025-13836, bsc#1254400).
+    - gh-119342: Fix a potential memory denial of service in the
+      plistlib module. When reading a Plist file received from
+      untrusted source, it could cause an arbitrary amount of
+      memory to be allocated. This could have led to symptoms
+      including a MemoryError, swapping, out of memory (OOM)
+      killed processes or containers, or even system crashes
+      (CVE-2025-13837, bsc#1254401).
+- Library
+    - gh-142754: Add the ownerDocument attribute to
+      xml.dom.minidom elements and attributes created by directly
+      instantiating the Element or Attr class. Note that this way
+      of creating nodes is not supported; creator functions like
+      xml.dom.Document.documentElement() should be used instead.
+    - gh-142594: Fix crash in TextIOWrapper.close() when the
+      underlying buffer’s closed property calls detach().
+    - gh-76007: Deprecate __version__ from ctypes. Patch by Hugo
+      van Kemenade.
+    - gh-76007: Deprecate __version__ from wsgiref.simple_server.
+      Patch by Hugo van Kemenade.
+    - gh-142651: unittest.mock: fix a thread safety issue where
+      Mock.call_count may return inaccurate values when the mock
+      is called concurrently from multiple threads.
+    - gh-76007: Deprecate __version__ from http.server. Patch by
+      Hugo van Kemenade.
+    - gh-138122: Add --subprocesses flag to profiling.sampling
+      CLI to automatically profile subprocesses spawned by the
+      target. When enabled, the profiler monitors for new Python
+      subprocesses and profiles each one separately, writing
+      results to individual output files. This is useful for
+      profiling applications that use multiprocessing,
+      ProcessPoolExecutor, or other subprocess-based parallelism.
+      Patch by Pablo Galindo.
+    - gh-142595: Added type check during initialization of the
+      decimal module to prevent a crash in case of broken stdlib.
+      Patch by Sergey B Kirpichev.
+    - gh-142556: Fix crash when a task gets re-registered during
+      finalization in asyncio. Patch by Kumar Aditya.
+    - gh-138122: Add --mode=exception to the sampling profiler to
+      capture samples only from threads with an active exception,
+      useful for analyzing exception handling overhead. Patch by
+      Pablo Galindo.
+    - gh-142539: traceback: Fix location of carets in
+      SyntaxErrors when the source contains wide characters.
+    - gh-123241: Avoid reference count operations in garbage
+      collection of ctypes objects.
+    - gh-142451: hmac: correctly copy HMAC attributes for objects
+      copied through HMAC.copy(). Patch by Bénédikt Tran.
+    - gh-138122: The profiling.sampling flamegraph profiler now
+      supports inverted flamegraph view that aggregates all leaf
+      nodes. In a standard flamegraph, if a hot function is
+      called from multiple locations, it appears multiple times
+      as separate leaf nodes. In the inverted flamegraph, all
+      occurrences of the same leaf function are merged into
+      a single aggregated node at the root, showing the total
+      hotness of that function in one place. The children of each
+      aggregated node represent its callers, making it easier to
+      identify which functions consume the most CPU time and
+      where they are called from.
+    - gh-112527: The help text for required options in argparse
+      no longer extended with “ (default: None)”.
+    - gh-142438: Fixed a possible leaked GIL in
+      _PySSL_keylog_callback.
+    - gh-138122: Add bytecode-level instruction profiling to the
+      sampling profiler via the new --opcodes flag. When enabled,
+      the profiler captures which bytecode opcode is executing at
+      each sample, including Python 3.11+ adaptive
+      specializations, and visualizes this data in the heatmap,
+      flamegraph, gecko, and live output formats. Patch by Pablo
+      Galindo
+    - gh-142389: Add backtick markup support in argparse
+      description and epilog text to highlight inline code when
+      color output is enabled.
+    - gh-142346: Fix usage formatting for mutually exclusive
+      groups in argparse when they are preceded by positional
+      arguments or followed or intermixed with other optional
+      arguments.
+    - gh-142374: Fix cumulative percentage calculation for
+      recursive functions in the new sampling profiler. When
+      profiling recursive functions, cumulative statistics
+      (cumul%, cumtime) could exceed 100% because each recursive
+      frame in a stack was counted separately. For example,
+      a function recursing 500 times in every sample would show
+      50000% cumulative presence. The fix deduplicates locations
+      within each sample so cumulative stats correctly represent
+      “percentage of samples where this function was on the
+      stack”. Patch by Pablo Galindo.
+    - gh-142315: Pdb can now run scripts from anonymous pipes
+      used in process substitution. Patch by Bartosz Sławecki.
+    - gh-64532: Subparser help now includes required optional
+      arguments from the parent parser in the usage, making it
+      clearer what arguments are needed to run a subcommand.
+      Patch by Savannah Ostrowski.
+    - gh-142207: Fix: profiling.sampling may cause assertion
+      !(has_gil && gil_requested)
+    - gh-142332: Fix usage formatting for positional arguments in
+      mutually exclusive groups in argparse. in argparse.
+    - gh-142282: Fix winreg.QueryValueEx() to not accidentally
+      read garbage buffer under race condition.
+    - gh-142318: Fix typing 'q' at the help of the interactive
+      tachyon profiler exiting the profiler.
+    - gh-75949: Fix argparse to preserve | separators in mutually
+      exclusive groups when the usage line wraps due to length.
+    - gh-142267: Improve argparse performance by caching the
+      formatter used for argument validation.
+    - gh-139862: Remove color parameter from
+      argparse.HelpFormatter constructor. Color is controlled by
+      ArgumentParser.
+    - gh-68552: MisplacedEnvelopeHeaderDefect and Missing header
+      name defects are now correctly passed to the handle_defect
+      method of policy in FeedParser.
+    - gh-142206: The resource tracker in the multiprocessing
+      module can now understand messages from older versions of
+      itself. This avoids issues with upgrading Python while it
+      is running. (Note that such ‘in-place’ upgrades are not
+      tested.)
+    - gh-142214: Fix two regressions in dataclasses in Python
+      3.14.1 related to annotations. An exception is no longer
+      raised if slots=True is used and the __init__ method does
+      not have an __annotate__ attribute (likely because
+      init=False was used). An exception is no longer raised if
+      annotations are requested on the __init__ method and one of
+      the fields is not present in the class annotations. This
+      can occur in certain dynamic scenarios. Patch by Jelle
+      Zijlstra.
+    - gh-142203: Remove the debug_override parameter from
+      importlib.util.cache_from_source() which has been
+      deprecated since Python 3.5.
+    - gh-138122: The _remote_debugging module now implements
+      frame caching in the RemoteUnwinder class to reduce memory
+      reads when profiling remote processes. When
+      cache_frames=True, unchanged portions of the call stack are
+      reused from previous samples, significantly improving
+      profiling performance for deep call stacks.
+    - gh-116738: Fix cmath data race when initializing
+      trigonometric tables with subinterpreters.
+    - gh-141982: Allow pdb to set breakpoints on async functions
+      with function names.
+    - gh-74389: When the stdin being used by a subprocess.Popen
+      instance is closed, this is now ignored in
+      subprocess.Popen.communicate() instead of leaving the class
+      in an inconsistent state.
+    - gh-87512: Fix subprocess.Popen.communicate() timeout
+      handling on Windows when writing large input. Previously,
+      the timeout was ignored during stdin writing, causing the
+      method to block indefinitely if the child process did not
+      consume input quickly. The stdin write is now performed in
+      a background thread, allowing the timeout to be properly
+      enforced.
+    - gh-141939: Add color to all interpolated values in argparse
+      help, like %(default)s or %(choices)s. Patch by Alex
+      Prengère.
+    - gh-141473: When subprocess.Popen.communicate() was called
+      with input and a timeout and is called for a second time
+      after a TimeoutExpired exception before the process has
+      died, it should no longer hang.
+    - gh-141999: Correctly allow KeyboardInterrupt to stop the
+      process when using profiling.sampling.
+    - gh-142006: Fix a bug in the email.policy.default folding
+      algorithm which incorrectly resulted in a doubled newline
+      when a line ending at exactly max_line_length was followed
+      by an unfoldable token.
+    - gh-141968: Remove data copy from re compilation of regexes
+      with large charsets by using bytearray.take_bytes().
+    - gh-141968: Remove data copy from encodings.idna encode()
+      and encode() by using bytearray.take_bytes().
+    - gh-141968: Remove data copy from codecs punycode encoding
+      by using bytearray.take_bytes().
+    - gh-141968: Remove data copy from
+      wave.Wave_read.readframes() and
+      wave.Wave_write.writeframes() by using
+      bytearray.take_bytes().
+    - gh-141968: Remove a data copy from base64.b32decode() and
+      base64.b32encode() by using bytearray.take_bytes().
+    - gh-59000: Fix pdb breakpoint resolution for class methods
+      when the module defining the class is not imported.
+    - gh-116738: Fix thread safety issue with re scanner objects
+      in free-threaded builds.
+    - gh-138122: The profiling.sampling flamegraph profiler now
+      displays thread status statistics showing the percentage of
+      time threads spend holding the GIL, running without the
+      GIL, waiting for the GIL, and performing garbage
+      collection. These statistics help identify GIL contention
+      and thread behavior patterns. When filtering by thread, the
+      display shows per-thread metrics.
+    - gh-141781: Fixed an issue where pdb.line_prefix assignment
+      was ignored if assigned after the module was imported.
+    - gh-141863: Update Streams to use bytearray.take_bytes() for
+      a over 10% performance improvement on pyperformance
+      asyncio_tcp benchmark.
+    - gh-141817: Add socket.IPV6_HDRINCL constant.
+    - gh-105836: Fix asyncio.run_coroutine_threadsafe() leaving
+      underlying cancelled asyncio task running.
+    - gh-141570: Support file-like object raising OSError from
+      fileno() in color detection (_colorize.can_colorize()).
+      This can occur when sys.stdout is redirected.
+    - gh-141679: Add colour to defaults in argparse help. Patch
+      by Hugo van Kemenade.
+    - gh-141686: Break reference cycles created by each call to
+      json.dump() or json.JSONEncoder.iterencode().
+    - gh-141659: Fix bad file descriptor errors from
+      _posixsubprocess on AIX.
+    - gh-141645: Add a new --live mode to the tachyon profiler in
+      profiling.sampling module. This mode consist of a live TUI
+      that displays real-time profiling statistics as the target
+      application runs, similar to top. Patch by Pablo Galindo
+    - gh-141615: Check stdin instead of stdout for use_rawinput
+      in pdb.
+    - gh-69113: Fix doctest to correctly report line numbers for
+      doctests in __test__ dictionary when formatted as
+      triple-quoted strings by finding unique lines in the string
+      and matching them in the source file.
+    - gh-141600: Fix musl version detection on Void Linux.
+    - gh-48752: Add readline.get_pre_input_hook() function to
+      retrieve the current pre-input hook. This allows
+      applications to save and restore the hook without
+      overwriting user settings. Patch by Sanyam Khurana.
+    - gh-141565: Add async-aware profiling to the Tachyon
+      sampling profiler. The profiler now reconstructs and
+      displays async task hierarchies in flamegraphs, making the
+      output more actionable for users. Patch by Savannah
+      Ostrowski and Pablo Galindo Salgado.
+    - gh-60107: Remove a copy from io.RawIOBase.read(). If the
+      underlying I/O class keeps a reference to the mutable
+      memory, raise a BufferError.
+    - gh-116738: Make csv module thread-safe on the free threaded
+      build.
+    - gh-140911: collections: Ensure that the methods
+      UserString.rindex() and UserString.index() accept
+      collections.UserString instances as the sub argument.
+    - gh-140875: Fix handling of unclosed character references
+      (named and numerical) followed by the end of file in
+      html.parser.HTMLParser with convert_charrefs=False.
+    - gh-140677: Add heatmap visualization mode to the Tachyon
+      sampling profiler. The new --heatmap output format provides
+      a line-by-line view showing execution intensity with
+      color-coded samples, inline statistics, and interactive
+      call graph navigation between callers and callees.
+    - gh-139946: Distinguish stdout and stderr when colorizing
+      output in argparse module.
+    - gh-76007: pydoc: Fix DeprecationWarning being raised when
+      generating doc for stdlib modules.
+    - gh-139686: Make importlib.reload no-op for lazy modules.
+    - gh-138697: Fix inferring dest from a single-dash long
+      option in argparse. If a short option and a single-dash
+      long option are passed to add_argument(), dest is now
+      inferred from the single-dash long option.
+    - gh-138525: Add support for single-dash long options and
+      alternate prefix characters in
+      argparse.BooleanOptionalAction.
+    - gh-79986: Add parsing for References and In-Reply-To
+      headers to the email library that parses the header content
+      as lists of message id tokens. This prevents them from
+      being folded incorrectly.
+    - gh-135559: Flag: a dir() on a Flag enumeration now shows
+      non-canonical members. (i.e. aliases).
+    - gh-134453: Fixed subprocess.Popen.communicate() input=
+      handling of memoryview instances that were non-byte shaped
+      on POSIX platforms. Those are now properly cast to a byte
+      shaped view instead of truncating the input. Windows
+      platforms did not have this bug.
+    - gh-127930: Add __all__ to tkinter.simpledialog.
+    - gh-115952: Fix a potential memory denial of service in the
+      pickle module. When reading a pickled data received from
+      untrusted source, it could cause an arbitrary amount of
+      memory to be allocated, even if the code that is allowed to
+      execute is restricted by overriding the find_class()
+      method. This could have led to symptoms including
+      a MemoryError, swapping, out of memory (OOM) killed
+      processes or containers, or even system crashes. bpo-40350:
+      Fix support for namespace packages in modulefinder.
+- Documentation
+    - gh-141994: xml.sax.handler: Make Documentation of
+      xml.sax.handler.feature_external_ges warn of opening up to
+      external entity attacks. Patch by Sebastian Pipping.
+- Core and Builtins
+    - gh-134584: Eliminate redundant refcounting from
+      _STORE_ATTR_INSTANCE_VALUE.
+    - gh-142718: JIT: Fix segfault caused by not flushing the
+      stack to memory at side exits.
+    - gh-142737: Tracebacks will be displayed in fallback mode
++++ 551 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/python315/python315.changes
++++ and /work/SRC/openSUSE:Factory/.python315.new.1928/python315.changes

Old:
----
  CVE-2025-6075-expandvars-perf-degrad.patch
  Python-3.15.0a1.tar.xz
  Python-3.15.0a1.tar.xz.sigstore

New:
----
  Python-3.15.0a3.tar.xz
  Python-3.15.0a3.tar.xz.sigstore

----------(Old B)----------
  Old:    + gh-137618: PYTHON_FOR_REGEN now requires Python 3.10 to Python 3.15.
- Drop patch CVE-2025-6075-expandvars-perf-degrad.patch, included upstream.
----------(Old E)----------

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

Other differences:
------------------
++++++ python315.spec ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:43.705648760 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:43.705648760 +0100
@@ -162,8 +162,8 @@
 # _md5.cpython-38m-x86_64-linux-gnu.so
 %define dynlib() 
%{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
 Name:           %{python_pkg_name}%{psuffix}
-Version:        3.15.0~a1
-%define         tarversion 3.15.0a1
+Version:        3.15.0~a3
+%define         tarversion 3.15.0a3
 %define         tarname    Python-%{tarversion}
 Release:        0
 Summary:        Python 3 Interpreter
@@ -224,9 +224,6 @@
 Patch41:        bsc1243155-sphinx-non-determinism.patch
 # PATCH-FIX-OPENSUSE gh139257-Support-docutils-0.22.patch 
gh#python/cpython#139257 [email protected]
 Patch42:        gh139257-Support-docutils-0.22.patch
-# PATCH-FIX-UPSTREAM CVE-2025-6075-expandvars-perf-degrad.patch bsc#1252974 
[email protected]
-# Avoid potential quadratic complexity vulnerabilities in path modules
-Patch43:        CVE-2025-6075-expandvars-perf-degrad.patch
 #### Python 3.15 DEVELOPMENT PATCHES
 BuildRequires:  autoconf-archive
 BuildRequires:  automake
@@ -272,7 +269,7 @@
 
 %if %{with experimental_jit}
 # needed for experimental_jit
-BuildRequires:  clang19 llvm19
+BuildRequires:  clang21 llvm21
 BuildRequires:  llvm
 %endif
 
@@ -577,7 +574,7 @@
 export SLE_VERSION="0%{?sle_version}"
 
 %if %{with doc}
-TODAY_DATE=`date -r %{SOURCE0} "+%%B %%d, %%Y"`
+TODAY_DATE=`date -r %{SOURCE0} "+%B %d, %Y"`
 # TODO use not date of tarball but date of latest patch
 
 cd Doc
@@ -690,6 +687,8 @@
 
 # Failing tests on python 3.15
 EXCLUDE="$EXCLUDE test_regrtest test_sysconfig"
+# Segfaults on 32 bit
+EXCLUDE="$EXCLUDE test_profiling"
 
 # Limit virtual memory to avoid spurious failures
 if test $(ulimit -v) = unlimited || test $(ulimit -v) -gt 10000000; then
@@ -755,7 +754,7 @@
 for library in \
     array binascii _bisect _bz2 cmath _codecs_* \
     _csv _ctypes _decimal fcntl grp \
-    _hashlib _heapq _hmac _json _lsprof _lzma math mmap \
+    _hashlib _heapq _hmac _json _lsprof _lzma math mmap _math_integer \
     _multibytecodec _multiprocessing _pickle _posixshmem \
     _posixsubprocess _queue _random resource select _ssl _socket \
     _statistics _struct syslog termios _testbuffer _testimportmultiple \
@@ -1088,6 +1087,7 @@
 %{dynlib _lzma}
 %{dynlib math}
 %{dynlib mmap}
+%{dynlib _math_integer}
 %{dynlib _multibytecodec}
 %{dynlib _multiprocessing}
 %{dynlib _pickle}

++++++ CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:43.745650410 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:43.749650575 +0100
@@ -4,11 +4,11 @@
  Lib/test/test_xml_etree.py |   10 ++++++++++
  3 files changed, 17 insertions(+)
 
-Index: Python-3.15.0a1/Lib/test/test_pyexpat.py
+Index: Python-3.15.0a3/Lib/test/test_pyexpat.py
 ===================================================================
---- Python-3.15.0a1.orig/Lib/test/test_pyexpat.py      2025-10-24 
23:53:24.356893960 +0200
-+++ Python-3.15.0a1/Lib/test/test_pyexpat.py   2025-10-24 23:53:50.136311340 
+0200
-@@ -843,6 +843,10 @@
+--- Python-3.15.0a3.orig/Lib/test/test_pyexpat.py      2025-12-16 
13:26:12.000000000 +0100
++++ Python-3.15.0a3/Lib/test/test_pyexpat.py   2025-12-19 02:26:33.964969539 
+0100
+@@ -860,6 +860,10 @@
          self.assertEqual(started, ['doc'])
  
      def test_reparse_deferral_disabled(self):
@@ -19,10 +19,10 @@
          started = []
  
          def start_element(name, _):
-Index: Python-3.15.0a1/Lib/test/test_sax.py
+Index: Python-3.15.0a3/Lib/test/test_sax.py
 ===================================================================
---- Python-3.15.0a1.orig/Lib/test/test_sax.py  2025-10-24 23:53:24.425039914 
+0200
-+++ Python-3.15.0a1/Lib/test/test_sax.py       2025-10-24 23:53:50.136951370 
+0200
+--- Python-3.15.0a3.orig/Lib/test/test_sax.py  2025-12-16 13:26:12.000000000 
+0100
++++ Python-3.15.0a3/Lib/test/test_sax.py       2025-12-19 02:26:33.966048947 
+0100
 @@ -1241,6 +1241,9 @@
  
          self.assertEqual(result.getvalue(), start + b"<doc></doc>")
@@ -33,10 +33,10 @@
      def test_flush_reparse_deferral_disabled(self):
          result = BytesIO()
          xmlgen = XMLGenerator(result)
-Index: Python-3.15.0a1/Lib/test/test_xml_etree.py
+Index: Python-3.15.0a3/Lib/test/test_xml_etree.py
 ===================================================================
---- Python-3.15.0a1.orig/Lib/test/test_xml_etree.py    2025-10-24 
23:53:24.855327755 +0200
-+++ Python-3.15.0a1/Lib/test/test_xml_etree.py 2025-10-24 23:53:50.137646227 
+0200
+--- Python-3.15.0a3.orig/Lib/test/test_xml_etree.py    2025-12-16 
13:26:12.000000000 +0100
++++ Python-3.15.0a3/Lib/test/test_xml_etree.py 2025-12-19 02:26:33.966681016 
+0100
 @@ -138,6 +138,11 @@
      return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq)
  
@@ -49,7 +49,7 @@
  def checkwarnings(*filters, quiet=False):
      def decorator(test):
          def newtest(*args, **kwargs):
-@@ -1547,9 +1552,11 @@
+@@ -1620,9 +1625,11 @@
          self.assert_event_tags(parser, [('end', 'root')])
          self.assertIsNone(parser.close())
  
@@ -61,7 +61,7 @@
      def test_simple_xml_chunk_5(self):
          self.test_simple_xml(chunk_size=5, flush=True)
  
-@@ -1776,6 +1783,9 @@
+@@ -1849,6 +1856,9 @@
  
          self.assert_event_tags(parser, [('end', 'doc')])
  

++++++ Python-3.15.0a1.tar.xz -> Python-3.15.0a3.tar.xz ++++++
/work/SRC/openSUSE:Factory/python315/Python-3.15.0a1.tar.xz 
/work/SRC/openSUSE:Factory/.python315.new.1928/Python-3.15.0a3.tar.xz differ: 
char 26, line 1

++++++ Python-3.15.0a1.tar.xz.sigstore -> Python-3.15.0a3.tar.xz.sigstore ++++++
--- /work/SRC/openSUSE:Factory/python315/Python-3.15.0a1.tar.xz.sigstore        
2025-11-07 18:26:33.885797563 +0100
+++ 
/work/SRC/openSUSE:Factory/.python315.new.1928/Python-3.15.0a3.tar.xz.sigstore  
    2025-12-22 22:52:41.409554067 +0100
@@ -1 +1 @@
-{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", 
"verificationMaterial": {"certificate": {"rawBytes": 
"MIICzTCCAlSgAwIBAgIUHBnJY2cDVNyp0+jVDU64RXDfTLUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUxMDE0MTQ0NjIwWhcNMjUxMDE0MTQ1NjIwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELQMCqzrc9clNKPUzmojg3JbTM3XXjmo/wWH6zH8rh6GGP8TJSz+A8OMUdeE7ktSr5+9QeVaEGDRasbmwIAKX8aOCAXMwggFvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQULWp/zwV2HmZ8X/y10L1ftl0hN5QwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABmeMvvDEAAAQDAEcwRQIhALiWW21hVw6w95sI+lVh8NFcaWG1KITMvDC0HytgwrkTAiBmnB/Il7sqNC9TV3ybSbyMgXUrXlpz7Y4+ri6qEe8OmjAKBggqhkjOPQQDAwNnADBkAjAav7uspSvsMYLOIqcV65W7UEfUl/+oaDVcAnUBTn4VzzWVNt7r
 
Rh/sGU9Ow1fsgaQCMHKjjdlRouWZV13QxRqUlwiYnso8K/LrepolTWuu9hmJ4498BbxpQkG82AiFgwHKiA=="},
 "tlogEntries": [{"logIndex": "605381105", "logId": {"keyId": 
"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": 
"hashedrekord", "version": "0.0.1"}, "integratedTime": "1760453180", 
"inclusionPromise": {"signedEntryTimestamp": 
"MEUCIQD2M+xpYMeDZb0B+2kBuUQDfsBPNuaNbOPB/tLnCY1+CwIgH1bBckucAYWz+3wFvU9MVGWc985g1wJsYy27aYYg+5c="},
 "inclusionProof": {"logIndex": "483476843", "rootHash": 
"VcoiuI3enMGLjUhgMzdjfI+PlOWmz/r/ADehdiW44fo=", "treeSize": "483476848", 
"hashes": ["r/fQjBRZKxYDs6T00FfDqZfE3gNFN5jUw2hPbI6Klb4=", 
"Fu7qRL8q8yz4aWKTEU5+PzVtd9R4k7HkP62EtCYWURQ=", 
"jvpXra7v+FEGbwj68er3f1BUvjOiYUjCL/pwYF0UG6c=", 
"VxMxwBbsJTw+9QBfKnXMOxyeZ7HJKlExLQMtqStpg0Y=", 
"fU2ETS/0MxEeuY1O0lS9SJrXcXC78pJVOtXCNv7LymQ=", 
"TS0t//1G9191vAjMg50KLfXBi3UY8ANFmx1ZNp2k5vk=", 
"1bdCuQIZjyx9tCJXNrYevW3fyHk6huvJ/h5uIlfIiy0=", 
"wjy79ir2+9dNofV/yngwyU7P7qEQoJWbN/f/+YIqeSg=", 
"Tx/mYCxiKxJdXGSB99WD+yAVDPg18BLOj5l
 DqPQUNe4=", "eSCfK8nXzRpj/m2HYQ9+GtLIccUwLOkk3iYGC4R5zXI=", 
"inrOYOb+roitD1EYWHmRPy8aJnjhSAhp5cHXbXVlxU4=", 
"8nCds1SUzxGg2Xoa+M1tOFTwx+1BGtp8TDMSS4P54xQ=", 
"V5lOdefY1WOOt4iQp7tZoyj1beBDVi24KsEMcgsqZds=", 
"2Wv4GiithwNukRKV06clevnQQYCzXmSS/+/OJtXgsXQ=", 
"1mfy94KpcItqshH9+gwqV6jccupcaMpVsF28New8zDY=", 
"vS7O4ozHIQZJWBiov+mkpI27GE8zAmVCEkRcP3NDyNE="], "checkpoint": {"envelope": 
"rekor.sigstore.dev - 
1193050959916656506\n483476848\nVcoiuI3enMGLjUhgMzdjfI+PlOWmz/r/ADehdiW44fo=\n\n\u2014
 rekor.sigstore.dev 
wNI9ajBGAiEAhRdd+DI17Uc7iB9ExZ3kq9O47UtmJyeRF8AcagocSIYCIQCjl6Z9CXp3exjHHmeQCwLAVOGRbCfKwsbuQAZwl4K80A==\n"}},
 "canonicalizedBody": 
"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzMTk0OTM5ZDQ4OGVlYWVlZmRjZjk5MGQzNTU0MmQ5YWQxY2U3ODg3ODljNGUyMzA1YTIwNjBlYjcwNThlNWE0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQkZ3NFEvelFZcnJWNHlSalN0TmkwSkd3NG80VTdjWGlCWFZHUksrYTVNV0FpQmFBYTBMTUN6VkZxelVEbVkrMEYranZEQm8waFJU
 
c25JckVUY1RMY1ZPZkE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZWRU5EUVd4VFowRjNTVUpCWjBsVlNFSnVTbGt5WTBSV1RubHdNQ3RxVmtSVk5qUlNXRVJtVkV4VmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZlRTFFUlRCTlZGRXdUbXBKZDFkb1kwNU5hbFY0VFVSRk1FMVVVVEZPYWtsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZNVVUxRGNYcHlZemxqYkU1TFVGVjZiVzlxWnpOS1lsUk5NMWhZYW0xdkwzZFhTRFlLZWtnNGNtZzJSMGRRT0ZSS1Uzb3JRVGhQVFZWa1pVVTNhM1JUY2pVck9WRmxWbUZGUjBSU1lYTmliWGRKUVV0WU9HRlBRMEZZVFhkblowWjJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZNVjNBdkNucDNWakpJYlZvNFdDOTVNVEJNTVdaMGJEQm9UalZSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM
 
2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVdkWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpnS1FraHZRV1ZCUWpKQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnRaVTEyZGtSRlFRcEJRVkZFUVVWamQxSlJTV2hCVEdsWFZ6SXhhRlozTm5jNU5YTkpLMnhXYURoT1JtTmhWMGN4UzBsVVRYWkVRekJJZVhSbmQzSnJWRUZwUW0xdVFpOUpDbXczYzNGT1F6bFVWak41WWxOaWVVMW5XRlZ5V0d4d2VqZFpOQ3R5YVRaeFJXVTRUMjFxUVV0Q1oyZHhhR3RxVDFCUlVVUkJkMDV1UVVSQ2EwRnFRV0VLZGpkMWMzQlRkbk5OV1V4UFNYRmpWalkxVnpkVlJXWlZiQzhyYjJGRVZtTkJibFZDVkc0MFZucDZWMVpPZERkeVVtZ3ZjMGRWT1U5M01XWnpaMkZSUXdwTlNFdHFhbVJzVW05MVYxcFdNVE5SZUZKeFZXeDNhVmx1YzI4NFN5OU1jbVZ3YjJ4VVYzVjFPV2h0U2pRME9UaENZbmh3VVd0SE9ESkJhVVpuZDBoTENtbEJQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]},
 "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": 
"MZSTnUiO6
 u79z5kNNVQtmtHOeIeJxOIwWiBg63BY5aQ="}, "signature": 
"MEQCIBFw4Q/zQYrrV4yRjStNi0JGw4o4U7cXiBXVGRK+a5MWAiBaAa0LMCzVFqzUDmY+0F+jvDBo0hRTsnIrETcTLcVOfA=="}}
+{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", 
"verificationMaterial": {"certificate": {"rawBytes": 
"MIICzjCCAlOgAwIBAgIUWGdIw6jkonGGlxTefVWR5dycYMUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUxMjE2MTQzNDE1WhcNMjUxMjE2MTQ0NDE1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMeXAUdFRAMUwkol7S3TfLRDGSmTBLxrIQ3KpDiKGHVX13ZTBQwnQnTwV+sIwP787IJZHObALFx34l925AS5oSKOCAXIwggFuMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU1KEmc4ZWtSbp0HrR7xEl632FVQEwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABmyeVUi8AAAQDAEYwRAIgeNcEmGEuUlpapxVCjn9ssKb5U0FKgDx1cACe+m//GqwCIHaMa36eZ/5Ov9IQNyTUkm0bquaYWBvG5iGXMccaNkI+MAoGCCqGSM49BAMDA2kAMGYCMQDE+zTm1YaPVjKhhV7UrybXV88rHo7p1wedZglYz/WTQ6tdfXme
 
WXd4XcY8qvdMXxECMQCKipA6iUBoyWfYxM9wwNk1R0+YPpDvApKpuKcJssq7UBMH+qsVU2mYROAeVI/cTUc="},
 "tlogEntries": [{"logIndex": "767379108", "logId": {"keyId": 
"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": 
"hashedrekord", "version": "0.0.1"}, "integratedTime": "1765895656", 
"inclusionPromise": {"signedEntryTimestamp": 
"MEYCIQC/gr68tewjyDayVY1YgkSx3wyJr1gDp9niugBN6CuI3QIhAI+AI17ZFMXpBHbN6nqzRRSF3gkcOFeiztd/ddPiR3Qr"},
 "inclusionProof": {"logIndex": "645474846", "rootHash": 
"+7pvZSc1vkrbz1NYkRJTW6ebJVNEKnBbysMwrYfqBBw=", "treeSize": "645474850", 
"hashes": ["3IExMYCGoBe2wYmaUDFh/NwM9Yfz+YqErksZ9FiJMdU=", 
"5OlXK7CbwTpuOXJUjRBnsTRYTjVw1n5Yy8FU5TBL0XA=", 
"k7H5SO2fy1fisX7nQuhceTTJDt+OYrkbDLi4yA4s8x8=", 
"OUxbxHF4gP/nb0YaEJsiu5bD9WwjbSKIysm29uO2Wg8=", 
"xhz07XLYNXp0QZ6l+zMHq2ou8fUvEBzrXHj5p8bhW0w=", 
"TBrb22/2hnzqPGPgryvf9E/XySk6biXtuETjbuLr4iQ=", 
"XXiywYiYcfd6pMWvLjChESCzRvayGZ5Ga9vLoivArTc=", 
"6ymuOfiti8iWpSzihumjs587leNSK8iia3j2fQWYQvQ=", 
"x/rIPkrAoE9rz9kw44ofjWopN9MMV2UwNq4
 ZZxyk6gA=", "Jx3nGngq60bR51zwd8OmKd+Jv0wh/mwftjiOc6qQXgo=", 
"1Vd3rUmNolkFfJocF+ehhHicx+XZCI1oORVzpl1WD3k=", 
"STJBwmMYjQL7nNE7RtmufqTzKydDq3utsDtdFqjV83Q=", 
"volnUoGNFpLYblGf83KDzlbqdAQlS0WvwWzyZgIHQjo=", 
"1j4lDTV8P+GITn6Cn5v42uy3JK42BtPmPkJMt5IcMy0=", 
"X6vkxz0poxK2DIlRur/7LbEdz3iDXj5QY/gLk/ewXjA=", 
"ZmUkYkHBy1B723JrEgiKvepTdHYrP6y2a4oODYvi5VY=", 
"T4DqWD42hAtN+vX8jKCWqoC4meE4JekI9LxYGCcPy1M="], "checkpoint": {"envelope": 
"rekor.sigstore.dev - 
1193050959916656506\n645474850\n+7pvZSc1vkrbz1NYkRJTW6ebJVNEKnBbysMwrYfqBBw=\n\n\u2014
 rekor.sigstore.dev 
wNI9ajBDAh8xrHp05yLv6Q/03Lpwf+xo601cjQSlyFVx6fhX4g6QAiAHV2ukAWeKPX30txbAW2ymQCsMCjyaxXVyMi5ohj7Dvg==\n"}},
 "canonicalizedBody": 
"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2YWIwMmNkYWMyNDUwNTc3OTg3N2JiMWQ5MTg5NDMyZDY3ZTkwZGRmMmE5YjhiN2IzNzNlYWQ1NGFjMDdiNjA3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQ0hPTThHQjNyZFVTZTZzSFNMLzZWeDE3TkVabmlqRG1qZ2tVdXdDS0xu
 
YkFpQU54VFdKRFk4dmhhVEF2NDVpWFlDM0dvTjl6RDVtYllpdUFkM3FockN2MGc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4UFowRjNTVUpCWjBsVlYwZGtTWGMyYW10dmJrZEhiSGhVWldaV1YxSTFaSGxqV1UxVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZlRTFxUlRKTlZGRjZUa1JGTVZkb1kwNU5hbFY0VFdwRk1rMVVVVEJPUkVVeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZOWlZoQlZXUkdVa0ZOVlhkcmIydzNVek5VWmt4U1JFZFRiVlJDVEhoeVNWRXpTM0FLUkdsTFIwaFdXREV6V2xSQ1VYZHVVVzVVZDFZcmMwbDNVRGM0TjBsS1draFBZa0ZNUm5nek5HdzVNalZCVXpWdlUwdFBRMEZZU1hkblowWjFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlV4UzBWdENtTTBXbGQwVTJKd01FaHlVamQ0Uld3Mk16SkdWbEZGZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV
 
1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVZGWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpjS1FraHJRV1IzUWpGQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnRlV1ZXVldrNFFRcEJRVkZFUVVWWmQxSkJTV2RsVG1ORmJVZEZkVlZzY0dGd2VGWkRhbTQ1YzNOTFlqVlZNRVpMWjBSNE1XTkJRMlVyYlM4dlIzRjNRMGxJWVUxaE16WmxDbG92TlU5Mk9VbFJUbmxVVld0dE1HSnhkV0ZaVjBKMlJ6VnBSMWhOWTJOaFRtdEpLMDFCYjBkRFEzRkhVMDAwT1VKQlRVUkJNbXRCVFVkWlEwMVJSRVVLSzNwVWJURlpZVkJXYWt0b2FGWTNWWEo1WWxoV09EaHlTRzgzY0RGM1pXUmFaMnhaZWk5WFZGRTJkR1JtV0cxbFYxaGtORmhqV1RoeGRtUk5XSGhGUXdwTlVVTkxhWEJCTm1sVlFtOTVWMlpaZUUwNWQzZE9hekZTTUN0WlVIQkVka0Z3UzNCMVMyTktjM054TjFWQ1RVZ3JjWE5XVlRKdFdWSlBRV1ZXU1M5akNsUlZZejBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],
 "timestampVerificationData": {}}, "messag
 eSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": 
"arAs2sJFBXeYd7sdkYlDLWfpDd8qm4t7Nz6tVKwHtgc="}, "signature": 
"MEQCICHOM8GB3rdUSe6sHSL/6Vx17NEZnijDmjgkUuwCKLnbAiANxTWJDY8vhaTAv45iXYC3GoN9zD5mbYiuAd3qhrCv0g=="}}

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:43.873655689 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:43.881656019 +0100
@@ -1,6 +1,6 @@
-mtime: 1764427083
-commit: e52bc998396e70d02592a6fbcb3faafe0087961d29203b5bb3447d31c002b838
+mtime: 1766162987
+commit: aa61ff92f21c17abc744fe330008179e98876e1a0824dfdd5d307a262f4d22ce
 url: https://src.opensuse.org/python-interpreters/python315.git
-revision: e52bc998396e70d02592a6fbcb3faafe0087961d29203b5bb3447d31c002b838
+revision: aa61ff92f21c17abc744fe330008179e98876e1a0824dfdd5d307a262f4d22ce
 projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj
 

++++++ bpo-31046_ensurepip_honours_prefix.patch ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:43.909657174 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:43.917657503 +0100
@@ -13,11 +13,11 @@
  5 files changed, 37 insertions(+), 9 deletions(-)
  create mode 100644 
Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
 
-Index: Python-3.15.0a1/Doc/library/ensurepip.rst
+Index: Python-3.15.0a3/Doc/library/ensurepip.rst
 ===================================================================
---- Python-3.15.0a1.orig/Doc/library/ensurepip.rst     2025-10-14 
12:46:08.000000000 +0200
-+++ Python-3.15.0a1/Doc/library/ensurepip.rst  2025-10-24 23:53:43.587408643 
+0200
-@@ -61,7 +61,11 @@
+--- Python-3.15.0a3.orig/Doc/library/ensurepip.rst     2025-12-16 
13:26:12.000000000 +0100
++++ Python-3.15.0a3/Doc/library/ensurepip.rst  2025-12-19 02:25:25.531895542 
+0100
+@@ -65,7 +65,11 @@
  By default, ``pip`` is installed into the current virtual environment
  (if one is active) or into the system site packages (if there is no
  active virtual environment). The installation location can be controlled
@@ -30,7 +30,7 @@
  
  .. option:: --root <dir>
  
-@@ -102,7 +106,7 @@
+@@ -106,7 +110,7 @@
     Returns a string specifying the available version of pip that will be
     installed when bootstrapping an environment.
  
@@ -39,7 +39,7 @@
                          altinstall=False, default_pip=False, \
                          verbosity=0)
  
-@@ -112,6 +116,8 @@
+@@ -116,6 +120,8 @@
     If *root* is ``None``, then installation uses the default install location
     for the current environment.
  
@@ -48,7 +48,7 @@
     *upgrade* indicates whether or not to upgrade an existing installation
     of an earlier version of ``pip`` to the available version.
  
-@@ -132,6 +138,8 @@
+@@ -136,6 +142,8 @@
     *verbosity* controls the level of output to :data:`sys.stdout` from the
     bootstrapping operation.
  
@@ -57,10 +57,10 @@
     .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
  
     .. note::
-Index: Python-3.15.0a1/Lib/ensurepip/__init__.py
+Index: Python-3.15.0a3/Lib/ensurepip/__init__.py
 ===================================================================
---- Python-3.15.0a1.orig/Lib/ensurepip/__init__.py     2025-10-24 
23:53:22.118065622 +0200
-+++ Python-3.15.0a1/Lib/ensurepip/__init__.py  2025-10-24 23:53:43.587899003 
+0200
+--- Python-3.15.0a3.orig/Lib/ensurepip/__init__.py     2025-12-19 
02:25:10.205902876 +0100
++++ Python-3.15.0a3/Lib/ensurepip/__init__.py  2025-12-19 02:25:25.532348886 
+0100
 @@ -106,27 +106,27 @@
      os.environ['PIP_CONFIG_FILE'] = os.devnull
  
@@ -123,10 +123,10 @@
          upgrade=args.upgrade,
          user=args.user,
          verbosity=args.verbosity,
-Index: Python-3.15.0a1/Lib/test/test_ensurepip.py
+Index: Python-3.15.0a3/Lib/test/test_ensurepip.py
 ===================================================================
---- Python-3.15.0a1.orig/Lib/test/test_ensurepip.py    2025-10-24 
23:53:23.546712597 +0200
-+++ Python-3.15.0a1/Lib/test/test_ensurepip.py 2025-10-24 23:53:43.588286136 
+0200
+--- Python-3.15.0a3.orig/Lib/test/test_ensurepip.py    2025-12-19 
02:25:11.631602338 +0100
++++ Python-3.15.0a3/Lib/test/test_ensurepip.py 2025-12-19 02:25:25.532817735 
+0100
 @@ -105,6 +105,17 @@
              unittest.mock.ANY,
          )
@@ -145,11 +145,11 @@
      def test_bootstrapping_with_user(self):
          ensurepip.bootstrap(user=True)
  
-Index: Python-3.15.0a1/Makefile.pre.in
+Index: Python-3.15.0a3/Makefile.pre.in
 ===================================================================
---- Python-3.15.0a1.orig/Makefile.pre.in       2025-10-24 23:53:39.419910772 
+0200
-+++ Python-3.15.0a1/Makefile.pre.in    2025-10-24 23:53:43.588889640 +0200
-@@ -2378,7 +2378,7 @@
+--- Python-3.15.0a3.orig/Makefile.pre.in       2025-12-19 02:25:24.201299566 
+0100
++++ Python-3.15.0a3/Makefile.pre.in    2025-12-19 02:25:25.533184405 +0100
+@@ -2389,7 +2389,7 @@
                        install|*) ensurepip="" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -158,7 +158,7 @@
        fi
  
  .PHONY: altinstall
-@@ -2389,7 +2389,7 @@
+@@ -2400,7 +2400,7 @@
                        install|*) ensurepip="--altinstall" ;; \
                esac; \
                $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -167,10 +167,10 @@
        fi
  
  .PHONY: commoninstall
-Index: 
Python-3.15.0a1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
+Index: 
Python-3.15.0a3/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ 
Python-3.15.0a1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 
   2025-10-24 23:53:43.589498870 +0200
++++ 
Python-3.15.0a3/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 
   2025-12-19 02:25:25.534506792 +0100
 @@ -0,0 +1 @@
 +A directory prefix can now be specified when using :mod:`ensurepip`.
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2025-12-19 17:50:13.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ gh139257-Support-docutils-0.22.patch ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:44.105665257 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:44.113665587 +0100
@@ -4,17 +4,18 @@
 Subject: [PATCH 1/2] gh-139257: Support docutils >= 0.22
 
 ---
- Doc/tools/extensions/pyspecific.py |   12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
+ Doc/tools/extensions/pyspecific.py |   18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
 
-Index: Python-3.15.0a1/Doc/tools/extensions/pyspecific.py
+Index: Python-3.15.0a3/Doc/tools/extensions/pyspecific.py
 ===================================================================
---- Python-3.15.0a1.orig/Doc/tools/extensions/pyspecific.py    2025-10-14 
12:46:08.000000000 +0200
-+++ Python-3.15.0a1/Doc/tools/extensions/pyspecific.py 2025-10-24 
23:55:02.700550007 +0200
-@@ -25,11 +25,21 @@
+--- Python-3.15.0a3.orig/Doc/tools/extensions/pyspecific.py    2025-12-16 
13:26:12.000000000 +0100
++++ Python-3.15.0a3/Doc/tools/extensions/pyspecific.py 2025-12-19 
02:27:34.493094269 +0100
+@@ -24,6 +24,24 @@
+ # Used in conf.py and updated here by python/release-tools/run_release.py
  SOURCE_URI = 'https://github.com/python/cpython/tree/main/%s'
  
- # monkey-patch reST parser to disable alphabetic and roman enumerated lists
++# monkey-patch reST parser to disable alphabetic and roman enumerated lists
 +def _disable_alphabetic_and_roman(text):
 +    try:
 +        # docutils >= 0.22
@@ -25,13 +26,14 @@
 +        return None
 +
 +
- from docutils.parsers.rst.states import Body
- Body.enum.converters['loweralpha'] = \
-     Body.enum.converters['upperalpha'] = \
-     Body.enum.converters['lowerroman'] = \
--    Body.enum.converters['upperroman'] = lambda x: None
++from docutils.parsers.rst.states import Body
++Body.enum.converters['loweralpha'] = \
++    Body.enum.converters['upperalpha'] = \
++    Body.enum.converters['lowerroman'] = \
 +    Body.enum.converters['upperroman'] = _disable_alphabetic_and_roman
- 
- 
++
++
  class PyAwaitableMixin(object):
+     def handle_signature(self, sig, signode):
+         ret = super(PyAwaitableMixin, self).handle_signature(sig, signode)
 

++++++ python-3.3.0b1-fix_date_time_compiler.patch ++++++
--- /var/tmp/diff_new_pack.8CRLJC/_old  2025-12-22 22:52:44.189668721 +0100
+++ /var/tmp/diff_new_pack.8CRLJC/_new  2025-12-22 22:52:44.205669381 +0100
@@ -2,11 +2,11 @@
  Makefile.pre.in |    5 +++++
  1 file changed, 5 insertions(+)
 
-Index: Python-3.15.0a1/Makefile.pre.in
+Index: Python-3.15.0a3/Makefile.pre.in
 ===================================================================
---- Python-3.15.0a1.orig/Makefile.pre.in       2025-10-14 12:46:08.000000000 
+0200
-+++ Python-3.15.0a1/Makefile.pre.in    2025-10-24 23:53:39.419910772 +0200
-@@ -1917,6 +1917,11 @@
+--- Python-3.15.0a3.orig/Makefile.pre.in       2025-12-19 02:26:23.594002103 
+0100
++++ Python-3.15.0a3/Makefile.pre.in    2025-12-19 02:26:28.185444105 +0100
+@@ -1926,6 +1926,11 @@
              -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
              -o $@ $(srcdir)/Modules/getbuildinfo.c
  

Reply via email to