mirror of
https://github.com/python/cpython.git
synced 2026-02-05 17:35:34 +00:00
Python 3.13.12
This commit is contained in:
parent
ad5bd4ad47
commit
1cbe481834
106 changed files with 1173 additions and 244 deletions
|
|
@ -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.
|
||||
|
|
|
|||
9
Lib/pydoc_data/module_docs.py
generated
9
Lib/pydoc_data/module_docs.py
generated
|
|
@ -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
134
Lib/pydoc_data/topics.py
generated
|
|
@ -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 |
|
||||
| | function’s builtins namespace. Added in version |
|
||||
| | 3.10. |
|
||||
+----------------------------------------------------+----------------------------------------------------+
|
||||
| function.__globals__ | A reference to the "dictionary" that holds the |
|
||||
| | function’s 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
1054
Misc/NEWS.d/3.13.12.rst
Normal file
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
Loading…
Add table
Add a link
Reference in a new issue