64 Commits

Author SHA256 Message Date
8490c35b5e Accepting request 1311758 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1311758
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=33
2025-10-17 15:25:33 +00:00
216aee44d2 Accepting request 1311480 from home:dgarcia:branches:devel:languages:python:Factory
- Update to 3.13.9:
  - Library
    - gh-139783: Fix inspect.getsourcelines() for the case when a
      decorator is followed by a comment or an empty line.
- Update to 3.13.8:
  - macOS
    - gh-124111: Update macOS installer to use Tcl/Tk 8.6.17.
    - gh-139573: Updated bundled version of OpenSSL to 3.0.18.
  - Windows
    - gh-139573: Updated bundled version of OpenSSL to 3.0.18.
    - gh-138896: Fix error installing C runtime on non-updated Windows
      machines
  - Tools/Demos
    - gh-139330: SBOM generation tool didn’t cross-check the version
      and checksum values against the Modules/expat/refresh.sh script,
      leading to the values becoming out-of-date during routine
      updates.
    - gh-137873: The iOS test runner has been simplified, resolving
      some issues that have been observed using the runner in GitHub
      Actions and Azure Pipelines test environments.
  - Tests
    - gh-139208: Fix regrtest --fast-ci --verbose: don’t ignore the
      --verbose option anymore. Patch by Victor Stinner.
  - Security
    - gh-139400: xml.parsers.expat: Make sure that parent Expat
      parsers are only garbage-collected once they are no longer
      referenced by subparsers created by
      ExternalEntityParserCreate(). Patch by Sebastian Pipping.
    - gh-139283: sqlite3: correctly handle maximum number of rows to
      fetch in Cursor.fetchmany and reject negative values for

OBS-URL: https://build.opensuse.org/request/show/1311480
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=128
2025-10-16 16:27:11 +00:00
5c7e077e05 Accepting request 1307951 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1307951
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=32
2025-10-01 16:55:40 +00:00
6ccfd57cb6 Accepting request 1307678 from home:dgarcia:branches:devel:languages:python:Factory
- Add gh139257-Support-docutils-0.22.patch to fix build with latest
  docutils (>=0.22) gh#python/cpython#139257

OBS-URL: https://build.opensuse.org/request/show/1307678
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=126
2025-09-29 16:57:25 +00:00
f26b5dd668 Accepting request 1306530 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1306530
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=31
2025-09-23 14:05:25 +00:00
97f2e50954 Accepting request 1306454 from home:dimstar:Factory
- Drop AppStream: this results in a different cycle than
  appstream-glib. As the appdata.xml is controlled by ourselves, we
  can get away with just manually validating it when changing it.

OBS-URL: https://build.opensuse.org/request/show/1306454
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=124
2025-09-22 12:45:38 +00:00
d782ad00ca - Require AppStream to validate appdata file instead of deprecated
appstream-glib.
- Update idle3.appdata.xml to pass the more pedantic appstreamcli.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=123
2025-09-18 14:05:23 +00:00
b40f1d6405 Accepting request 1304230 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1304230
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=30
2025-09-14 16:49:35 +00:00
45ae9e0091 Accepting request 1303343 from home:dgarcia:branches:devel:languages:python:Factory
- Add gh138131-exclude-pycache-from-digest.patch fixing reproducible
  build for python-nogil.
  (bsc#1244680, gh#python/cpython#138131)

OBS-URL: https://build.opensuse.org/request/show/1303343
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=121
2025-09-12 07:39:47 +00:00
0f5697e310 Accepting request 1299833 from devel:languages:python:Factory
- Update to 3.13.7:
  - gh-137583: Fix a deadlock introduced in 3.13.6 when a call
    to ssl.SSLSocket.recv was blocked in one thread, and then
    another method on the object (such as ssl.SSLSocket.send) was
    subsequently called in another thread.
  - gh-137044: Return large limit values as positive integers
    instead of negative integers in resource.getrlimit().
    Accept large values and reject negative values (except
    RLIM_INFINITY) for limits in resource.setrlimit().
  - gh-136914: Fix retrieval of doctest.DocTest.lineno
    for objects decorated with functools.cache() or
    functools.cached_property.
  - gh-131788: Make ResourceTracker.send from multiprocessing
    re-entrant safe
  - gh-136155: We are now checking for fatal errors in EPUB
    builds in CI.
  - gh-137400: Fix a crash in the free threading build when
    disabling profiling or tracing across all threads with
    PyEval_SetProfileAllThreads() or PyEval_SetTraceAllThreads()
    or their Python equivalents threading.settrace_all_threads()
    and threading.setprofile_all_threads().
- Remove upstreamed patch:
  - gh137583-only-lock-SSL-context.patch

- Add gh137583-only-lock-SSL-context.patch fixing the
  regression in 3.13.6 by breaking non-blocking TLS connections
  (gh#python/cpython#137583).

- Update to 3.13.6:
  - Security

OBS-URL: https://build.opensuse.org/request/show/1299833
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=29
2025-08-21 14:47:12 +00:00
f819c56b57 - Update to 3.13.7:
- gh-137583: Fix a deadlock introduced in 3.13.6 when a call
    to ssl.SSLSocket.recv was blocked in one thread, and then
    another method on the object (such as ssl.SSLSocket.send) was
    subsequently called in another thread.
  - gh-137044: Return large limit values as positive integers
    instead of negative integers in resource.getrlimit().
    Accept large values and reject negative values (except
    RLIM_INFINITY) for limits in resource.setrlimit().
  - gh-136914: Fix retrieval of doctest.DocTest.lineno
    for objects decorated with functools.cache() or
    functools.cached_property.
  - gh-131788: Make ResourceTracker.send from multiprocessing
    re-entrant safe
  - gh-136155: We are now checking for fatal errors in EPUB
    builds in CI.
  - gh-137400: Fix a crash in the free threading build when
    disabling profiling or tracing across all threads with
    PyEval_SetProfileAllThreads() or PyEval_SetTraceAllThreads()
    or their Python equivalents threading.settrace_all_threads()
    and threading.setprofile_all_threads().
- Remove upstreamed patch:
  - gh137583-only-lock-SSL-context.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=119
2025-08-15 12:33:36 +00:00
6ca12749fe Accepting request 1299154 from home:mcepl:branches:devel:languages:python:Factory
REfresh the patch

OBS-URL: https://build.opensuse.org/request/show/1299154
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=118
2025-08-12 22:07:14 +00:00
af83d0ea02 - Add gh137583-only-lock-SSL-context.patch fixing the
regression in 3.13.6 by breaking non-blocking TLS connections
  (gh#python/cpython#137583).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=117
2025-08-12 09:37:56 +00:00
588cd5ec7f declarations are automatically closed, tags are ignored
(CVE-2025-6069, bsc#1244705).
- Remove upstreamed patches:
  - CVE-2025-8194-tarfile-no-neg-offsets.patch
  - CVE-2025-6069-quad-complex-HTMLParser.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=116
2025-08-07 10:56:04 +00:00
4a974dadae - Update to 3.13.6:
Python 3.13.6 final
Release date: 2025-08-06
  - Tools/Demos
    - gh-135968: Stubs for strip are now provided as part of an
      iOS install.
  - Tests
    - gh-135966: The iOS testbed now handles the app_packages
      folder as a site directory.
    - gh-135494: Fix regrtest to support excluding tests from
      --pgo tests. Patch by Victor Stinner.
    - gh-135489: Show verbose output for failing tests during PGO
      profiling step with –enable-optimizations.
  - Security
    - gh-135661: Fix parsing start and end tags in
      html.parser.HTMLParser according to the HTML5 standard.
        - Whitespaces no longer accepted between </ and the tag
          name. E.g. </ script> does not end the script section.
        - Vertical tabulation (\v) and non-ASCII whitespaces no
          longer recognized as whitespaces. The only whitespaces
          are \t\n\r\f and space.
        - Null character (U+0000) no longer ends the tag name.
        - Attributes and slashes after the tag name in end tags
          are now ignored, instead of terminating after the first
          > in quoted attribute value. E.g. </script/foo=">"/>.
        - Multiple slashes and whitespaces between the last
          attribute and closing > are now ignored in both start
          and end tags. E.g. <a foo=bar/ //>.
        - Multiple = between attribute name and value are no
          longer collapsed. E.g. <a foo==bar> produces attribute

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=115
2025-08-07 10:16:41 +00:00
9a64481749 Accepting request 1297126 from devel:languages:python:Factory
- Add CVE-2025-8194-tarfile-no-neg-offsets.patch which now
  validates archives to ensure member offsets are non-negative
  (gh#python/cpython#130577, CVE-2025-8194, bsc#1247249).

OBS-URL: https://build.opensuse.org/request/show/1297126
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=28
2025-08-04 13:22:18 +00:00
0c1f23a3d6 - Add CVE-2025-8194-tarfile-no-neg-offsets.patch which now
validates archives to ensure member offsets are non-negative
  (gh#python/cpython#130577, CVE-2025-8194, bsc#1247249).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=113
2025-08-01 20:14:12 +00:00
00d0af4ebb Accepting request 1294512 from devel:languages:python:Factory
DEPENDS ON SR#1294511, THEY HAVE TO GO TOGETHER!!!

- Fix gil/nogil package description, bsc#1246229

OBS-URL: https://build.opensuse.org/request/show/1294512
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=27
2025-07-20 13:28:48 +00:00
8fc89fce82 - Fix gil/nogil package description, bsc#1246229
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=111
2025-07-10 10:18:09 +00:00
5584dde572 - Add CVE-2025-6069-quad-complex-HTMLParser.patch to avoid worst
case quadratic complexity when processing certain crafted
  malformed inputs with HTMLParser (CVE-2025-6069, bsc#1244705).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=110
2025-07-02 14:51:36 +00:00
b30cd19ff8 - Add bsc1243155-sphinx-non-determinism.patch (bsc#1243155) to
generate ids for audit_events using docname (reproducible
  builds).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=109
2025-07-02 13:52:43 +00:00
cb554c7d4c Accepting request 1289841 from home:dgarcia:branches:devel:languages:python:Factory
- Use one core to build doc. This will make sphinx doc build
  reproducible.
  bsc#1243155

OBS-URL: https://build.opensuse.org/request/show/1289841
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=108
2025-07-02 11:27:27 +00:00
92106b1aea Accepting request 1288597 from devel:languages:python:Factory
CVE-2025-4517 (bsc#1244032). Also addresses CVE-2025-4435
      (gh#135034, bsc#1244061).

OBS-URL: https://build.opensuse.org/request/show/1288597
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=26
2025-06-26 09:38:02 +00:00
cf3b0e517c Add link to bsc#1244061 to changelog.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=106
2025-06-25 19:43:42 +00:00
f3df88065e Accepting request 1287762 from devel:languages:python:Factory
SHOULD GO BACK TO openSUSE:Factory:Staging:O

- adjusted sofilename for "nogil" build correctly.
- Update to 3.13.5:
  - Tests
    - gh-135120: Add test.support.subTests().
  - Library
    - gh-133967: Do not normalize locale name ‘C.UTF-8’ to
      ‘en_US.UTF-8’.
    - gh-135326: Restore support of integer-like objects with
      __index__() in random.getrandbits().
    - gh-135321: Raise a correct exception for values greater
      than 0x7fffffff for the BINSTRING opcode in the C
      implementation of pickle.
    - gh-135276: Backported bugfixes in zipfile.Path from
      zipp 3.23. Fixed .name, .stem and other basename-based
      properties on Windows when working with a zipfile on disk.
    - gh-134151: email: Fix TypeError in
      email.utils.decode_params() when sorting RFC 2231
      continuations that contain an unnumbered section.
    - gh-134152: email: Fix parsing of email message ID with
      invalid domain.
    - gh-127081: Fix libc thread safety issues with os by
      replacing getlogin with getlogin_r re-entrant version.
    - gh-131884: Fix formatting issues in json.dump() when both
      indent and skipkeys are used.
  - Core and Builtins
    - gh-135171: Roll back changes to generator and list
      comprehensions that went into 3.13.4 to fix gh-127682,
      but which involved semantic and bytecode changes not
      appropriate for a bugfix release.
  - C API
    - gh-134989: Fix Py_RETURN_NONE, Py_RETURN_TRUE and
      Py_RETURN_FALSE macros in the limited C API 3.11 and
      older: don’t treat Py_None, Py_True and Py_False as
      immortal. Patch by Victor Stinner.
    - gh-134989: Implement PyObject_DelAttr() and
      PyObject_DelAttrString() as macros in the limited C API
      3.12 and older. Patch by Victor Stinner.
- Substantially rewritten doc-py38-to-py36.patch patch to be more
  flexible and covering even unexpected changes.
- Update to 3.13.4:
  - Security
    - gh-135034: Fixes multiple issues that allowed tarfile
      extraction filters (filter="data" and filter="tar") to be
      bypassed using crafted symlinks and hard links.
      Addresses CVE-2024-12718 (bsc#1244056), CVE-2025-4138
      (bsc#1244059), CVE-2025-4330 (bsc#1244060), and
      CVE-2025-4517 (bsc#1244032).
    - gh-133767: Fix use-after-free in the “unicode-escape”
      decoder with a non-“strict” error handler (CVE-2025-4516,
      bsc#1243273).
    - gh-128840: Short-circuit the processing of long IPv6
      addresses early in ipaddress to prevent excessive memory
      consumption and a minor denial-of-service.
  - Library
    - gh-134718: ast.dump() now only omits None and [] values if
      they are default values.
    - gh-128840: Fix parsing long IPv6 addresses with embedded
      IPv4 address.
    - gh-134696: Built-in HACL* and OpenSSL implementations of
      hash function constructors now correctly accept the same
      documented named arguments. For instance, md5() could be
      previously invoked as md5(data=data) or md5(string=string)
      depending on the underlying implementation but these calls
      were not compatible. Patch by Bénédikt Tran.
    - gh-134210: curses.window.getch() now correctly handles
      signals. Patch by Bénédikt Tran.
    - gh-80334: multiprocessing.freeze_support() now checks for
      work on any “spawn” start method platform rather than only
      on Windows.
    - gh-114177: Fix asyncio to not close subprocess pipes which
      would otherwise error out when the event loop is already
      closed.
    - gh-134152: Fixed UnboundLocalError that could occur during
      email header parsing if an expected trailing delimiter is
      missing in some contexts.
    - gh-62184: Remove import of C implementation of io.FileIO
      from Python implementation which has its own implementation
    - gh-133982: Emit RuntimeWarning in the Python implementation
      of io when the file-like object is not closed explicitly in
      the presence of multiple I/O layers.
    - gh-133890: The tarfile module now handles
      UnicodeEncodeError in the same way as OSError when cannot
      extract a member.
    - gh-134097: Fix interaction of the new REPL and -X
      showrefcount command line option.
    - gh-133889: The generated directory listing page in
      http.server.SimpleHTTPRequestHandler now only shows the
      decoded path component of the requested URL, and not the
      query and fragment.
    - gh-134098: Fix handling paths that end with
      a percent-encoded slash (%2f or %2F) in
      http.server.SimpleHTTPRequestHandler.
    - gh-134062: ipaddress: fix collisions in __hash__() for
      IPv4Network and IPv6Network objects.
    - gh-133745: In 3.13.3 we accidentally changed the signature
      of the asyncio create_task() family of methods and how it
      calls a custom task factory in a backwards incompatible
      way. Since some 3rd party libraries have already made
      changes to work around the issue that might break if
      we simply reverted the changes, we’re instead changing
      things to be backwards compatible with 3.13.2 while still
      supporting those workarounds for 3.13.3. In particular, the
      special-casing of name and context is back (until 3.14) and
      consequently eager tasks may still find that their name
      hasn’t been set before they execute their first yielding
      await.
    - gh-71253: Raise ValueError in open() if opener returns a
      negative file-descriptor in the Python implementation of io
      to match the C implementation.
    - gh-77057: Fix handling of invalid markup declarations in
      html.parser.HTMLParser.
    - gh-133489: random.getrandbits() can now generate more that
      231 bits. random.randbytes() can now generate more that 256
      MiB.
    - gh-133290: Fix attribute caching issue when setting
      ctypes._Pointer._type_ in the undocumented and deprecated
      ctypes.SetPointerType() function and the undocumented
      set_type() method.
    - gh-132876: ldexp() on Windows doesn’t round subnormal
      results before Windows 11, but should. Python’s
      math.ldexp() wrapper now does round them, so results may
      change slightly, in rare cases of very small results, on
      Windows versions before 11.
    - gh-133089: Use original timeout value for
      subprocess.TimeoutExpired when the func subprocess.run()
      is called with a timeout instead of sometimes a confusing
      partial remaining time out value used internally on the
      final wait().
    - gh-133009: xml.etree.ElementTree: Fix a crash in
      Element.__deepcopy__ when the element is concurrently
      mutated. Patch by Bénédikt Tran.
    - gh-132995: Bump the version of pip bundled in ensurepip to
      version 25.1.1
    - gh-132017: Fix error when pyrepl is suspended, then resumed
      and terminated.
    - gh-132673: Fix a crash when using _align_ = 0 and _fields_
      = [] in a ctypes.Structure.
    - gh-132527: Include the valid typecode ‘w’ in the error
      message when an invalid typecode is passed to array.array.
    - gh-132439: Fix PyREPL on Windows: characters entered via
      AltGr are swallowed. Patch by Chris Eibl.
    - gh-132429: Fix support of Bluetooth sockets on NetBSD and
      DragonFly BSD.
    - gh-132106: QueueListener.start now raises a RuntimeError if
      the listener is already started.
    - gh-132417: Fix a NULL pointer dereference when a C function
      called using ctypes with restype py_object returns NULL.
    - gh-132385: Fix instance error suggestions trigger potential
      exceptions in object.__getattr__() in traceback.
    - gh-132308: A traceback.TracebackException now correctly
      renders the __context__ and __cause__ attributes from
      falsey Exception, and the exceptions attribute from falsey
      ExceptionGroup.
    - gh-132250: Fixed the SystemError in cProfile when locating
      the actual C function of a method raises an exception.
    - gh-132063: Prevent exceptions that evaluate as
      falsey (namely, when their __bool__ method returns
      False or their __len__ method returns 0) from being
      ignored by concurrent.futures.ProcessPoolExecutor and
      concurrent.futures.ThreadPoolExecutor.
    - gh-119605: Respect follow_wrapped for __init__() and
      __new__() methods when getting the class signature for a
      class with inspect.signature(). Preserve class signature
      after wrapping with warnings.deprecated(). Patch by Xuehai
      Pan.
    - gh-91555: Ignore log messages generated during handling of
      log messages, to avoid deadlock or infinite recursion.
    - gh-131434: Improve error reporting for incorrect format in
      time.strptime().
    - gh-131127: Systems using LibreSSL now successfully build.
    - gh-130999: Avoid exiting the new REPL and offer suggestions
      even if there are non-string candidates when errors occur.
    - gh-130941: Fix configparser.ConfigParser parsing empty
      interpolation with allow_no_value set to True.
    - gh-129098: Fix REPL traceback reporting when using
      compile() with an inexisting file. Patch by Bénédikt Tran.
    - gh-130631: http.cookiejar.join_header_words() is now more
      similar to the original Perl version. It now quotes the
      same set of characters and always quote values that end
      with "\n".
    - gh-129719: Fix missing socket.CAN_RAW_ERR_FILTER constant
      in the socket module on Linux systems. It was missing since
      Python 3.11.
    - gh-124096: Turn on virtual terminal mode and enable
      bracketed paste in REPL on Windows console. (If the
      terminal does not support bracketed paste, enabling it does
      nothing.)
    - gh-122559: Remove __reduce__() and __reduce_ex__() methods
      that always raise TypeError in the C implementation
      of io.FileIO, io.BufferedReader, io.BufferedWriter
      and io.BufferedRandom and replace them with default
      __getstate__() methods that raise TypeError. This restores
      fine details of behavior of Python 3.11 and older versions.
    - gh-122179: hashlib.file_digest() now raises BlockingIOError
      when no data is available during non-blocking I/O. Before,
      it added spurious null bytes to the digest.
    - gh-86155: html.parser.HTMLParser.close() no longer loses
      data when the <script> tag is not closed. Patch by Waylan
      Limberg.
    - gh-69426: Fix html.parser.HTMLParser to not unescape
      character entities in attribute values if they are followed
      by an ASCII alphanumeric or an equals sign.
    - bpo-44172: Keep a reference to original curses windows in
      subwindows so that the original window does not get deleted
      before subwindows.
  - Tests
    - gh-133744: Fix multiprocessing interrupt test. Add an event
      to synchronize the parent process with the child process:
      wait until the child process starts sleeping. Patch by
      Victor Stinner.
    - gh-133639: Fix
      TestPyReplAutoindent.test_auto_indent_default() doesn’t run
      input_code.
    - gh-133131: The iOS testbed will now select the most
      recently released “SE-class” device for testing if a device
      isn’t explicitly specified.
    - gh-109981: The test helper that counts the list of open
      file descriptors now uses the optimised /dev/fd approach on
      all Apple platforms, not just macOS. This avoids crashes
      caused by guarded file descriptors.
  - IDLE
    - gh-112936: fix IDLE: no Shell menu item in single-process
      mode.
  - Documentation
    - gh-107006: Move documentation and example code for
      threading.local from its docstring to the official docs.
  - Core and Builtins
    - gh-134908: Fix crash when iterating over lines in a text
      file on the free threaded build.
    - gh-127682: No longer call __iter__ twice in list
      comprehensions. This brings the behavior of list
      comprehensions in line with other forms of iteration
    - gh-134381: Fix RuntimeError when using a not-started
      threading.Thread after calling os.fork()
    - gh-128066: Fixes an edge case where PyREPL improperly threw
      an error when Python is invoked on a read only filesystem
      while trying to write history file entries.
    - gh-134100: Fix a use-after-free bug that occurs when an
      imported module isn’t in sys.modules after its initial
      import. Patch by Nico-Posada.
    - gh-133703: Fix hashtable in dict can be bigger than
      intended in some situations.
    - gh-132869: Fix crash in the free threading build when
      accessing an object attribute that may be concurrently
      inserted or deleted.
    - gh-132762: fromkeys() no longer loops forever when adding
      a small set of keys to a large base dict. Patch by Angela
      Liss.
    - gh-133543: Fix a possible memory leak that could occur when
      directly accessing instance dictionaries (__dict__) that
      later become part of a reference cycle.
    - gh-133516: Raise ValueError when constants True, False or
      None are used as an identifier after NFKC normalization.
    - gh-133441: Fix crash upon setting an attribute with a dict
      subclass. Patch by Victor Stinner.
    - gh-132942: Fix two races in the type lookup cache. This
      affected the free-threaded build and could cause crashes
      (apparently quite difficult to trigger).
    - gh-132713: Fix repr(list) race condition: hold a strong
      reference to the item while calling repr(item). Patch by
      Victor Stinner.
    - gh-132747: Fix a crash when calling __get__() of a method
      with a None second argument.
    - gh-132542: Update Thread.native_id after fork(2) to ensure
      accuracy. Patch by Noam Cohen.
    - gh-124476: Fix decoding from the locale encoding in the
      C.UTF-8 locale.
    - gh-131927: Compiler warnings originating from the same
      module and line number are now only emitted once, matching
      the behaviour of warnings emitted from user code. This can
      also be configured with warnings filters.
    - gh-127682: No longer call __iter__ twice when creating and
      executing a generator expression. Creating a generator
      expression from a non-interable will raise only when the
      generator expression is executed. This brings the behavior
      of generator expressions in line with other generators.
    - gh-131878: Handle uncaught exceptions in the main input
      loop for the new REPL.
    - gh-131878: Fix support of unicode characters with two or
      more codepoints on Windows in the new REPL.
    - gh-130804: Fix support of unicode characters on Windows in
      the new REPL.
    - gh-130070: Fixed an assertion error for exec() passed a
      string source and a non-None closure. Patch by Bartosz
      Sławecki.
    - gh-129958: Fix a bug that was allowing newlines
      inconsitently in format specifiers for single-quoted
      f-strings. Patch by Pablo Galindo.
  - C API
    - gh-132909: Fix an overflow when handling the K format in
      Py_BuildValue(). Patch by Bénédikt Tran.
- Remove upstreamed patches:
  - CVE-2025-4516-DecodeError-handler.patch
  - gh-132535-rsrc-warn-test_timeout.patch

OBS-URL: https://build.opensuse.org/request/show/1287762
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=25
2025-06-24 18:45:07 +00:00
7d8817d9bb - Substantially rewritten doc-py38-to-py36.patch patch to be more
flexible and covering even unexpected changes.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=104
2025-06-22 19:29:14 +00:00
308dfaef9b Accepting request 1287576 from home:msmeissn:branches:devel:languages:python:Factory
- adjusted sofilename for "nogil" build correctly.

OBS-URL: https://build.opensuse.org/request/show/1287576
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=103
2025-06-22 16:37:53 +00:00
c2d30804e6 - Update to 3.13.5:
- Tests
    - gh-135120: Add test.support.subTests().
  - Library
    - gh-133967: Do not normalize locale name ‘C.UTF-8’ to
      ‘en_US.UTF-8’.
    - gh-135326: Restore support of integer-like objects with
      __index__() in random.getrandbits().
    - gh-135321: Raise a correct exception for values greater
      than 0x7fffffff for the BINSTRING opcode in the C
      implementation of pickle.
    - gh-135276: Backported bugfixes in zipfile.Path from
      zipp 3.23. Fixed .name, .stem and other basename-based
      properties on Windows when working with a zipfile on disk.
    - gh-134151: email: Fix TypeError in
      email.utils.decode_params() when sorting RFC 2231
      continuations that contain an unnumbered section.
    - gh-134152: email: Fix parsing of email message ID with
      invalid domain.
    - gh-127081: Fix libc thread safety issues with os by
      replacing getlogin with getlogin_r re-entrant version.
    - gh-131884: Fix formatting issues in json.dump() when both
      indent and skipkeys are used.
  - Core and Builtins
    - gh-135171: Roll back changes to generator and list
      comprehensions that went into 3.13.4 to fix gh-127682,
      but which involved semantic and bytecode changes not
      appropriate for a bugfix release.
  - C API
    - gh-134989: Fix Py_RETURN_NONE, Py_RETURN_TRUE and

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=102
2025-06-11 22:06:33 +00:00
70558652fc Add missing import
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=101
2025-06-10 01:23:49 +00:00
6072bbdbcd - Update to 3.13.4:
- Security
    - gh-135034: Fixes multiple issues that allowed tarfile
      extraction filters (filter="data" and filter="tar") to be
      bypassed using crafted symlinks and hard links.
      Addresses CVE-2024-12718 (bsc#1244056), CVE-2025-4138
      (bsc#1244059), CVE-2025-4330 (bsc#1244060), and
      CVE-2025-4517 (bsc#1244032).
    - gh-133767: Fix use-after-free in the “unicode-escape”
      decoder with a non-“strict” error handler (CVE-2025-4516,
      bsc#1243273).
    - gh-128840: Short-circuit the processing of long IPv6
      addresses early in ipaddress to prevent excessive memory
      consumption and a minor denial-of-service.
  - Library
    - gh-134718: ast.dump() now only omits None and [] values if
      they are default values.
    - gh-128840: Fix parsing long IPv6 addresses with embedded
      IPv4 address.
    - gh-134696: Built-in HACL* and OpenSSL implementations of
      hash function constructors now correctly accept the same
      documented named arguments. For instance, md5() could be
      previously invoked as md5(data=data) or md5(string=string)
      depending on the underlying implementation but these calls
      were not compatible. Patch by Bénédikt Tran.
    - gh-134210: curses.window.getch() now correctly handles
      signals. Patch by Bénédikt Tran.
    - gh-80334: multiprocessing.freeze_support() now checks for
      work on any “spawn” start method platform rather than only
      on Windows.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=100
2025-06-09 21:38:15 +00:00
f5a88d357f Accepting request 1281135 from devel:languages:python:Factory
- Don't use %elif, it is supported only from rpm 4.15.0, which is
  not in SLE-15.

OBS-URL: https://build.opensuse.org/request/show/1281135
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=24
2025-06-01 19:36:01 +00:00
6d5d3f96b0 - Don't use %elif, it is supported only from rpm 4.15.0, which is
not in SLE-15.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=98
2025-05-28 09:47:26 +00:00
820434f8e4 Accepting request 1278136 from devel:languages:python:Factory
- Add CVE-2025-4516-DecodeError-handler.patch fixing
  CVE-2025-4516 (bsc#1243273) blocking DecodeError handling
  vulnerability, which could lead to DoS.

OBS-URL: https://build.opensuse.org/request/show/1278136
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=23
2025-05-23 12:26:37 +00:00
487ae82f04 - Add CVE-2025-4516-DecodeError-handler.patch fixing
CVE-2025-4516 (bsc#1243273) blocking DecodeError handling
  vulnerability, which could lead to DoS.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=96
2025-05-17 07:34:05 +00:00
55fb9cd905 Accepting request 1276664 from devel:languages:python:Factory
- Remove python-3.3.0b1-test-posix_fadvise.patch (not needed
  since kernel 3.6-rc1)

OBS-URL: https://build.opensuse.org/request/show/1276664
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=22
2025-05-13 18:05:26 +00:00
d8af743464 - Remove python-3.3.0b1-test-posix_fadvise.patch (not needed
since kernel 3.6-rc1)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=94
2025-05-10 11:43:36 +00:00
c1d8c54913 Accepting request 1270150 from devel:languages:python:Factory
- Update to 3.13.3:
  - Tools/Demos
    - gh-131852: msgfmt no longer adds the POT-Creation-Date to
      generated .mo files for consistency with GNU msgfmt.
    - gh-85012: Correctly reset msgctxt when compiling messages
      in msgfmt.
    - gh-130025: The iOS testbed now correctly handles symlinks
      used as Python framework references.
  - Tests
    - gh-131050: test_ssl.test_dh_params is skipped if the
      underlying TLS library does not support finite-field
      ephemeral Diffie-Hellman.
    - gh-129200: Multiple iOS testbed runners can now be started
      at the same time without introducing an ambiguity over
      simulator ownership.
    - gh-130292: The iOS testbed will now run successfully on a
      machine that has not previously run Xcode tests (such as CI
      configurations).
    - gh-130293: The tests of terminal colorization are no longer
      sensitive to the value of the TERM variable in the testing
      environment.
    - gh-126332: Add unit tests for pyrepl.
  - Security
    - gh-131809: Update bundled libexpat to 2.7.1
    - gh-131261: Upgrade to libexpat 2.7.0
    - gh-127371: Avoid unbounded buffering for
      tempfile.SpooledTemporaryFile.writelines(). Previously,
      disk spillover was only checked after the lines iterator
      had been exhausted. This is now done after each line is
      written.

OBS-URL: https://build.opensuse.org/request/show/1270150
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=21
2025-04-25 20:17:50 +00:00
bb17c93a2a This
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=92
2025-04-16 07:52:47 +00:00
55167f91bd Fix patches
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=91
2025-04-16 07:17:38 +00:00
b91bbdde1b - Add gh-126500-test_ssl-no-stop-ThreadedEchoServer-OSError.patch
and gh-127257-ssl-OSError-ERR_LIB_SYS.patch to make the
  interpreter compatible with OpenSSL 3.5 (bsc#1241067).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=90
2025-04-16 07:15:35 +00:00
384d0f4194 - Add gh-132535-rsrc-warn-test_timeout.patch to fix
failing tests in the build system without network access
  (gh#python/cpython#132535).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=89
2025-04-15 22:19:57 +00:00
9e2287fa69 - Add gh126985-mv-pyvenv.cfg2getpath.patch to remove failing
tests in test_sysconfig.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=88
2025-04-15 14:09:42 +00:00
9624a1ae7e - Update to 3.13.3:
- Tools/Demos
    - gh-131852: msgfmt no longer adds the POT-Creation-Date to
      generated .mo files for consistency with GNU msgfmt.
    - gh-85012: Correctly reset msgctxt when compiling messages
      in msgfmt.
    - gh-130025: The iOS testbed now correctly handles symlinks
      used as Python framework references.
  - Tests
    - gh-131050: test_ssl.test_dh_params is skipped if the
      underlying TLS library does not support finite-field
      ephemeral Diffie-Hellman.
    - gh-129200: Multiple iOS testbed runners can now be started
      at the same time without introducing an ambiguity over
      simulator ownership.
    - gh-130292: The iOS testbed will now run successfully on a
      machine that has not previously run Xcode tests (such as CI
      configurations).
    - gh-130293: The tests of terminal colorization are no longer
      sensitive to the value of the TERM variable in the testing
      environment.
    - gh-126332: Add unit tests for pyrepl.
  - Security
    - gh-131809: Update bundled libexpat to 2.7.1
    - gh-131261: Upgrade to libexpat 2.7.0
    - gh-127371: Avoid unbounded buffering for
      tempfile.SpooledTemporaryFile.writelines(). Previously,
      disk spillover was only checked after the lines iterator
      had been exhausted. This is now done after each line is
      written.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=87
2025-04-11 19:56:43 +00:00
415df5f3cd Accepting request 1268534 from devel:languages:python:Factory
revert

OBS-URL: https://build.opensuse.org/request/show/1268534
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=86
2025-04-11 06:10:15 +00:00
3467717953 Accepting request 1253127 from devel:LoongArch:Factory
- don't require rpm-build-python for base to fix bootstrap issue
  after primary_python change
- replace rpm-build-python alias with python-rpm-packaging package name

OBS-URL: https://build.opensuse.org/request/show/1253127
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=85
2025-03-14 22:57:44 +00:00
1ea8708b8d Accepting request 1251953 from devel:languages:python:Factory
- Skip PGO with %want_reproducible_builds (bsc#1239210).

      over multiple lines in combination with unicode encoding
      (bsc#1238450 CVE-2025-1795)

OBS-URL: https://build.opensuse.org/request/show/1251953
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=20
2025-03-12 14:19:55 +00:00
279fe75cee Accepting request 1250305 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1250305
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=19
2025-03-06 13:47:53 +00:00
7d140c532a Accepting request 1243939 from devel:languages:python:Factory
- Update to 3.13.2:
  - Tools/Demos
    - gh-128152: Fix a bug where Argument Clinic’s C
      pre-processor parser tried to parse pre-processor
      directives inside C comments. Patch by Erlend Aasland.
  - Tests
    - gh-127906: Test the limited C API in test_cppext. Patch by
      Victor Stinner.
    - gh-127637: Add tests for the dis command-line
      interface. Patch by Bénédikt Tran.
    - gh-126925: iOS test results are now streamed during test
      execution, and the deprecated xcresulttool is no longer
      used.
  - Security
    - gh-105704: When using urllib.parse.urlsplit() and
      urllib.parse.urlparse() host parsing would not reject
      domain names containing square brackets ([ and ]). Square
      brackets are only valid for IPv6 and IPvFuture hosts
      according to RFC 3986 Section 3.2.2. (CVE-2025-0938,
      bsc#1236705)
    - gh-127655: Fixed the
      asyncio.selector_events._SelectorSocketTransport
      transport not pausing writes for the protocol when
      the buffer reaches the high water mark when using
      asyncio.WriteTransport.writelines() (CVE-2024-12254,
      bsc#1234290).
    - gh-126108: Fix a possible NULL pointer dereference in
      PySys_AddWarnOptionUnicode().
    - gh-80222: Fix bug in the folding of quoted strings
      when flattening an email message using a modern email

OBS-URL: https://build.opensuse.org/request/show/1243939
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=18
2025-02-09 18:58:56 +00:00
5c3c7cecd2 Accepting request 1241509 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1241509
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=17
2025-02-03 20:40:34 +00:00
528339bd34 Accepting request 1228971 from devel:languages:python:Factory
- Add CVE-2024-12254-unbound-mem-buffering-SelectorSocketTransport.writelines.patch
  preventing exhaustion of memory (gh#python/cpython#127655,
  bsc#1234290, CVE-2024-12254).

- Update to 3.13.1:
  - Tools/Demos
    - gh-126807: Fix extraction warnings in pygettext.py caused
      by mistaking function definitions for function calls.
    - gh-126167: The iOS testbed was modified so that it can be
      used by third-party projects for testing purposes.
  - Tests
    - gh-126909: Fix test_os extended attribute tests to work on
      filesystems with 1 KiB xattr size limit.
    - gh-125041: Re-enable skipped tests for zlib on the
      s390x architecture: only skip checks of the compressed
      bytes, which can be different between zlib’s software
      implementation and the hardware-accelerated implementation.
    - gh-124295: Add translation tests to the argparse module.
  - Security
    - gh-126623: Upgrade libexpat to 2.6.4
    - gh-125140: Remove the current directory from sys.path when
      using PyREPL.
    - gh-122792: Changed IPv4-mapped ipaddress.IPv6Address to
      consistently use the mapped IPv4 address value for deciding
      properties. Properties which have their behavior fixed are
      is_multicast, is_reserved, is_link_local, is_global, and
      is_unspecified.
  - Library
    - gh-127321: pdb.set_trace() will not stop at an opcode that
      does not have an associated line number anymore.

OBS-URL: https://build.opensuse.org/request/show/1228971
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=16
2025-01-23 16:57:00 +00:00
adc199414a Accepting request 1227320 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1227320
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=15
2024-11-30 12:27:29 +00:00
183fa1a4f9 Accepting request 1224887 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1224887
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=14
2024-11-18 18:57:22 +00:00
d67c636211 Accepting request 1218353 from devel:languages:python:Factory
- Add CVE-2024-9287-venv_path_unquoted.patch to properly quote
  path names provided when creating a virtual environment
  (bsc#1232241, CVE-2024-9287)

OBS-URL: https://build.opensuse.org/request/show/1218353
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=13
2024-10-27 10:24:54 +00:00
73ac4a887b Accepting request 1208371 from devel:languages:python:Factory
- With python311-Sphinx we don't need no-skipif-doctests.patch
  any more.
- Add warning about no-GIL builds being experimental.

OBS-URL: https://build.opensuse.org/request/show/1208371
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=12
2024-10-16 21:49:58 +00:00
eb20745074 Accepting request 1206252 from devel:languages:python:Factory
- Update to 3.13.0:
  Major new features of the 3.13 series, compared to 3.12
  Some of the new major new features and changes in Python 3.13 are:
  - New features
    - A new and improved interactive interpreter, based on
      PyPy's, featuring multi-line editing and color support, as
      well as colorized exception tracebacks.
    - An experimental free-threaded build mode, which disables
      the Global Interpreter Lock, allowing threads to run
      more concurrently. The build mode is available as an
      experimental feature in the Windows and macOS installers as
      well.
    - A preliminary, experimental JIT, providing the ground work
      for significant performance improvements.
    - The locals() builtin function (and its C equivalent)
      now has well-defined semantics when mutating the
      returned mapping, which allows debuggers to operate more
      consistently.
    - A modified version of mimalloc is now included, optional
      but enabled by default if supported by the platform, and
      required for the free-threaded build mode.
    - Docstrings now have their leading indentation stripped,
      reducing memory use and the size of .pyc files. (Most tools
      handling docstrings already strip leading indentation.)
    - The dbm module has a new dbm.sqlite3 backend that is used
      by default when creating new files.
    - WASI is now a Tier 2 supported platform. Emscripten is
      no longer an officially supported platform (but Pyodide
      continues to support Emscripten).
  - Typing
    - Support for type defaults in type parameters.
    - A new type narrowing annotation, typing.TypeIs.
    - A new annotation for read-only items in TypeDicts.
    - A new annotation for marking deprecations in the type
      system.
  - Removals and new deprecations
    - PEP 594 (Removing dead batteries from the standard library)
      scheduled removals of many deprecated modules: aifc,
      audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib,
      nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau,
      telnetlib, uu, xdrlib, lib2to3.
    - Many other removals of deprecated classes, functions and
      methods in various standard library modules.
    - C API removals and deprecations. (Some removals present
      in alpha 1 were reverted in alpha 2, as the removals were
      deemed too disruptive at this time.)
    - New deprecations, most of which are scheduled for removal
      from Python 3.15 or 3.16.
  - For more details on the changes to Python 3.13, see What's
    new in Python 3.13 in the documentation.

OBS-URL: https://build.opensuse.org/request/show/1206252
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=11
2024-10-08 15:24:58 +00:00
d24d58c01e Accepting request 1205550 from devel:languages:python:Factory
- Drop .pyc files from docdir for reproducible builds (bsc#1230906).

OBS-URL: https://build.opensuse.org/request/show/1205550
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=10
2024-10-04 15:10:27 +00:00
26d0509456 Accepting request 1205032 from devel:languages:python:Factory
- Update to 3.13.0~rc3:
  - The most important change is rolling back the incremental
    cyclic garbage collector (GC), which was added in one of
    the alpha releases. The incremental GC had more significant
    performance regressions in specific workloads than we
    expected.
  - Tests
    - gh-124378: Updated test_ttk to pass with Tcl/Tk 8.6.15.
  - Library
    - gh-124538: Fixed crash when using gc.get_referents() on a
      capsule object.
    - gh-124498: Fix typing.TypeAliasType not to be generic, when
      type_params is an empty tuple.
    - gh-123017: Due to unreliable results on some devices,
      time.strftime() no longer accepts negative years on
      Android.
    - gh-123014: os.pidfd_open() and signal.pidfd_send_signal()
      are now unavailable when building against Android API
      levels older than 31, since the underlying system calls may
      cause a crash.
    - gh-124248: Fixed potential crash when using struct to
      process zero-width ‘Pascal string’ fields (0p).
    - gh-87041: Fix a bug in argparse where lengthy subparser
      argument help is incorrectly indented.
    - gh-124212: Fix invalid variable in venv handling of failed
      symlink on Windows
    - gh-124171: Add workaround for broken fmod() implementations
      on Windows, that loose zero sign (e.g. fmod(-10, 1) returns
      0.0). Patch by Sergey B Kirpichev.
    - gh-123934: Fix unittest.mock.MagicMock reseting magic
      methods return values after .reset_mock(return_value=True)
      was called.
    - gh-123968: Fix the command-line interface for the random
      module to select floats between 0 and N, not 1 and N.
    - gh-123892: Add "_wmi" to sys.stdlib_module_names. Patch by
      Victor Stinner.
    - gh-123339: Fix inspect.getsource() for classes
      in collections.abc and decimal (for pure Python
      implementation) modules. inspect.getcomments() now raises
      OSError instead of IndexError if the __firstlineno__ value
      for a class is out of bound.
    - gh-121735: When working with zip archives,
      importlib.resources now properly honors module-adjacent
      references (e.g. files(pkg.mod) and not just files(pkg)).
    - gh-122145: Fix an issue when reporting tracebacks
      corresponding to Python code emitting an empty AST
      body. Patch by Nikita Sobolev and Bénédikt Tran.
    - gh-119004: Fix a crash in OrderedDict.__eq__ when operands
      are mutated during the check. Patch by Bénédikt Tran.
    - bpo-44864: Do not translate user-provided strings in
      argparse.ArgumentParser.
  - IDLE
    - gh-112938: Fix uninteruptable hang when Shell gets rapid
      continuous output.
    - gh-120104: Fix padding in config and search dialog windows
      in IDLE.
  - Documentation
    - gh-124720: Update “Using Python on a Mac” section of the
      “Python Setup and Usage” document and include information
      on installing free-threading support.
    - gh-116622: Add an Android platform guide, and flag modules
      not available on Android.
  - Core and Builtins
    - gh-124567: Revert the incremental GC (in 3.13), since it’s
      not clear the benefits outweigh the costs at this point.
    - gh-124642: Fixed scalability issue in free-threaded builds
      for lock-free reads from dictionaries in multi-threaded
      scenarios
    - gh-116510: Fix a bug that can cause a crash when
      sub-interpreters use “basic” single-phase extension
      modules. Shared objects could refer to PyGC_Head nodes that
      had been freed as part of interpreter cleanup.
    - gh-124547: When deallocating an object with inline values
      whose __dict__ is still live: if memory allocation for the
      inline values fails, clear the dictionary. Prevents an
      interpreter crash.
    - gh-124513: Fix a crash in FrameLocalsProxy constructor:
      check the number of arguments. Patch by Victor Stinner.
    - gh-124442: Fix nondeterminism in compilation by sorting the
      value of __static_attributes__. Patch by kp2pml30.
    - gh-123856: Fix PyREPL failure when a keyboard interrupt is
      triggered after using a history search
    - gh-65961: Document the deprecation of setting and using
      __package__ and __cached__.
    - gh-124027: Support <page up>, <page down>, and <delete>
      keys in the Python REPL when $TERM is set to vt100.
    - gh-77894: Fix possible crash in the garbage collector when
      it tries to break a reference loop containing a memoryview
      object. Now a memoryview object can only be cleared if
      there are no buffers that refer it.
    - gh-123339: Setting the __module__ attribute for a class now
      removes the __firstlineno__ item from the type’s dict, so
      they will no longer be inconsistent.
  - C API
    - gh-124160: Fix crash when importing modules containing
      state and single-phase initialization in a subinterpreter.
    - gh-123880: Fixed a bug that prevented circular imports of
      extension modules that use single-phase initialization.
  - Build
    - gh-124487: Windows builds now use Windows 8.1 as their API
      baseline (installation already required Windows 8.1).
    - gh-124043: Building using --with-trace-refs is
      (temporarily) disallowed when the GIL is disabled.
- Remove upstreamed patch:
  - gh-124040-fix-test-math-i586.patch

OBS-URL: https://build.opensuse.org/request/show/1205032
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=9
2024-10-02 19:33:43 +00:00
3029e09e6c Accepting request 1202221 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1202221
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=8
2024-09-22 09:05:57 +00:00
5ddcd862f2 Accepting request 1199398 from devel:languages:python:Factory
- Update to 3.13.0~rc2:
  - Tools/Demos
    - gh-123418: Update GitHub CI workflows to use OpenSSL 3.0.15
      and multissltests to use 3.0.15, 3.1.7, and 3.2.3.
  - Tests
    - gh-119727: Add --single-process command line option to
      Python test runner (regrtest). Patch by Victor Stinner.
    - gh-101525: Skip test_gdb if the binary is relocated by
      BOLT. Patch by Donghee Na.
  - Security
    - gh-123678: Upgrade libexpat to 2.6.3
    - gh-121285: Remove backtracking from tarfile header parsing
      for hdrcharset, PAX, and GNU sparse headers (bsc#1230227,
      CVE-2024-6232).
  - Library
    - gh-123448: Fixed memory leak of typing.NoDefault by moving
      it to the static types array.
    - gh-123409: Fix ipaddress.IPv6Address.reverse_pointer output
      according to RFC 3596, §2.5. Patch by Bénédikt Tran.
    - gh-123270: Applied a more surgical fix for malformed
      payloads in zipfile.Path causing infinite loops (gh-122905)
      without breaking contents using legitimate characters
      (bsc#1229704, CVE-2024-8088).
    - gh-123228: Fix return type for
      _pyrepl.readline._ReadlineWrapper.get_line_buffer() to be
      str(). Patch by Sergey B Kirpichev.
    - gh-123240: Raise audit events for the input() in the new
      REPL.
    - gh-123243: Fix memory leak in _decimal.
    - gh-122546: Consistently use same file name for different

OBS-URL: https://build.opensuse.org/request/show/1199398
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=7
2024-09-09 12:43:49 +00:00
30eeed452e Accepting request 1197482 from devel:languages:python:Factory
- Add gh122136-test_asyncio-kernel-buffer-data.patch fixing
  gh#python/cpython#122136 (changes in kernel provide different
  amount of data in the socket buffers).
- Remove skip_test_abort_clients.patch, which is not needed any
  more.

- Add CVE-2024-8088-inf-loop-zipfile_Path.patch to prevent
  malformed payload to cause infinite loops in zipfile.Path
  (bsc#1229704, CVE-2024-8088).

OBS-URL: https://build.opensuse.org/request/show/1197482
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=6
2024-08-30 11:32:00 +00:00
3827c5d408 Accepting request 1193120 from devel:languages:python:Factory
OBS-URL: https://build.opensuse.org/request/show/1193120
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=5
2024-08-10 17:08:14 +00:00
2325ab9130 Accepting request 1192376 from devel:languages:python:Factory
- Add CVE-2024-6923-email-hdr-inject.patch to prevent email
  header injection due to unquoted newlines (bsc#1228780,
  CVE-2024-6923).
- Adding bso1227999-reproducible-builds.patch fixing bsc#1227999
  adding reproducibility patches from gh#python/cpython!121872
  and gh#python/cpython!121883.
- Add skip_test_abort_clients.patch (gh#python/cpython#122136)
  skip not yet fixed failing test
- %{profileopt} variable is set according to the variable
  %{do_profiling} (bsc#1227999)
- Update bluez-devel-vendor.tar.xz

- Update to 3.13.0~rc1:
  - Tests
    - gh-59022: Add tests for pkgutil.extend_path(). Patch by
      Andreas Stocker.
    - gh-99242: os.getloadavg() may throw OSError when
      running regression tests under certain conditions (e.g.
      chroot). This error is now caught and ignored, since
      reporting load average is optional.
  - Security
    - gh-122133: Authenticate the socket connection for the
      socket.socketpair() fallback on platforms where AF_UNIX is
      not available like Windows.
    - Patch by Gregory P. Smith <greg@krypto.org> and Seth Larson
      <seth@python.org>. Reported by Ellie <el@horse64.org>
    - gh-121957: Fixed missing audit events around interactive
      use of Python, now also properly firing for python -i, as
      well as for python -m asyncio. The events in question are
      cpython.run_stdin and cpython.run_startup.

OBS-URL: https://build.opensuse.org/request/show/1192376
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=4
2024-08-08 08:58:35 +00:00
da884a6e9b Accepting request 1189339 from devel:languages:python:Factory
- Update F00251-change-user-install-location.patch to install packages
  in /usr/local by default when using pip outside of a RPMBUILD
  environment.
- Update to 3.13.0~b4:
  - Tests
    - gh-121084: Fix test_typing random leaks. Clear typing ABC
      caches when running tests for refleaks (-R option): call
      _abc_caches_clear() on typing abstract classes and their
      subclasses.
    - gh-121160: Add a test for
      readline.set_history_length(). Note that this test may fail
      on readline libraries.
    - gh-121200: Fix test_expanduser_pwd2() of
      test_posixpath. Call getpwnam() to get pw_dir, since it
      can be different than getpwall() pw_dir.
    - gh-121188: When creating the JUnit XML file, regrtest
      now escapes characters which are invalid in XML, such
      as the chr(27) control character used in ANSI escape
      sequences.
  - Library
    - gh-57141: The shallow argument to filecmp.dircmp (new in
      Python 3.13) is now keyword-only.
    - gh-121245: Simplify handling of the history file in
      site.register_readline() helper. The CAN_USE_PYREPL
      variable now will be initialized, when imported.
    - gh-121332: Fix constructor of ast nodes with custom
      _attributes. Previously, passing custom attributes would
      raise a DeprecationWarning. Passing arguments to the
      constructor that are not in _fields or _attributes remains
      deprecated.
    - gh-121279: Avoid NameError for the warnings module when
      accessing the depracated atributes of the importlib.abc
      module.
    - gh-121245: Fix a bug in the handling of the command history
      of the new REPL that caused the history file to be wiped at
      REPL exit.
    - gh-87744: Fix waitpid race while calling send_signal() in
      asyncio.
    - gh-121018: Fixed other issues where argparse.ArgumentParser
      did not honor exit_on_error=False.
    - gh-120678: Fix regression in the new REPL that meant that
      globals from files passed using the -i argument would not
      be included in the REPL’s global namespace.
    - gh-120782: Fix wrong references of the datetime types after
      reloading the module.
    - gh-120713: datetime.datetime.strftime() now 0-pads years
      with less than four digits for the format specifiers %Y and
      %G on Linux.
    - gh-117983: Defer the threading import in importlib.util
      until lazy loading is used.
    - gh-119189: When using the ** operator or pow() with
      Fraction as the base and an exponent that is not rational,
      a float, or a complex, the fraction is no longer converted
      to a float.
    - gh-118714: Allow restart in post-mortem debugging of
      pdb. Removed restart message when the user quits pdb from
      post-mortem mode.
    - gh-105623: Fix performance degradation in
      logging.handlers.RotatingFileHandler.
  - IDLE
    - gh-78889: Stop Shell freezes by blocking user access to
      non-method sys.stdout.shell attributes, which are all
      private.
  - Documentation
    - gh-121749: Fix documentation for PyModule_AddObjectRef().
    - gh-120012: Clarify the behaviours of
      multiprocessing.Queue.empty() and
      multiprocessing.SimpleQueue.empty() on closed queues.
  - Core and Builtins
    - gh-121860: Fix crash when rematerializing a managed
      dictionary after it was deleted.
    - gh-121814: Fixed the SegFault when PyEval_SetTrace() is
      used with no Python frame on stack.
    - gh-121295: Fix PyREPL console getting into a blocked state
      after interrupting a long paste
    - gh-121794: Fix bug in free-threaded Python where a
      resurrected object could lead to a negative ref count
      assertion failure.
    - gh-121657: Improve the SyntaxError message if the user
      tries to use yield from outside a function.
    - gh-121609: Fix pasting of characters containing unicode
      character joiners in the new REPL. Patch by Marta Gomez
      Macias
    - gh-117482: Unexpected slot wrappers are no longer created
      for builtin static types in subinterpreters.
    - gh-121499: Fix a bug affecting how multi-line history was
      being rendered in the new REPL after interacting with the
      new screen cache. Patch by Pablo Galindo
    - gh-121497: Fix a bug that was preventing the REPL to
      correctly respect the history when an input hook was
      set. Patch by Pablo Galindo
    - gh-121012: Tier 2 execution now ensures that list iterators
      remain exhausted, once they become exhausted.
    - gh-121439: Allow tuples of length 20 in the freelist to be
      reused.
    - gh-121368: Fix race condition in _PyType_Lookup in the
      free-threaded build due to a missing memory fence. This
      could lead to _PyType_Lookup returning incorrect results on
      arm64.
    - gh-121130: Fix f-strings with debug expressions in format
      specifiers. Patch by Pablo Galindo
    - gh-121115: PyLong_AsNativeBytes() no longer
      uses __index__() methods by default. The
      Py_ASNATIVEBYTES_ALLOW_INDEX flag has been added to allow
      it.
  - C API
    - gh-89364: Export the PySignal_SetWakeupFd()
      function. Previously, the function was documented but
      it couldn’t be used in 3rd party code. Patch by Victor
      Stinner.
    - gh-113993: PyUnicode_InternInPlace() no longer
      Seprevents its argument from being garbage collected
      Several functions that take char * are now documented
      Seas possibly preventing string objects from being
      Segarbage collected; refer to their documentation
      Sefor details: PyUnicode_InternFromString(),
      SePyDict_SetItemString(), PyObject_SetAttrString(),
      SePyObject_DelAttrString(), PyUnicode_InternFromString(),
      Seand PyModule_Add* convenience functions
    - gh-113601: Removed debug build assertions related to
      interning strings, which were falsely triggered by stable
      ABI extensions.
    - gh-112136: Restore the private _PyArg_Parser structure and
      the private _PyArg_ParseTupleAndKeywordsFast() function,
      previously removed in Python 3.13 alpha 1. Patch by Victor
      Stinner.
  - Build
    - gh-120371: Support WASI SDK 22 by explicitly skipping
      functions that are just stubs in wasi-libc.
    - gh-121731: Fix mimalloc compile error on GNU/Hurd
    - gh-121487: Fix deprecation warning for ATOMIC_VAR_INIT in
      mimalloc.
    - gh-121467: Fix a Makefile bug that prevented mimalloc
      header files from being installed.
    - gh-121103: On POSIX systems, excluding macOS framework
      installs, the lib directory for the free-threaded build now
      includes a “t” suffix to avoid conflicts with a co-located
      default build installation.
    - gh-120831: The default minimum iOS version was increased to
      13.0.
    - gh-113565: Improve curses and curses.panel dependency
      checks in configure.
- Remove %suse_update_desktop_file macro as it is not useful any
  more.

OBS-URL: https://build.opensuse.org/request/show/1189339
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=3
2024-07-25 13:38:59 +00:00
45a1da448a Accepting request 1186945 from devel:languages:python:Factory
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1186945
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=2
2024-07-12 15:04:41 +00:00
13 changed files with 614 additions and 555 deletions

View File

@@ -1,247 +0,0 @@
From 9043edabc7e2f0dd655146e0a4571e2a0b2906af Mon Sep 17 00:00:00 2001
From: Serhiy Storchaka <storchaka@gmail.com>
Date: Fri, 13 Jun 2025 19:57:48 +0300
Subject: [PATCH] gh-135462: Fix quadratic complexity in processing special
input in HTMLParser (GH-135464)
End-of-file errors are now handled according to the HTML5 specs --
comments and declarations are automatically closed, tags are ignored.
(cherry picked from commit 6eb6c5dbfb528bd07d77b60fd71fd05d81d45c41)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
---
Lib/html/parser.py | 41 +++-
Lib/test/test_htmlparser.py | 97 +++++++---
Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst | 4
3 files changed, 111 insertions(+), 31 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst
Index: Python-3.13.5/Lib/html/parser.py
===================================================================
--- Python-3.13.5.orig/Lib/html/parser.py 2025-06-11 17:36:57.000000000 +0200
+++ Python-3.13.5/Lib/html/parser.py 2025-07-02 16:49:52.020175099 +0200
@@ -27,6 +27,7 @@
attr_charref = re.compile(r'&(#[0-9]+|#[xX][0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]*)[;=]?')
starttagopen = re.compile('<[a-zA-Z]')
+endtagopen = re.compile('</[a-zA-Z]')
piclose = re.compile('>')
commentclose = re.compile(r'--\s*>')
# Note:
@@ -195,7 +196,7 @@
k = self.parse_pi(i)
elif startswith("<!", i):
k = self.parse_html_declaration(i)
- elif (i + 1) < n:
+ elif (i + 1) < n or end:
self.handle_data("<")
k = i + 1
else:
@@ -203,17 +204,35 @@
if k < 0:
if not end:
break
- k = rawdata.find('>', i + 1)
- if k < 0:
- k = rawdata.find('<', i + 1)
- if k < 0:
- k = i + 1
+ if starttagopen.match(rawdata, i): # < + letter
+ pass
+ elif startswith("</", i):
+ if i + 2 == n:
+ self.handle_data("</")
+ elif endtagopen.match(rawdata, i): # </ + letter
+ pass
+ else:
+ # bogus comment
+ self.handle_comment(rawdata[i+2:])
+ elif startswith("<!--", i):
+ j = n
+ for suffix in ("--!", "--", "-"):
+ if rawdata.endswith(suffix, i+4):
+ j -= len(suffix)
+ break
+ self.handle_comment(rawdata[i+4:j])
+ elif startswith("<![CDATA[", i):
+ self.unknown_decl(rawdata[i+3:])
+ elif rawdata[i:i+9].lower() == '<!doctype':
+ self.handle_decl(rawdata[i+2:])
+ elif startswith("<!", i):
+ # bogus comment
+ self.handle_comment(rawdata[i+2:])
+ elif startswith("<?", i):
+ self.handle_pi(rawdata[i+2:])
else:
- k += 1
- if self.convert_charrefs and not self.cdata_elem:
- self.handle_data(unescape(rawdata[i:k]))
- else:
- self.handle_data(rawdata[i:k])
+ raise AssertionError("we should not get here!")
+ k = n
i = self.updatepos(i, k)
elif startswith("&#", i):
match = charref.match(rawdata, i)
Index: Python-3.13.5/Lib/test/test_htmlparser.py
===================================================================
--- Python-3.13.5.orig/Lib/test/test_htmlparser.py 2025-06-11 17:36:57.000000000 +0200
+++ Python-3.13.5/Lib/test/test_htmlparser.py 2025-07-02 16:49:52.020821697 +0200
@@ -5,6 +5,7 @@
import unittest
from unittest.mock import patch
+from test import support
class EventCollector(html.parser.HTMLParser):
@@ -430,28 +431,34 @@
('data', '<'),
('starttag', 'bc<', [('a', None)]),
('endtag', 'html'),
- ('data', '\n<img src="URL>'),
- ('comment', '/img'),
- ('endtag', 'html<')])
+ ('data', '\n')])
def test_starttag_junk_chars(self):
+ self._run_check("<", [('data', '<')])
+ self._run_check("<>", [('data', '<>')])
+ self._run_check("< >", [('data', '< >')])
+ self._run_check("< ", [('data', '< ')])
self._run_check("</>", [])
+ self._run_check("<$>", [('data', '<$>')])
self._run_check("</$>", [('comment', '$')])
self._run_check("</", [('data', '</')])
- self._run_check("</a", [('data', '</a')])
+ self._run_check("</a", [])
+ self._run_check("</ a>", [('endtag', 'a')])
+ self._run_check("</ a", [('comment', ' a')])
self._run_check("<a<a>", [('starttag', 'a<a', [])])
self._run_check("</a<a>", [('endtag', 'a<a')])
- self._run_check("<!", [('data', '<!')])
- self._run_check("<a", [('data', '<a')])
- self._run_check("<a foo='bar'", [('data', "<a foo='bar'")])
- self._run_check("<a foo='bar", [('data', "<a foo='bar")])
- self._run_check("<a foo='>'", [('data', "<a foo='>'")])
- self._run_check("<a foo='>", [('data', "<a foo='>")])
+ self._run_check("<!", [('comment', '')])
+ self._run_check("<a", [])
+ self._run_check("<a foo='bar'", [])
+ self._run_check("<a foo='bar", [])
+ self._run_check("<a foo='>'", [])
+ self._run_check("<a foo='>", [])
self._run_check("<a$>", [('starttag', 'a$', [])])
self._run_check("<a$b>", [('starttag', 'a$b', [])])
self._run_check("<a$b/>", [('startendtag', 'a$b', [])])
self._run_check("<a$b >", [('starttag', 'a$b', [])])
self._run_check("<a$b />", [('startendtag', 'a$b', [])])
+ self._run_check("</a$b>", [('endtag', 'a$b')])
def test_slashes_in_starttag(self):
self._run_check('<a foo="var"/>', [('startendtag', 'a', [('foo', 'var')])])
@@ -576,21 +583,50 @@
for html, expected in data:
self._run_check(html, expected)
- def test_EOF_in_comments_or_decls(self):
+ def test_eof_in_comments(self):
data = [
- ('<!', [('data', '<!')]),
- ('<!-', [('data', '<!-')]),
- ('<!--', [('data', '<!--')]),
- ('<![', [('data', '<![')]),
- ('<![CDATA[', [('data', '<![CDATA[')]),
- ('<![CDATA[x', [('data', '<![CDATA[x')]),
- ('<!DOCTYPE', [('data', '<!DOCTYPE')]),
- ('<!DOCTYPE HTML', [('data', '<!DOCTYPE HTML')]),
+ ('<!--', [('comment', '')]),
+ ('<!---', [('comment', '')]),
+ ('<!----', [('comment', '')]),
+ ('<!-----', [('comment', '-')]),
+ ('<!------', [('comment', '--')]),
+ ('<!----!', [('comment', '')]),
+ ('<!---!', [('comment', '-!')]),
+ ('<!---!>', [('comment', '-!>')]),
+ ('<!--foo', [('comment', 'foo')]),
+ ('<!--foo-', [('comment', 'foo')]),
+ ('<!--foo--', [('comment', 'foo')]),
+ ('<!--foo--!', [('comment', 'foo')]),
+ ('<!--<!--', [('comment', '<!')]),
+ ('<!--<!--!', [('comment', '<!')]),
]
for html, expected in data:
self._run_check(html, expected)
+
+ def test_eof_in_declarations(self):
+ data = [
+ ('<!', [('comment', '')]),
+ ('<!-', [('comment', '-')]),
+ ('<![', [('comment', '[')]),
+ ('<![CDATA[', [('unknown decl', 'CDATA[')]),
+ ('<![CDATA[x', [('unknown decl', 'CDATA[x')]),
+ ('<![CDATA[x]', [('unknown decl', 'CDATA[x]')]),
+ ('<![CDATA[x]]', [('unknown decl', 'CDATA[x]]')]),
+ ('<!DOCTYPE', [('decl', 'DOCTYPE')]),
+ ('<!DOCTYPE ', [('decl', 'DOCTYPE ')]),
+ ('<!DOCTYPE html', [('decl', 'DOCTYPE html')]),
+ ('<!DOCTYPE html ', [('decl', 'DOCTYPE html ')]),
+ ('<!DOCTYPE html PUBLIC', [('decl', 'DOCTYPE html PUBLIC')]),
+ ('<!DOCTYPE html PUBLIC "foo', [('decl', 'DOCTYPE html PUBLIC "foo')]),
+ ('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "foo',
+ [('decl', 'DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "foo')]),
+ ]
+ for html, expected in data:
+ self._run_check(html, expected)
+
def test_bogus_comments(self):
- html = ('<! not really a comment >'
+ html = ('<!ELEMENT br EMPTY>'
+ '<! not really a comment >'
'<! not a comment either -->'
'<! -- close enough -->'
'<!><!<-- this was an empty comment>'
@@ -604,6 +640,7 @@
'<![CDATA]]>' # required '[' after CDATA
)
expected = [
+ ('comment', 'ELEMENT br EMPTY'),
('comment', ' not really a comment '),
('comment', ' not a comment either --'),
('comment', ' -- close enough --'),
@@ -684,6 +721,26 @@
('endtag', 'a'), ('data', ' bar & baz')]
)
+ @support.requires_resource('cpu')
+ def test_eof_no_quadratic_complexity(self):
+ # Each of these examples used to take about an hour.
+ # Now they take a fraction of a second.
+ def check(source):
+ parser = html.parser.HTMLParser()
+ parser.feed(source)
+ parser.close()
+ n = 120_000
+ check("<a " * n)
+ check("<a a=" * n)
+ check("</a " * 14 * n)
+ check("</a a=" * 11 * n)
+ check("<!--" * 4 * n)
+ check("<!" * 60 * n)
+ check("<?" * 19 * n)
+ check("</$" * 15 * n)
+ check("<![CDATA[" * 9 * n)
+ check("<!doctype" * 35 * n)
+
class AttributesTestCase(TestCaseBase):
Index: Python-3.13.5/Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.13.5/Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst 2025-07-02 16:49:52.021124951 +0200
@@ -0,0 +1,4 @@
+Fix quadratic complexity in processing specially crafted input in
+:class:`html.parser.HTMLParser`. End-of-file errors are now handled according
+to the HTML5 specs -- comments and declarations are automatically closed,
+tags are ignored.

View File

@@ -1,212 +0,0 @@
From fd29bcd380150035ef825b762d8cd085bdab6e53 Mon Sep 17 00:00:00 2001
From: Alexander Urieles <aeurielesn@users.noreply.github.com>
Date: Mon, 28 Jul 2025 17:37:26 +0200
Subject: [PATCH] gh-130577: tarfile now validates archives to ensure member
offsets are non-negative (GH-137027) (cherry picked from commit
7040aa54f14676938970e10c5f74ea93cd56aa38)
Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
---
Lib/tarfile.py | 3
Lib/test/test_tarfile.py | 156 ++++++++++
Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst | 3
3 files changed, 162 insertions(+)
create mode 100644 Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
Index: Python-3.13.5/Lib/tarfile.py
===================================================================
--- Python-3.13.5.orig/Lib/tarfile.py 2025-08-01 22:13:44.185826095 +0200
+++ Python-3.13.5/Lib/tarfile.py 2025-08-01 22:13:45.524140183 +0200
@@ -1636,6 +1636,9 @@
"""Round up a byte count by BLOCKSIZE and return it,
e.g. _block(834) => 1024.
"""
+ # Only non-negative offsets are allowed
+ if count < 0:
+ raise InvalidHeaderError("invalid offset")
blocks, remainder = divmod(count, BLOCKSIZE)
if remainder:
blocks += 1
Index: Python-3.13.5/Lib/test/test_tarfile.py
===================================================================
--- Python-3.13.5.orig/Lib/test/test_tarfile.py 2025-06-11 17:36:57.000000000 +0200
+++ Python-3.13.5/Lib/test/test_tarfile.py 2025-08-01 22:13:45.524778259 +0200
@@ -50,6 +50,7 @@
xzname = os.path.join(TEMPDIR, "testtar.tar.xz")
tmpname = os.path.join(TEMPDIR, "tmp.tar")
dotlessname = os.path.join(TEMPDIR, "testtar")
+SPACE = b" "
sha256_regtype = (
"e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce"
@@ -4578,6 +4579,161 @@
ar.extractall(self.testdir, filter='fully_trusted')
+class OffsetValidationTests(unittest.TestCase):
+ tarname = tmpname
+ invalid_posix_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011407" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 6 bytes, version: 2 bytes
+ + tarfile.POSIX_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # devminor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # prefix: 155 bytes
+ + tarfile.NUL * tarfile.LENGTH_PREFIX
+ # padding: 12 bytes
+ + tarfile.NUL * 12
+ )
+ invalid_gnu_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, null terminator: 8 bytes
+ + b"0000755" + tarfile.NUL
+ # uid, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011327" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 8 bytes
+ + tarfile.GNU_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # devminor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # padding: 167 bytes
+ + tarfile.NUL * 167
+ )
+ invalid_v7_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0010070" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # padding: 255 bytes
+ + tarfile.NUL * 255
+ )
+ valid_gnu_header = tarfile.TarInfo("filename").tobuf(tarfile.GNU_FORMAT)
+ data_block = b"\xff" * tarfile.BLOCKSIZE
+
+ def _write_buffer(self, buffer):
+ with open(self.tarname, "wb") as f:
+ f.write(buffer)
+
+ def _get_members(self, ignore_zeros=None):
+ with open(self.tarname, "rb") as f:
+ with tarfile.open(
+ mode="r", fileobj=f, ignore_zeros=ignore_zeros
+ ) as tar:
+ return tar.getmembers()
+
+ def _assert_raises_read_error_exception(self):
+ with self.assertRaisesRegex(
+ tarfile.ReadError, "file could not be opened successfully"
+ ):
+ self._get_members()
+
+ def test_invalid_offset_header_validations(self):
+ for tar_format, invalid_header in (
+ ("posix", self.invalid_posix_header),
+ ("gnu", self.invalid_gnu_header),
+ ("v7", self.invalid_v7_header),
+ ):
+ with self.subTest(format=tar_format):
+ self._write_buffer(invalid_header)
+ self._assert_raises_read_error_exception()
+
+ def test_early_stop_at_invalid_offset_header(self):
+ buffer = self.valid_gnu_header + self.invalid_gnu_header + self.valid_gnu_header
+ self._write_buffer(buffer)
+ members = self._get_members()
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, 0)
+
+ def test_ignore_invalid_archive(self):
+ # 3 invalid headers with their respective data
+ buffer = (self.invalid_gnu_header + self.data_block) * 3
+ self._write_buffer(buffer)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 0)
+
+ def test_ignore_invalid_offset_headers(self):
+ for first_block, second_block, expected_offset in (
+ (
+ (self.valid_gnu_header),
+ (self.invalid_gnu_header + self.data_block),
+ 0,
+ ),
+ (
+ (self.invalid_gnu_header + self.data_block),
+ (self.valid_gnu_header),
+ 1024,
+ ),
+ ):
+ self._write_buffer(first_block + second_block)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, expected_offset)
+
+
def setUpModule():
os_helper.unlink(TEMPDIR)
os.makedirs(TEMPDIR)
Index: Python-3.13.5/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.13.5/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst 2025-08-01 22:13:45.525174751 +0200
@@ -0,0 +1,3 @@
+:mod:`tarfile` now validates archives to ensure member offsets are
+non-negative. (Contributed by Alexander Enrique Urieles Nieto in
+:gh:`130577`.)

BIN
Python-3.13.5.tar.xz (Stored with Git LFS)

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
Python-3.13.9.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -14,10 +14,10 @@ https://github.com/python/cpython/issues/130979
Doc/tools/extensions/audit_events.py | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
Index: Python-3.13.5/Doc/tools/extensions/audit_events.py
Index: Python-3.13.6/Doc/tools/extensions/audit_events.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/audit_events.py 2025-07-02 15:51:58.388560540 +0200
+++ Python-3.13.5/Doc/tools/extensions/audit_events.py 2025-07-02 15:51:58.411254070 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/audit_events.py 2025-08-07 12:16:58.257103336 +0200
+++ Python-3.13.6/Doc/tools/extensions/audit_events.py 2025-08-07 12:17:02.709401389 +0200
@@ -72,8 +72,13 @@
logger.warning(msg)
return

View File

@@ -27,10 +27,10 @@
Doc/tools/extensions/pydoc_topics.py | 22 +++++-----
18 files changed, 159 insertions(+), 130 deletions(-)
Index: Python-3.13.5/Doc/Makefile
Index: Python-3.13.6/Doc/Makefile
===================================================================
--- Python-3.13.5.orig/Doc/Makefile 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/Makefile 2025-06-12 21:38:04.908380762 +0200
--- Python-3.13.6.orig/Doc/Makefile 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/Makefile 2025-08-07 12:16:58.253706854 +0200
@@ -14,15 +14,15 @@
SOURCES =
DISTVERSION = $(shell $(PYTHON) tools/extensions/patchlevel.py)
@@ -51,10 +51,10 @@ Index: Python-3.13.5/Doc/Makefile
$(PAPEROPT_$(PAPER)) \
$(SPHINXOPTS) $(SPHINXERRORHANDLING) \
. build/$(BUILDER) $(SOURCES)
Index: Python-3.13.5/Doc/c-api/arg.rst
Index: Python-3.13.6/Doc/c-api/arg.rst
===================================================================
--- Python-3.13.5.orig/Doc/c-api/arg.rst 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/c-api/arg.rst 2025-06-12 21:38:04.908705133 +0200
--- Python-3.13.6.orig/Doc/c-api/arg.rst 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/c-api/arg.rst 2025-08-07 12:16:58.254160756 +0200
@@ -334,7 +334,6 @@
should raise an exception and leave the content of *address* unmodified.
@@ -63,10 +63,10 @@ Index: Python-3.13.5/Doc/c-api/arg.rst
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.5/Doc/c-api/typeobj.rst
Index: Python-3.13.6/Doc/c-api/typeobj.rst
===================================================================
--- Python-3.13.5.orig/Doc/c-api/typeobj.rst 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/c-api/typeobj.rst 2025-06-12 21:38:04.908874058 +0200
--- Python-3.13.6.orig/Doc/c-api/typeobj.rst 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/c-api/typeobj.rst 2025-08-07 12:16:58.254692184 +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 @@ Index: Python-3.13.5/Doc/c-api/typeobj.rst
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.5/Doc/conf.py
Index: Python-3.13.6/Doc/conf.py
===================================================================
--- Python-3.13.5.orig/Doc/conf.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/conf.py 2025-06-12 21:38:04.909609597 +0200
--- Python-3.13.6.orig/Doc/conf.py 2025-08-07 12:16:45.115568663 +0200
+++ Python-3.13.6/Doc/conf.py 2025-08-07 12:16:58.255236531 +0200
@@ -11,6 +11,8 @@
from importlib import import_module
from importlib.util import find_spec
@@ -127,7 +127,7 @@ Index: Python-3.13.5/Doc/conf.py
'''
manpages_url = 'https://manpages.debian.org/{path}'
@@ -92,7 +94,7 @@
@@ -96,7 +98,7 @@
# Minimum version of sphinx required
# Keep this version in sync with ``Doc/requirements.txt``.
@@ -136,7 +136,7 @@ Index: Python-3.13.5/Doc/conf.py
# Create table of contents entries for domain objects (e.g. functions, classes,
# attributes, etc.). Default is True.
@@ -323,6 +325,9 @@
@@ -258,6 +260,9 @@
# Avoid a warning with Sphinx >= 4.0
root_doc = 'contents'
@@ -146,7 +146,7 @@ Index: Python-3.13.5/Doc/conf.py
# Allow translation of index directives
gettext_additional_targets = [
'index',
@@ -362,7 +367,7 @@
@@ -297,7 +302,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 @@ Index: Python-3.13.5/Doc/conf.py
html_context = {
"is_deployment_preview": is_deployment_preview,
"repository_url": repository_url or None,
@@ -607,6 +612,16 @@
@@ -542,6 +547,16 @@
}
extlinks_detect_hardcoded_links = True
@@ -172,22 +172,22 @@ Index: Python-3.13.5/Doc/conf.py
# Options for c_annotations extension
# -----------------------------------
Index: Python-3.13.5/Doc/library/doctest.rst
Index: Python-3.13.6/Doc/library/doctest.rst
===================================================================
--- Python-3.13.5.orig/Doc/library/doctest.rst 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/library/doctest.rst 2025-06-12 21:38:04.909944989 +0200
@@ -308,7 +308,6 @@
searched. Objects imported into the module are not searched.
--- Python-3.13.6.orig/Doc/library/doctest.rst 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/library/doctest.rst 2025-08-07 12:16:58.255583157 +0200
@@ -310,7 +310,6 @@
.. currentmodule:: None
.. attribute:: module.__test__
- :no-typesetting:
In addition, there are cases when you want tests to be part of a module but not part
of the help text, which requires that the tests not be included in the docstring.
Index: Python-3.13.5/Doc/library/email.compat32-message.rst
.. currentmodule:: doctest
Index: Python-3.13.6/Doc/library/email.compat32-message.rst
===================================================================
--- Python-3.13.5.orig/Doc/library/email.compat32-message.rst 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/library/email.compat32-message.rst 2025-06-12 21:38:04.910320877 +0200
--- Python-3.13.6.orig/Doc/library/email.compat32-message.rst 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/library/email.compat32-message.rst 2025-08-07 12:16:58.256095517 +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 @@ Index: Python-3.13.5/Doc/library/email.compat32-message.rst
The :class:`Message` class is very similar to the
Index: Python-3.13.5/Doc/library/xml.etree.elementtree.rst
Index: Python-3.13.6/Doc/library/xml.etree.elementtree.rst
===================================================================
--- Python-3.13.5.orig/Doc/library/xml.etree.elementtree.rst 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/library/xml.etree.elementtree.rst 2025-06-12 21:38:04.910594893 +0200
@@ -874,7 +874,6 @@
--- Python-3.13.6.orig/Doc/library/xml.etree.elementtree.rst 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/library/xml.etree.elementtree.rst 2025-08-07 12:16:58.256380542 +0200
@@ -873,7 +873,6 @@
.. module:: xml.etree.ElementTree
:noindex:
@@ -208,10 +208,10 @@ Index: Python-3.13.5/Doc/library/xml.etree.elementtree.rst
.. class:: Element(tag, attrib={}, **extra)
Index: Python-3.13.5/Doc/tools/check-warnings.py
Index: Python-3.13.6/Doc/tools/check-warnings.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/check-warnings.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/check-warnings.py 2025-06-12 21:38:04.910896050 +0200
--- Python-3.13.6.orig/Doc/tools/check-warnings.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/check-warnings.py 2025-08-07 12:16:58.256796101 +0200
@@ -228,7 +228,8 @@
print(filename)
for warning in warnings:
@@ -231,10 +231,10 @@ Index: Python-3.13.5/Doc/tools/check-warnings.py
for warning in warnings
if "Doc/" in warning
}
Index: Python-3.13.5/Doc/tools/extensions/audit_events.py
Index: Python-3.13.6/Doc/tools/extensions/audit_events.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/audit_events.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/audit_events.py 2025-06-12 21:38:04.911151491 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/audit_events.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/audit_events.py 2025-08-07 12:16:58.257103336 +0200
@@ -1,9 +1,6 @@
"""Support for documenting audit events."""
@@ -370,10 +370,10 @@ Index: Python-3.13.5/Doc/tools/extensions/audit_events.py
) -> nodes.row:
row = nodes.row()
name_node = nodes.paragraph("", nodes.Text(name))
Index: Python-3.13.5/Doc/tools/extensions/availability.py
Index: Python-3.13.6/Doc/tools/extensions/availability.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/availability.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/availability.py 2025-06-12 21:38:04.911376735 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/availability.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/availability.py 2025-08-07 12:16:58.257352322 +0200
@@ -1,8 +1,6 @@
"""Support for documenting platform availability"""
@@ -427,10 +427,10 @@ Index: Python-3.13.5/Doc/tools/extensions/availability.py
app.add_directive("availability", Availability)
return {
Index: Python-3.13.5/Doc/tools/extensions/c_annotations.py
Index: Python-3.13.6/Doc/tools/extensions/c_annotations.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/c_annotations.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/c_annotations.py 2025-06-12 21:38:04.911575881 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/c_annotations.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/c_annotations.py 2025-08-07 12:16:58.257571556 +0200
@@ -9,22 +9,26 @@
* Set ``stable_abi_file`` to the path to stable ABI list.
"""
@@ -568,10 +568,10 @@ Index: Python-3.13.5/Doc/tools/extensions/c_annotations.py
return {
"version": "1.0",
"parallel_read_safe": True,
Index: Python-3.13.5/Doc/tools/extensions/changes.py
Index: Python-3.13.6/Doc/tools/extensions/changes.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/changes.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/changes.py 2025-06-12 21:38:04.911758715 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/changes.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/changes.py 2025-08-07 12:16:58.257773818 +0200
@@ -1,7 +1,5 @@
"""Support for documenting version of changes, additions, deprecations."""
@@ -607,10 +607,10 @@ Index: Python-3.13.5/Doc/tools/extensions/changes.py
# 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.5/Doc/tools/extensions/glossary_search.py
Index: Python-3.13.6/Doc/tools/extensions/glossary_search.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/glossary_search.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/glossary_search.py 2025-06-12 21:38:04.911907976 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/glossary_search.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/glossary_search.py 2025-08-07 12:16:58.257959947 +0200
@@ -1,21 +1,27 @@
"""Feature search results for glossary items prominently."""
@@ -654,10 +654,10 @@ Index: Python-3.13.5/Doc/tools/extensions/glossary_search.py
app.connect('doctree-resolved', process_glossary_nodes)
app.connect('build-finished', write_glossary_json)
Index: Python-3.13.5/Doc/tools/extensions/implementation_detail.py
Index: Python-3.13.6/Doc/tools/extensions/implementation_detail.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/implementation_detail.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/implementation_detail.py 2025-06-12 21:38:04.912061736 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/implementation_detail.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/implementation_detail.py 2025-08-07 12:16:58.258140488 +0200
@@ -1,17 +1,10 @@
"""Support for marking up implementation details."""
@@ -708,10 +708,10 @@ Index: Python-3.13.5/Doc/tools/extensions/implementation_detail.py
app.add_directive("impl-detail", ImplementationDetail)
return {
Index: Python-3.13.5/Doc/tools/extensions/issue_role.py
Index: Python-3.13.6/Doc/tools/extensions/issue_role.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/issue_role.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/issue_role.py 2025-06-12 21:38:04.912236134 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/issue_role.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/issue_role.py 2025-08-07 12:16:58.258306293 +0200
@@ -1,22 +1,18 @@
"""Support for referencing issues in the tracker."""
@@ -757,10 +757,10 @@ Index: Python-3.13.5/Doc/tools/extensions/issue_role.py
app.add_role("issue", BPOIssue())
app.add_role("gh", GitHubIssue())
Index: Python-3.13.5/Doc/tools/extensions/misc_news.py
Index: Python-3.13.6/Doc/tools/extensions/misc_news.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/misc_news.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/misc_news.py 2025-06-12 21:38:04.912390144 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/misc_news.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/misc_news.py 2025-08-07 12:16:58.258481107 +0200
@@ -1,7 +1,5 @@
"""Support for including Misc/NEWS."""
@@ -813,10 +813,10 @@ Index: Python-3.13.5/Doc/tools/extensions/misc_news.py
app.add_directive("miscnews", MiscNews)
return {
Index: Python-3.13.5/Doc/tools/extensions/patchlevel.py
Index: Python-3.13.6/Doc/tools/extensions/patchlevel.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/patchlevel.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/patchlevel.py 2025-06-12 21:38:04.912563631 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/patchlevel.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/patchlevel.py 2025-08-07 12:16:58.258716335 +0200
@@ -3,7 +3,7 @@
import re
import sys
@@ -854,10 +854,10 @@ Index: Python-3.13.5/Doc/tools/extensions/patchlevel.py
version = f"{info.major}.{info.minor}"
release = f"{info.major}.{info.minor}.{info.micro}"
if info.releaselevel != "final":
Index: Python-3.13.5/Doc/tools/extensions/pydoc_topics.py
Index: Python-3.13.6/Doc/tools/extensions/pydoc_topics.py
===================================================================
--- Python-3.13.5.orig/Doc/tools/extensions/pydoc_topics.py 2025-06-12 21:37:37.257659788 +0200
+++ Python-3.13.5/Doc/tools/extensions/pydoc_topics.py 2025-06-12 21:38:04.912726688 +0200
--- Python-3.13.6.orig/Doc/tools/extensions/pydoc_topics.py 2025-08-06 15:05:20.000000000 +0200
+++ Python-3.13.6/Doc/tools/extensions/pydoc_topics.py 2025-08-07 12:16:58.258911962 +0200
@@ -1,21 +1,23 @@
"""Support for building "topic help" for pydoc."""

View File

@@ -0,0 +1,30 @@
From 4bb41b28d5bac09bccd636d8c5fefe1a462f63a7 Mon Sep 17 00:00:00 2001
From: Alm <alon.menczer@gmail.com>
Date: Mon, 25 Aug 2025 08:56:38 +0300
Subject: [PATCH 1/4] Exclude .pyc files from the computed digest in the jit
stencils
---
Tools/jit/_targets.py | 3 +++
1 file changed, 3 insertions(+)
Index: Python-3.13.7/Tools/jit/_targets.py
===================================================================
--- Python-3.13.7.orig/Tools/jit/_targets.py
+++ Python-3.13.7/Tools/jit/_targets.py
@@ -53,6 +53,9 @@ class _Target(typing.Generic[_S, _R]):
hasher.update(PYTHON_EXECUTOR_CASES_C_H.read_bytes())
hasher.update((out / "pyconfig.h").read_bytes())
for dirpath, _, filenames in sorted(os.walk(TOOLS_JIT)):
+ # Exclude cache files from digest computation to ensure reproducible builds.
+ if dirpath.endswith("__pycache__"):
+ continue
for filename in filenames:
hasher.update(pathlib.Path(dirpath, filename).read_bytes())
return hasher.hexdigest()
Index: Python-3.13.7/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst
===================================================================
--- /dev/null
+++ Python-3.13.7/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst
@@ -0,0 +1 @@
+Ensure reproducible builds by making JIT stencil header generation deterministic.

View File

@@ -0,0 +1,36 @@
From 19b61747df3d62c822285c488753d6fbdf91e3ac Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
Date: Tue, 23 Sep 2025 10:20:16 +0200
Subject: [PATCH 1/2] gh-139257: Support docutils >= 0.22
---
Doc/tools/extensions/pyspecific.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
Index: Python-3.13.7/Doc/tools/extensions/pyspecific.py
===================================================================
--- Python-3.13.7.orig/Doc/tools/extensions/pyspecific.py
+++ Python-3.13.7/Doc/tools/extensions/pyspecific.py
@@ -25,11 +25,21 @@ from sphinx.util.docutils import SphinxD
SOURCE_URI = 'https://github.com/python/cpython/tree/3.13/%s'
# monkey-patch reST parser to disable alphabetic and roman enumerated lists
+def _disable_alphabetic_and_roman(text):
+ try:
+ # docutils >= 0.22
+ from docutils.parsers.rst.states import InvalidRomanNumeralError
+ raise InvalidRomanNumeralError(text)
+ except ImportError:
+ # docutils < 0.22
+ 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
+ Body.enum.converters['upperroman'] = _disable_alphabetic_and_roman
class PyAwaitableMixin(object):

View File

@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2017 Zbigniew Jędrzejewski-Szmek -->
<application>
<id type="desktop">idle3.desktop</id>
<component type="desktop-application">
<id>org.python.IDLE3</id>
<launchable type="desktop-id">idle3.desktop</launchable>
<name>IDLE3</name>
<metadata_licence>CC0</metadata_licence>
<project_license>Python-2.0</project_license>
<summary>Python 3 Integrated Development and Learning Environment</summary>
<description>
<p>
IDLE is Pythons Integrated Development and Learning Environment.
The GUI is uniform between Windows, Unix, and Mac OS X.
The GUI is uniform between Windows, Unix, and macOS.
IDLE provides an easy way to start writing, running, and debugging
Python code.
</p>
@@ -19,17 +19,33 @@
It provides:
</p>
<ul>
<li>a Python shell window (interactive interpreter) with colorizing of code input, output, and error messages,</li>
<li>a multi-window text editor with multiple undo, Python colorizing, smart indent, call tips, auto completion, and other features,</li>
<li>search within any window, replace within editor windows, and search through multiple files (grep),</li>
<li>a debugger with persistent breakpoints, stepping, and viewing of global and local namespaces.</li>
<li>a Python shell window (interactive interpreter) with colorizing of code input, output, and error messages,</li>
<li>a multi-window text editor with multiple undo, Python colorizing, smart indent, call tips, auto completion, and other features,</li>
<li>search within any window, replace within editor windows, and search through multiple files (grep),</li>
<li>a debugger with persistent breakpoints, stepping, and viewing of global and local namespaces.</li>
</ul>
</description>
<developer id="org.python">
<name>Python Software Foundation</name>
</developer>
<url type="homepage">https://docs.python.org/3/library/idle.html</url>
<screenshots>
<screenshot type="default">http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-main-window.png</screenshot>
<screenshot>http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-class-browser.png</screenshot>
<screenshot>http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-code-viewer.png</screenshot>
<screenshot type="default">
<image>https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-main-window.png</image>
</screenshot>
<screenshot>
<image>https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-class-browser.png</image>
</screenshot>
<screenshot>
<image>https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-code-viewer.png</image>
</screenshot>
</screenshots>
<project_license>Python-2.0</project_license>
<metadata_license>CC0-1.0</metadata_license>
<update_contact>zbyszek@in.waw.pl</update_contact>
</application>
</component>

View File

@@ -1,3 +1,444 @@
-------------------------------------------------------------------
Wed Oct 15 09:15:38 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
- Update to 3.13.9:
- Library
- gh-139783: Fix inspect.getsourcelines() for the case when a
decorator is followed by a comment or an empty line.
- Update to 3.13.8:
- macOS
- gh-124111: Update macOS installer to use Tcl/Tk 8.6.17.
- gh-139573: Updated bundled version of OpenSSL to 3.0.18.
- Windows
- gh-139573: Updated bundled version of OpenSSL to 3.0.18.
- gh-138896: Fix error installing C runtime on non-updated Windows
machines
- Tools/Demos
- gh-139330: SBOM generation tool didnt cross-check the version
and checksum values against the Modules/expat/refresh.sh script,
leading to the values becoming out-of-date during routine
updates.
- gh-137873: The iOS test runner has been simplified, resolving
some issues that have been observed using the runner in GitHub
Actions and Azure Pipelines test environments.
- Tests
- gh-139208: Fix regrtest --fast-ci --verbose: dont ignore the
--verbose option anymore. Patch by Victor Stinner.
- Security
- gh-139400: xml.parsers.expat: Make sure that parent Expat
parsers are only garbage-collected once they are no longer
referenced by subparsers created by
ExternalEntityParserCreate(). Patch by Sebastian Pipping.
- gh-139283: sqlite3: correctly handle maximum number of rows to
fetch in Cursor.fetchmany and reject negative values for
Cursor.arraysize. Patch by Bénédikt Tran.
- gh-135661: Fix CDATA section parsing in html.parser.HTMLParser
according to the HTML5 standard: ] ]> and ]] > no longer end the
CDATA section. Add private method _set_support_cdata() which can
be used to specify how to parse <[CDATA[ — as a CDATA section in
foreign content (SVG or MathML) or as a bogus comment in the
HTML namespace.
- Library
- gh-139312: Upgrade bundled libexpat to 2.7.3
- gh-139289: Do a real lazy-import on rlcompleter in pdb and
restore the existing completer after importing rlcompleter.
- gh-139210: Fix use-after-free when reporting unknown event in
xml.etree.ElementTree.iterparse(). Patch by Ken Jin.
- gh-138860: Lazy import rlcompleter in pdb to avoid deadlock in
subprocess.
- gh-112729: Fix crash when calling _interpreters.create when the
process is out of memory.
- gh-139076: Fix a bug in the pydoc module that was hiding
functions in a Python module if they were implemented in an
extension module and the module did not have __all__.
- gh-138998: Update bundled libexpat to 2.7.2
- gh-130567: Fix possible crash in locale.strxfrm() due to a
platform bug on macOS.
- gh-138779: Support device numbers larger than 2**63-1 for the
st_rdev field of the os.stat_result structure.
- gh-128636: Fix crash in PyREPL when os.environ is overwritten
with an invalid value for mac
- gh-88375: Fix normalization of the robots.txt rules and URLs in
the urllib.robotparser module. No longer ignore trailing ?.
Distinguish raw special characters ?, = and & from the
percent-encoded ones.
- gh-138515: email is added to Emscripten build.
- gh-111788: Fix parsing errors in the urllib.robotparser module.
Dont fail trying to parse weird paths. Dont fail trying to
decode non-UTF-8 robots.txt files.
- gh-138432: zoneinfo.reset_tzpath() will now convert any
os.PathLike objects it receives into strings before adding them
to TZPATH. It will raise TypeError if anything other than a
string is found after this conversion. If given an os.PathLike
object that represents a relative path, it will now raise
ValueError instead of TypeError, and present a more informative
error message.
- gh-138008: Fix segmentation faults in the ctypes module due to
invalid argtypes. Patch by Dung Nguyen.
- gh-60462: Fix locale.strxfrm() on Solaris (and possibly other
platforms).
- gh-138204: Forbid expansion of shared anonymous memory maps on
Linux, which caused a bus error.
- gh-138010: Fix an issue where defining a class with a
@warnings.deprecated-decorated base class may not invoke the
correct __init_subclass__() method in cases involving multiple
inheritance. Patch by Brian Schubert.
- gh-138133: Prevent infinite traceback loop when sending CTRL^C
to Python through strace.
- gh-134869: Fix an issue where pressing Ctrl+C during tab
completion in the REPL would leave the autocompletion menu in a
corrupted state.
- gh-137317: inspect.signature() now correctly handles classes
that use a descriptor on a wrapped __init__() or __new__()
method. Contributed by Yongyu Yan.
- gh-137754: Fix import of the zoneinfo module if the C
implementation of the datetime module is not available.
- gh-137490: Handle ECANCELED in the same way as EINTR in
signal.sigwaitinfo() on NetBSD.
- gh-137477: Fix inspect.getblock(), inspect.getsourcelines() and
inspect.getsource() for generator expressions.
- gh-137017: Fix threading.Thread.is_alive to remain True until
the underlying OS thread is fully cleaned up. This avoids false
negatives in edge cases involving thread monitoring or premature
threading.Thread.is_alive calls.
- gh-136134: SMTP.auth_cram_md5() now raises an SMTPException
instead of a ValueError if Python has been built without MD5
support. In particular, SMTP clients will not attempt to use
this method even if the remote server is assumed to support it.
Patch by Bénédikt Tran.
- gh-136134: IMAP4.login_cram_md5 now raises an IMAP4.error if
CRAM-MD5 authentication is not supported. Patch by Bénédikt
Tran.
- gh-135386: Fix opening a dbm.sqlite3 database for reading from
read-only file or directory.
- gh-126631: Fix multiprocessing forkserver bug which prevented
__main__ from being preloaded.
- gh-123085: In a bare call to importlib.resources.files(), ensure
the callers frame is properly detected when importlib.resources
is itself available as a compiled module only (no source).
- gh-118981: Fix potential hang in
multiprocessing.popen_spawn_posix that can happen when the child
proc dies early by closing the child fds right away.
- gh-78319: UTF8 support for the IMAP APPEND command has been made
RFC compliant.
- bpo-38735: Fix failure when importing a module from the root
directory on unix-like platforms with sys.pycache_prefix set.
- bpo-41839: Allow negative priority values from
os.sched_get_priority_min() and os.sched_get_priority_max()
functions.
- Core and Builtins
- gh-134466: Dont run PyREPL in a degraded environment where
setting termios attributes is not allowed.
- gh-71810: Raise OverflowError for (-1).to_bytes() for signed
conversions when bytes count is zero. Patch by Sergey B
Kirpichev.
- gh-105487: Remove non-existent __copy__(), __deepcopy__(), and
__bases__ from the __dir__() entries of types.GenericAlias.
- gh-134163: Fix a hang when the process is out of memory inside
an exception handler.
- gh-138479: Fix a crash when a generic objects __typing_subst__
returns an object that isnt a tuple.
- gh-137576: Fix for incorrect source code being shown in
tracebacks from the Basic REPL when PYTHONSTARTUP is given.
Patch by Adam Hartz.
- gh-132744: Certain calls now check for runaway recursion and
respect the system recursion limit.
- C API
- gh-87135: Attempting to acquire the GIL after runtime
finalization has begun in a different thread now causes the
thread to hang rather than terminate, which avoids potential
crashes or memory corruption caused by attempting to terminate a
thread that is running code not specifically designed to support
termination. In most cases this hanging is harmless since the
process will soon exit anyway.
While not officially marked deprecated until 3.14,
PyThread_exit_thread is no longer called internally and remains
solely for interface compatibility. Its behavior is inconsistent
across platforms, and it can only be used safely in the unlikely
case that every function in the entire call stack has been
designed to support the platform-dependent termination
mechanism. It is recommended that users of this function change
their design to not require thread termination. In the unlikely
case that thread termination is needed and can be done safely,
users may migrate to calling platform-specific APIs such as
pthread_exit (POSIX) or _endthreadex (Windows) directly.
- Build
- gh-135734: Python can correctly be configured and built with
./configure --enable-optimizations --disable-test-modules.
Previously, the profile data generation step failed due to PGO
tests where immortalization couldnt be properly suppressed.
Patch by Bénédikt Tran.
-------------------------------------------------------------------
Mon Sep 29 06:52:07 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
- Add gh139257-Support-docutils-0.22.patch to fix build with latest
docutils (>=0.22) gh#python/cpython#139257
-------------------------------------------------------------------
Mon Sep 22 06:41:53 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
- Drop AppStream: this results in a different cycle than
appstream-glib. As the appdata.xml is controlled by ourselves, we
can get away with just manually validating it when changing it.
-------------------------------------------------------------------
Thu Sep 18 08:15:31 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
- Require AppStream to validate appdata file instead of deprecated
appstream-glib.
- Update idle3.appdata.xml to pass the more pedantic appstreamcli.
-------------------------------------------------------------------
Tue Sep 9 10:11:58 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
- Add gh138131-exclude-pycache-from-digest.patch fixing reproducible
build for python-nogil.
(bsc#1244680, gh#python/cpython#138131)
-------------------------------------------------------------------
Fri Aug 15 12:31:08 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 3.13.7:
- gh-137583: Fix a deadlock introduced in 3.13.6 when a call
to ssl.SSLSocket.recv was blocked in one thread, and then
another method on the object (such as ssl.SSLSocket.send) was
subsequently called in another thread.
- gh-137044: Return large limit values as positive integers
instead of negative integers in resource.getrlimit().
Accept large values and reject negative values (except
RLIM_INFINITY) for limits in resource.setrlimit().
- gh-136914: Fix retrieval of doctest.DocTest.lineno
for objects decorated with functools.cache() or
functools.cached_property.
- gh-131788: Make ResourceTracker.send from multiprocessing
re-entrant safe
- gh-136155: We are now checking for fatal errors in EPUB
builds in CI.
- gh-137400: Fix a crash in the free threading build when
disabling profiling or tracing across all threads with
PyEval_SetProfileAllThreads() or PyEval_SetTraceAllThreads()
or their Python equivalents threading.settrace_all_threads()
and threading.setprofile_all_threads().
- Remove upstreamed patch:
- gh137583-only-lock-SSL-context.patch
-------------------------------------------------------------------
Tue Aug 12 09:16:40 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Add gh137583-only-lock-SSL-context.patch fixing the
regression in 3.13.6 by breaking non-blocking TLS connections
(gh#python/cpython#137583).
-------------------------------------------------------------------
Thu Aug 7 10:08:11 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 3.13.6:
- Security
- gh-135661: Fix parsing start and end tags in
html.parser.HTMLParser according to the HTML5 standard.
- Whitespaces no longer accepted between </ and the tag
name. E.g. </ script> does not end the script section.
- Vertical tabulation (\v) and non-ASCII whitespaces no
longer recognized as whitespaces. The only whitespaces
are \t\n\r\f and space.
- Null character (U+0000) no longer ends the tag name.
- Attributes and slashes after the tag name in end tags
are now ignored, instead of terminating after the first
> in quoted attribute value. E.g. </script/foo=">"/>.
- Multiple slashes and whitespaces between the last
attribute and closing > are now ignored in both start
and end tags. E.g. <a foo=bar/ //>.
- Multiple = between attribute name and value are no
longer collapsed. E.g. <a foo==bar> produces attribute
“foo” with value “=bar”.
- gh-102555: Fix comment parsing in html.parser.HTMLParser
according to the HTML5 standard. --!> now ends the comment.
-- > no longer ends the comment. Support abnormally ended
empty comments <--> and <--->.
- gh-135462: Fix quadratic complexity in processing specially
crafted input in html.parser.HTMLParser. End-of-file errors
are now handled according to the HTML5 specs comments and
declarations are automatically closed, tags are ignored
(CVE-2025-6069, bsc#1244705).
- gh-118350: Fix support of escapable raw text mode (elements
“textarea” and “title”) in html.parser.HTMLParser.
- Core and Builtins
- gh-58124: Fix name of the Python encoding in Unicode errors
of the code page codec: use “cp65000” and “cp65001” instead
of “CP_UTF7” and “CP_UTF8” which are not valid Python code
names. Patch by Victor Stinner.
- gh-137314: Fixed a regression where raw f-strings
incorrectly interpreted escape sequences in format
specifications. Raw f-strings now properly preserve literal
backslashes in format specs, matching the behavior from
Python 3.11. For example, rf"{obj:\xFF}" now correctly
produces '\\xFF' instead of 'ÿ'. Patch by Pablo Galindo.
- gh-136541: Fix some issues with the perf trampolines
on x86-64 and aarch64. The trampolines were not being
generated correctly for some cases, which could lead to
the perf integration not working correctly. Patch by Pablo
Galindo.
- gh-109700: Fix memory error handling in
PyDict_SetDefault().
- gh-78465: Fix error message for cls.__new__(cls, ...) where
cls is not instantiable builtin or extension type (with
tp_new set to NULL).
- gh-135871: Non-blocking mutex lock attempts now return
immediately when the lock is busy instead of briefly
spinning in the free threading build.
- gh-135607: Fix potential weakref races in an objects
destructor on the free threaded build.
- gh-135496: Fix typo in the f-string conversion type error
(“exclamanation” -> “exclamation”).
- gh-130077: Properly raise custom syntax errors when
incorrect syntax containing names that are prefixes of soft
keywords is encountered. Patch by Pablo Galindo.
- gh-135148: Fixed a bug where f-string debug expressions
(using =) would incorrectly strip out parts of strings
containing escaped quotes and # characters. Patch by Pablo
Galindo.
- gh-133136: Limit excess memory usage in the free threading
build when a large dictionary or list is resized and
accessed by multiple threads.
- gh-132617: Fix dict.update() modification check that could
incorrectly raise a “dict mutated during update” error when
a different dictionary was modified that happens to share
the same underlying keys object.
- gh-91153: Fix a crash when a bytearray is concurrently
mutated during item assignment.
- gh-127971: Fix off-by-one read beyond the end of a string
in string search.
- gh-125723: Fix crash with gi_frame.f_locals when generator
frames outlive their generator. Patch by Mikhail Efimov.
- Library
- gh-132710: If possible, ensure that uuid.getnode()
returns the same result even across different processes.
Previously, the result was constant only within the same
process. Patch by Bénédikt Tran.
- gh-137273: Fix debug assertion failure in
locale.setlocale() on Windows.
- gh-137257: Bump the version of pip bundled in ensurepip to
version 25.2
- gh-81325: tarfile.TarFile now accepts a path-like when
working on a tar archive. (Contributed by Alexander Enrique
Urieles Nieto in gh-81325.)
- gh-130522: Fix unraisable TypeError raised during
interpreter shutdown in the threading module.
- gh-130577: tarfile now validates archives to ensure member
offsets are non-negative. (Contributed by Alexander Enrique
Urieles Nieto in gh-130577; CVE-2025-8194, bsc#1247249).
- gh-136549: Fix signature of threading.excepthook().
- gh-136523: Fix wave.Wave_write emitting an unraisable when
open raises.
- gh-52876: Add missing keepends (default True)
parameter to codecs.StreamReaderWriter.readline() and
codecs.StreamReaderWriter.readlines().
- gh-85702: If zoneinfo._common.load_tzdata is given a
package without a resource a zoneinfo.ZoneInfoNotFoundError
is raised rather than a PermissionError. Patch by Victor
Stinner.
- gh-134759: Fix UnboundLocalError in
email.message.Message.get_payload() when the payload to
decode is a bytes object. Patch by Kliment Lamonov.
- gh-136028: Fix parsing month names containing “İ” (U+0130,
LATIN CAPITAL LETTER I WITH DOT ABOVE) in time.strptime().
This affects locales az_AZ, ber_DZ, ber_MA and crh_UA.
- gh-135995: In the palmos encoding, make byte 0x9b decode to
(U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK).
- gh-53203: Fix time.strptime() for %c and %x formats on
locales byn_ER, wal_ET and lzh_TW, and for %X format on
locales ar_SA, bg_BG and lzh_TW.
- gh-91555: An earlier change, which was introduced in
3.13.4, has been reverted. It disabled logging for a logger
during handling of log messages for that logger. Since the
reversion, the behaviour should be as it was before 3.13.4.
- gh-135878: Fixes a crash of types.SimpleNamespace on free
threading builds, when several threads were calling its
__repr__() method at the same time.
- gh-135836: Fix IndexError in
asyncio.loop.create_connection() that could occur when
non-OSError exception is raised during connection and
sockets close() raises OSError.
- gh-135836: Fix IndexError in
asyncio.loop.create_connection() that could occur when the
Happy Eyeballs algorithm resulted in an empty exceptions
list during connection attempts.
- gh-135855: Raise TypeError instead of SystemError when
_interpreters.set___main___attrs() is passed a non-dict
object. Patch by Brian Schubert.
- gh-135815: netrc: skip security checks if os.getuid() is
missing. Patch by Bénédikt Tran.
- gh-135640: Address bug where it was possible to call
xml.etree.ElementTree.ElementTree.write() on an ElementTree
object with an invalid root element. This behavior blanked
the file passed to write if it already existed.
- gh-135444: Fix asyncio.DatagramTransport.sendto() to
account for datagram header size when data cannot be sent.
- gh-135497: Fix os.getlogin() failing for longer usernames
on BSD-based platforms.
- gh-135487: Fix reprlib.Repr.repr_int() when given integers
with more than sys.get_int_max_str_digits() digits. Patch
by Bénédikt Tran.
- gh-135335: multiprocessing: Flush stdout and stderr after
preloading modules in the forkserver.
- gh-135244: uuid: when the MAC address cannot be
determined, the 48-bit node ID is now generated with a
cryptographically-secure pseudo-random number generator
(CSPRNG) as per RFC 9562, §6.10.3. This affects uuid1().
- gh-135069: Fix the “Invalid error handling” exception in
encodings.idna.IncrementalDecoder to correctly replace the
errors parameter.
- gh-134698: Fix a crash when calling methods of
ssl.SSLContext or ssl.SSLSocket across multiple threads.
- gh-132124: On POSIX-compliant systems,
multiprocessing.util.get_temp_dir() now ignores TMPDIR
(and similar environment variables) if the path length of
AF_UNIX socket files exceeds the platform-specific maximum
length when using the forkserver start method. Patch by
Bénédikt Tran.
- gh-133439: Fix dot commands with trailing spaces are
mistaken for multi-line SQL statements in the sqlite3
command-line interface.
- gh-132969: Prevent the ProcessPoolExecutor executor thread,
which remains running when shutdown(wait=False), from
attempting to adjust the pools worker processes after
the object state has already been reset during shutdown.
A combination of conditions, including a worker process
having terminated abormally, resulted in an exception and
a potential hang when the still-running executor thread
attempted to replace dead workers within the pool.
- gh-130664: Support the '_' digit separator in formatting
of the integral part of Decimals. Patch by Sergey B
Kirpichev.
- gh-85702: If zoneinfo._common.load_tzdata is given a
package without a resource a ZoneInfoNotFoundError is
raised rather than a IsADirectoryError.
- gh-130664: Handle corner-case for Fractions formatting:
treat zero-padding (preceding the width field by a zero
('0') character) as an equivalent to a fill character of
'0' with an alignment type of '=', just as in case of
floats.
- Tools/Demos
- gh-135968: Stubs for strip are now provided as part of an
iOS install.
- Tests
- gh-135966: The iOS testbed now handles the app_packages
folder as a site directory.
- gh-135494: Fix regrtest to support excluding tests from
--pgo tests. Patch by Victor Stinner.
- gh-135489: Show verbose output for failing tests during PGO
profiling step with enable-optimizations.
- Documentation
- gh-135171: Document that the iterator for the leftmost for
clause in the generator expression is created immediately.
- Build
- gh-135497: Fix the detection of MAXLOGNAME in the
configure.ac script.
- Remove upstreamed patches:
- CVE-2025-8194-tarfile-no-neg-offsets.patch
- CVE-2025-6069-quad-complex-HTMLParser.patch
-------------------------------------------------------------------
Fri Aug 1 20:09:24 UTC 2025 - Matej Cepl <mcepl@cepl.eu>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python313
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -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.5
Version: 3.13.9
%define tarversion %{version}
%define tarname Python-%{tarversion}
Release: 0
@@ -231,12 +231,10 @@ Patch42: gh126985-mv-pyvenv.cfg2getpath.patch
# PATCH-FIX-UPSTREAM bsc1243155-sphinx-non-determinism.patch bsc#1243155 mcepl@suse.com
# Doc: Generate ids for audit_events using docname
Patch43: bsc1243155-sphinx-non-determinism.patch
# PATCH-FIX-UPSTREAM CVE-2025-6069-quad-complex-HTMLParser.patch bsc#1244705 mcepl@suse.com
# avoid quadratic complexity when processing malformed inputs with HTMLParser
Patch44: CVE-2025-6069-quad-complex-HTMLParser.patch
# PATCH-FIX-UPSTREAM CVE-2025-8194-tarfile-no-neg-offsets.patch bsc#1247249 mcepl@suse.com
# tarfile now validates archives to ensure member offsets are non-negative
Patch45: CVE-2025-8194-tarfile-no-neg-offsets.patch
# PATCH-FIX-UPSTREAM gh138131-exclude-pycache-from-digest.patch bsc#1244680 daniel.garcia@suse.com
Patch44: gh138131-exclude-pycache-from-digest.patch
# PATCH-FIX-OPENSUSE gh139257-Support-docutils-0.22.patch gh#python/cpython#139257 daniel.garcia@suse.com
Patch45: gh139257-Support-docutils-0.22.patch
BuildRequires: autoconf-archive
BuildRequires: automake
BuildRequires: fdupes
@@ -291,8 +289,6 @@ ExcludeArch: aarch64
%endif
%if %{with general}
# required for idle3 (.desktop and .appdata.xml files)
BuildRequires: appstream-glib
BuildRequires: gcc-c++
BuildRequires: gdbm-devel
BuildRequires: gettext
@@ -559,7 +555,7 @@ rm Lib/site-packages/README.txt
tar xvf %{SOURCE21}
# Don't fail on warnings when building documentation
# sed -i -e '/^SPHINXERRORHANDLING/s/-W//' Doc/Makefile
sed -i -e '/^SPHINXERRORHANDLING/s/--fail-on-warning//' Doc/Makefile
%build
export SUSE_VERSION="0%{?suse_version}"
@@ -784,7 +780,6 @@ install -m 644 -D -t %{buildroot}%{_datadir}/applications idle%{python_abi}.desk
cp %{SOURCE20} idle%{python_abi}.appdata.xml
sed -i -e 's:idle3.desktop:idle%{python_abi}.desktop:g' idle%{python_abi}.appdata.xml
install -m 644 -D -t %{buildroot}%{_datadir}/metainfo idle%{python_abi}.appdata.xml
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/idle%{python_abi}.appdata.xml
%fdupes %{buildroot}/%{_libdir}/python%{python_abi}
%endif