1
0
forked from pool/python313

115 Commits

Author SHA256 Message Date
b1df85c06b 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
976c4e0cef 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
871f5c3f10 - 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
37d407017e 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
92b79e3223 - 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
3a1acd0d11 - 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
adca6dee9d - 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
2abd69687b 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
9a9b32e012 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
07a0902464 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
0bf1e0de48 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
eb5e4cd13f - 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
a5239f3134 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
eaae274dc4 - 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
719d910757 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
836ffcda65 - 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
dc9a88a0ec 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
a10fb63256 - 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
e4f03691c0 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
3def3a278d - 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
6ccd98d9bb 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
9ca0c40ae3 - 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
395f30367f 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
6efef2d138 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
d2b706c283 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
6b8c3a8e15 - 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
e09d046cb9 - 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
8966bd89d2 - 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
30fabf621d - 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
d1dd8decb1 revert
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
4e7fbe78f1 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
6c5ffdb7d1 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
fb81f0c95c Fix bug reference in the changelog
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=83
2025-03-11 06:50:29 +00:00
7697c02d21 Fix bug reference in the changelog
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=82
2025-03-11 06:15:52 +00:00
12f6ddbda4 - Skip PGO with %want_reproducible_builds (boo#1040589)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=81
2025-03-10 18:35:58 +00:00
8412211e61 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
3375f039d6 - Do not build with experimental_jit when primary_python
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=79
2025-03-05 06:27:41 +00:00
45096711fd 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
3ab9737306 - Add doc-py38-to-py36.patch to make documentation buildable on
SLE with older Sphinx.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=77
2025-02-05 16:42:08 +00:00
47d752bbc6 - 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/package/show/devel:languages:python:Factory/python313?expand=0&rev=76
2025-02-05 09:57:45 +00:00
12d36f6d19 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
cf22122d9a - Configure externally_managed with a bcond
https://en.opensuse.org/openSUSE:Python:Externally_managed
  bsc#1228165

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=74
2025-01-30 17:35:22 +00:00
7775db5668 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
1a68b995e6 - Add CVE-2024-12254-unbound-mem-buffering-SelectorSocketTransport.writelines.patch
preventing exhaustion of memory (gh#python/cpython#127655,
  bsc#1234290, CVE-2024-12254).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=72
2024-12-06 20:46:56 +00:00
a5731deb52 Update patches
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=71
2024-12-06 13:01:45 +00:00
d4c1e47d44 - 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.
    - gh-127303: Publicly expose EXACT_TOKEN_TYPES in
      token.__all__.
    - gh-123967: Fix faulthandler for trampoline frames. If the
      top-most frame is a trampoline frame, skip it. Patch by

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=70
2024-12-04 22:01:51 +00:00
03c870434a 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
abfd0ea83d Accepting request 1227315 from home:dgarcia:branches:devel:languages:python:Factory
- Drop CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch, not needed
  anymore because libexpat is updated to 2.6 in SP7. bsc#1233777

OBS-URL: https://build.opensuse.org/request/show/1227315
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=68
2024-11-29 12:38:51 +00:00
e5ccabe5d6 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
45b3270bb2 hard-coded LLVM_version in the scripts.
Just a typo fixed

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=66
2024-11-18 14:04:00 +00:00
8ea0be1078 - Allow building with default LLVM version 19: just replace the
hard-coded LLVM_version in the scrpts.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=65
2024-11-18 13:48:03 +00:00
5017722c2b - Require exact clang18 and llvm18, because apparently CPython is
not ready for 19 yet (gh#python/cpython!125499).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=64
2024-11-14 17:26:42 +00:00
b4ab74738f - Remove -IVendor/ from python-config boo#1231795
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=63
2024-11-14 16:11:33 +00:00
07a89b44e8 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
162040ca05 - 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/package/show/devel:languages:python:Factory/python313?expand=0&rev=61
2024-10-25 14:01:31 +00:00
d35133fd4e 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
537e68d716 - With python311-Sphinx we don't need no-skipif-doctests.patch
any more.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=59
2024-10-16 07:27:11 +00:00
a53af73990 - Add warning about no-GIL builds being experimental.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=58
2024-10-10 11:18:53 +00:00
1e2a0f61a9 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
a5a443b789 - 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

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=56
2024-10-08 07:14:30 +00:00
32830d09d0 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
d4b9fa2439 Fix the changelog
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=54
2024-10-03 15:03:11 +00:00
e781d820b1 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
78ba84f9b1 Fix the command
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=52
2024-10-01 23:47:53 +00:00
0da0cdfdf4 - 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

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=51
2024-10-01 15:47:09 +00:00
888af93a0c 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
308255a772 - Make it build for SLE SP7 (jsc#PED-10075):
- Add CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to build in
    SLE-15-SP7.
  - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083
  - Add gh-124040-fix-test-math-i586.patch, gh#python/cpython#124042

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=49
2024-09-20 13:41:16 +00:00
a3ff8ce797 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
608d0c1bfd - Also in the corresponding ipaddress.IPv4Network and
ipaddress.IPv6Network attributes.
        - Fixes bsc#1226448 (CVE-2024-4032).
      Stinner to improve the CVE-2023-27043 fix (bsc#1210638).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=47
2024-09-07 19:39:36 +00:00
48b8355786 - 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/package/show/devel:languages:python:Factory/python313?expand=0&rev=46
2024-09-07 16:06:08 +00:00
4352698329 - Build experimental package python313-nogil with
--disable-gil option.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=45
2024-09-06 21:07:58 +00:00
001d1a2a20 Remove Modules/expat
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=44
2024-09-03 15:45:42 +00:00
6787a9f29d - Add gh120226-fix-sendfile-test-kernel-610.patch to avoid
failing test_sendfile_close_peer_in_the_middle_of_receiving
  tests on Linux >= 6.10 (GH-120227).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=43
2024-09-02 10:20:54 +00:00
1221d1c8e1 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
59a4965535 - 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.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=41
2024-08-29 14:47:46 +00:00
0a0564a0e9 - 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/package/show/devel:languages:python:Factory/python313?expand=0&rev=40
2024-08-29 13:03:32 +00:00
c7b43c0f60 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
b97ac57404 - Update list of skipped tests in qemu linux-user emulation
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=38
2024-08-10 09:21:55 +00:00
041b675fd8 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
5886778811 Fix the changelog
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=36
2024-08-07 21:42:22 +00:00
11a8661cb2 - Adding bso1227999-reproducible-builds.patch fixing bsc#1227999
adding reproducibility patches from gh#python/cpython!121872
  and gh#python/cpython!121883.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=35
2024-08-07 18:01:20 +00:00
1ef6a75b82 - Add CVE-2024-6923-email-hdr-inject.patch to prevent email
header injection due to unquoted newlines (bsc#1228780,
  CVE-2024-6923).
- %{profileopt} variable is set according to the variable
  %{do_profiling} (bsc#1227999)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=34
2024-08-07 14:51:11 +00:00
74a0bc0ca2 - Update bluez-devel-vendor.tar.xz
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=33
2024-08-07 13:41:11 +00:00
b1061c18e5 Add skip_test_abort_clients.patch to avoid failing test (gh#python/cpython#122136)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=32
2024-08-07 13:34:52 +00:00
b154095872 - 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.
  - Library
    - gh-122400: Handle ValueErrors raised by os.stat() in
      filecmp.dircmp and filecmp.cmpfiles(). Patch by Bénédikt
      Tran.
    - gh-122311: Fix some error messages in pickle.
    - gh-122332: Fixed segfault with asyncio.Task.get_coro() when
      using an eager task factory.
    - gh-105733: ctypes.ARRAY() is now soft deprecated: it no
      longer emits deprecation warnings and is not scheduled for
      removal.
    - gh-122087: Restore inspect.ismethoddescriptor() and
      inspect.isroutine() returning False for functools.partial

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=31
2024-08-01 10:42:44 +00:00
069357c85b 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
2a2ec95344 - Update F00251-change-user-install-location.patch to install packages
in /usr/local by default when using pip outside of a RPMBUILD
  environment.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=29
2024-07-24 08:32:48 +00:00
517ba388ca - Remove %suse_update_desktop_file macro as it is not useful any
more.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=28
2024-07-22 21:14:56 +00:00
a80b53565d _curses_panel
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=27
2024-07-22 20:14:43 +00:00
8e7a85bd98 - 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.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=26
2024-07-22 19:00:44 +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
ed93a74c21 Accepting request 1185326 from devel:languages:python:Factory
New version of the Python interpreter.

OBS-URL: https://build.opensuse.org/request/show/1185326
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=1
2024-07-05 17:46:53 +00:00
8be8178387 - Stop using %%defattr, it seems to be breaking proper executable
attributes on /usr/bin/ scripts (bsc#1227378).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=23
2024-07-04 18:10:47 +00:00
8f89a6f1a9 Testing bindir
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=22
2024-07-04 16:46:27 +00:00
58dda96c93 - Stop using %%defattr.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=21
2024-07-04 16:04:20 +00:00
5a06fe7d3f Accepting request 1184193 from home:dirkmueller:branches:openSUSE:Factory:Rings:1-MinimalX
- move pathlib to -base
- move _pyrepl to -base (used by pydoc which is in base)
- fix import-mapping

- restrict PEP668 to ALP/Tumbleweed
  * Support Expat >= 2.4.5
- allow build with Sphinx >= 3.x
  * remove importlib_resources and importlib-metadata
  - bpo-41304: Fixes python3x._pth being ignored on Windows, caused
  - bpo-29778: Ensure python3.dll is loaded from correct locations
  - bpo-39603: Prevent http header injection by rejecting control
    “__setattr__” in a multi-inheritance setup and
  - bpo-41247: Always cache the running loop holder when running
  - bpo-41252: Fix incorrect refcounting in
  - bpo-41215: Use non-NULL default values in the PEG parser
  - bpo-41218: Python 3.8.3 had a regression where compiling with
    ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would
  - bpo-41175: Guard against a NULL pointer dereference within
  - bpo-39960: The “hackcheck” that prevents sneaking around a type’s
    __setattr__() by calling the superclass method was
  - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the
  - bpo-39017: Avoid infinite loop when reading specially crafted
  - bpo-41207: In distutils.spawn, restore expectation that
  - bpo-41194: Fix a crash in the _ast module: it can no longer be
  - bpo-39384: Fixed email.contentmanager to allow set_content() to set a
  - bpo-41300: Save files with non-ascii chars.
  - bpo-37765: Add keywords to module name completion list.
  - bpo-40170: Revert PyType_HasFeature() change: it reads
    again directly the PyTypeObject.tp_flags
    member when the limited C API is not used, rather than always calling

OBS-URL: https://build.opensuse.org/request/show/1184193
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=20
2024-07-01 06:39:49 +00:00
2a85f6bbe8 - Update to 3.13.0~b2:
* Core and Builtins
    - gh-119462: Make sure that invariants of type versioning are
      maintained:
      * Superclasses always have their version number assigned
        before subclasses
      * The version tag is always zero if the tag is not valid.
      * The version tag is always non-zero if the tag is valid.
    - gh-120437: Fix _CHECK_STACK_SPACE optimization problems
      introduced in gh-118322.
    - gh-120722: Correctly set the bytecode position on return
      instructions within lambdas. Patch by Jelle Zijlstra.
    - gh-120367: Fix bug where compiler creates a redundant
      jump during pseudo-op replacement. Can only happen with
      a synthetic AST that has a try on the same line as the
      instruction following the exception handler.
    - gh-113993: Strings interned with sys.intern() are again
      garbage-collected when no longer used, as per the
      documentation. Strings interned with the C function
      PyUnicode_InternInPlace() are still immortal. Internals of
      the string interning mechanism have been changed. This may
      affect performance and identities of str objects.
    - gh-120384: Fix an array out of bounds crash in
      list_ass_subscript, which could be invoked via some
      specificly tailored input: including concurrent
      modification of a list object, where one thread assigns a
      slice and another clears it.
    - gh-120367: Fix crash in compiler on code with redundant
      NOPs and JUMPs which show up after exception handlers are
      moved to the end of the code.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=19
2024-06-28 06:33:35 +00:00
ed786f6cde Accepting request 1178998 from home:dgarcia:branches:devel:languages:python:Factory
- Fix doc package build
  gh#python/cpython#120150
- Update to 3.13.0b2:
  - Security
    - gh-118773: Fixes creation of ACLs in os.mkdir() on Windows to
      work correctly on non-English machines.
    - gh-118486: os.mkdir() on Windows now accepts mode of 0o700 to
      restrict the new directory to the current user. This fixes
      CVE-2024-4030 affecting tempfile.mkdtemp() in scenarios where
      the base temporary directory is more permissive than the
      default.
  - Core and Builtins
    - gh-119724: Reverted improvements to error messages for elif/else
      statements not matching any valid statements, which made in hard
      to locate the syntax errors inside those elif/else blocks.
    - gh-119842: Honor PyOS_InputHook() in the new REPL. Patch by
      Pablo Galindo
    - gh-119821: Fix execution of annotation scopes within classes
      when globals is set to a non-dict. Patch by Jelle Zijlstra.
    - gh-119548: Add a clear command to the REPL. Patch by Pablo
      Galindo
    - gh-111999: Fix the signature of str.format_map().
    - gh-119560: An invalid assert in beta 1 has been removed. The
      assert would fail if PyState_FindModule() was used in an
      extension module’s init function before the module def had been
      initialized.
    - gh-119369: Fix deadlock during thread deletion in free-threaded
      build, which could occur when the GIL was enabled at runtime.
    - gh-119525: Fix deadlock involving _PyType_Lookup() cache in the
      free-threaded build when the GIL is dynamically enabled at
      runtime.
    - gh-119311: Fix bug where names are unexpectedly mangled in the
      bases of generic classes.
    - gh-119395: Fix bug where names appearing after a generic class
      are mangled as if they are in the generic class.
    - gh-119213: Non-builtin modules built with argument clinic were
      crashing if used in a subinterpreter before the main
      interpreter. The objects that were causing the problem by
      leaking between interpreters carelessly have been fixed.
    - gh-119011: Fixes type.__type_params__ to return an empty tuple
      instead of a descriptor.
    - gh-118692: Avoid creating unnecessary StopIteration instances
      for monitoring.
    - gh-119049: Fix displaying the source line for warnings created
      by the C API if the warnings module had not yet been imported.
    - gh-118844: Fix build failures when configuring with both
      --disable-gil and --enable-experimental-jit.
    - gh-118921: Add copy() method for FrameLocalsProxy which returns
      a snapshot dict for local variables.
    - gh-117657: Fix data races on the field that stores a pointer to
      the interpreter’s main thread that occur in free-threaded
      builds.
    - gh-118507: Speedup os.path.isjunction() and os.path.lexists() on
      Windows with a native implementation.
    - gh-118561: Fix race condition in free-threaded build where
      list.extend() could expose uninitialised memory to concurrent
      readers.
    - gh-118263: Speed up os.path.splitroot() & os.path.normpath()
      with a direct C call.
    - gh-117195: Avoid assertion failure for debug builds when calling
      object.__sizeof__(1)
  - Library
    - gh-119819: Fix regression to allow logging configuration with
      multiprocessing queue types.
    - gh-117142: The ctypes module may now be imported in all
      subinterpreters, including those that have their own GIL.
    - gh-118835: Fix _pyrepl crash when using custom prompt with ANSI
      escape codes.
    - gh-117398: The _datetime module (C implementation for datetime)
      now supports being imported in multiple interpreters.
    - gh-89727: Fix issue with shutil.rmtree() where a RecursionError
      is raised on deep directory trees.
    - gh-89727: Partially fix issue with shutil.rmtree() where a
      RecursionError is raised on deep directory trees. A recursion
      error is no longer raised when rmtree.avoids_symlink_attacks is
      false.
    - gh-119118: Fix performance regression in the tokenize module by
      caching the line token attribute and calculating the column
      offset more efficiently.
    - gh-89727: Fix issue with os.fwalk() where a RecursionError was
      raised on deep directory trees by adjusting the implementation
      to be iterative instead of recursive.
    - gh-119588: zipfile.Path.is_symlink now assesses if the given
      path is a symlink.
    - gh-119555: Catch SyntaxError from compile() in the runsource()
      method of the InteractiveColoredConsole. Patch by Sergey B
      Kirpichev.
    - gh-113892: Now, the method sock_connect of
      asyncio.ProactorEventLoop raises a ValueError if given socket is
      not in non-blocking mode, as well as in other loop
      implementations.
    - gh-119443: The interactive REPL no longer runs with from
      __future__ import annotations enabled. Patch by Jelle Zijlstra.
    - gh-117398: Objects in the datetime C-API are now all statically
      allocated, which means better memory safety, especially when the
      module is reloaded. This should be transparent to users.
    - gh-118894: asyncio REPL now has the same capabilities as PyREPL.
    - gh-118911: In PyREPL, updated maybe-accept’s logic so that if
      the user hits Enter twice, they are able to terminate the block
      even if there’s trailing whitespace. Also, now when the user
      hits arrow up, the cursor is on the last functional line. This
      matches IPython’s behavior. Patch by Aya Elsayed.
    - gh-111201: Remove dependency to readline from the new Python
      REPL.
    - gh-119174: Fix high DPI causes turtledemo(turtle-graphics
      examples) windows blurry Patch by Wulian233 and Terry Jan Reedy
    - gh-119121: Fix a NameError happening in
      asyncio.staggered.staggered_race. This function is now tested.
    - gh-119113: Fix issue where pathlib.PurePath.with_suffix() didn’t
      raise TypeError when given None as a suffix.
    - gh-118643: Fix an AttributeError in the email module when
      re-fold a long address list. Also fix more cases of incorrect
      encoding of the address separator in the address list.
    - gh-58933: Make pdb return to caller frame correctly when f_trace
      of the caller frame is not set
    - gh-118895: Setting attributes on typing.NoDefault now raises
      AttributeError instead of TypeError.
    - gh-118868: Fixed issue where kwargs were no longer passed to the
      logging handler QueueHandler
    - gh-118851: ctx arguments to the constructors of ast node classes
      now default to ast.Load(). Patch by Jelle Zijlstra.
    - gh-118760: Restore the default value of tkiter.wantobjects to 1.
    - gh-118760: Fix errors in calling Tkinter bindings on Windows.
    - gh-118772: Allow typing.TypeVar instances without a default to
      follow instances without a default in some cases. Patch by Jelle
      Zijlstra.
    - gh-110863: os.path.realpath() now suppresses any OSError from
      os.readlink() when strict mode is disabled (the default).
    - gh-118033: Fix dataclasses.dataclass() not creating a
      __weakref__ slot when subclassing typing.Generic.
    - gh-106531: In importlib.resources, sync with importlib_resources
      6.3.2, including: MultiplexedPath now expects Traversable paths,
      deprecating string arguments to MultiplexedPath; Enabled support
      for resources in namespace packages in zip files; Fixed
      NotADirectoryError when calling files on a subdirectory of a
      namespace package.
    - gh-113978: Ignore warnings on text completion inside REPL.
    - gh-103956: Fix lack of newline characters in trace module output
      when line tracing is enabled but source code line for current
      frame is not available.
    - gh-92081: Fix missing spaces in email headers when the spaces
      are mixed with encoded 8-bit characters.
    - gh-103194: Prepare Tkinter for C API changes in Tcl 8.7/9.0 to
      avoid _tkinter.Tcl_Obj being unexpectedly returned instead of
      bool, str, bytearray, or int.
    - gh-87106: Fixed handling in inspect.Signature.bind() of keyword
      arguments having the same name as positional-only arguments when
      a variadic keyword argument (e.g. **kwargs) is present.
    - bpo-45767: Fix integer conversion in os.major(), os.minor(), and
      os.makedev(). Support device numbers larger than 2**63-1.
      Support non-existent device number (NODEV).
    - gh-67693: Fix urllib.parse.urlunparse() and
      urllib.parse.urlunsplit() for URIs with path starting with
      multiple slashes and no authority. Based on patch by Ashwin
      Ramaswami.
  - Tests
    - gh-119050: regrtest test runner: Add XML support to the refleak
      checker (-R option). Patch by Victor Stinner.  Buil- d
    - gh-119729: On POSIX systems, the pkg-config (.pc) filenames now
      include the ABI flags, which may include debug (“d”) and
      free-threaded (“t”). For example: * python-3.14.pc (default,
      non-debug build) * python-3.14d.pc (default, debug build) *
      python-3.14t.pc (free-threaded build)
    - gh-115119: Fall back to the bundled libmpdec if a system version
      cannot be found.
    - gh-119132: Update sys.version to identify whether the build is
      default build or free-threading build. Patch By Donghee Na.
    - gh-118836: Fix an AssertionError when building with
      --enable-experimental-jit and the compiler emits a SHT_NOTE
      section.
    - gh-118943: Fix a possible race condition affecting parallel
      builds configured with --enable-experimental-jit, in which
      compilation errors could be caused by an incompletely-generated
      header file.
  - Windows
    - gh-119679: Ensures correct import libraries are included in
      Windows installs.
    - gh-119690: Adds Unicode support and fixes audit events for
      _winapi.CreateNamedPipe.
    - gh-111201: Add support for new pyrepl on Windows
    - gh-119070: Fixes py.exe handling of shebangs like /usr/bin/env
      python3.12, which were previously interpreted as python3.exe
      instead of python3.12.exe.
    - gh-117505: Fixes an issue with the Windows installer not running
      ensurepip in a fully isolated environment. This could cause
      unexpected interactions with the user site-packages.
    - gh-118209: Avoid crashing in mmap on Windows when the mapped
      memory is inaccessible due to file system errors or access
      violations.
    - gh-116145: Updated bundled Tcl/Tk to 8.6.14.
  - C API
    - gh-119585: Fix crash when a thread state that was created by
      PyGILState_Ensure() calls a destructor that during
      PyThreadState_Clear() that calls back into PyGILState_Ensure()
      and PyGILState_Release(). This might occur when in the
      free-threaded build or when using thread-local variables whose
      destructors call PyGILState_Ensure().
    - gh-119336: Restore the removed _PyLong_NumBits() function. It is
      used by the pywin32 project. Patch by Ethan Smith
    - gh-119247: Added Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST and
      Py_END_CRITICAL_SECTION_SEQUENCE_FAST macros to make it possible
      to use PySequence_Fast APIs safely when free-threaded, and
      update str.join to work without the GIL using them.
    - gh-111389: Add PyHASH_MULTIPLIER constant: prime multiplier used
      in string and various other hashes. Patch by Victor Stinner.
    - gh-116984: Make mimalloc includes relative to the current file
      to avoid embedders or extensions needing to include
      Internal/mimalloc if they are already including internal CPython
      headers.
    - gh-118789: Restore _PyWeakref_ClearRef that was previously
      removed in Python 3.13 alpha 1.

OBS-URL: https://build.opensuse.org/request/show/1178998
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=18
2024-06-06 10:39:42 +00:00
4e91415a72 Accepting request 1175710 from home:dgarcia:branches:devel:languages:python:Factory
- Fix build for hwcaps architectures

OBS-URL: https://build.opensuse.org/request/show/1175710
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=17
2024-05-22 08:15:34 +00:00
f99fa3b4a5 - Enable experimental_jit just for supported arches
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=16
2024-05-10 07:30:18 +00:00
2120051248 - Use proper version name including tilda to separate pre-release
version.
  https://en.opensuse.org/openSUSE:Package_versioning_guidelines

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=15
2024-05-09 12:31:43 +00:00
7eaae69a60 - Disable experimental_jit for i586
- Remove _pyrepl from base

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=14
2024-05-09 10:45:22 +00:00
a4dc42ba84 - Add --enable-experimental-jit=yes-off to the build
- Update to 3.13.0a5
  * Security
    - gh-115398: Allow controlling Expat >=2.6.0 reparse deferral
      (CVE-2023-52425) by adding five new methods:
    -     xml.etree.ElementTree.XMLParser.flush()
    -     xml.etree.ElementTree.XMLPullParser.flush()
    -     xml.parsers.expat.xmlparser.GetReparseDeferralEnabled()
    -     xml.parsers.expat.xmlparser.SetReparseDeferralEnabled()
    -     xml.sax.expatreader.ExpatParser.flush()
    - gh-114572: ssl.SSLContext.cert_store_stats() and
      ssl.SSLContext.get_ca_certs() now correctly lock access to the
      certificate store, when the ssl.SSLContext is shared across
      multiple threads.  Core-  and Builtins
    - gh-116604: Respect the status of the garbage collector when
      indirect calls are made via PyErr_CheckSignals() and the
      evaluation breaker. Patch by Pablo Galindo
    - gh-112087: list is now compatible with the implementation of PEP
      703.
    - gh-116381: Add specialization for CONTAINS_OP.
    - gh-116296: Fix possible refleak in object.__reduce__() internal
      error handling.
    - gh-115823: Properly calculate error ranges in the parser when
      raising SyntaxError exceptions caused by invalid byte sequences.
      Patch by Pablo Galindo
    - gh-115778: Add tierN annotation for instruction definition in
      interpreter DSL.
    - gh-115733: Fix crash when calling next() on exhausted list
      iterators.
    - gh-115700: The regen-cases build stage now works on Windows.
    - gh-115347: Fix bug where docstring was replaced by a redundant

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=13
2024-05-09 09:59:06 +00:00
ee738c9b79 Add missing name of libraries
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=12
2024-03-20 21:03:31 +00:00
447b043d69 Fix %%autopatch
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=11
2024-03-20 05:28:14 +00:00
d51b4f3c7a - Update to 3.13.0a5:
- Security
    - gh-115398: Allow controlling Expat >=2.6.0 reparse deferral
      (CVE-2023-52425) by adding five new methods:
        xml.etree.ElementTree.XMLParser.flush()
        xml.etree.ElementTree.XMLPullParser.flush()
        xml.parsers.expat.xmlparser.GetReparseDeferralEnabled()
        xml.parsers.expat.xmlparser.SetReparseDeferralEnabled()
        xml.sax.expatreader.ExpatParser.flush()
    - gh-114572: ssl.SSLContext.cert_store_stats() and
      ssl.SSLContext.get_ca_certs() now correctly lock access to
      the certificate store, when the ssl.SSLContext is shared
      across multiple threads.
  - Core and Builtins
    - gh-116604: Respect the status of the garbage collector when
      indirect calls are made via PyErr_CheckSignals() and the
      evaluation breaker. Patch by Pablo Galindo
    - gh-112087: list is now compatible with the implementation
      of PEP 703.
    - gh-116381: Add specialization for CONTAINS_OP.
    - gh-116296: Fix possible refleak in object.__reduce__()
      internal error handling.
    - gh-115823: Properly calculate error ranges in the parser
      when raising SyntaxError exceptions caused by invalid byte
      sequences. Patch by Pablo Galindo
    - gh-115778: Add tierN annotation for instruction definition
      in interpreter DSL.
    - gh-115733: Fix crash when calling next() on exhausted list
      iterators.
    - gh-115700: The regen-cases build stage now works on

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=10
2024-03-20 05:23:44 +00:00
46a04323e0 - Drop gh115133-XMLPullParserTest-fail.patch upstreamed now.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=9
2024-03-07 08:17:31 +00:00
4dc8935b4f OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=8 2024-03-06 21:50:50 +00:00
4a63e4ee14 Accepting request 1155094 from home:dgarcia:branches:devel:languages:python:Factory
- Drop upstreamed patch gh115133-XMLPullParserTest-fail.patch
- Update to 3.13.0a4
  - Security
    - gh-115399: Update bundled libexpat to 2.6.0
    - gh-115243: Fix possible crashes in collections.deque.index()
      when the deque is concurrently modified.
  - Core and Builtins
    - gh-112087: For an empty reverse iterator for list will be
      reduced to reversed(). Patch by Donghee Na
    - gh-114570: Add PythonFinalizationError exception. This exception
      derived from RuntimeError is raised when an operation is blocked
      during the Python finalization. Patch by Victor Stinner.
    - gh-114695: Add sys._clear_internal_caches(), which clears all
      internal performance-related caches (and deprecate the
      less-general sys._clear_type_cache() function).
    - gh-114828: Fix compilation crashes in uncommon code examples
      using super() inside a comprehension in a class body.
    - gh-112069: Adapt set and frozenset methods to Argument Clinic.
    - gh-115011: Setters for members with an unsigned integer type now
      support the same range of valid values for objects that has a
      __index__() method as for int.
    - gh-114887: Changed socket type validation in
      create_datagram_endpoint() to accept all non-stream sockets.
      This fixes a regression in compatibility with raw sockets.
    - gh-114944: Fixes a race between PyParkingLot_Park and
      _PyParkingLot_UnparkAll.
    - gh-113462: Limit the number of versions that a single class can
      use. Prevents a few wayward classes using up all the version
      numbers.
    - gh-76763: The chr() builtin function now always raises
      ValueError for values outside the valid range. Previously it
      raised OverflowError for very large or small values.
    - gh-114806: No longer specialize calls to classes, if those
      classes have metaclasses. Fixes bug where the __call__ method of
      the metaclass was not being called.
    - gh-107944: Improve error message for function calls with bad
      keyword arguments via getargs
    - gh-112529: The free-threaded build no longer allocates space for
      the PyGC_Head structure in objects that support cyclic garbage
      collection. A number of other fields and data structures are
      used as replacements, including ob_gc_bits, ob_tid, and mimalloc
      internal data structures.
    - gh-114456: Lower the recursion limit under a debug build of
      WASI.
    - gh-114083: Compiler applies folding of LOAD_CONST with following
      instruction in a separate pass before other optimisations. This
      enables jump threading in certain circumstances.
    - gh-114388: Fix a RuntimeWarning emitted when assign an
      integer-like value that is not an instance of int to an
      attribute that corresponds to a C struct member of type T_UINT
      and T_ULONG. Fix a double RuntimeWarning emitted when assign a
      negative integer value to an attribute that corresponds to a C
      struct member of type T_UINT.
    - gh-114265: Compiler propagates line numbers before optimization,
      leading to more optimization opportunities and removing the need
      for the guarantee_lineno_for_exits hack.
    - gh-112529: The free-threaded build now has its own thread-safe
      GC implementation that uses mimalloc to find GC tracked objects.
      It is non-generational, unlike the existing GC implementation.
    - gh-114050: Fix segmentation fault caused by an incorrect format
      string in TypeError exception when more than two arguments are
      passed to int.
    - gh-112354: The END_FOR instruction now pops only one value. This
      is to better support side exits in loops.
    - gh-113884: Make queue.SimpleQueue thread safe when the GIL is
      disabled.
    - gh-114058: Implement the foundations of the Tier 2 redundancy
      eliminator.
    - gh-113939: frame.clear(): Clear frame.f_locals as well, and not
      only the fast locals. This is relevant once frame.f_locals was
      accessed, which would contain also references to all the locals.
    - gh-112050: Convert collections.deque to use Argument Clinic.
    - gh-112050: Make methods on collections.deque thread-safe when
      the GIL is disabled.
    - gh-113464: Add an option (--enable-experimental-jit for
      configure-based builds or --experimental-jit for PCbuild-based
      ones) to build an experimental just-in-time compiler, based on
      copy-and-patch
    - gh-113055: Make interp->obmalloc a pointer. For interpreters
      that share state with the main interpreter, this points to the
      same static memory structure. For interpreters with their own
      obmalloc state, it is heap allocated. Add free_obmalloc_arenas()
      which will free the obmalloc arenas and radix tree structures
      for interpreters with their own obmalloc state.
    - gh-55664: Add warning when creating type using a namespace
      dictionary with non-string keys. Patched by Daniel Urban and
      Furkan Onder.
    - gh-104530: Use native Win32 condition variables.
  - Library
    - gh-115392: Fix a bug in doctest where incorrect line numbers
      would be reported for decorated functions.
    - gh-114563: Fix several format() bugs when using the C
      implementation of Decimal: * memory leak in some rare cases when
      using the z format option (coerce negative 0) * incorrect output
      when applying the z format option to type F (fixed-point with
      capital NAN / INF) * incorrect output when applying the # format
      option (alternate form)
    - gh-102840: Fix confused traceback when floordiv, mod, or divmod
      operations happens between instances of fractions.Fraction and
      complex.
    - gh-115165: Most exceptions are now ignored when attempting to
      set the __orig_class__ attribute on objects returned when
      calling typing generic aliases (including generic aliases
      created using typing.Annotated). Previously only AttributeError
      was ignored. Patch by Dave Shawley.
    - gh-112903: Fix “issubclass() arg 1 must be a class” errors in
      certain cases of multiple inheritance with generic aliases
      (regression in early 3.13 alpha releases).
    - gh-115133: Fix tests for XMLPullParser with Expat 2.6.0.
    - gh-115059: io.BufferedRandom.read1() now flushes the underlying
      write buffer.
    - gh-79382: Trailing ** no longer allows to match files and
      non-existing paths in recursive glob().
    - gh-67837: Avoid race conditions in the creation of directories
      during concurrent extraction in tarfile and zipfile.
    - gh-115060: Speed up pathlib.Path.glob() by removing redundant
      regex matching.
    - gh-97928: Partially revert the behavior of tkinter.Text.count().
      By default it preserves the behavior of older Python versions,
      except that setting wantobjects to 0 no longer has effect. Add a
      new parameter return_ints: specifying return_ints=True makes
      Text.count() always returning the single count as an integer
      instead of a 1-tuple or None.
    - gh-114628: When csv.Error is raised when handling TypeError, do
      not print the TypeError traceback.
    - gh-85984: Added _POSIX_VDISABLE from C’s <unistd.h> to termios.
    - gh-114965: Update bundled pip to 24.0
    - gh-114959: tarfile no longer ignores errors when trying to
      extract a directory on top of a file.
    - gh-114894: Add array.array.clear().
    - gh-114071: Support tuple subclasses using auto() for enum member
      value.
    - gh-109475: Fix support of explicit option value “–” in argparse
      (e.g. --option=--).
    - gh-49766: Fix date-datetime comparison. Now the special
      comparison methods like __eq__ and __lt__ return NotImplemented
      if one of comparands is date and other is datetime instead of
      ignoring the time part and the time zone or forcefully return
      “not equal” or raise TypeError. It makes comparison of date and
      datetime subclasses more symmetric and allows to change the
      default behavior by overriding the special comparison methods in
      subclasses.
    - gh-110190: Fix ctypes structs with array on Windows ARM64
      platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by
      Diego Russo
    - gh-114678: Ensure that deprecation warning for ‘N’ specifier in
      Decimal format is not raised for cases where ‘N’ appears in
      other places in the format specifier. Based on patch by Stefan
      Krah.
    - gh-70303: Return both files and directories from
      pathlib.Path.glob() if a pattern ends with “**”. Previously only
      directories were returned.
    - gh-109653: Improve import time of importlib.metadata and
      email.utils.
    - gh-113280: Fix a leak of open socket in rare cases when error
      occurred in ssl.SSLSocket creation.
    - gh-77749: email.policy.EmailPolicy.fold() now always encodes
      non-ASCII characters in headers if utf8 is false.
    - gh-83383: Synchronization of the dbm.dumb database is now no-op
      if there was no modification since opening or last
      synchronization. The directory file for a newly created empty
      dbm.dumb database is now created immediately after opening
      instead of deferring this until synchronizing or closing.
    - gh-91602: Add filter keyword-only parameter to
      sqlite3.Connection.iterdump() for filtering database objects to
      dump. Patch by Mariusz Felisiak.
    - gh-112451: Prohibit subclassing pure-Python datetime.timezone.
      This is consistent with C-extension implementation. Patch by
      Mariusz Felisiak.
    - gh-69893: Add the close() method for the iterator returned by
      xml.etree.ElementTree.iterparse().
    - gh-109653: Reduce the import time of threading module by ~50%.
      Patch by Daniel Hollas.
    - gh-114492: Make the result of termios.tcgetattr() reproducible
      on Alpine Linux. Previously it could leave a random garbage in
      some fields.
    - gh-114315: Make threading.Lock a real class, not a factory
      function. Add __new__ to _thread.lock type.
    - gh-100414: Add dbm.sqlite3 as a backend to dbm, and make it the
      new default dbm backend. Patch by Raymond Hettinger and Erlend
      E. Aasland.
    - gh-113267: Revert changes in gh-106584 which made calls of
      TestResult methods startTest() and stopTest() unbalanced.
    - gh-75128: Ignore an OSError in
      asyncio.BaseEventLoop.create_server() when IPv6 is available but
      the interface cannot actually support it.
    - gh-114423: _DummyThread entries in threading._active are now
      automatically removed when the related thread dies.
    - gh-114257: Dismiss the FileNotFound error in
      ctypes.util.find_library() and just return None on Linux.
    - gh-114321: Expose more platform specific constants in the fcntl
      module on Linux, macOS, FreeBSD and NetBSD.
    - gh-114328: The tty.setcbreak() and new tty.cfmakecbreak() no
      longer clears the terminal input ICRLF flag. This fixes a
      regression introduced in 3.12 that no longer matched how OSes
      define cbreak mode in their stty(1) manual pages.
    - gh-114281: Remove type hints from Lib/asyncio/staggered.py. The
      annotations in the typeshed project should be used instead.
    - gh-101438: Avoid reference cycle in ElementTree.iterparse. The
      iterator returned by ElementTree.iterparse may hold on to a file
      descriptor. The reference cycle prevented prompt clean-up of the
      file descriptor if the returned iterator was not exhausted.
    - gh-114198: The signature for the __replace__ method on
      dataclasses now has the first argument named self, rather than
      obj.
    - gh-104522: OSError raised when run a subprocess now only has
      filename attribute set to cwd if the error was caused by a
      failed attempt to change the current directory.
    - gh-114149: Enum: correctly handle tuple subclasses in custom
      __new__.
    - gh-83648: Support deprecation of options, positional arguments
      and subcommands in argparse.
    - gh-114087: Speed up dataclasses.asdict up to 1.35x.
    - gh-109534: Fix a reference leak in
      asyncio.selector_events.BaseSelectorEventLoop when SSL
      handshakes fail. Patch contributed by Jamie Phan.
    - gh-79634: Accept path-like objects as patterns in
      pathlib.Path.glob() and rglob().
    - gh-112202: Ensure that a asyncio.Condition.notify() call does
      not get lost if the awakened Task is simultaneously cancelled or
      encounters any other error.
    - gh-113951: Fix the behavior of tag_unbind() methods of
      tkinter.Text and tkinter.Canvas classes with three arguments.
      Previously, widget.tag_unbind(tag, sequence, funcid) destroyed
      the current binding for sequence, leaving sequence unbound, and
      deleted the funcid command. Now it removes only funcid from the
      binding for sequence, keeping other commands, and deletes the
      funcid command. It leaves sequence unbound only if funcid was
      the last bound command.
    - gh-97959: Fix rendering class methods, bound methods, method and
      function aliases in pydoc. Class methods no longer have “method
      of builtins.type instance” note. Corresponding notes are now
      added for class and unbound methods. Method and function aliases
      now have references to the module or the class where the origin
      was defined if it differs from the current. Bound methods are
      now listed in the static methods section. Methods of builtin
      classes are now supported as well as methods of Python classes.
    - gh-113796: Add more validation checks in the csv.Dialect
      constructor. ValueError is now raised if the same character is
      used in different roles.
    - gh-113732: Fix support of QUOTE_NOTNULL and QUOTE_STRINGS in
      csv.reader().
    - gh-113225: Speed up pathlib.Path.walk() by using
      os.DirEntry.path where possible.
    - gh-89039: When replace() method is called on a subclass of
      datetime, date or time, properly call derived constructor.
      Previously, only the base class’s constructor was called.
    - Also, make sure to pass non-zero fold values when creating
      subclasses in various methods. Previously, fold was silently
      ignored.
    - gh-112919: Speed-up datetime.datetime.replace(),
      datetime.date.replace() and datetime.time.replace().
    - gh-59013: Set breakpoint on the first executable line of the
      function, instead of the line of function definition when the
      user do break func using pdb
    - gh-112343: Improve handling of pdb convenience variables to
      avoid replacing string contents.
    - gh-112240: Add option to calendar module CLI to specify the
      weekday to start each week. Patch by Steven Ward.
    - gh-111741: Recognise image/webp as a standard format in the
      mimetypes module.
    - gh-43457: Fix the tkinter widget method wm_attributes(). It now
      accepts the attribute name without the minus prefix to get
      window attributes and allows to specify attributes and values to
      set as keyword arguments. Add new optional keyword argument
      return_python_dict: calling
      w.wm_attributes(return_python_dict=True) returns the attributes
      as a dict instead of a tuple. Calling w.wm_attributes() now
      returns a tuple instead of string if wantobjects was set to 0.
    - gh-82626: Many functions now emit a warning if a boolean value
      is passed as a file descriptor argument.
    - gh-111051: Added check for file modification during debugging
      with pdb
    - gh-110345: Show the Tcl/Tk patchlevel (rather than version) in
      tkinter._test().
    - gh-38807: Fix race condition in trace. Instead of checking if a
      directory exists and creating it, directly call os.makedirs()
      with the kwarg exist_ok=True.
    - gh-75705: Set unixfrom envelope in mailbox.mbox and
      mailbox.MMDF.
    - gh-106233: Fix stacklevel in InvalidTZPathWarning during
      zoneinfo module import.
    - gh-105102: Allow ctypes.Union to be nested in ctypes.Structure
      when the system endianness is the opposite of the classes.
    - gh-104282: Fix null pointer dereference in
      lzma._decode_filter_properties() due to improper handling of BCJ
      filters with properties of zero length. Patch by Radislav
      Chugunov.
    - gh-96471: Add queue.Queue termination with shutdown().
    - gh-101599: Changed argparse flag options formatting to remove
      redundancy.
    - gh-85984: Add POSIX pseudo-terminal functions os.posix_openpt(),
      os.grantpt(), os.unlockpt(), and os.ptsname().
    - gh-102512: When os.fork() is called from a foreign thread (aka
      _DummyThread), the type of the thread in a child process is
      changed to _MainThread. Also changed its name and daemonic
      status, it can be now joined.
    - gh-88569: Add os.path.isreserved(), which identifies reserved
      pathnames such as “NUL”, “AUX” and “CON”. This function is only
      available on Windows.
    - Deprecate pathlib.PurePath.is_reserved().
    - bpo-38364: The inspect functions isgeneratorfunction,
      iscoroutinefunction, isasyncgenfunction now support
      functools.partialmethod wrapped functions the same way they
      support functools.partial.
  - Documentation
    - gh-115233: Fix an example for LoggerAdapter in the Logging
      Cookbook.
    - gh-114123: Move the csv module docstring to the csv module
      instead of reexporting it from the internal _csv module, and
      remove __doc__ from csv.__all__.
    - Move csv.__version__ to the csv module instead of reexporting it
      from the internal _csv module, and remove __version__ from
      csv.__all__.  Test- s
    - gh-114099: Added test exclusions required to run the test suite
      on iOS.
    - gh-105089: Fix
      test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write
      test in AIX by doing a bitwise AND of 0xFFFF on mode , so that
      it will be in sync with zinfo.external_attr Buil- d
    - gh-115167: Avoid vendoring vcruntime140_threads.dll when
      building with Visual Studio 2022 version 17.8.
    - gh-113632: Promote WASI to a tier 2 platform and drop Emscripten
      from tier 3 in configure.ac.
    - gh-114099: configure and Makefile were refactored to accomodate
      framework builds on Apple platforms other than macOS.
    - gh-114875: Add getgrent() as a prerequisite for building the grp
      module.  Wind- ows
    - gh-115049: Fixes py.exe launcher failing when run as users
      without user profiles.
    - gh-115009: Update Windows installer to use SQLite 3.45.1.
    - gh-109991: Update Windows build to use OpenSSL 3.0.13.
    - gh-111239: Update Windows builds to use zlib v1.3.1.
    - gh-100107: The py.exe launcher will no longer attempt to run the
      Microsoft Store redirector when launching a script containing a
      /usr/bin/env shebang
    - gh-112984: Adds free-threaded binaries to Windows installer as
      an optional component.
    - gh-89240: Allows multiprocessing to create pools of greater than
      62 processes.
  - IDLE
    - gh-96905: In idlelib code, stop redefining built-ins ‘dict’ and
      ‘object’.
    - gh-103820: Revise IDLE bindings so that events from mouse button
      4/5 on non-X11 windowing systems (i.e. Win32 and Aqua) are not
      mistaken for scrolling.
  - Tools/Demos
    - gh-113516: Don’t set LDSHARED when building for WASI.
    - gh-109991: Update GitHub CI workflows to use OpenSSL 3.0.13 and
      multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1.
    - gh-115015: Fix a bug in Argument Clinic that generated incorrect
      code for methods with no parameters that use the METH_METHOD |
      METH_FASTCALL | METH_KEYWORDS calling convention. Only the
      positional parameter count was checked; any keyword argument
      passed would be silently accepted.
  - C API
    - gh-111140: Adds PyLong_AsNativeBytes(), PyLong_FromNativeBytes()
      and PyLong_FromUnsignedNativeBytes() functions.
    - gh-114685: PyBuffer_FillInfo() now raises a SystemError if
      called with PyBUF_READ or PyBUF_WRITE as flags. These flags
      should only be used with the PyMemoryView_* C API.
    - gh-114685: PyObject_GetBuffer() now raises a SystemError if
      called with PyBUF_READ or PyBUF_WRITE as flags. These flags
      should only be used with the PyMemoryView_* C API.
    - gh-114626: Add PyCFunctionFast and PyCFunctionFastWithKeywords
      typedefs (identical to the existing _PyCFunctionFast and
      _PyCFunctionFastWithKeywords typedefs, just without a leading _
      prefix).
    - gh-114329: Add PyList_GetItemRef(), which is similar to
      PyList_GetItem() but returns a strong reference instead of a
      borrowed reference.
    - gh-110850: Add PyTime C API:
      * PyTime_t type.
      * PyTime_MIN and PyTime_MAX constants.
      * PyTime_AsSecondsDouble(), PyTime_Monotonic(), PyTime_PerfCounter(), and PyTime_Time() functions.
    - gh-112066: Add PyDict_SetDefaultRef(): insert a key and value
      into a dictionary if the key is not already present. This is
      similar to dict.setdefault(), but returns an integer value
      indicating if the key was already present. It is also similar to
      PyDict_SetDefault(), but returns a strong reference instead of a
      borrowed reference.

OBS-URL: https://build.opensuse.org/request/show/1155094
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=7
2024-03-05 11:50:09 +00:00
8e49b262ea Accepting request 1148356 from home:mcepl:branches:devel:languages:python:Factory
- Add gh115133-XMLPullParserTest-fail.patch to make
  Python building with the current libexpat 2.6.0
  (gh#python/cpython#115133).
- Switch to %%autopatch. Let’s try it as an experiment, and if we
  need conditional patch, we should put condition inside of it.
- Remove double definition of /usr/bin/idle%%{version} in
  %%files.

OBS-URL: https://build.opensuse.org/request/show/1148356
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=6
2024-02-20 22:04:57 +00:00
edaef6893c - Fix package adding _xxinterpqueues and pathlib dir
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=5
2024-02-08 18:11:36 +00:00
5eff57c396 - Fix build, NEWS.txt doesn't exists anymore
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=4
2024-02-08 08:56:56 +00:00
cf67592415 - Update to 3.13.0a3
- Security
    - gh-113659: Skip .pth files with names starting with a dot or
      hidden file attribute.
    - gh-112302: Created a Software Bill-of-Materials document and
      tooling for tracking dependencies.
  - Core and Builtins
    - gh-107901: Compiler duplicates basic blocks that have an eval
      breaker check, no line number, and multiple predecessors.
    - gh-107901: A jump leaving an exception handler back to normal
      code no longer checks the eval breaker.
    - gh-113655: Set the C recursion limit to 4000 on Windows, and
      10000 on Linux/OSX. This seems to be near the sweet spot to
      maintain safety, but not compromise backwards compatibility.
    - gh-113710: Add typed stack effects to the interpreter DSL, along
      with various instruction annotations.
    - gh-77046: On Windows, file descriptors wrapping Windows handles
      are now created non inheritable by default (PEP 446). Patch by
      Zackery Spytz and Victor Stinner.
    - gh-113853: Guarantee that all executors make progress. This then
      guarantees that tier 2 execution always makes progress.
    - gh-113753: Fix an issue where the finalizer of PyAsyncGenASend
      objects might not be called if they were allocated from a free
      list.
    - gh-107901: Compiler changed so that synthetic jumps which are
      not at loop end no longer check the eval breaker.
    - gh-113703: Fix a regression in the codeop module that was
      causing it to incorrectly identify incomplete f-strings. Patch
      by Pablo Galindo
    - gh-89811: Check for a valid tp_version_tag before performing

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=3
2024-02-08 08:18:19 +00:00
9bce840ac0 - Update to 3.13.0a2:
Python 3.13.0 alpha 2¶
  - Core and Builtins:
    - Don’t include comments in f-string debug expressions. Patch
      by Pablo Galindo
    - Slightly optimize the Tier 2 (uop) interpreter by only
      loading oparg and operand when needed. Also double the
      trace size limit again, to 512 this time.
    - Change docstrings of __dict__ and __weakref__.
    - Lower the max parser stack depth to 1000 under WASI debug
      builds.
    - When Python is built in debug mode, set the C recursion
      limit to 500 instead of 1500. A debug build is likely built
      with low optimization level which implies higher stack
      memory usage than a release build. Patch by Victor Stinner.
    - Enable translating unspecialized FOR_ITER to Tier 2.
    - Make hashlib related modules thread-safe without the GIL
    - Deprecate assignment to a function’s __code__ field when
      the new code object is of a mismatched type (e.g., from a
      generator to a plain function).
    - Raise exception if frame.clear() is called on a suspended
      frame.
    - Implement native thread ids for GNU KFreeBSD.
    - Use exponential backoff to reduce the number of failed tier
      2 optimization attempts by over 99%.
    - Joining a thread now ensures the underlying OS thread has
      exited. This is required for safer fork() in multi-threaded
      processes.
    - Make sure that tier 2 traces are de-optimized if the code
      is instrumented

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=2
2023-11-25 16:20:58 +00:00
c9d84fa1ca Accepting request 1117792 from home:dgarcia:branches:devel:languages:python:Factory
Python 3.13 alpha package

OBS-URL: https://build.opensuse.org/request/show/1117792
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=1
2023-10-14 13:31:04 +00:00
21 changed files with 0 additions and 1058 deletions

View File

@@ -1,67 +0,0 @@
---
Lib/test/test_pyexpat.py | 4 ++++
Lib/test/test_sax.py | 3 +++
Lib/test/test_xml_etree.py | 10 ++++++++++
3 files changed, 17 insertions(+)
--- a/Lib/test/test_pyexpat.py
+++ b/Lib/test/test_pyexpat.py
@@ -791,6 +791,10 @@ class ReparseDeferralTest(unittest.TestC
self.assertEqual(started, ['doc'])
def test_reparse_deferral_disabled(self):
+ if expat.version_info < (2, 6, 0):
+ self.skipTest(f'Expat {expat.version_info} does not '
+ 'support reparse deferral')
+
started = []
def start_element(name, _):
--- a/Lib/test/test_sax.py
+++ b/Lib/test/test_sax.py
@@ -1240,6 +1240,9 @@ class ExpatReaderTest(XmlTestBase):
self.assertEqual(result.getvalue(), start + b"<doc></doc>")
+ @unittest.skipIf(pyexpat.version_info < (2, 6, 0),
+ f'Expat {pyexpat.version_info} does not '
+ 'support reparse deferral')
def test_flush_reparse_deferral_disabled(self):
result = BytesIO()
xmlgen = XMLGenerator(result)
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -121,6 +121,11 @@ ATTLIST_XML = """\
</foo>
"""
+IS_SLE_15_7 = os.environ.get("SLE_VERSION", "") == "0150700"
+fails_with_expat_2_6_0 = (unittest.expectedFailure
+ # 2.4 version patched in SLE
+ if IS_SLE_15_7 and pyexpat.version_info >= (2, 4, 0) else
+ lambda test: test)
def checkwarnings(*filters, quiet=False):
def decorator(test):
def newtest(*args, **kwargs):
@@ -1504,9 +1509,11 @@ class XMLPullParserTest(unittest.TestCas
self.assert_event_tags(parser, [('end', 'root')])
self.assertIsNone(parser.close())
+ @fails_with_expat_2_6_0
def test_simple_xml_chunk_1(self):
self.test_simple_xml(chunk_size=1, flush=True)
+ @fails_with_expat_2_6_0
def test_simple_xml_chunk_5(self):
self.test_simple_xml(chunk_size=5, flush=True)
@@ -1731,6 +1738,9 @@ class XMLPullParserTest(unittest.TestCas
self.assert_event_tags(parser, [('end', 'doc')])
+ @unittest.skipIf(pyexpat.version_info < (2, 6, 0),
+ f'Expat {pyexpat.version_info} does not '
+ 'support reparse deferral')
def test_flush_reparse_deferral_disabled(self):
parser = ET.XMLPullParser(events=('start', 'end'))

View File

@@ -1,46 +0,0 @@
From bfc2e93d755bf496e5ef4cae9609d2823122c909 Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <nick@koston.org>
Date: Thu, 5 Dec 2024 10:01:10 -0600
Subject: [PATCH 01/10] Ensure writelines pauses the protocol if needed
---
Lib/asyncio/selector_events.py | 1
Lib/test/test_asyncio/test_selector_events.py | 12 ++++++++++
Misc/NEWS.d/next/Security/2024-12-05-21-35-19.gh-issue-127655.xpPoOf.rst | 1
3 files changed, 14 insertions(+)
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -1175,6 +1175,7 @@ class _SelectorSocketTransport(_Selector
# If the entire buffer couldn't be written, register a write handler
if self._buffer:
self._loop._add_writer(self._sock_fd, self._write_ready)
+ self._maybe_pause_protocol()
def can_write_eof(self):
return True
--- a/Lib/test/test_asyncio/test_selector_events.py
+++ b/Lib/test/test_asyncio/test_selector_events.py
@@ -805,6 +805,18 @@ class SelectorSocketTransportTests(test_
self.assertTrue(self.sock.send.called)
self.assertTrue(self.loop.writers)
+ def test_writelines_pauses_protocol(self):
+ data = memoryview(b'data')
+ self.sock.send.return_value = 2
+ self.sock.send.fileno.return_value = 7
+
+ transport = self.socket_transport()
+ transport._high_water = 1
+ transport.writelines([data])
+ self.assertTrue(self.protocol.pause_writing.called)
+ self.assertTrue(self.sock.send.called)
+ self.assertTrue(self.loop.writers)
+
@unittest.skipUnless(selector_events._HAS_SENDMSG, 'no sendmsg')
def test_write_sendmsg_full(self):
data = memoryview(b'data')
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2024-12-05-21-35-19.gh-issue-127655.xpPoOf.rst
@@ -0,0 +1 @@
+Fixed the :class:`!asyncio.selector_events._SelectorSocketTransport` transport not pausing writes for the protocol when the buffer reaches the high water mark when using :meth:`asyncio.WriteTransport.writelines`.

View File

@@ -1,483 +0,0 @@
From 0afcdf15f64273dc5e4ed12ea63a01f7f1136d71 Mon Sep 17 00:00:00 2001
From: Serhiy Storchaka <storchaka@gmail.com>
Date: Mon, 12 May 2025 20:42:23 +0300
Subject: [PATCH] [3.13] gh-133767: Fix use-after-free in the unicode-escape
decoder with an error handler (GH-129648)
If the error handler is used, a new bytes object is created to set as
the object attribute of UnicodeDecodeError, and that bytes object then
replaces the original data. A pointer to the decoded data will became invalid
after destroying that temporary bytes object. So we need other way to return
the first invalid escape from _PyUnicode_DecodeUnicodeEscapeInternal().
_PyBytes_DecodeEscape() does not have such issue, because it does not
use the error handlers registry, but it should be changed for compatibility
with _PyUnicode_DecodeUnicodeEscapeInternal().
(cherry picked from commit 9f69a58623bd01349a18ba0c7a9cb1dad6a51e8e)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
---
Include/internal/pycore_bytesobject.h | 5
Include/internal/pycore_unicodeobject.h | 12 +-
Lib/test/test_codeccallbacks.py | 39 +++++++
Lib/test/test_codecs.py | 52 ++++++++--
Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst | 2
Objects/bytesobject.c | 41 ++++---
Objects/unicodeobject.c | 46 +++++---
Parser/string_parser.c | 26 +++--
8 files changed, 160 insertions(+), 63 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst
Index: Python-3.13.3/Include/internal/pycore_bytesobject.h
===================================================================
--- Python-3.13.3.orig/Include/internal/pycore_bytesobject.h 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Include/internal/pycore_bytesobject.h 2025-05-17 07:33:22.001814947 +0000
@@ -20,8 +20,9 @@
// Helper for PyBytes_DecodeEscape that detects invalid escape chars.
// Export for test_peg_generator.
-PyAPI_FUNC(PyObject*) _PyBytes_DecodeEscape(const char *, Py_ssize_t,
- const char *, const char **);
+PyAPI_FUNC(PyObject*) _PyBytes_DecodeEscape2(const char *, Py_ssize_t,
+ const char *,
+ int *, const char **);
// Substring Search.
Index: Python-3.13.3/Include/internal/pycore_unicodeobject.h
===================================================================
--- Python-3.13.3.orig/Include/internal/pycore_unicodeobject.h 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Include/internal/pycore_unicodeobject.h 2025-05-17 07:33:22.001974979 +0000
@@ -142,14 +142,18 @@
// Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape
// chars.
// Export for test_peg_generator.
-PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscapeInternal(
+PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscapeInternal2(
const char *string, /* Unicode-Escape encoded string */
Py_ssize_t length, /* size of string */
const char *errors, /* error handling */
Py_ssize_t *consumed, /* bytes consumed */
- const char **first_invalid_escape); /* on return, points to first
- invalid escaped char in
- string. */
+ int *first_invalid_escape_char, /* on return, if not -1, contain the first
+ invalid escaped char (<= 0xff) or invalid
+ octal escape (> 0xff) in string. */
+ const char **first_invalid_escape_ptr); /* on return, if not NULL, may
+ point to the first invalid escaped
+ char in string.
+ May be NULL if errors is not NULL. */
/* --- Raw-Unicode-Escape Codecs ---------------------------------------------- */
Index: Python-3.13.3/Lib/test/test_codeccallbacks.py
===================================================================
--- Python-3.13.3.orig/Lib/test/test_codeccallbacks.py 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Lib/test/test_codeccallbacks.py 2025-05-17 07:33:22.002185827 +0000
@@ -1,6 +1,7 @@
import codecs
import html.entities
import itertools
+import re
import sys
import unicodedata
import unittest
@@ -1124,7 +1125,7 @@
text = 'abc<def>ghi'*n
text.translate(charmap)
- def test_mutatingdecodehandler(self):
+ def test_mutating_decode_handler(self):
baddata = [
("ascii", b"\xff"),
("utf-7", b"++"),
@@ -1159,6 +1160,42 @@
for (encoding, data) in baddata:
self.assertEqual(data.decode(encoding, "test.mutating"), "\u4242")
+ def test_mutating_decode_handler_unicode_escape(self):
+ decode = codecs.unicode_escape_decode
+ def mutating(exc):
+ if isinstance(exc, UnicodeDecodeError):
+ r = data.get(exc.object[:exc.end])
+ if r is not None:
+ exc.object = r[0] + exc.object[exc.end:]
+ return ('\u0404', r[1])
+ raise AssertionError("don't know how to handle %r" % exc)
+
+ codecs.register_error('test.mutating2', mutating)
+ data = {
+ br'\x0': (b'\\', 0),
+ br'\x3': (b'xxx\\', 3),
+ br'\x5': (b'x\\', 1),
+ }
+ def check(input, expected, msg):
+ with self.assertWarns(DeprecationWarning) as cm:
+ self.assertEqual(decode(input, 'test.mutating2'), (expected, len(input)))
+ self.assertIn(msg, str(cm.warning))
+
+ check(br'\x0n\z', '\u0404\n\\z', r"invalid escape sequence '\z'")
+ check(br'\x0n\501', '\u0404\n\u0141', r"invalid octal escape sequence '\501'")
+ check(br'\x0z', '\u0404\\z', r"invalid escape sequence '\z'")
+
+ check(br'\x3n\zr', '\u0404\n\\zr', r"invalid escape sequence '\z'")
+ check(br'\x3zr', '\u0404\\zr', r"invalid escape sequence '\z'")
+ check(br'\x3z5', '\u0404\\z5', r"invalid escape sequence '\z'")
+ check(memoryview(br'\x3z5x')[:-1], '\u0404\\z5', r"invalid escape sequence '\z'")
+ check(memoryview(br'\x3z5xy')[:-2], '\u0404\\z5', r"invalid escape sequence '\z'")
+
+ check(br'\x5n\z', '\u0404\n\\z', r"invalid escape sequence '\z'")
+ check(br'\x5n\501', '\u0404\n\u0141', r"invalid octal escape sequence '\501'")
+ check(br'\x5z', '\u0404\\z', r"invalid escape sequence '\z'")
+ check(memoryview(br'\x5zy')[:-1], '\u0404\\z', r"invalid escape sequence '\z'")
+
# issue32583
def test_crashing_decode_handler(self):
# better generating one more character to fill the extra space slot
Index: Python-3.13.3/Lib/test/test_codecs.py
===================================================================
--- Python-3.13.3.orig/Lib/test/test_codecs.py 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Lib/test/test_codecs.py 2025-05-17 07:33:22.002507164 +0000
@@ -1196,23 +1196,39 @@
check(br"[\1010]", b"[A0]")
check(br"[\x41]", b"[A]")
check(br"[\x410]", b"[A0]")
+
+ def test_warnings(self):
+ decode = codecs.escape_decode
+ check = coding_checker(self, decode)
for i in range(97, 123):
b = bytes([i])
if b not in b'abfnrtvx':
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\%c'" % i):
check(b"\\" + b, b"\\" + b)
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\%c'" % (i-32)):
check(b"\\" + b.upper(), b"\\" + b.upper())
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\8'"):
check(br"\8", b"\\8")
with self.assertWarns(DeprecationWarning):
check(br"\9", b"\\9")
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\\xfa'") as cm:
check(b"\\\xfa", b"\\\xfa")
for i in range(0o400, 0o1000):
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid octal escape sequence '\\%o'" % i):
check(rb'\%o' % i, bytes([i & 0o377]))
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\z'"):
+ self.assertEqual(decode(br'\x\z', 'ignore'), (b'\\z', 4))
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid octal escape sequence '\\501'"):
+ self.assertEqual(decode(br'\x\501', 'ignore'), (b'A', 6))
+
def test_errors(self):
decode = codecs.escape_decode
self.assertRaises(ValueError, decode, br"\x")
@@ -2661,24 +2677,40 @@
check(br"[\x410]", "[A0]")
check(br"\u20ac", "\u20ac")
check(br"\U0001d120", "\U0001d120")
+
+ def test_decode_warnings(self):
+ decode = codecs.unicode_escape_decode
+ check = coding_checker(self, decode)
for i in range(97, 123):
b = bytes([i])
if b not in b'abfnrtuvx':
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\%c'" % i):
check(b"\\" + b, "\\" + chr(i))
if b.upper() not in b'UN':
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\%c'" % (i-32)):
check(b"\\" + b.upper(), "\\" + chr(i-32))
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\8'"):
check(br"\8", "\\8")
with self.assertWarns(DeprecationWarning):
check(br"\9", "\\9")
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\\xfa'") as cm:
check(b"\\\xfa", "\\\xfa")
for i in range(0o400, 0o1000):
- with self.assertWarns(DeprecationWarning):
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid octal escape sequence '\\%o'" % i):
check(rb'\%o' % i, chr(i))
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid escape sequence '\\z'"):
+ self.assertEqual(decode(br'\x\z', 'ignore'), ('\\z', 4))
+ with self.assertWarnsRegex(DeprecationWarning,
+ r"invalid octal escape sequence '\\501'"):
+ self.assertEqual(decode(br'\x\501', 'ignore'), ('\u0141', 6))
+
def test_decode_errors(self):
decode = codecs.unicode_escape_decode
for c, d in (b'x', 2), (b'u', 4), (b'U', 4):
Index: Python-3.13.3/Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.13.3/Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst 2025-05-17 07:33:22.002786511 +0000
@@ -0,0 +1,2 @@
+Fix use-after-free in the "unicode-escape" decoder with a non-"strict" error
+handler.
Index: Python-3.13.3/Objects/bytesobject.c
===================================================================
--- Python-3.13.3.orig/Objects/bytesobject.c 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Objects/bytesobject.c 2025-05-17 07:33:22.003325939 +0000
@@ -1065,10 +1065,11 @@
}
/* Unescape a backslash-escaped string. */
-PyObject *_PyBytes_DecodeEscape(const char *s,
+PyObject *_PyBytes_DecodeEscape2(const char *s,
Py_ssize_t len,
const char *errors,
- const char **first_invalid_escape)
+ int *first_invalid_escape_char,
+ const char **first_invalid_escape_ptr)
{
int c;
char *p;
@@ -1082,7 +1083,8 @@
return NULL;
writer.overallocate = 1;
- *first_invalid_escape = NULL;
+ *first_invalid_escape_char = -1;
+ *first_invalid_escape_ptr = NULL;
end = s + len;
while (s < end) {
@@ -1120,9 +1122,10 @@
c = (c<<3) + *s++ - '0';
}
if (c > 0377) {
- if (*first_invalid_escape == NULL) {
- *first_invalid_escape = s-3; /* Back up 3 chars, since we've
- already incremented s. */
+ if (*first_invalid_escape_char == -1) {
+ *first_invalid_escape_char = c;
+ /* Back up 3 chars, since we've already incremented s. */
+ *first_invalid_escape_ptr = s - 3;
}
}
*p++ = c;
@@ -1163,9 +1166,10 @@
break;
default:
- if (*first_invalid_escape == NULL) {
- *first_invalid_escape = s-1; /* Back up one char, since we've
- already incremented s. */
+ if (*first_invalid_escape_char == -1) {
+ *first_invalid_escape_char = (unsigned char)s[-1];
+ /* Back up one char, since we've already incremented s. */
+ *first_invalid_escape_ptr = s - 1;
}
*p++ = '\\';
s--;
@@ -1185,17 +1189,18 @@
Py_ssize_t Py_UNUSED(unicode),
const char *Py_UNUSED(recode_encoding))
{
- const char* first_invalid_escape;
- PyObject *result = _PyBytes_DecodeEscape(s, len, errors,
- &first_invalid_escape);
+ int first_invalid_escape_char;
+ const char *first_invalid_escape_ptr;
+ PyObject *result = _PyBytes_DecodeEscape2(s, len, errors,
+ &first_invalid_escape_char,
+ &first_invalid_escape_ptr);
if (result == NULL)
return NULL;
- if (first_invalid_escape != NULL) {
- unsigned char c = *first_invalid_escape;
- if ('4' <= c && c <= '7') {
+ if (first_invalid_escape_char != -1) {
+ if (first_invalid_escape_char > 0xff) {
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "invalid octal escape sequence '\\%.3s'",
- first_invalid_escape) < 0)
+ "invalid octal escape sequence '\\%o'",
+ first_invalid_escape_char) < 0)
{
Py_DECREF(result);
return NULL;
@@ -1204,7 +1209,7 @@
else {
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
"invalid escape sequence '\\%c'",
- c) < 0)
+ first_invalid_escape_char) < 0)
{
Py_DECREF(result);
return NULL;
Index: Python-3.13.3/Objects/unicodeobject.c
===================================================================
--- Python-3.13.3.orig/Objects/unicodeobject.c 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Objects/unicodeobject.c 2025-05-17 07:33:22.004748214 +0000
@@ -6177,13 +6177,15 @@
/* --- Unicode Escape Codec ----------------------------------------------- */
PyObject *
-_PyUnicode_DecodeUnicodeEscapeInternal(const char *s,
+_PyUnicode_DecodeUnicodeEscapeInternal2(const char *s,
Py_ssize_t size,
const char *errors,
Py_ssize_t *consumed,
- const char **first_invalid_escape)
+ int *first_invalid_escape_char,
+ const char **first_invalid_escape_ptr)
{
const char *starts = s;
+ const char *initial_starts = starts;
_PyUnicodeWriter writer;
const char *end;
PyObject *errorHandler = NULL;
@@ -6191,7 +6193,8 @@
_PyUnicode_Name_CAPI *ucnhash_capi;
// so we can remember if we've seen an invalid escape char or not
- *first_invalid_escape = NULL;
+ *first_invalid_escape_char = -1;
+ *first_invalid_escape_ptr = NULL;
if (size == 0) {
if (consumed) {
@@ -6279,9 +6282,12 @@
}
}
if (ch > 0377) {
- if (*first_invalid_escape == NULL) {
- *first_invalid_escape = s-3; /* Back up 3 chars, since we've
- already incremented s. */
+ if (*first_invalid_escape_char == -1) {
+ *first_invalid_escape_char = ch;
+ if (starts == initial_starts) {
+ /* Back up 3 chars, since we've already incremented s. */
+ *first_invalid_escape_ptr = s - 3;
+ }
}
}
WRITE_CHAR(ch);
@@ -6376,9 +6382,12 @@
goto error;
default:
- if (*first_invalid_escape == NULL) {
- *first_invalid_escape = s-1; /* Back up one char, since we've
- already incremented s. */
+ if (*first_invalid_escape_char == -1) {
+ *first_invalid_escape_char = c;
+ if (starts == initial_starts) {
+ /* Back up one char, since we've already incremented s. */
+ *first_invalid_escape_ptr = s - 1;
+ }
}
WRITE_ASCII_CHAR('\\');
WRITE_CHAR(c);
@@ -6423,18 +6432,19 @@
const char *errors,
Py_ssize_t *consumed)
{
- const char *first_invalid_escape;
- PyObject *result = _PyUnicode_DecodeUnicodeEscapeInternal(s, size, errors,
+ int first_invalid_escape_char;
+ const char *first_invalid_escape_ptr;
+ PyObject *result = _PyUnicode_DecodeUnicodeEscapeInternal2(s, size, errors,
consumed,
- &first_invalid_escape);
+ &first_invalid_escape_char,
+ &first_invalid_escape_ptr);
if (result == NULL)
return NULL;
- if (first_invalid_escape != NULL) {
- unsigned char c = *first_invalid_escape;
- if ('4' <= c && c <= '7') {
+ if (first_invalid_escape_char != -1) {
+ if (first_invalid_escape_char > 0xff) {
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "invalid octal escape sequence '\\%.3s'",
- first_invalid_escape) < 0)
+ "invalid octal escape sequence '\\%o'",
+ first_invalid_escape_char) < 0)
{
Py_DECREF(result);
return NULL;
@@ -6443,7 +6453,7 @@
else {
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
"invalid escape sequence '\\%c'",
- c) < 0)
+ first_invalid_escape_char) < 0)
{
Py_DECREF(result);
return NULL;
Index: Python-3.13.3/Parser/string_parser.c
===================================================================
--- Python-3.13.3.orig/Parser/string_parser.c 2025-04-08 13:54:08.000000000 +0000
+++ Python-3.13.3/Parser/string_parser.c 2025-05-17 07:33:22.005519309 +0000
@@ -184,15 +184,18 @@
len = (size_t)(p - buf);
s = buf;
- const char *first_invalid_escape;
- v = _PyUnicode_DecodeUnicodeEscapeInternal(s, (Py_ssize_t)len, NULL, NULL, &first_invalid_escape);
+ int first_invalid_escape_char;
+ const char *first_invalid_escape_ptr;
+ v = _PyUnicode_DecodeUnicodeEscapeInternal2(s, (Py_ssize_t)len, NULL, NULL,
+ &first_invalid_escape_char,
+ &first_invalid_escape_ptr);
// HACK: later we can simply pass the line no, since we don't preserve the tokens
// when we are decoding the string but we preserve the line numbers.
- if (v != NULL && first_invalid_escape != NULL && t != NULL) {
- if (warn_invalid_escape_sequence(parser, s, first_invalid_escape, t) < 0) {
- /* We have not decref u before because first_invalid_escape points
- inside u. */
+ if (v != NULL && first_invalid_escape_ptr != NULL && t != NULL) {
+ if (warn_invalid_escape_sequence(parser, s, first_invalid_escape_ptr, t) < 0) {
+ /* We have not decref u before because first_invalid_escape_ptr
+ points inside u. */
Py_XDECREF(u);
Py_DECREF(v);
return NULL;
@@ -205,14 +208,17 @@
static PyObject *
decode_bytes_with_escapes(Parser *p, const char *s, Py_ssize_t len, Token *t)
{
- const char *first_invalid_escape;
- PyObject *result = _PyBytes_DecodeEscape(s, len, NULL, &first_invalid_escape);
+ int first_invalid_escape_char;
+ const char *first_invalid_escape_ptr;
+ PyObject *result = _PyBytes_DecodeEscape2(s, len, NULL,
+ &first_invalid_escape_char,
+ &first_invalid_escape_ptr);
if (result == NULL) {
return NULL;
}
- if (first_invalid_escape != NULL) {
- if (warn_invalid_escape_sequence(p, s, first_invalid_escape, t) < 0) {
+ if (first_invalid_escape_ptr != NULL) {
+ if (warn_invalid_escape_sequence(p, s, first_invalid_escape_ptr, t) < 0) {
Py_DECREF(result);
return NULL;
}

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`.)

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3be094ad08b11dc2a065463524239c78dc9f2b342b01dcd4e1e606dbbc5c78a5
size 20841504

View File

@@ -1,18 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmZ9d85fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
YwWXBA//TeNtOZTRpGM4pWnY9GBOvXH+WFyT5k5GQM6AE5ITYhLPkz+Refj3kwPV
uF32neYXIJIO3v+vyfFTYyj5jNS5gvGRvjPXe2K5p0K9cv5HpTncob9p8FnTJQRY
hqXpzs2q8gjU9YN54wz3SqAFE1ensB2qHlq7EJUABbB+HNWk929TXh+cQwSybRT1
XMzdKHc4IO3WCVPKIsMngqglUrj7FhlEgx/C8hmu81zpLVkCzxDXLuEDt7nnHoCG
HHcmF8B7kGK6py8KD7n/RZgriXli37tyFHJ0wwCtzwyko73khWVayYyJ53s4Pa5H
C6A9eNJMBxAQU/M2uPed+io5xZ8IvzSPs4vJCS8YL+NHTQGubexo5QIIHTP5b7ta
JW6s3TDHA8g/b3rGum76ZelJ4dsUJ8TPxNl4fORtsltVLJwol1FLGzb7vK7r/ZTM
NBnYFjNjEfe4uWHwsZoLdZzH90Z8bKsUXWz/h4EMjUL3NLgORSE8vbPhpjscmEB/
x+DM9IJHQat/s8ijtELuOx9SLpUuFBAmzVkmWVWvlPjFrQ5nw5pWLRzADpEV7/IU
XOucXhV4hrc8fJ57dGv0mtpP37DbF/cPMdOC0kA9X4icr1sLwN6MVmQJcFoBcNge
LvKvNW8lXxWbdOj0+fIymIXoH+bzJUp8g8l79Hp6QYBM5EOxfso=
=KNpM
-----END PGP SIGNATURE-----

Binary file not shown.

View File

@@ -1,18 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmaY/fpfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
YwV7ExAAkdc0QjTfb4xrTBdKdOkpPk6vsM0tDpA1XnsaCDBwHRertRXKGrHivDfK
vDxHQqnXXVa+1PiQYGqFLR4DKUCebYs2RjUlZfULiXwv7SxBWTR1AEpzNyNuzfPU
+NXz0Wrs2hlEVo6LFIjCqwN3j0e96gEoIOA3BuuCorw4SeRfzc2Fw/essHYL85MQ
kyvzhRcjoyWFGoyDv52OUuP81u8v0OaW1EImkKzG65QnXVSPmihTKWvnHxgUBI95
rTu2s5/w5gKUDDhQyBl5SLjb+bsMjgoUY8bDkvy9yTi3bWGVFOCD2VFK8cGOGUP0
lz8g3aSPBTbfieKqghoIpPjyttqOt4gJg/twXZaxpv3f5nO2ErixYR3El/RzGdGk
uui7GJbX4fKoNsmSqM8FV6QfJ+sO3CV+3XVOyfMdrq3WrEGCpR9dYJ7BwOVfcYuD
hxMGchhMBJsj3gb25QgEVmFR/DOTnXoWNowbPkmkb7vv6lEp5j5JI47xfNqdxpID
Tyn7OQYGqKu7hzhMXTQ5HkL9AvERNUujtGHrN3uND+1ypiEFSuY6ahCmVWoAeSkJ
/TMkUiBEj1wBIMi7U0zAoyHN63zshq0DHYkaGDpb24GPAww1VmMls2pBy7vLSKO1
Ggzr4WWIN/EVNB9zulhqVxX750idYWBJrP/kLNubEn0Z/iOchrg=
=knpx
-----END PGP SIGNATURE-----

Binary file not shown.

View File

@@ -1,18 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmbbgTdfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
YwUUpBAAnxUxwaFw3/XLw+5v3k2cbtzPtRmLtg81LlJ2bD5VG+RlCjbwHK03FghH
kr4YILbFXN51mT0p2XtrXnd1WRYOIWTxXQ7jji02KY6OBlIordpa0KL415R+Y0O6
fvS4sn9r5Ww8TMGHthGeN1boMjtFUHHRZKNUmIzVWihjxQX6UiPVcb9ezM2WDbhI
hmGtyEq7KLYwl9GTW/YlsAQXyVvveePgr6PrMjRRquOSVL2vD+ZA8qrQvzWYCza6
jDa2+6jrFlE6PpbCUDoRMDagjU2gEG9DllSziayh3aqMHG2fVbEqzLtBHl9EJ7IL
yOkhgVVmqus52O5P0YhDDp2fkSxs2JgrXiF2Dd2UTIKKrFQkxmknoj/ScyyeajAj
ymqf1CZf3ydhpEng+HGpnU+vWBnQA+v7BZBQXaoPGvMzTeNy1cn5JPTFFkcKXKDE
jX8AzV82+OHnZ/80tLNTNCyFQNStKF2CNrHR1gnMAcgQTaJOlp4NMD3nC88WQlpx
M4HC/yXq4556AaAzv0CctfzMLejvwmszMxbADHI4FcS7BJO85WsSXH3pnAx3Gfgg
5NSEMB1ZAsoS9WbkxTkgaJOT9fHmf86S/sdx4W1zBetmag11bTVWHJwbE9z5V0YQ
+fwQYVsi+ecgs3mL7vJzg8vEpJ33O2/y4vqySQYZRA4aIKn9Ks0=
=dHr3
-----END PGP SIGNATURE-----

Binary file not shown.

View File

@@ -1,18 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmb7fRlfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
YwUnFA/9FXmPquEtA/iRT0ODfuU8WoJhevG7qGnKMuRstNhj4xIaOu93HnjtYcAb
EUxOIZvMbIXIv364jDbxL+r/8iUlGYsEW0KbJpZ8c0pJ0Rz+ENewdSUVzcbRwtTJ
GG5OCbB8TgjhKclhOVlBhSoJCcU9ZFgco2Arylcn982OkZiDqHQAjk242kpy+E86
8tvPf51v3bXR9RZOon2R88KfuAXUESItUtQKzj0tAIEKPMT0+9VJUtZm855phxml
dv9pPq11dLshHuSMbfIEKB/3zixPxnN2v9HI7mminFjvAUlPMbCX8Pc9SgEszVzF
tEoYSmMioG+yAc4I2EW2AgIjUH+Z5a3OiMDjEFMReL5KrujvT4MpyTdf+b/Vk3Nx
2x1Vg/XIWQtaZbjiMmBtwsCfGkaDSbAmi0vU4vTY5ATr45BpRXKb/thpnluFE53T
BQza+Cr0cJvUJo+N2JSpIOhoRyjqSwKDMcVDAv7UIF97KH0UidJhuTR6MZ9Jp4SF
ko5EtIpTrKfZto+UIdt8qaTjvO5oyNt9ZydKdRgRtvyaGrpD4mzWKUhqJlbwX8pW
m+4fbOK/kTFQEHS5J0h36oayiXmEzZ5TU4e9e1eT91Vi96vPVQL9oM374MEeDSEM
zpVdIHo6BbVbh1gzaAhG+bGU+BaUSRjn6rhYfPu6FItRB63P3K4=
=bHdr
-----END PGP SIGNATURE-----

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,45 +0,0 @@
From a4b73ddc0d395ec2e4d2e15637be8e1b51f35f22 Mon Sep 17 00:00:00 2001
From: Sergey B Kirpichev <skirpichev@gmail.com>
Date: Fri, 13 Sep 2024 13:10:39 +0300
Subject: [PATCH 1/4] gh-124040: simplify two hypot tests
One-argument form is enough to test L2636 and compare computed
values exactly.
---
Lib/test/test_math.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: Python-3.13.0rc2/Lib/test/test_math.py
===================================================================
--- Python-3.13.0rc2.orig/Lib/test/test_math.py
+++ Python-3.13.0rc2/Lib/test/test_math.py
@@ -809,11 +809,13 @@ class MathTests(unittest.TestCase):
# Test allowable types (those with __float__)
self.assertEqual(hypot(12.0, 5.0), 13.0)
self.assertEqual(hypot(12, 5), 13)
- self.assertEqual(hypot(1, -1), math.sqrt(2))
- self.assertEqual(hypot(1, FloatLike(-1.)), math.sqrt(2))
+ self.assertEqual(hypot(0.75, -1), 1.25)
+ self.assertEqual(hypot(-1, 0.75), 1.25)
+ self.assertEqual(hypot(0.75, FloatLike(-1.)), 1.25)
+ self.assertEqual(hypot(FloatLike(-1.), 0.75), 1.25)
self.assertEqual(hypot(Decimal(12), Decimal(5)), 13)
self.assertEqual(hypot(Fraction(12, 32), Fraction(5, 32)), Fraction(13, 32))
- self.assertEqual(hypot(bool(1), bool(0), bool(1), bool(1)), math.sqrt(3))
+ self.assertEqual(hypot(True, False, True, True, True), 2.0)
# Test corner cases
self.assertEqual(hypot(0.0, 0.0), 0.0) # Max input is zero
@@ -969,9 +971,9 @@ class MathTests(unittest.TestCase):
self.assertEqual(dist((D(14), D(1)), (D(2), D(-4))), D(13))
self.assertEqual(dist((F(14, 32), F(1, 32)), (F(2, 32), F(-4, 32))),
F(13, 32))
- self.assertEqual(dist((True, True, False, True, False),
- (True, False, True, True, False)),
- sqrt(2.0))
+ self.assertEqual(dist((True, True, False, False, True, True),
+ (True, False, True, False, False, False)),
+ 2.0)
# Test corner cases
self.assertEqual(dist((13.25, 12.5, -3.25),

View File

@@ -1,94 +0,0 @@
From 0e461dd411e9ec3dbdf376435154ca2834bcab51 Mon Sep 17 00:00:00 2001
From: Serhiy Storchaka <storchaka@gmail.com>
Date: Wed, 16 Apr 2025 00:24:56 +0300
Subject: [PATCH] gh-132535: Fix resource warnings in test_timeout
They were emitted if internet connection was not available.
---
Lib/test/test_timeout.py | 43 ++++++++++++++++---------------------------
1 file changed, 16 insertions(+), 27 deletions(-)
Index: Python-3.13.3/Lib/test/test_timeout.py
===================================================================
--- Python-3.13.3.orig/Lib/test/test_timeout.py 2025-04-08 15:54:08.000000000 +0200
+++ Python-3.13.3/Lib/test/test_timeout.py 2025-04-15 23:45:55.028517897 +0200
@@ -26,10 +26,8 @@
"""Test case for socket.gettimeout() and socket.settimeout()"""
def setUp(self):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- def tearDown(self):
- self.sock.close()
+ self.sock = self.enterContext(
+ socket.socket(socket.AF_INET, socket.SOCK_STREAM))
def testObjectCreation(self):
# Test Socket creation
@@ -113,8 +111,6 @@
def setUp(self):
raise NotImplementedError()
- tearDown = setUp
-
def _sock_operation(self, count, timeout, method, *args):
"""
Test the specified socket method.
@@ -142,12 +138,10 @@
"""TCP test case for socket.socket() timeout functions"""
def setUp(self):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.sock = self.enterContext(
+ socket.socket(socket.AF_INET, socket.SOCK_STREAM))
self.addr_remote = resolve_address('www.python.org.', 80)
- def tearDown(self):
- self.sock.close()
-
def testConnectTimeout(self):
# Testing connect timeout is tricky: we need to have IP connectivity
# to a host that silently drops our packets. We can't simulate this
@@ -190,19 +184,16 @@
# for the current configuration.
skip = True
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- timeout = support.LOOPBACK_TIMEOUT
- sock.settimeout(timeout)
- try:
- sock.connect((whitehole))
- except TimeoutError:
- pass
- except OSError as err:
- if err.errno == errno.ECONNREFUSED:
- skip = False
- finally:
- sock.close()
- del sock
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
+ try:
+ timeout = support.LOOPBACK_TIMEOUT
+ sock.settimeout(timeout)
+ sock.connect((whitehole))
+ except TimeoutError:
+ pass
+ except OSError as err:
+ if err.errno == errno.ECONNREFUSED:
+ skip = False
if skip:
self.skipTest(
@@ -269,10 +260,8 @@
"""UDP test case for socket.socket() timeout functions"""
def setUp(self):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-
- def tearDown(self):
- self.sock.close()
+ self.sock = self.enterContext(
+ socket.socket(socket.AF_INET, socket.SOCK_DGRAM))
def testRecvfromTimeout(self):
# Test recvfrom() timeout

View File

@@ -1,15 +0,0 @@
---
Lib/test/test_posix.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -437,7 +437,7 @@ class PosixTester(unittest.TestCase):
def test_posix_fadvise(self):
fd = os.open(os_helper.TESTFN, os.O_RDONLY)
try:
- posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_WILLNEED)
+ posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_RANDOM)
finally:
os.close(fd)