From: Thomas Wouters Date: Tue, 3 Jun 2025 15:34:08 +0000 (+0200) Subject: Python 3.13.4 X-Git-Tag: v3.13.4^0 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8a526ec7cbea8fafc9dae4b3dd6371906b9be342;p=thirdparty%2FPython%2Fcpython.git Python 3.13.4 --- diff --git a/Doc/library/hashlib.rst b/Doc/library/hashlib.rst index 1c5d951560e2..e8298d12972d 100644 --- a/Doc/library/hashlib.rst +++ b/Doc/library/hashlib.rst @@ -302,7 +302,7 @@ a file or file-like object. .. versionadded:: 3.11 - .. versionchanged:: next + .. versionchanged:: 3.13.4 Now raises a :exc:`BlockingIOError` if the file is opened in blocking mode. Previously, spurious null bytes were added to the digest. diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst index 1c4085efa867..b48c5cb483dc 100644 --- a/Doc/library/logging.handlers.rst +++ b/Doc/library/logging.handlers.rst @@ -1180,7 +1180,7 @@ possible, while any potentially slow operations (such as sending an email via This starts up a background thread to monitor the queue for LogRecords to process. - .. versionchanged:: next + .. versionchanged:: 3.13.4 Raises :exc:`RuntimeError` if called and the listener is already running. diff --git a/Doc/library/os.path.rst b/Doc/library/os.path.rst index f72aee19d8f3..8713581d1c05 100644 --- a/Doc/library/os.path.rst +++ b/Doc/library/os.path.rst @@ -446,7 +446,7 @@ the :mod:`glob` module.) .. versionchanged:: 3.10 The *strict* parameter was added. - .. versionchanged:: next + .. versionchanged:: 3.13.4 The :py:data:`~os.path.ALLOW_MISSING` value for the *strict* parameter was added. @@ -454,7 +454,7 @@ the :mod:`glob` module.) Special value used for the *strict* argument in :func:`realpath`. - .. versionadded:: next + .. versionadded:: 3.13.4 .. function:: relpath(path, start=os.curdir) diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index e5a2815d12f5..1a24f0d8babe 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -470,7 +470,7 @@ The AF_* and SOCK_* constants are now :class:`AddressFamily` and .. versionchanged:: 3.11 NetBSD support was added. - .. versionchanged:: next + .. versionchanged:: 3.13.4 Restored missing ``CAN_RAW_ERR_FILTER`` on Linux. .. data:: CAN_BCM diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index f48ab6154839..1c2f3b13b54a 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -256,7 +256,7 @@ The :mod:`tarfile` module defines the following exceptions: The exception that was raised to reject the replacement member is available as :attr:`!BaseException.__context__`. - .. versionadded:: next + .. versionadded:: 3.13.4 The following constants are available at the module level: @@ -1095,7 +1095,7 @@ reused in custom filters: Return the modified ``TarInfo`` member. - .. versionchanged:: next + .. versionchanged:: 3.13.4 Link targets are now normalized. diff --git a/Include/patchlevel.h b/Include/patchlevel.h index e0d5fc1c02c1..18d66d3863e6 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 13 -#define PY_MICRO_VERSION 3 +#define PY_MICRO_VERSION 4 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.13.3+" +#define PY_VERSION "3.13.4" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index b7257923e9ce..063c49958421 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,4 +1,4 @@ -# Autogenerated by Sphinx on Tue Apr 8 15:54:03 2025 +# Autogenerated by Sphinx on Tue Jun 3 17:34:20 2025 # as part of the release process. topics = { @@ -4385,7 +4385,7 @@ exceptions [excnumber] When using "pdb.pm()" or "Pdb.post_mortem(...)" with a chained exception instead of a traceback, it allows the user to move between the chained exceptions using "exceptions" command to list - exceptions, and "exception " to switch to that exception. + exceptions, and "exceptions " to switch to that exception. Example: @@ -9011,7 +9011,14 @@ str.center(width[, fillchar]) Return centered in a string of length *width*. Padding is done using the specified *fillchar* (default is an ASCII space). The original string is returned if *width* is less than or equal to - "len(s)". + "len(s)". For example: + + >>> 'Python'.center(10) + ' Python ' + >>> 'Python'.center(10, '-') + '--Python--' + >>> 'Python'.center(4) + 'Python' str.count(sub[, start[, end]]) @@ -9020,7 +9027,18 @@ str.count(sub[, start[, end]]) *end* are interpreted as in slice notation. If *sub* is empty, returns the number of empty strings between - characters which is the length of the string plus one. + characters which is the length of the string plus one. For example: + + >>> 'spam, spam, spam'.count('spam') + 3 + >>> 'spam, spam, spam'.count('spam', 5) + 2 + >>> 'spam, spam, spam'.count('spam', 5, 10) + 1 + >>> 'spam, spam, spam'.count('eggs') + 0 + >>> 'spam, spam, spam'.count('') + 17 str.encode(encoding='utf-8', errors='strict') @@ -9217,8 +9235,8 @@ str.isnumeric() str.isprintable() - Return true if all characters in the string are printable, false if - it contains at least one non-printable character. + Return "True" if all characters in the string are printable, + "False" if it contains at least one non-printable character. Here “printable” means the character is suitable for "repr()" to use in its output; “non-printable” means that "repr()" on built-in @@ -9465,6 +9483,18 @@ str.split(sep=None, maxsplit=-1) >>> ' 1 2 3 '.split() ['1', '2', '3'] + If *sep* is not specified or is "None" and *maxsplit* is "0", only + leading runs of consecutive whitespace are considered. + + For example: + + >>> "".split(None, 0) + [] + >>> " ".split(None, 0) + [] + >>> " foo ".split(maxsplit=0) + ['foo '] + str.splitlines(keepends=False) Return a list of the lines in the string, breaking at line @@ -11144,11 +11174,10 @@ the "**keywords" syntax to accept arbitrary keyword arguments; bit Flags for details on the semantics of each flags that might be present. -Future feature declarations ("from __future__ import division") also -use bits in "co_flags" to indicate whether a code object was compiled -with a particular feature enabled: bit "0x2000" is set if the function -was compiled with future division enabled; bits "0x10" and "0x1000" -were used in earlier versions of Python. +Future feature declarations (for example, "from __future__ import +division") also use bits in "co_flags" to indicate whether a code +object was compiled with a particular feature enabled. See +"compiler_flag". Other bits in "co_flags" are reserved for internal use. @@ -11496,8 +11525,15 @@ class dict(iterable, **kwargs) the keyword argument replaces the value from the positional argument. - To illustrate, the following examples all return a dictionary equal - to "{"one": 1, "two": 2, "three": 3}": + Providing keyword arguments as in the first example only works for + keys that are valid Python identifiers. Otherwise, any valid keys + can be used. + + Dictionaries compare equal if and only if they have the same "(key, + value)" pairs (regardless of ordering). Order comparisons (‘<’, + ‘<=’, ‘>=’, ‘>’) raise "TypeError". To illustrate dictionary + creation and equality, the following examples all return a + dictionary equal to "{"one": 1, "two": 2, "three": 3}": >>> a = dict(one=1, two=2, three=3) >>> b = {'one': 1, 'two': 2, 'three': 3} @@ -11512,6 +11548,29 @@ class dict(iterable, **kwargs) keys that are valid Python identifiers. Otherwise, any valid keys can be used. + Dictionaries preserve insertion order. Note that updating a key + does not affect the order. Keys added after deletion are inserted + at the end. + + >>> d = {"one": 1, "two": 2, "three": 3, "four": 4} + >>> d + {'one': 1, 'two': 2, 'three': 3, 'four': 4} + >>> list(d) + ['one', 'two', 'three', 'four'] + >>> list(d.values()) + [1, 2, 3, 4] + >>> d["one"] = 42 + >>> d + {'one': 42, 'two': 2, 'three': 3, 'four': 4} + >>> del d["two"] + >>> d["two"] = None + >>> d + {'one': 42, 'three': 3, 'four': 4, 'two': None} + + Changed in version 3.7: Dictionary order is guaranteed to be + insertion order. This behavior was an implementation detail of + CPython from 3.6. + These are the operations that dictionaries support (and therefore, custom mapping types should support too): @@ -11682,33 +11741,6 @@ class dict(iterable, **kwargs) Added in version 3.9. - Dictionaries compare equal if and only if they have the same "(key, - value)" pairs (regardless of ordering). Order comparisons (‘<’, - ‘<=’, ‘>=’, ‘>’) raise "TypeError". - - Dictionaries preserve insertion order. Note that updating a key - does not affect the order. Keys added after deletion are inserted - at the end. - - >>> d = {"one": 1, "two": 2, "three": 3, "four": 4} - >>> d - {'one': 1, 'two': 2, 'three': 3, 'four': 4} - >>> list(d) - ['one', 'two', 'three', 'four'] - >>> list(d.values()) - [1, 2, 3, 4] - >>> d["one"] = 42 - >>> d - {'one': 42, 'two': 2, 'three': 3, 'four': 4} - >>> del d["two"] - >>> d["two"] = None - >>> d - {'one': 42, 'three': 3, 'four': 4, 'two': None} - - Changed in version 3.7: Dictionary order is guaranteed to be - insertion order. This behavior was an implementation detail of - CPython from 3.6. - Dictionaries and dictionary views are reversible. >>> d = {"one": 1, "two": 2, "three": 3, "four": 4} @@ -12093,6 +12125,8 @@ accepts integers that meet the value restriction "0 <= x <= 255"). | "s[i] = x" | item *i* of *s* is replaced by | | | | *x* | | +--------------------------------+----------------------------------+-----------------------+ +| "del s[i]" | removes item *i* of *s* | | ++--------------------------------+----------------------------------+-----------------------+ | "s[i:j] = t" | slice of *s* from *i* to *j* is | | | | replaced by the contents of the | | | | iterable *t* | | @@ -12421,6 +12455,8 @@ accepts integers that meet the value restriction "0 <= x <= 255"). | "s[i] = x" | item *i* of *s* is replaced by | | | | *x* | | +--------------------------------+----------------------------------+-----------------------+ +| "del s[i]" | removes item *i* of *s* | | ++--------------------------------+----------------------------------+-----------------------+ | "s[i:j] = t" | slice of *s* from *i* to *j* is | | | | replaced by the contents of the | | | | iterable *t* | | diff --git a/Misc/NEWS.d/3.13.4.rst b/Misc/NEWS.d/3.13.4.rst new file mode 100644 index 000000000000..b947ad677568 --- /dev/null +++ b/Misc/NEWS.d/3.13.4.rst @@ -0,0 +1,951 @@ +.. date: 2025-05-20-21-43-20 +.. gh-issue: 130727 +.. nonce: -69t4D +.. release date: 2025-06-03 +.. section: Windows + +Fix a race in internal calls into WMI that can result in an "invalid handle" +exception under high load. Patch by Chris Eibl. + +.. + +.. date: 2025-05-19-03-02-04 +.. gh-issue: 76023 +.. nonce: vHOf6M +.. section: Windows + +Make :func:`os.path.realpath` ignore Windows error 1005 when in non-strict +mode. + +.. + +.. date: 2025-05-08-19-07-26 +.. gh-issue: 133626 +.. nonce: yFTKYK +.. section: Windows + +Ensures packages are not accidentally bundled into the traditional +installer. + +.. + +.. date: 2025-05-06-14-09-19 +.. gh-issue: 133512 +.. nonce: bh-D-g +.. section: Windows + +Add warnings to :ref:`launcher` about use of subcommands belonging to the +Python install manager. + +.. + +.. date: 2025-05-09-14-54-48 +.. gh-issue: 133744 +.. nonce: LCquu0 +.. section: Tests + +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. + +.. + +.. date: 2025-05-08-15-06-01 +.. gh-issue: 133639 +.. nonce: 50-kbV +.. section: Tests + +Fix ``TestPyReplAutoindent.test_auto_indent_default()`` doesn't run +``input_code``. + +.. + +.. date: 2025-04-29-14-56-37 +.. gh-issue: 133131 +.. nonce: 1pchjl +.. section: Tests + +The iOS testbed will now select the most recently released "SE-class" device +for testing if a device isn't explicitly specified. + +.. + +.. date: 2025-04-23-02-23-37 +.. gh-issue: 109981 +.. nonce: IX3k8p +.. section: Tests + +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. + +.. + +.. date: 2025-06-02-11-32-23 +.. gh-issue: 135034 +.. nonce: RLGjbp +.. section: Security + +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`, :cve:`2025-4138`, :cve:`2025-4330`, and +:cve:`2025-4517`. + +.. + +.. date: 2025-05-09-20-22-54 +.. gh-issue: 133767 +.. nonce: kN2i3Q +.. section: Security + +Fix use-after-free in the "unicode-escape" decoder with a non-"strict" error +handler. + +.. + +.. date: 2025-01-14-11-19-07 +.. gh-issue: 128840 +.. nonce: M1doZW +.. section: Security + +Short-circuit the processing of long IPv6 addresses early in +:mod:`ipaddress` to prevent excessive memory consumption and a minor +denial-of-service. + +.. + +.. date: 2025-05-30-13-07-29 +.. gh-issue: 134718 +.. nonce: 9Qvhxn +.. section: Library + +:func:`ast.dump` now only omits ``None`` and ``[]`` values if they are +default values. + +.. + +.. date: 2025-05-28-15-53-27 +.. gh-issue: 128840 +.. nonce: Nur2pB +.. section: Library + +Fix parsing long IPv6 addresses with embedded IPv4 address. + +.. + +.. date: 2025-05-26-14-04-39 +.. gh-issue: 134696 +.. nonce: P04xUa +.. section: Library + +Built-in HACL* and OpenSSL implementations of hash function constructors now +correctly accept the same *documented* named arguments. For instance, +:func:`~hashlib.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. + +.. + +.. date: 2025-05-24-13-10-35 +.. gh-issue: 134210 +.. nonce: 0IuMY2 +.. section: Library + +:func:`curses.window.getch` now correctly handles signals. Patch by Bénédikt +Tran. + +.. + +.. date: 2025-05-24-03-10-36 +.. gh-issue: 80334 +.. nonce: z21cMa +.. section: Library + +:func:`multiprocessing.freeze_support` now checks for work on any "spawn" +start method platform rather than only on Windows. + +.. + +.. date: 2025-05-22-13-10-32 +.. gh-issue: 114177 +.. nonce: 3TYUJ3 +.. section: Library + +Fix :mod:`asyncio` to not close subprocess pipes which would otherwise error +out when the event loop is already closed. + +.. + +.. date: 2025-05-19-10-32-11 +.. gh-issue: 134152 +.. nonce: INJC2j +.. section: Library + +Fixed :exc:`UnboundLocalError` that could occur during :mod:`email` header +parsing if an expected trailing delimiter is missing in some contexts. + +.. + +.. date: 2025-05-18-12-48-39 +.. gh-issue: 62184 +.. nonce: y11l10 +.. section: Library + +Remove import of C implementation of :class:`io.FileIO` from Python +implementation which has its own implementation + +.. + +.. date: 2025-05-17-20-23-57 +.. gh-issue: 133982 +.. nonce: smS7au +.. section: Library + +Emit :exc:`RuntimeWarning` in the Python implementation of :mod:`io` when +the :term:`file-like object ` is not closed explicitly in the +presence of multiple I/O layers. + +.. + +.. date: 2025-05-17-18-08-35 +.. gh-issue: 133890 +.. nonce: onn9_X +.. section: Library + +The :mod:`tarfile` module now handles :exc:`UnicodeEncodeError` in the same +way as :exc:`OSError` when cannot extract a member. + +.. + +.. date: 2025-05-17-13-46-20 +.. gh-issue: 134097 +.. nonce: fgkjE1 +.. section: Library + +Fix interaction of the new :term:`REPL` and :option:`-X showrefcount <-X>` +command line option. + +.. + +.. date: 2025-05-17-12-40-12 +.. gh-issue: 133889 +.. nonce: Eh-zO4 +.. section: Library + +The generated directory listing page in +:class:`http.server.SimpleHTTPRequestHandler` now only shows the decoded +path component of the requested URL, and not the query and fragment. + +.. + +.. date: 2025-05-16-20-10-25 +.. gh-issue: 134098 +.. nonce: YyTkKr +.. section: Library + +Fix handling paths that end with a percent-encoded slash (``%2f`` or +``%2F``) in :class:`http.server.SimpleHTTPRequestHandler`. + +.. + +.. date: 2025-05-15-14-27-01 +.. gh-issue: 134062 +.. nonce: fRbJet +.. section: Library + +:mod:`ipaddress`: fix collisions in :meth:`~object.__hash__` for +:class:`~ipaddress.IPv4Network` and :class:`~ipaddress.IPv6Network` objects. + +.. + +.. date: 2025-05-14-08-13-08 +.. gh-issue: 133745 +.. nonce: rjgJkH +.. section: Library + +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. + +.. + +.. date: 2025-05-13-18-21-59 +.. gh-issue: 71253 +.. nonce: -3Sf_K +.. section: Library + +Raise :exc:`ValueError` in :func:`open` if *opener* returns a negative +file-descriptor in the Python implementation of :mod:`io` to match the C +implementation. + +.. + +.. date: 2025-05-09-15-50-00 +.. gh-issue: 77057 +.. nonce: fV8SU- +.. section: Library + +Fix handling of invalid markup declarations in +:class:`html.parser.HTMLParser`. + +.. + +.. date: 2025-05-08-13-43-19 +.. gh-issue: 133489 +.. nonce: 9eGS1Z +.. section: Library + +:func:`random.getrandbits` can now generate more that 2\ :sup:`31` bits. +:func:`random.randbytes` can now generate more that 256 MiB. + +.. + +.. date: 2025-05-02-13-16-44 +.. gh-issue: 133290 +.. nonce: R5WrLM +.. section: Library + +Fix attribute caching issue when setting :attr:`ctypes._Pointer._type_` in +the undocumented and deprecated :func:`!ctypes.SetPointerType` function and +the undocumented :meth:`!set_type` method. + +.. + +.. date: 2025-04-29-11-48-46 +.. gh-issue: 132876 +.. nonce: lyTQGZ +.. section: Library + +``ldexp()`` on Windows doesn't round subnormal results before Windows 11, +but should. Python's :func:`math.ldexp` wrapper now does round them, so +results may change slightly, in rare cases of very small results, on Windows +versions before 11. + +.. + +.. date: 2025-04-29-02-23-04 +.. gh-issue: 133089 +.. nonce: 8Jy1ZS +.. section: Library + +Use original timeout value for :exc:`subprocess.TimeoutExpired` when the +func :meth:`subprocess.run` is called with a timeout instead of sometimes a +confusing partial remaining time out value used internally on the final +``wait()``. + +.. + +.. date: 2025-04-26-15-50-12 +.. gh-issue: 133009 +.. nonce: etBuz5 +.. section: Library + +:mod:`xml.etree.ElementTree`: Fix a crash in :meth:`Element.__deepcopy__ +` when the element is concurrently mutated. Patch by +Bénédikt Tran. + +.. + +.. date: 2025-04-26-10-54-38 +.. gh-issue: 132995 +.. nonce: JuDF9p +.. section: Library + +Bump the version of pip bundled in ensurepip to version 25.1.1 + +.. + +.. date: 2025-04-25-10-51-00 +.. gh-issue: 132017 +.. nonce: SIGCONT1 +.. section: Library + +Fix error when ``pyrepl`` is suspended, then resumed and terminated. + +.. + +.. date: 2025-04-18-12-45-18 +.. gh-issue: 132673 +.. nonce: P7Z3F1 +.. section: Library + +Fix a crash when using ``_align_ = 0`` and ``_fields_ = []`` in a +:class:`ctypes.Structure`. + +.. + +.. date: 2025-04-14-23-00-00 +.. gh-issue: 132527 +.. nonce: kTi8T7 +.. section: Library + +Include the valid typecode 'w' in the error message when an invalid typecode +is passed to :class:`array.array`. + +.. + +.. date: 2025-04-12-16-29-42 +.. gh-issue: 132439 +.. nonce: 3twrU6 +.. section: Library + +Fix ``PyREPL`` on Windows: characters entered via AltGr are swallowed. Patch +by Chris Eibl. + +.. + +.. date: 2025-04-12-12-59-51 +.. gh-issue: 132429 +.. nonce: OEIdlW +.. section: Library + +Fix support of Bluetooth sockets on NetBSD and DragonFly BSD. + +.. + +.. date: 2025-04-12-09-30-24 +.. gh-issue: 132106 +.. nonce: OxUds3 +.. section: Library + +:meth:`QueueListener.start ` now +raises a :exc:`RuntimeError` if the listener is already started. + +.. + +.. date: 2025-04-11-21-48-49 +.. gh-issue: 132417 +.. nonce: uILGdS +.. section: Library + +Fix a ``NULL`` pointer dereference when a C function called using +:mod:`ctypes` with ``restype`` :class:`~ctypes.py_object` returns ``NULL``. + +.. + +.. date: 2025-04-11-12-41-47 +.. gh-issue: 132385 +.. nonce: 86HoA7 +.. section: Library + +Fix instance error suggestions trigger potential exceptions in +:meth:`object.__getattr__` in :mod:`traceback`. + +.. + +.. date: 2025-04-10-13-06-42 +.. gh-issue: 132308 +.. nonce: 1js5SI +.. section: Library + +A :class:`traceback.TracebackException` now correctly renders the +``__context__`` and ``__cause__`` attributes from :ref:`falsey ` +:class:`Exception`, and the ``exceptions`` attribute from falsey +:class:`ExceptionGroup`. + +.. + +.. date: 2025-04-08-01-55-11 +.. gh-issue: 132250 +.. nonce: APBFCw +.. section: Library + +Fixed the :exc:`SystemError` in :mod:`cProfile` when locating the actual C +function of a method raises an exception. + +.. + +.. date: 2025-04-05-15-05-09 +.. gh-issue: 132063 +.. nonce: KHnslU +.. section: Library + +Prevent exceptions that evaluate as falsey (namely, when their ``__bool__`` +method returns ``False`` or their ``__len__`` method returns 0) from being +ignored by :class:`concurrent.futures.ProcessPoolExecutor` and +:class:`concurrent.futures.ThreadPoolExecutor`. + +.. + +.. date: 2025-04-03-17-19-42 +.. gh-issue: 119605 +.. nonce: c7QXAA +.. section: Library + +Respect ``follow_wrapped`` for :meth:`!__init__` and :meth:`!__new__` +methods when getting the class signature for a class with +:func:`inspect.signature`. Preserve class signature after wrapping with +:func:`warnings.deprecated`. Patch by Xuehai Pan. + +.. + +.. date: 2025-03-30-16-42-38 +.. gh-issue: 91555 +.. nonce: ShVtwW +.. section: Library + +Ignore log messages generated during handling of log messages, to avoid +deadlock or infinite recursion. + +.. + +.. date: 2025-03-21-21-24-36 +.. gh-issue: 131434 +.. nonce: BPkyyh +.. section: Library + +Improve error reporting for incorrect format in :func:`time.strptime`. + +.. + +.. date: 2025-03-11-21-08-46 +.. gh-issue: 131127 +.. nonce: whcVdY +.. section: Library + +Systems using LibreSSL now successfully build. + +.. + +.. date: 2025-03-09-03-13-41 +.. gh-issue: 130999 +.. nonce: tBRBVB +.. section: Library + +Avoid exiting the new REPL and offer suggestions even if there are +non-string candidates when errors occur. + +.. + +.. date: 2025-03-07-17-47-32 +.. gh-issue: 130941 +.. nonce: 7_GvhW +.. section: Library + +Fix :class:`configparser.ConfigParser` parsing empty interpolation with +``allow_no_value`` set to ``True``. + +.. + +.. date: 2025-03-01-12-37-08 +.. gh-issue: 129098 +.. nonce: eJ2-6L +.. section: Library + +Fix REPL traceback reporting when using :func:`compile` with an inexisting +file. Patch by Bénédikt Tran. + +.. + +.. date: 2025-02-27-14-25-01 +.. gh-issue: 130631 +.. nonce: dmZcZM +.. section: Library + +:func:`!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"``. + +.. + +.. date: 2025-02-06-11-23-51 +.. gh-issue: 129719 +.. nonce: Of6rvb +.. section: Library + +Fix missing :data:`!socket.CAN_RAW_ERR_FILTER` constant in the socket module +on Linux systems. It was missing since Python 3.11. + +.. + +.. date: 2024-09-16-17-03-52 +.. gh-issue: 124096 +.. nonce: znin0O +.. section: Library + +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.) + +.. + +.. date: 2024-08-02-20-01-36 +.. gh-issue: 122559 +.. nonce: 2JlJr3 +.. section: Library + +Remove :meth:`!__reduce__` and :meth:`!__reduce_ex__` methods that always +raise :exc:`TypeError` in the C implementation of :class:`io.FileIO`, +:class:`io.BufferedReader`, :class:`io.BufferedWriter` and +:class:`io.BufferedRandom` and replace them with default +:meth:`!__getstate__` methods that raise :exc:`!TypeError`. This restores +fine details of behavior of Python 3.11 and older versions. + +.. + +.. date: 2024-07-23-17-08-41 +.. gh-issue: 122179 +.. nonce: 0jZm9h +.. section: Library + +:func:`hashlib.file_digest` now raises :exc:`BlockingIOError` when no data +is available during non-blocking I/O. Before, it added spurious null bytes +to the digest. + +.. + +.. date: 2023-02-13-21-41-34 +.. gh-issue: 86155 +.. nonce: ppIGSC +.. section: Library + +:meth:`html.parser.HTMLParser.close` no longer loses data when the +``