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

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.

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',

134
Lib/pydoc_data/topics.py generated
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 <

1054
Misc/NEWS.d/3.13.12.rst Normal file

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
Ensure reproducible builds by making JIT stencil header generation deterministic.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
:c:func:`!PyUnstable_CopyPerfMapFile` now checks that opening the file succeeded before flushing.

View file

@ -1 +0,0 @@
Do not use the type attribute cache for types with incompatible :term:`MRO`.

View file

@ -1,2 +0,0 @@
Adjusted the built-in :func:`help` function so that empty inputs are ignored in
interactive mode.

View file

@ -1,2 +0,0 @@
Correctly emit ``PY_UNWIND`` event when generator object is closed. Patch by
Mikhail Efimov.

View file

@ -1 +0,0 @@
Fix reference cycle in exhausted generator frames. Patch by Savannah Ostrowski.

View file

@ -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.

View file

@ -1 +0,0 @@
Fix SIGILL crash on m68k due to incorrect assembly constraint.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
Clear the frame of a generator when :meth:`generator.close` is called.

View file

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

View file

@ -1 +0,0 @@
Fix a file descriptor leak in import.c

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a crash in :func:`!_interpreters.capture_exception` when
the exception is incorrectly formatted. Patch by Bénédikt Tran.

View file

@ -1 +0,0 @@
Fixes a crash in ``ga_repr_items_list`` function.

View file

@ -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.

View file

@ -1 +0,0 @@
Fix error handling in perf jitdump initialization on memory allocation failure.

View file

@ -1 +0,0 @@
Prevent a reference leak in module teardown at interpreter finalization.

View file

@ -1 +0,0 @@
Add documentation for :func:`enum.bin`.

View file

@ -1 +0,0 @@
Better explain the operation of Format / Format Paragraph.

View file

@ -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.

View file

@ -1 +0,0 @@
Skip writing objects during marshalling once a failure has occurred.

View file

@ -1 +0,0 @@
Fix thread-safety issues in :mod:`linecache`.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Starting a process from spawn context in :mod:`multiprocessing` no longer
sets the start method globally.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Improved :data:`license`/:data:`copyright`/:data:`credits` display in the
:term:`REPL`: now uses a pager.

View file

@ -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.

View file

@ -1,2 +0,0 @@
:mod:`pydoc`: Ensure that the link to the online documentation of a
:term:`stdlib` module is correct.

View file

@ -1,2 +0,0 @@
Fix :meth:`asyncio.run_coroutine_threadsafe` leaving underlying cancelled
asyncio task running.

View file

@ -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.

View file

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

View file

@ -1 +0,0 @@
Fix :mod:`argparse` to preserve ``|`` separators in mutually exclusive groups when the usage line wraps due to length.

View file

@ -1 +0,0 @@
Fix :func:`winreg.QueryValueEx` to not accidentally read garbage buffer under race condition.

View file

@ -1,2 +0,0 @@
Pdb can now run scripts from anonymous pipes used in process substitution.
Patch by Bartosz Sławecki.

View file

@ -1,2 +0,0 @@
The help text for required options in :mod:`argparse` no
longer extended with " (default: None)".

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix crash in ``TextIOWrapper.close()`` when the underlying buffer's
``closed`` property calls :meth:`~io.TextIOBase.detach`.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix possible use-after-free in :func:`atexit.unregister` when the callback
is unregistered during comparison.

View file

@ -1 +0,0 @@
Fix concurrent and reentrant call of :func:`atexit.unregister`.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fixed socket operations such as recvfrom() and sendto() for FreeBSD
divert(4) socket.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a potential use-after-free in :meth:`collections.Counter.update` when user code
mutates the Counter during an update.

View file

@ -1 +0,0 @@
Corrected the error message in :func:`readline.append_history_file` to state that ``nelements`` must be non-negative instead of positive.

View file

@ -1 +0,0 @@
Fixed a possible reference leak in ctypes when constructing results with multiple output parameters on error.

View file

@ -1 +0,0 @@
Updated timeout evaluation logic in :mod:`subprocess` to be compatible with deterministic environments like Shadow where time moves exactly as requested.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
Fix possible buffer leaks in Windows overlapped I/O on error handling.

View file

@ -1 +0,0 @@
Fix support of named pipes in the rotating :mod:`logging` handlers.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

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

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a inconsistency issue in :meth:`~io.RawIOBase.write` that leads to
unexpected buffer overwrite by deduplicating the buffer exports.

View file

@ -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.

View file

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

View file

@ -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!

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fixed validation of file descriptor 0 in posix functions when used with
follow_symlinks parameter.

View file

@ -1,2 +0,0 @@
Fix :func:`stat.filemode` in the pure-Python implementation to avoid misclassifying
invalid mode values as block devices.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix three crashes when non-string keyword arguments are supplied to objects
in the :mod:`ast` module.

View file

@ -1 +0,0 @@
Improve performance of :class:`io.BufferedReader` line iteration by ~49%.

View file

@ -1,2 +0,0 @@
Reject C0 control characters within wsgiref.headers.Headers fields, values,
and parameters.

View file

@ -1 +0,0 @@
Reject control characters in :class:`http.cookies.Morsel` fields and values.

View file

@ -1 +0,0 @@
Reject control characters in ``data:`` URL media types.

View file

@ -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.

View file

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

View file

@ -1,2 +0,0 @@
Forward-port test_xpickle from Python 2 to Python 3 and add the resource
back to test's command line.

View file

@ -1 +0,0 @@
Fix a flaky test in ``test_repr_rlock`` that checks the representation of :class:`multiprocessing.RLock`.

View file

@ -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