Python 3.13.12

This commit is contained in:
Thomas Wouters
2026-02-03 18:53:04 +01:00
parent ad5bd4ad47
commit 1cbe481834
106 changed files with 1173 additions and 244 deletions
+2 -2
View File
@@ -18,12 +18,12 @@
/*--start constants--*/
#define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 13
#define PY_MICRO_VERSION 11
#define PY_MICRO_VERSION 12
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
#define PY_RELEASE_SERIAL 0
/* Version as a string */
#define PY_VERSION "3.13.11+"
#define PY_VERSION "3.13.12"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
+1 -8
View File
@@ -1,4 +1,4 @@
# Autogenerated by Sphinx on Sun Oct 12 12:02:22 2025
# Autogenerated by Sphinx on Tue Feb 3 18:53:22 2026
# as part of the release process.
module_docs = {
@@ -8,7 +8,6 @@ module_docs = {
'_tkinter': 'tkinter#module-_tkinter',
'abc': 'abc#module-abc',
'aifc': 'aifc#module-aifc',
'annotationlib': 'annotationlib#module-annotationlib',
'argparse': 'argparse#module-argparse',
'array': 'array#module-array',
'ast': 'ast#module-ast',
@@ -37,10 +36,7 @@ module_docs = {
'collections.abc': 'collections.abc#module-collections.abc',
'colorsys': 'colorsys#module-colorsys',
'compileall': 'compileall#module-compileall',
'compression': 'compression#module-compression',
'compression.zstd': 'compression.zstd#module-compression.zstd',
'concurrent.futures': 'concurrent.futures#module-concurrent.futures',
'concurrent.interpreters': 'concurrent.interpreters#module-concurrent.interpreters',
'configparser': 'configparser#module-configparser',
'contextlib': 'contextlib#module-contextlib',
'contextvars': 'contextvars#module-contextvars',
@@ -171,7 +167,6 @@ module_docs = {
'os.path': 'os.path#module-os.path',
'ossaudiodev': 'ossaudiodev#module-ossaudiodev',
'pathlib': 'pathlib#module-pathlib',
'pathlib.types': 'pathlib#module-pathlib.types',
'pdb': 'pdb#module-pdb',
'pickle': 'pickle#module-pickle',
'pickletools': 'pickletools#module-pickletools',
@@ -183,7 +178,6 @@ module_docs = {
'posix': 'posix#module-posix',
'pprint': 'pprint#module-pprint',
'profile': 'profile#module-profile',
'profiling.sampling': 'profile#module-profiling.sampling',
'pstats': 'profile#module-pstats',
'pty': 'pty#module-pty',
'pwd': 'pwd#module-pwd',
@@ -220,7 +214,6 @@ module_docs = {
'stat': 'stat#module-stat',
'statistics': 'statistics#module-statistics',
'string': 'string#module-string',
'string.templatelib': 'string.templatelib#module-string.templatelib',
'stringprep': 'stringprep#module-stringprep',
'struct': 'struct#module-struct',
'subprocess': 'subprocess#module-subprocess',
+115 -19
View File
@@ -1,4 +1,4 @@
# Autogenerated by Sphinx on Fri Dec 5 17:06:29 2025
# Autogenerated by Sphinx on Tue Feb 3 18:53:22 2026
# as part of the release process.
topics = {
@@ -1939,7 +1939,7 @@ ensures that the type of the target "e" is consistently
... except* BlockingIOError as e:
... print(repr(e))
...
ExceptionGroup('', (BlockingIOError()))
ExceptionGroup('', (BlockingIOError(),))
"break", "continue" and "return" cannot appear in an "except*" clause.
@@ -5386,7 +5386,9 @@ The available presentation types for "float" and "Decimal" values are:
| | With no precision given, uses a precision of "6" digits |
| | after the decimal point for "float", and shows all |
| | coefficient digits for "Decimal". If "p=0", the decimal |
| | point is omitted unless the "#" option is used. |
| | point is omitted unless the "#" option is used. For |
| | "float", the exponent always contains at least two digits, |
| | and is zero if the value is zero. |
+-----------+------------------------------------------------------------+
| "'E'" | Scientific notation. Same as "'e'" except it uses an upper |
| | case E as the separator character. |
@@ -9053,7 +9055,12 @@ str.casefold()
it is intended to remove all case distinctions in a string. For
example, the German lowercase letter "'ß'" is equivalent to ""ss"".
Since it is already lowercase, "lower()" would do nothing to "'ß'";
"casefold()" converts it to ""ss"".
"casefold()" converts it to ""ss"". For example:
>>> 'straße'.lower()
'straße'
>>> 'straße'.casefold()
'strasse'
The casefolding algorithm is described in section 3.13 Default
Case Folding of the Unicode Standard.
@@ -9242,7 +9249,18 @@ str.format_map(mapping, /)
str.index(sub[, start[, end]])
Like "find()", but raise "ValueError" when the substring is not
found.
found. For example:
>>> 'spam, spam, spam'.index('spam')
0
>>> 'spam, spam, spam'.index('eggs')
Traceback (most recent call last):
File "<python-input-0>", line 1, in <module>
'spam, spam, spam'.index('eggs')
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
ValueError: substring not found
See also "rindex()".
str.isalnum()
@@ -9341,7 +9359,19 @@ str.isnumeric()
that have the Unicode numeric value property, e.g. U+2155, VULGAR
FRACTION ONE FIFTH. Formally, numeric characters are those with
the property value Numeric_Type=Digit, Numeric_Type=Decimal or
Numeric_Type=Numeric.
Numeric_Type=Numeric. For example:
>>> '0123456789'.isnumeric()
True
>>> '٠١٢٣٤٥٦٧٨٩'.isnumeric() # Arabic-indic digit zero to nine
True
>>> ''.isnumeric() # Vulgar fraction one fifth
True
>>> '²'.isdecimal(), '²'.isdigit(), '²'.isnumeric()
(False, True, True)
See also "isdecimal()" and "isdigit()". Numeric characters are a
superset of decimal numbers.
str.isprintable()
@@ -9359,6 +9389,13 @@ str.isprintable()
plus the ASCII space 0x20. Nonprintable characters are those in
group Separator or Other (Z or C), except the ASCII space.
For example:
>>> ''.isprintable(), ' '.isprintable()
(True, True)
>>> '\t'.isprintable(), '\n'.isprintable()
(False, False)
str.isspace()
Return "True" if there are only whitespace characters in the string
@@ -9424,10 +9461,24 @@ str.ljust(width, fillchar=' ', /)
space). The original string is returned if *width* is less than or
equal to "len(s)".
For example:
>>> 'Python'.ljust(10)
'Python '
>>> 'Python'.ljust(10, '.')
'Python....'
>>> 'Monty Python'.ljust(10, '.')
'Monty Python'
See also "rjust()".
str.lower()
Return a copy of the string with all the cased characters [4]
converted to lowercase.
converted to lowercase. For example:
>>> 'Lower Method Example'.lower()
'lower method example'
The lowercasing algorithm used is described in section 3.13
Default Case Folding of the Unicode Standard.
@@ -9491,6 +9542,8 @@ str.removeprefix(prefix, /)
Added in version 3.9.
See also "removesuffix()" and "startswith()".
str.removesuffix(suffix, /)
If the string ends with the *suffix* string and that *suffix* is
@@ -9504,12 +9557,19 @@ str.removesuffix(suffix, /)
Added in version 3.9.
See also "removeprefix()" and "endswith()".
str.replace(old, new, /, count=-1)
Return a copy of the string with all occurrences of substring *old*
replaced by *new*. If *count* is given, only the first *count*
occurrences are replaced. If *count* is not specified or "-1", then
all occurrences are replaced.
all occurrences are replaced. For example:
>>> 'spam, spam, spam'.replace('spam', 'eggs')
'eggs, eggs, eggs'
>>> 'spam, spam, spam'.replace('spam', 'eggs', 1)
'eggs, spam, spam'
Changed in version 3.13: *count* is now supported as a keyword
argument.
@@ -9519,12 +9579,30 @@ str.rfind(sub[, start[, end]])
Return the highest index in the string where substring *sub* is
found, such that *sub* is contained within "s[start:end]".
Optional arguments *start* and *end* are interpreted as in slice
notation. Return "-1" on failure.
notation. Return "-1" on failure. For example:
>>> 'spam, spam, spam'.rfind('sp')
12
>>> 'spam, spam, spam'.rfind('sp', 0, 10)
6
See also "find()" and "rindex()".
str.rindex(sub[, start[, end]])
Like "rfind()" but raises "ValueError" when the substring *sub* is
not found.
not found. For example:
>>> 'spam, spam, spam'.rindex('spam')
12
>>> 'spam, spam, spam'.rindex('eggs')
Traceback (most recent call last):
File "<stdin-0>", line 1, in <module>
'spam, spam, spam'.rindex('eggs')
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
ValueError: substring not found
See also "index()" and "find()".
str.rjust(width, fillchar=' ', /)
@@ -9541,6 +9619,17 @@ str.rpartition(sep, /)
found, return a 3-tuple containing two empty strings, followed by
the string itself.
For example:
>>> 'Monty Python'.rpartition(' ')
('Monty', ' ', 'Python')
>>> "Monty Python's Flying Circus".rpartition(' ')
("Monty Python's Flying", ' ', 'Circus')
>>> 'Monty Python'.rpartition('-')
('', '', 'Monty Python')
See also "partition()".
str.rsplit(sep=None, maxsplit=-1)
Return a list of the words in the string, using *sep* as the
@@ -10227,7 +10316,7 @@ ensures that the type of the target "e" is consistently
... except* BlockingIOError as e:
... print(repr(e))
...
ExceptionGroup('', (BlockingIOError()))
ExceptionGroup('', (BlockingIOError(),))
"break", "continue" and "return" cannot appear in an "except*" clause.
@@ -10611,6 +10700,10 @@ Special read-only attributes
+----------------------------------------------------+----------------------------------------------------+
| Attribute | Meaning |
|====================================================|====================================================|
| function.__builtins__ | A reference to the "dictionary" that holds the |
| | functions builtins namespace. Added in version |
| | 3.10. |
+----------------------------------------------------+----------------------------------------------------+
| function.__globals__ | A reference to the "dictionary" that holds the |
| | functions global variables the global namespace |
| | of the module in which the function was defined. |
@@ -11672,10 +11765,6 @@ class dict(iterable, /, **kwargs)
the keyword argument replaces the value from the positional
argument.
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
@@ -12188,10 +12277,17 @@ Notes:
note that "-0" is still "0".
4. The slice of *s* from *i* to *j* is defined as the sequence of
items with index *k* such that "i <= k < j". If *i* or *j* is
greater than "len(s)", use "len(s)". If *i* is omitted or "None",
use "0". If *j* is omitted or "None", use "len(s)". If *i* is
greater than or equal to *j*, the slice is empty.
items with index *k* such that "i <= k < j".
* If *i* is omitted or "None", use "0".
* If *j* is omitted or "None", use "len(s)".
* If *i* or *j* is less than "-len(s)", use "0".
* If *i* or *j* is greater than "len(s)", use "len(s)".
* If *i* is greater than or equal to *j*, the slice is empty.
5. The slice of *s* from *i* to *j* with step *k* is defined as the
sequence of items with index "x = i + n*k" such that "0 <= n <
File diff suppressed because it is too large Load Diff
@@ -1 +0,0 @@
Ensure reproducible builds by making JIT stencil header generation deterministic.
@@ -1,4 +0,0 @@
When running ``make clean-retain-profile``, keep the
generated JIT stencils. That way, the stencils are not generated twice when
Profile-guided optimization (PGO) is used. It also allows distributors to
supply their own pre-built JIT stencils.
@@ -1,4 +0,0 @@
When calculating the digest of the JIT stencils input, sort the hashed files
by filenames before adding their content to the hasher. This ensures
deterministic hash input and hence deterministic hash, independent on
filesystem order.
@@ -1 +0,0 @@
:c:func:`!PyUnstable_CopyPerfMapFile` now checks that opening the file succeeded before flushing.
@@ -1 +0,0 @@
Do not use the type attribute cache for types with incompatible :term:`MRO`.
@@ -1,2 +0,0 @@
Adjusted the built-in :func:`help` function so that empty inputs are ignored in
interactive mode.
@@ -1,2 +0,0 @@
Correctly emit ``PY_UNWIND`` event when generator object is closed. Patch by
Mikhail Efimov.
@@ -1 +0,0 @@
Fix reference cycle in exhausted generator frames. Patch by Savannah Ostrowski.
@@ -1,2 +0,0 @@
Ensure the :meth:`~object.__repr__` for :exc:`ExceptionGroup` and :exc:`BaseExceptionGroup` does
not change when the exception sequence that was original passed in to its constructor is subsequently mutated.
@@ -1 +0,0 @@
Fix SIGILL crash on m68k due to incorrect assembly constraint.
@@ -1 +0,0 @@
Fix use-after-free in :class:`bytearray` search-like methods (:meth:`~bytearray.find`, :meth:`~bytearray.count`, :meth:`~bytearray.index`, :meth:`~bytearray.rindex`, and :meth:`~bytearray.rfind`) by marking the storage as exported which causes reallocation attempts to raise :exc:`BufferError`. For :func:`~operator.contains`, :meth:`~bytearray.split`, and :meth:`~bytearray.rsplit` the :ref:`buffer protocol <bufferobjects>` is used for this.
@@ -1,2 +0,0 @@
Fix a crash in :func:`divmod` when :func:`!_pylong.int_divmod` does not
return a tuple of length two exactly. Patch by Bénédikt Tran.
@@ -1,3 +0,0 @@
Tracebacks will be displayed in fallback mode even if :func:`io.open` is lost.
Previously, this would crash the interpreter.
Patch by Bartosz Sławecki.
@@ -1 +0,0 @@
Clear the frame of a generator when :meth:`generator.close` is called.
@@ -1,3 +0,0 @@
Fix a use-after-free crash in :class:`contextvars.Context` comparison when a
custom ``__eq__`` method modifies the context via
:meth:`~contextvars.ContextVar.set`.
@@ -1 +0,0 @@
Fix a file descriptor leak in import.c
@@ -1,2 +0,0 @@
Fix a possible assertion error when comparing negative non-integer ``float``
and ``int`` with the same number of bits in the integer part.
@@ -1,2 +0,0 @@
Fix an overflow of the shared empty buffer in :meth:`bytearray.extend` when
``__length_hint__()`` returns 0 for non-empty iterator.
@@ -1,2 +0,0 @@
Set :data:`sys.flags.inspect` to ``1`` when :envvar:`PYTHONINSPECT` is ``0``.
Previously, it was set to ``0`` in this case.
@@ -1,3 +0,0 @@
Fix use-after-free crashes in :meth:`bytearray.hex` and :meth:`memoryview.hex`
when the separator's :meth:`~object.__len__` mutates the original object.
Patch by Bénédikt Tran.
@@ -1,3 +0,0 @@
Fix a use-after-free crash in :ref:`bytearray.__mod__ <bytes-formatting>` when
the :class:`!bytearray` is mutated while formatting the ``%``-style arguments.
Patch by Bénédikt Tran.
@@ -1,3 +0,0 @@
Fix a use-after-free crash in :meth:`memoryview.__hash__ <object.__hash__>`
when the ``__hash__`` method of the referenced object mutates that object or
the view. Patch by Bénédikt Tran.
@@ -1,4 +0,0 @@
Fix use-after-free in perf trampoline when toggling profiling while
threads are running or during interpreter finalization with daemon threads
active. The fix uses reference counting to ensure trampolines are not freed
while any code object could still reference them. Pach by Pablo Galindo
@@ -1,3 +0,0 @@
Fix crash when inserting a non-:class:`str` key into a split table
dictionary when the key matches an existing key in the split table
but has no corresponding value in the dict.
@@ -1,2 +0,0 @@
Fix a crash in :func:`!_interpreters.capture_exception` when
the exception is incorrectly formatted. Patch by Bénédikt Tran.
@@ -1 +0,0 @@
Fixes a crash in ``ga_repr_items_list`` function.
@@ -1,3 +0,0 @@
Fix crash in :class:`set` when objects with the same hash are concurrently
added to the set after removing an element with the same hash while the set
still contains elements with the same hash.
@@ -1 +0,0 @@
Fix error handling in perf jitdump initialization on memory allocation failure.
@@ -1 +0,0 @@
Prevent a reference leak in module teardown at interpreter finalization.
@@ -1 +0,0 @@
Add documentation for :func:`enum.bin`.
@@ -1 +0,0 @@
Better explain the operation of Format / Format Paragraph.
@@ -1,4 +0,0 @@
Correct behavior of
:func:`!asyncio.selector_events.BaseSelectorEventLoop._accept_connection`
in handling :exc:`ConnectionAbortedError` in a loop. This improves
performance on OpenBSD.
@@ -1 +0,0 @@
Skip writing objects during marshalling once a failure has occurred.
@@ -1 +0,0 @@
Fix thread-safety issues in :mod:`linecache`.
@@ -1,2 +0,0 @@
Fixed an off by one error concerning the backlog parameter in
:meth:`~asyncio.loop.create_unix_server`. Contributed by Christian Harries.
@@ -1,2 +0,0 @@
Starting a process from spawn context in :mod:`multiprocessing` no longer
sets the start method globally.
@@ -1,3 +0,0 @@
Add parsing for ``References`` and ``In-Reply-To`` headers to the :mod:`email`
library that parses the header content as lists of message id tokens. This
prevents them from being folded incorrectly.
@@ -1,2 +0,0 @@
Improved :data:`license`/:data:`copyright`/:data:`credits` display in the
:term:`REPL`: now uses a pager.
@@ -1,2 +0,0 @@
Some keystrokes can be swallowed in the new ``PyREPL`` on Windows,
especially when used together with the ALT key. Fix by Chris Eibl.
@@ -1,2 +0,0 @@
:mod:`pydoc`: Ensure that the link to the online documentation of a
:term:`stdlib` module is correct.
@@ -1,2 +0,0 @@
Fix :meth:`asyncio.run_coroutine_threadsafe` leaving underlying cancelled
asyncio task running.
@@ -1 +0,0 @@
Fix a bug in the :mod:`email.policy.default` folding algorithm which incorrectly resulted in a doubled newline when a line ending at exactly max_line_length was followed by an unfoldable token.
@@ -1 +0,0 @@
``MisplacedEnvelopeHeaderDefect`` and ``Missing header name`` defects are now correctly passed to the ``handle_defect`` method of ``policy`` in :class:`~email.parser.FeedParser`.
@@ -1 +0,0 @@
Fix :mod:`argparse` to preserve ``|`` separators in mutually exclusive groups when the usage line wraps due to length.
@@ -1 +0,0 @@
Fix :func:`winreg.QueryValueEx` to not accidentally read garbage buffer under race condition.
@@ -1,2 +0,0 @@
Pdb can now run scripts from anonymous pipes used in process substitution.
Patch by Bartosz Sławecki.
@@ -1,2 +0,0 @@
The help text for required options in :mod:`argparse` no
longer extended with " (default: None)".
@@ -1,4 +0,0 @@
The non-``compat32`` :mod:`email` policies now correctly handle refolding
encoded words that contain bytes that can not be decoded in their specified
character set. Previously this resulted in an encoding exception during
folding.
@@ -1,2 +0,0 @@
Added type check during initialization of the :mod:`decimal` module to
prevent a crash in case of broken stdlib. Patch by Sergey B Kirpichev.
@@ -1,3 +0,0 @@
:mod:`unittest.mock`: fix a thread safety issue where :attr:`Mock.call_count
<unittest.mock.Mock.call_count>` may return inaccurate values when the mock
is called concurrently from multiple threads.
@@ -1,4 +0,0 @@
:class:`collections.defaultdict` now prioritizes :meth:`~object.__setitem__`
when inserting default values from ``default_factory``. This prevents race
conditions where a default value would overwrite a value set before
``default_factory`` returns.
@@ -1,3 +0,0 @@
:mod:`hmac`: Ensure that the :attr:`HMAC.block_size <hmac.HMAC.block_size>`
attribute is correctly copied by :meth:`HMAC.copy <hmac.HMAC.copy>`. Patch
by Bénédikt Tran.
@@ -1,2 +0,0 @@
Fix crash in ``TextIOWrapper.close()`` when the underlying buffer's
``closed`` property calls :meth:`~io.TextIOBase.detach`.
@@ -1,3 +0,0 @@
:mod:`array`: fix a crash in ``a[i] = v`` when converting *i* to
an index via :meth:`i.__index__ <object.__index__>` or :meth:`i.__float__
<object.__float__>` mutates the array.
@@ -1,3 +0,0 @@
The :mod:`asyncio` REPL now properly closes the loop upon the end of interactive session.
Previously, it could cause surprising warnings.
Contributed by Bartosz Sławecki.
@@ -1,4 +0,0 @@
Add the *ownerDocument* attribute to :mod:`xml.dom.minidom` elements and attributes
created by directly instantiating the ``Element`` or ``Attr`` class. Note that
this way of creating nodes is not supported; creator functions like
:py:meth:`xml.dom.Document.documentElement` should be used instead.
@@ -1 +0,0 @@
Fix zoneinfo use-after-free with descriptor _weak_cache. a descriptor as _weak_cache could cause crashes during object creation. The fix ensures proper reference counting for descriptor-provided objects.
@@ -1,2 +0,0 @@
Fix possible use-after-free in :func:`atexit.unregister` when the callback
is unregistered during comparison.
@@ -1 +0,0 @@
Fix concurrent and reentrant call of :func:`atexit.unregister`.
@@ -1 +0,0 @@
Fixed a bug in :mod:`mailbox` where the precise timing of an external event could result in the library opening an existing file instead of a file it expected to create.
@@ -1,2 +0,0 @@
Fixed socket operations such as recvfrom() and sendto() for FreeBSD
divert(4) socket.
@@ -1,3 +0,0 @@
The :mod:`asyncio` REPL now respects the :option:`-I` flag (isolated mode).
Previously, it would load and execute :envvar:`PYTHONSTARTUP` even if the
flag was set. Contributed by Bartosz Sławecki.
@@ -1,2 +0,0 @@
The :mod:`asyncio` REPL no longer prints copyright and version messages in
the quiet mode (:option:`-q`). Patch by Bartosz Sławecki.
@@ -1,2 +0,0 @@
Fix a potential use-after-free in :meth:`collections.Counter.update` when user code
mutates the Counter during an update.
@@ -1 +0,0 @@
Corrected the error message in :func:`readline.append_history_file` to state that ``nelements`` must be non-negative instead of positive.
@@ -1 +0,0 @@
Fixed a possible reference leak in ctypes when constructing results with multiple output parameters on error.
@@ -1 +0,0 @@
Updated timeout evaluation logic in :mod:`subprocess` to be compatible with deterministic environments like Shadow where time moves exactly as requested.
@@ -1,4 +0,0 @@
:mod:`xml.etree.ElementTree`: fix use-after-free crashes in
:meth:`~object.__getitem__` and :meth:`~object.__setitem__` methods of
:class:`~xml.etree.ElementTree.Element` when the element is concurrently
mutated. Patch by Bénédikt Tran.
@@ -1,2 +0,0 @@
:mod:`sqlite3`: fix use-after-free crashes when the connection's callbacks
are mutated during a callback execution. Patch by Bénédikt Tran.
@@ -1,2 +0,0 @@
:mod:`zoneinfo`: fix infinite loop in :meth:`ZoneInfo.from_file
<zoneinfo.ZoneInfo.from_file>` when parsing a malformed TZif file. Patch by Fatih Celik.
@@ -1 +0,0 @@
Fix possible buffer leaks in Windows overlapped I/O on error handling.
@@ -1 +0,0 @@
Fix support of named pipes in the rotating :mod:`logging` handlers.
@@ -1,3 +0,0 @@
:mod:`pickle`: fix use-after-free crashes when a :class:`~pickle.PickleBuffer`
is concurrently mutated by a custom buffer callback during pickling.
Patch by Bénédikt Tran and Aaron Wieczorek.
@@ -1,3 +0,0 @@
Fix a crash in :func:`os.execve` on non-Windows platforms when
given a custom environment mapping which is then mutated during
parsing. Patch by Bénédikt Tran.
@@ -1,3 +0,0 @@
:mod:`tkinter`: fix a crash when a Python :class:`list` is mutated during
the conversion to a Tcl object (e.g., when setting a Tcl variable).
Patch by Bénédikt Tran.
@@ -1,2 +0,0 @@
Fix incorrect wrapping of the Base64 data in :class:`!plistlib._PlistWriter`
when the indent contains a mix of tabs and spaces.
@@ -1 +0,0 @@
Fix use-after-free crashes when a :class:`~io.BytesIO` object is concurrently mutated during :meth:`~io.RawIOBase.write` or :meth:`~io.IOBase.writelines`.
@@ -1,3 +0,0 @@
Fix :func:`sys.unraisablehook` when the hook raises an exception and changes
:func:`sys.unraisablehook`: hold a strong reference to the old hook. Patch
by Victor Stinner.
@@ -1,2 +0,0 @@
Fix a inconsistency issue in :meth:`~io.RawIOBase.write` that leads to
unexpected buffer overwrite by deduplicating the buffer exports.
@@ -1,3 +0,0 @@
Raise :exc:`RuntimeError`'s when user attempts to call methods on
half-initialized :class:`~struct.Struct` objects, For example, created by
``Struct.__new__(Struct)``. Patch by Sergey B Kirpichev.
@@ -1,4 +0,0 @@
Forbid reentrant calls of the :class:`pickle.Pickler` and
:class:`pickle.Unpickler` methods for the C implementation. Previously, this
could cause crash or data corruption, now concurrent calls of methods of the
same object raise :exc:`RuntimeError`.
@@ -1,5 +0,0 @@
Fix :mod:`multiprocessing` forkserver so that :data:`sys.argv` is correctly
set before ``__main__`` is preloaded. Previously, :data:`sys.argv` was empty
during main module import in forkserver child processes. This fixes a
regression introduced in 3.13.8 and 3.14.1. Root caused by Aaron Wieczorek,
test provided by Thomas Watson, thanks!
@@ -1 +0,0 @@
Fix an issue where :func:`inspect.getgeneratorstate` and :func:`inspect.getcoroutinestate` could fail for generators wrapped by :func:`types.coroutine` in the suspended state.
@@ -1,2 +0,0 @@
Fixed validation of file descriptor 0 in posix functions when used with
follow_symlinks parameter.
@@ -1,2 +0,0 @@
Fix :func:`stat.filemode` in the pure-Python implementation to avoid misclassifying
invalid mode values as block devices.
@@ -1,3 +0,0 @@
Fixed a crash in ctypes when using a deprecated ``POINTER(str)`` type in
``argtypes``. Instead of aborting, ctypes now raises a proper Python
exception when the pointer target type is unresolved.
@@ -1,2 +0,0 @@
Fix three crashes when non-string keyword arguments are supplied to objects
in the :mod:`ast` module.
@@ -1 +0,0 @@
Improve performance of :class:`io.BufferedReader` line iteration by ~49%.
@@ -1,2 +0,0 @@
Reject C0 control characters within wsgiref.headers.Headers fields, values,
and parameters.
@@ -1 +0,0 @@
Reject control characters in :class:`http.cookies.Morsel` fields and values.
@@ -1 +0,0 @@
Reject control characters in ``data:`` URL media types.
@@ -1,6 +0,0 @@
Fixed a bug in the folding of comments when flattening an email message
using a modern email policy. Comments consisting of a very long sequence of
non-foldable characters could trigger a forced line wrap that omitted the
required leading space on the continuation line, causing the remainder of
the comment to be interpreted as a new header field. This enabled header
injection with carefully crafted inputs.
@@ -1,4 +0,0 @@
:mod:`~email.generator.BytesGenerator` will now refuse to serialize (write) headers
that are unsafely folded or delimited; see
:attr:`~email.policy.Policy.verify_generated_headers`. (Contributed by Bas
Bloemsaat and Petr Viktorin in :gh:`121650`).
@@ -1,2 +0,0 @@
Forward-port test_xpickle from Python 2 to Python 3 and add the resource
back to test's command line.
@@ -1 +0,0 @@
Fix a flaky test in ``test_repr_rlock`` that checks the representation of :class:`multiprocessing.RLock`.
@@ -1 +0,0 @@
Accommodated Solaris in ``test_pdb.test_script_target_anonymous_pipe``.

Some files were not shown because too many files have changed in this diff Show More