mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Python 3.14.0b2
This commit is contained in:
parent
6c917cb11c
commit
12d3f883ae
78 changed files with 958 additions and 276 deletions
|
@ -21,10 +21,10 @@
|
|||
#define PY_MINOR_VERSION 14
|
||||
#define PY_MICRO_VERSION 0
|
||||
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_BETA
|
||||
#define PY_RELEASE_SERIAL 1
|
||||
#define PY_RELEASE_SERIAL 2
|
||||
|
||||
/* Version as a string */
|
||||
#define PY_VERSION "3.14.0b1+"
|
||||
#define PY_VERSION "3.14.0b2"
|
||||
/*--end constants--*/
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Autogenerated by Sphinx on Tue May 6 18:33:44 2025
|
||||
# Autogenerated by Sphinx on Mon May 26 16:26:41 2025
|
||||
# as part of the release process.
|
||||
|
||||
topics = {
|
||||
|
@ -435,9 +435,9 @@ See also:
|
|||
'atom-identifiers': r'''Identifiers (Names)
|
||||
*******************
|
||||
|
||||
An identifier occurring as an atom is a name. See section Identifiers
|
||||
and keywords for lexical definition and section Naming and binding for
|
||||
documentation of naming and binding.
|
||||
An identifier occurring as an atom is a name. See section Names
|
||||
(identifiers and keywords) for lexical definition and section Naming
|
||||
and binding for documentation of naming and binding.
|
||||
|
||||
When the name is bound to an object, evaluation of the atom yields
|
||||
that object. When a name is not bound, an attempt to evaluate it
|
||||
|
@ -1724,16 +1724,16 @@ The "for" statement
|
|||
The "for" statement is used to iterate over the elements of a sequence
|
||||
(such as a string, tuple or list) or other iterable object:
|
||||
|
||||
for_stmt: "for" target_list "in" starred_list ":" suite
|
||||
for_stmt: "for" target_list "in" starred_expression_list ":" suite
|
||||
["else" ":" suite]
|
||||
|
||||
The "starred_list" expression is evaluated once; it should yield an
|
||||
*iterable* object. An *iterator* is created for that iterable. The
|
||||
first item provided by the iterator is then assigned to the target
|
||||
list using the standard rules for assignments (see Assignment
|
||||
statements), and the suite is executed. This repeats for each item
|
||||
provided by the iterator. When the iterator is exhausted, the suite
|
||||
in the "else" clause, if present, is executed, and the loop
|
||||
The "starred_expression_list" expression is evaluated once; it should
|
||||
yield an *iterable* object. An *iterator* is created for that
|
||||
iterable. The first item provided by the iterator is then assigned to
|
||||
the target list using the standard rules for assignments (see
|
||||
Assignment statements), and the suite is executed. This repeats for
|
||||
each item provided by the iterator. When the iterator is exhausted,
|
||||
the suite in the "else" clause, if present, is executed, and the loop
|
||||
terminates.
|
||||
|
||||
A "break" statement executed in the first suite terminates the loop
|
||||
|
@ -3304,7 +3304,7 @@ runtime semantics of the code, except if some mechanism is used that
|
|||
introspects and uses the annotations (such as "dataclasses" or
|
||||
"functools.singledispatch()").
|
||||
|
||||
By default, annotations are lazily evaluated in a annotation scope.
|
||||
By default, annotations are lazily evaluated in an annotation scope.
|
||||
This means that they are not evaluated when the code containing the
|
||||
annotation is evaluated. Instead, the interpreter saves information
|
||||
that can be used to evaluate the annotation later if requested. The
|
||||
|
@ -3318,6 +3318,12 @@ present, all annotations are instead stored as strings:
|
|||
>>> f.__annotations__
|
||||
{'param': 'annotation'}
|
||||
|
||||
This future statement will be deprecated and removed in a future
|
||||
version of Python, but not before Python 3.13 reaches its end of life
|
||||
(see **PEP 749**). When it is used, introspection tools like
|
||||
"annotationlib.get_annotations()" and "typing.get_type_hints()" are
|
||||
less likely to be able to resolve annotations at runtime.
|
||||
|
||||
-[ Footnotes ]-
|
||||
|
||||
[1] The exception is propagated to the invocation stack unless there
|
||||
|
@ -3832,7 +3838,7 @@ and local names are offered as arguments of the "p" command.
|
|||
You can also invoke "pdb" from the command line to debug other
|
||||
scripts. For example:
|
||||
|
||||
python -m pdb [-c command] (-m module | pyfile) [args ...]
|
||||
python -m pdb [-c command] (-m module | -p pid | pyfile) [args ...]
|
||||
|
||||
When invoked as a module, pdb will automatically enter post-mortem
|
||||
debugging if the program being debugged exits abnormally. After post-
|
||||
|
@ -3856,6 +3862,23 @@ debugger upon program’s exit.
|
|||
|
||||
Changed in version 3.7: Added the "-m" option.
|
||||
|
||||
-p, --pid <pid>
|
||||
|
||||
Attach to the process with the specified PID.
|
||||
|
||||
Added in version 3.14.
|
||||
|
||||
To attach to a running Python process for remote debugging, use the
|
||||
"-p" or "--pid" option with the target process’s PID:
|
||||
|
||||
python -m pdb -p 1234
|
||||
|
||||
Note:
|
||||
|
||||
Attaching to a process that is blocked in a system call or waiting
|
||||
for I/O will only work once the next bytecode instruction is
|
||||
executed or when the process receives a signal.
|
||||
|
||||
Typical usage to execute a statement under control of the debugger is:
|
||||
|
||||
>>> import pdb
|
||||
|
@ -5077,7 +5100,7 @@ statement and "raise" statement in section The raise statement.
|
|||
'exprlists': r'''Expression lists
|
||||
****************
|
||||
|
||||
starred_expression: ["*"] or_expr
|
||||
starred_expression: "*" or_expr | expression
|
||||
flexible_expression: assignment_expression | starred_expression
|
||||
flexible_expression_list: flexible_expression ("," flexible_expression)* [","]
|
||||
starred_expression_list: starred_expression ("," starred_expression)* [","]
|
||||
|
@ -5138,16 +5161,16 @@ purposes in literals.
|
|||
The "for" statement is used to iterate over the elements of a sequence
|
||||
(such as a string, tuple or list) or other iterable object:
|
||||
|
||||
for_stmt: "for" target_list "in" starred_list ":" suite
|
||||
for_stmt: "for" target_list "in" starred_expression_list ":" suite
|
||||
["else" ":" suite]
|
||||
|
||||
The "starred_list" expression is evaluated once; it should yield an
|
||||
*iterable* object. An *iterator* is created for that iterable. The
|
||||
first item provided by the iterator is then assigned to the target
|
||||
list using the standard rules for assignments (see Assignment
|
||||
statements), and the suite is executed. This repeats for each item
|
||||
provided by the iterator. When the iterator is exhausted, the suite
|
||||
in the "else" clause, if present, is executed, and the loop
|
||||
The "starred_expression_list" expression is evaluated once; it should
|
||||
yield an *iterable* object. An *iterator* is created for that
|
||||
iterable. The first item provided by the iterator is then assigned to
|
||||
the target list using the standard rules for assignments (see
|
||||
Assignment statements), and the suite is executed. This repeats for
|
||||
each item provided by the iterator. When the iterator is exhausted,
|
||||
the suite in the "else" clause, if present, is executed, and the loop
|
||||
terminates.
|
||||
|
||||
A "break" statement executed in the first suite terminates the loop
|
||||
|
@ -5942,73 +5965,92 @@ trailing underscore characters:
|
|||
to help avoid name clashes between “private” attributes of base and
|
||||
derived classes. See section Identifiers (Names).
|
||||
''',
|
||||
'identifiers': r'''Identifiers and keywords
|
||||
************************
|
||||
'identifiers': r'''Names (identifiers and keywords)
|
||||
********************************
|
||||
|
||||
Identifiers (also referred to as *names*) are described by the
|
||||
following lexical definitions.
|
||||
|
||||
The syntax of identifiers in Python is based on the Unicode standard
|
||||
annex UAX-31, with elaboration and changes as defined below; see also
|
||||
**PEP 3131** for further details.
|
||||
"NAME" tokens represent *identifiers*, *keywords*, and *soft
|
||||
keywords*.
|
||||
|
||||
Within the ASCII range (U+0001..U+007F), the valid characters for
|
||||
identifiers include the uppercase and lowercase letters "A" through
|
||||
"Z", the underscore "_" and, except for the first character, the
|
||||
digits "0" through "9". Python 3.0 introduced additional characters
|
||||
from outside the ASCII range (see **PEP 3131**). For these
|
||||
characters, the classification uses the version of the Unicode
|
||||
Character Database as included in the "unicodedata" module.
|
||||
names include the uppercase and lowercase letters ("A-Z" and "a-z"),
|
||||
the underscore "_" and, except for the first character, the digits "0"
|
||||
through "9".
|
||||
|
||||
Identifiers are unlimited in length. Case is significant.
|
||||
Names must contain at least one character, but have no upper length
|
||||
limit. Case is significant.
|
||||
|
||||
identifier: xid_start xid_continue*
|
||||
id_start: <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
|
||||
id_continue: <all characters in id_start, plus characters in the categories Mn, Mc, Nd, Pc and others with the Other_ID_Continue property>
|
||||
xid_start: <all characters in id_start whose NFKC normalization is in "id_start xid_continue*">
|
||||
xid_continue: <all characters in id_continue whose NFKC normalization is in "id_continue*">
|
||||
Besides "A-Z", "a-z", "_" and "0-9", names can also use “letter-like”
|
||||
and “number-like” characters from outside the ASCII range, as detailed
|
||||
below.
|
||||
|
||||
The Unicode category codes mentioned above stand for:
|
||||
All identifiers are converted into the normalization form NFKC while
|
||||
parsing; comparison of identifiers is based on NFKC.
|
||||
|
||||
* *Lu* - uppercase letters
|
||||
Formally, the first character of a normalized identifier must belong
|
||||
to the set "id_start", which is the union of:
|
||||
|
||||
* *Ll* - lowercase letters
|
||||
* Unicode category "<Lu>" - uppercase letters (includes "A" to "Z")
|
||||
|
||||
* *Lt* - titlecase letters
|
||||
* Unicode category "<Ll>" - lowercase letters (includes "a" to "z")
|
||||
|
||||
* *Lm* - modifier letters
|
||||
* Unicode category "<Lt>" - titlecase letters
|
||||
|
||||
* *Lo* - other letters
|
||||
* Unicode category "<Lm>" - modifier letters
|
||||
|
||||
* *Nl* - letter numbers
|
||||
* Unicode category "<Lo>" - other letters
|
||||
|
||||
* *Mn* - nonspacing marks
|
||||
* Unicode category "<Nl>" - letter numbers
|
||||
|
||||
* *Mc* - spacing combining marks
|
||||
* {""_""} - the underscore
|
||||
|
||||
* *Nd* - decimal numbers
|
||||
* "<Other_ID_Start>" - an explicit set of characters in PropList.txt
|
||||
to support backwards compatibility
|
||||
|
||||
* *Pc* - connector punctuations
|
||||
The remaining characters must belong to the set "id_continue", which
|
||||
is the union of:
|
||||
|
||||
* *Other_ID_Start* - explicit list of characters in PropList.txt to
|
||||
support backwards compatibility
|
||||
* all characters in "id_start"
|
||||
|
||||
* *Other_ID_Continue* - likewise
|
||||
* Unicode category "<Nd>" - decimal numbers (includes "0" to "9")
|
||||
|
||||
All identifiers are converted into the normal form NFKC while parsing;
|
||||
comparison of identifiers is based on NFKC.
|
||||
* Unicode category "<Pc>" - connector punctuations
|
||||
|
||||
A non-normative HTML file listing all valid identifier characters for
|
||||
Unicode 16.0.0 can be found at
|
||||
https://www.unicode.org/Public/16.0.0/ucd/DerivedCoreProperties.txt
|
||||
* Unicode category "<Mn>" - nonspacing marks
|
||||
|
||||
* Unicode category "<Mc>" - spacing combining marks
|
||||
|
||||
* "<Other_ID_Continue>" - another explicit set of characters in
|
||||
PropList.txt to support backwards compatibility
|
||||
|
||||
Unicode categories use the version of the Unicode Character Database
|
||||
as included in the "unicodedata" module.
|
||||
|
||||
These sets are based on the Unicode standard annex UAX-31. See also
|
||||
**PEP 3131** for further details.
|
||||
|
||||
Even more formally, names are described by the following lexical
|
||||
definitions:
|
||||
|
||||
NAME: xid_start xid_continue*
|
||||
id_start: <Lu> | <Ll> | <Lt> | <Lm> | <Lo> | <Nl> | "_" | <Other_ID_Start>
|
||||
id_continue: id_start | <Nd> | <Pc> | <Mn> | <Mc> | <Other_ID_Continue>
|
||||
xid_start: <all characters in id_start whose NFKC normalization is
|
||||
in (id_start xid_continue*)">
|
||||
xid_continue: <all characters in id_continue whose NFKC normalization is
|
||||
in (id_continue*)">
|
||||
identifier: <NAME, except keywords>
|
||||
|
||||
A non-normative listing of all valid identifier characters as defined
|
||||
by Unicode is available in the DerivedCoreProperties.txt file in the
|
||||
Unicode Character Database.
|
||||
|
||||
|
||||
Keywords
|
||||
========
|
||||
|
||||
The following identifiers are used as reserved words, or *keywords* of
|
||||
the language, and cannot be used as ordinary identifiers. They must
|
||||
be spelled exactly as written here:
|
||||
The following names are used as reserved words, or *keywords* of the
|
||||
language, and cannot be used as ordinary identifiers. They must be
|
||||
spelled exactly as written here:
|
||||
|
||||
False await else import pass
|
||||
None break except in raise
|
||||
|
@ -6024,18 +6066,20 @@ Soft Keywords
|
|||
|
||||
Added in version 3.10.
|
||||
|
||||
Some identifiers are only reserved under specific contexts. These are
|
||||
known as *soft keywords*. The identifiers "match", "case", "type" and
|
||||
"_" can syntactically act as keywords in certain contexts, but this
|
||||
distinction is done at the parser level, not when tokenizing.
|
||||
Some names are only reserved under specific contexts. These are known
|
||||
as *soft keywords*:
|
||||
|
||||
* "match", "case", and "_", when used in the "match" statement.
|
||||
|
||||
* "type", when used in the "type" statement.
|
||||
|
||||
These syntactically act as keywords in their specific contexts, but
|
||||
this distinction is done at the parser level, not when tokenizing.
|
||||
|
||||
As soft keywords, their use in the grammar is possible while still
|
||||
preserving compatibility with existing code that uses these names as
|
||||
identifier names.
|
||||
|
||||
"match", "case", and "_" are used in the "match" statement. "type" is
|
||||
used in the "type" statement.
|
||||
|
||||
Changed in version 3.12: "type" is now a soft keyword.
|
||||
|
||||
|
||||
|
@ -6807,9 +6851,9 @@ object.__ror__(self, other)
|
|||
third argument if the three-argument version of the built-in
|
||||
"pow()" function is to be supported.
|
||||
|
||||
Changed in version 3.14.0a7 (unreleased): Three-argument "pow()"
|
||||
now try calling "__rpow__()" if necessary. Previously it was only
|
||||
called in two-argument "pow()" and the binary power operator.
|
||||
Changed in version 3.14: Three-argument "pow()" now try calling
|
||||
"__rpow__()" if necessary. Previously it was only called in two-
|
||||
argument "pow()" and the binary power operator.
|
||||
|
||||
Note:
|
||||
|
||||
|
@ -8845,9 +8889,9 @@ object.__ror__(self, other)
|
|||
third argument if the three-argument version of the built-in
|
||||
"pow()" function is to be supported.
|
||||
|
||||
Changed in version 3.14.0a7 (unreleased): Three-argument "pow()"
|
||||
now try calling "__rpow__()" if necessary. Previously it was only
|
||||
called in two-argument "pow()" and the binary power operator.
|
||||
Changed in version 3.14: Three-argument "pow()" now try calling
|
||||
"__rpow__()" if necessary. Previously it was only called in two-
|
||||
argument "pow()" and the binary power operator.
|
||||
|
||||
Note:
|
||||
|
||||
|
@ -9215,7 +9259,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]])
|
||||
|
||||
|
@ -9224,7 +9275,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')
|
||||
|
||||
|
@ -9389,7 +9451,7 @@ str.isdigit()
|
|||
str.isidentifier()
|
||||
|
||||
Return "True" if the string is a valid identifier according to the
|
||||
language definition, section Identifiers and keywords.
|
||||
language definition, section Names (identifiers and keywords).
|
||||
|
||||
"keyword.iskeyword()" can be used to test whether string "s" is a
|
||||
reserved identifier, such as "def" and "class".
|
||||
|
@ -9421,8 +9483,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
|
||||
|
@ -9669,6 +9731,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
|
||||
|
@ -11724,8 +11798,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}
|
||||
|
@ -11740,6 +11821,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):
|
||||
|
||||
|
@ -11910,33 +12014,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}
|
||||
|
|
766
Misc/NEWS.d/3.14.0b2.rst
Normal file
766
Misc/NEWS.d/3.14.0b2.rst
Normal file
|
@ -0,0 +1,766 @@
|
|||
.. date: 2025-05-20-21-43-20
|
||||
.. gh-issue: 130727
|
||||
.. nonce: -69t4D
|
||||
.. release date: 2025-05-26
|
||||
.. 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-13-13-25-27
|
||||
.. gh-issue: 133779
|
||||
.. nonce: -YcTBz
|
||||
.. section: Windows
|
||||
|
||||
Reverts the change to generate different :file:`pyconfig.h` files based on
|
||||
compiler settings, as it was frequently causing extension builds to break.
|
||||
In particular, the ``Py_GIL_DISABLED`` preprocessor variable must now always
|
||||
be defined explicitly when compiling for the experimental free-threaded
|
||||
runtime. The :func:`sysconfig.get_config_var` function can be used to
|
||||
determine whether the current runtime was compiled with that flag or not.
|
||||
|
||||
..
|
||||
|
||||
.. 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-19-14-57-46
|
||||
.. gh-issue: 134215
|
||||
.. nonce: sbdDK6
|
||||
.. section: Tools/Demos
|
||||
|
||||
:term:`REPL` import autocomplete only suggests private modules when
|
||||
explicitly specified.
|
||||
|
||||
..
|
||||
|
||||
.. 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-09-04-11-06
|
||||
.. gh-issue: 133682
|
||||
.. nonce: -_lwo3
|
||||
.. section: Tests
|
||||
|
||||
Fixed test case ``test.test_annotationlib.TestStringFormat.test_displays``
|
||||
which ensures proper handling of complex data structures (lists, sets,
|
||||
dictionaries, and tuples) in string annotations.
|
||||
|
||||
..
|
||||
|
||||
.. 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-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-26-12-31-08
|
||||
.. gh-issue: 132710
|
||||
.. nonce: ApU3TZ
|
||||
.. section: Library
|
||||
|
||||
If possible, ensure that :func:`uuid.getnode` returns the same result even
|
||||
across different processes. Previously, the result was constant only within
|
||||
the same process. 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-23-23-43-39
|
||||
.. gh-issue: 134582
|
||||
.. nonce: 9POq3l
|
||||
.. section: Library
|
||||
|
||||
Fix tokenize.untokenize() round-trip errors related to t-strings braces
|
||||
escaping
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-22-18-14-13
|
||||
.. gh-issue: 134546
|
||||
.. nonce: fjLVzK
|
||||
.. section: Library
|
||||
|
||||
Ensure :mod:`pdb` remote debugging script is readable by remote Python
|
||||
process.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-22-14-12-53
|
||||
.. gh-issue: 134451
|
||||
.. nonce: M1rD-j
|
||||
.. section: Library
|
||||
|
||||
Converted ``asyncio.tools.CycleFoundException`` from dataclass to a regular
|
||||
exception type.
|
||||
|
||||
..
|
||||
|
||||
.. 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-20-21-45-58
|
||||
.. gh-issue: 90871
|
||||
.. nonce: Gkvtp6
|
||||
.. section: Library
|
||||
|
||||
Fixed an off by one error concerning the backlog parameter in
|
||||
:meth:`~asyncio.loop.create_unix_server`. Contributed by Christian Harries.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-20-19-16-30
|
||||
.. gh-issue: 134323
|
||||
.. nonce: ZQZGvw
|
||||
.. section: Library
|
||||
|
||||
Fix the :meth:`threading.RLock.locked` method.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-20-15-13-43
|
||||
.. gh-issue: 86802
|
||||
.. nonce: trF7TM
|
||||
.. section: Library
|
||||
|
||||
Fixed asyncio memory leak in cancelled shield tasks. For shielded tasks
|
||||
where the shield was cancelled, log potential exceptions through the
|
||||
exception handler. Contributed by Christian Harries.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-19-20-59-06
|
||||
.. gh-issue: 134209
|
||||
.. nonce: anhTcF
|
||||
.. section: Library
|
||||
|
||||
:mod:`curses`: The :meth:`curses.window.instr` and
|
||||
:meth:`curses.window.getstr` methods now allocate their internal buffer on
|
||||
the heap instead of the stack; in addition, the max buffer size is increased
|
||||
from 1023 to 2047.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-19-15-05-24
|
||||
.. gh-issue: 134235
|
||||
.. nonce: pz9PwV
|
||||
.. section: Library
|
||||
|
||||
Updated tab completion on REPL to include builtin modules. Contributed by
|
||||
Tom Wang, Hunter Young
|
||||
|
||||
..
|
||||
|
||||
.. 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-13-23-29
|
||||
.. gh-issue: 134168
|
||||
.. nonce: hgx3Xg
|
||||
.. section: Library
|
||||
|
||||
:mod:`http.server`: Fix IPv6 address binding and :option:`--directory
|
||||
<http.server --directory>` handling when using HTTPS.
|
||||
|
||||
..
|
||||
|
||||
.. 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 <file 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-16-12-40-37
|
||||
.. gh-issue: 132124
|
||||
.. nonce: T_5Odx
|
||||
.. section: Library
|
||||
|
||||
On POSIX-compliant systems, :func:`!multiprocessing.util.get_temp_dir` now
|
||||
ignores :envvar:`TMPDIR` (and similar environment variables) if the path
|
||||
length of ``AF_UNIX`` socket files exceeds the platform-specific maximum
|
||||
length when using the :ref:`forkserver
|
||||
<multiprocessing-start-method-forkserver>` start method. Patch by Bénédikt
|
||||
Tran.
|
||||
|
||||
..
|
||||
|
||||
.. 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-13-18-54-56
|
||||
.. gh-issue: 133970
|
||||
.. nonce: 6G-Oi6
|
||||
.. section: Library
|
||||
|
||||
Make :class:`!string.templatelib.Template` and
|
||||
:class:`!string.templatelib.Interpolation` generic.
|
||||
|
||||
..
|
||||
|
||||
.. 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-12-20-38-57
|
||||
.. gh-issue: 133960
|
||||
.. nonce: Aee79f
|
||||
.. section: Library
|
||||
|
||||
Simplify and improve :func:`typing.evaluate_forward_ref`. It now no longer
|
||||
raises errors on certain invalid types. In several situations, it is now
|
||||
able to evaluate forward references that were previously unsupported.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-12-06-52-10
|
||||
.. gh-issue: 133925
|
||||
.. nonce: elInBY
|
||||
.. section: Library
|
||||
|
||||
Make the private class ``typing._UnionGenericAlias`` hashable.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-10-12-06-55
|
||||
.. gh-issue: 133653
|
||||
.. nonce: Gb2aG4
|
||||
.. section: Library
|
||||
|
||||
Fix :class:`argparse.ArgumentParser` with the *formatter_class* argument.
|
||||
Fix TypeError when *formatter_class* is a custom subclass of
|
||||
:class:`!HelpFormatter`. Fix TypeError when *formatter_class* is not a
|
||||
subclass of :class:`!HelpFormatter` and non-standard *prefix_char* is used.
|
||||
Fix support of colorizing when *formatter_class* is not a subclass of
|
||||
:class:`!HelpFormatter`.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-09-20-59-24
|
||||
.. gh-issue: 132641
|
||||
.. nonce: 3qTw44
|
||||
.. section: Library
|
||||
|
||||
Fixed a race in :func:`functools.lru_cache` under free-threading.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-09-19-05-24
|
||||
.. gh-issue: 133783
|
||||
.. nonce: 1voCnR
|
||||
.. section: Library
|
||||
|
||||
Fix bug with applying :func:`copy.replace` to :mod:`ast` objects. Attributes
|
||||
that default to ``None`` were incorrectly treated as required for manually
|
||||
created AST nodes.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-09-18-29-25
|
||||
.. gh-issue: 133684
|
||||
.. nonce: Y1DFSt
|
||||
.. section: Library
|
||||
|
||||
Fix bug where :func:`annotationlib.get_annotations` would return the wrong
|
||||
result for certain classes that are part of a class hierarchy where ``from
|
||||
__future__ import annotations`` is used.
|
||||
|
||||
..
|
||||
|
||||
.. 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-09-09-10-34
|
||||
.. gh-issue: 130328
|
||||
.. nonce: s9h4By
|
||||
.. section: Library
|
||||
|
||||
Speedup pasting in ``PyREPL`` on Windows in a legacy console. Patch by Chris
|
||||
Eibl.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-09-08-49-03
|
||||
.. gh-issue: 133701
|
||||
.. nonce: KI8tGz
|
||||
.. section: Library
|
||||
|
||||
Fix bug where :class:`typing.TypedDict` classes defined under ``from
|
||||
__future__ import annotations`` and inheriting from another ``TypedDict``
|
||||
had an incorrect ``__annotations__`` attribute.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-07-19-16-41
|
||||
.. gh-issue: 133581
|
||||
.. nonce: kERUCJ
|
||||
.. section: Library
|
||||
|
||||
Improve unparsing of t-strings in :func:`ast.unparse` and ``from __future__
|
||||
import annotations``. Empty t-strings now round-trip correctly and
|
||||
formatting in interpolations is preserved. Patch by Jelle Zijlstra.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-06-22-54-37
|
||||
.. gh-issue: 133551
|
||||
.. nonce: rfy1tJ
|
||||
.. section: Library
|
||||
|
||||
Support t-strings (:pep:`750`) in :mod:`annotationlib`. Patch by Jelle
|
||||
Zijlstra.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-05-22-11-24
|
||||
.. gh-issue: 133439
|
||||
.. nonce: LpmyFz
|
||||
.. section: Library
|
||||
|
||||
Fix dot commands with trailing spaces are mistaken for multi-line SQL
|
||||
statements in the sqlite3 command-line interface.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-04-17-04-55
|
||||
.. gh-issue: 132493
|
||||
.. nonce: huirKi
|
||||
.. section: Library
|
||||
|
||||
Avoid accessing ``__annotations__`` unnecessarily in
|
||||
:func:`inspect.signature`.
|
||||
|
||||
..
|
||||
|
||||
.. 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-26-15-50-12
|
||||
.. gh-issue: 133009
|
||||
.. nonce: etBuz5
|
||||
.. section: Library
|
||||
|
||||
:mod:`xml.etree.ElementTree`: Fix a crash in :meth:`Element.__deepcopy__
|
||||
<object.__deepcopy__>` when the element is concurrently mutated. Patch by
|
||||
Bénédikt Tran.
|
||||
|
||||
..
|
||||
|
||||
.. 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: 2024-10-28-06-54-22
|
||||
.. gh-issue: 125028
|
||||
.. nonce: GEY8Ws
|
||||
.. section: Library
|
||||
|
||||
:data:`functools.Placeholder` cannot be passed to :func:`functools.partial`
|
||||
as a keyword argument.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2023-02-13-21-56-38
|
||||
.. gh-issue: 62824
|
||||
.. nonce: CBZzX3
|
||||
.. section: Library
|
||||
|
||||
Fix aliases for ``iso8859_8`` encoding. Patch by Dave Goncalves.
|
||||
|
||||
..
|
||||
|
||||
.. 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
|
||||
``<script>`` tag is not closed. Patch by Waylan Limberg.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2022-07-24-20-56-32
|
||||
.. gh-issue: 69426
|
||||
.. nonce: unccw7
|
||||
.. section: Library
|
||||
|
||||
Fix :class:`html.parser.HTMLParser` to not unescape character entities in
|
||||
attribute values if they are followed by an ASCII alphanumeric or an equals
|
||||
sign.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 28494
|
||||
.. date: 2017-12-30-18-21-00
|
||||
.. nonce: Dt_Wks
|
||||
.. section: Library
|
||||
|
||||
Improve Zip file validation false positive rate in
|
||||
:func:`zipfile.is_zipfile`.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-22-14-48-19
|
||||
.. gh-issue: 134381
|
||||
.. nonce: 2BXhth
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix :exc:`RuntimeError` when using a not-started :class:`threading.Thread`
|
||||
after calling :func:`os.fork`
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-21-18-02-56
|
||||
.. gh-issue: 127960
|
||||
.. nonce: W3J_2X
|
||||
.. section: Core and Builtins
|
||||
|
||||
PyREPL interactive shell no longer starts with ``__package__`` and
|
||||
``__file__`` global names set to ``_pyrepl`` package internals. Contributed
|
||||
by Yuichiro Tachibana.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-21-15-14-32
|
||||
.. gh-issue: 130397
|
||||
.. nonce: aG6EON
|
||||
.. section: Core and Builtins
|
||||
|
||||
Remove special-casing for C stack depth limits for WASI. Due to
|
||||
WebAssembly's built-in stack protection this does not pose a security
|
||||
concern.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-20-14-41-50
|
||||
.. gh-issue: 128066
|
||||
.. nonce: qzzGfv
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fixes an edge case where PyREPL improperly threw an error when Python is
|
||||
invoked on a read only filesystem while trying to write history file
|
||||
entries.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-18-14-33-23
|
||||
.. gh-issue: 69605
|
||||
.. nonce: ZMO49F
|
||||
.. section: Core and Builtins
|
||||
|
||||
When auto-completing an import in the :term:`REPL`, finding no candidates
|
||||
now issues no suggestion, rather than suggestions from the current
|
||||
namespace.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-17-20-44-51
|
||||
.. gh-issue: 134158
|
||||
.. nonce: ewLNLp
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix coloring of double braces in f-strings and t-strings in the
|
||||
:term:`REPL`.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-16-20-59-12
|
||||
.. gh-issue: 134119
|
||||
.. nonce: w8expI
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix crash when calling :func:`next` on an exhausted template string
|
||||
iterator. Patch by Jelle Zijlstra.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-16-17-25-52
|
||||
.. gh-issue: 134100
|
||||
.. nonce: 5-FbLK
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix a use-after-free bug that occurs when an imported module isn't in
|
||||
:data:`sys.modules` after its initial import. Patch by Nico-Posada.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-15-11-38-16
|
||||
.. gh-issue: 133999
|
||||
.. nonce: uBZ8uS
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix :exc:`SyntaxError` regression in :keyword:`except` parsing after
|
||||
:gh:`123440`.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-11-13-40-42
|
||||
.. gh-issue: 133886
|
||||
.. nonce: ryBAyo
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix :func:`sys.remote_exec` for non-ASCII paths in non-UTF-8 locales and
|
||||
non-UTF-8 paths in UTF-8 locales.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-10-17-12-27
|
||||
.. gh-issue: 133703
|
||||
.. nonce: bVM-re
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix hashtable in dict can be bigger than intended in some situations.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-09-18-11-21
|
||||
.. gh-issue: 133778
|
||||
.. nonce: pWEV3t
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix bug where assigning to the :attr:`~type.__annotations__` attributes of
|
||||
classes defined under ``from __future__ import annotations`` had no effect.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-08-13-48-02
|
||||
.. gh-issue: 132762
|
||||
.. nonce: tKbygC
|
||||
.. section: Core and Builtins
|
||||
|
||||
:meth:`~dict.fromkeys` no longer loops forever when adding a small set of
|
||||
keys to a large base dict. Patch by Angela Liss.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-07-23-26-53
|
||||
.. gh-issue: 133541
|
||||
.. nonce: bHIC55
|
||||
.. section: Core and Builtins
|
||||
|
||||
Inconsistent indentation in user input crashed the new REPL when syntax
|
||||
highlighting was active. This is now fixed.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-06-15-01-41
|
||||
.. gh-issue: 133516
|
||||
.. nonce: RqWVf2
|
||||
.. section: Core and Builtins
|
||||
|
||||
Raise :exc:`ValueError` when constants ``True``, ``False`` or ``None`` are
|
||||
used as an identifier after NFKC normalization.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-04-19-17-16-46
|
||||
.. gh-issue: 132542
|
||||
.. nonce: 7T_TY_
|
||||
.. section: Core and Builtins
|
||||
|
||||
Update :attr:`Thread.native_id <threading.Thread.native_id>` after
|
||||
:manpage:`fork(2)` to ensure accuracy. Patch by Noam Cohen.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-17-14-41-21
|
||||
.. gh-issue: 134144
|
||||
.. nonce: xVpZik
|
||||
.. section: C API
|
||||
|
||||
Fix crash when calling :c:func:`Py_EndInterpreter` with a :term:`thread
|
||||
state` that isn't the initial thread for the interpreter.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-05-21-19-46-28
|
||||
.. gh-issue: 134455
|
||||
.. nonce: vdwlrq
|
||||
.. section: Build
|
||||
|
||||
Fixed ``build-details.json`` generation to use the correct ``c_api.headers``
|
||||
as defined in :pep:`739`, instead of ``c_api.include``.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-04-30-10-22-08
|
||||
.. gh-issue: 131769
|
||||
.. nonce: H0oy5x
|
||||
.. section: Build
|
||||
|
||||
Fix detecting when the build Python in a cross-build is a pydebug build.
|
||||
|
||||
..
|
||||
|
||||
.. date: 2025-04-16-09-38-48
|
||||
.. gh-issue: 117088
|
||||
.. nonce: EFt_5c
|
||||
.. section: Build
|
||||
|
||||
AIX linker don't support -h option, so avoid it through platform check
|
|
@ -1 +0,0 @@
|
|||
AIX linker don't support -h option, so avoid it through platform check
|
|
@ -1 +0,0 @@
|
|||
Fix detecting when the build Python in a cross-build is a pydebug build.
|
|
@ -1,2 +0,0 @@
|
|||
Fixed ``build-details.json`` generation to use the correct ``c_api.headers``
|
||||
as defined in :pep:`739`, instead of ``c_api.include``.
|
|
@ -1 +0,0 @@
|
|||
Fix crash when calling :c:func:`Py_EndInterpreter` with a :term:`thread state` that isn't the initial thread for the interpreter.
|
|
@ -1,2 +0,0 @@
|
|||
Update :attr:`Thread.native_id <threading.Thread.native_id>` after
|
||||
:manpage:`fork(2)` to ensure accuracy. Patch by Noam Cohen.
|
|
@ -1,2 +0,0 @@
|
|||
Raise :exc:`ValueError` when constants ``True``, ``False`` or ``None`` are
|
||||
used as an identifier after NFKC normalization.
|
|
@ -1,2 +0,0 @@
|
|||
Inconsistent indentation in user input crashed the new REPL when syntax
|
||||
highlighting was active. This is now fixed.
|
|
@ -1 +0,0 @@
|
|||
:meth:`~dict.fromkeys` no longer loops forever when adding a small set of keys to a large base dict. Patch by Angela Liss.
|
|
@ -1,2 +0,0 @@
|
|||
Fix bug where assigning to the :attr:`~type.__annotations__` attributes of
|
||||
classes defined under ``from __future__ import annotations`` had no effect.
|
|
@ -1 +0,0 @@
|
|||
Fix hashtable in dict can be bigger than intended in some situations.
|
|
@ -1,2 +0,0 @@
|
|||
Fix :func:`sys.remote_exec` for non-ASCII paths in non-UTF-8 locales and
|
||||
non-UTF-8 paths in UTF-8 locales.
|
|
@ -1,2 +0,0 @@
|
|||
Fix :exc:`SyntaxError` regression in :keyword:`except` parsing after
|
||||
:gh:`123440`.
|
|
@ -1,2 +0,0 @@
|
|||
Fix a use-after-free bug that occurs when an imported module isn't
|
||||
in :data:`sys.modules` after its initial import. Patch by Nico-Posada.
|
|
@ -1,2 +0,0 @@
|
|||
Fix crash when calling :func:`next` on an exhausted template string iterator.
|
||||
Patch by Jelle Zijlstra.
|
|
@ -1 +0,0 @@
|
|||
Fix coloring of double braces in f-strings and t-strings in the :term:`REPL`.
|
|
@ -1,2 +0,0 @@
|
|||
When auto-completing an import in the :term:`REPL`, finding no candidates
|
||||
now issues no suggestion, rather than suggestions from the current namespace.
|
|
@ -1,3 +0,0 @@
|
|||
Fixes an edge case where PyREPL improperly threw an error when Python is
|
||||
invoked on a read only filesystem while trying to write history file
|
||||
entries.
|
|
@ -1,3 +0,0 @@
|
|||
Remove special-casing for C stack depth limits for WASI. Due to
|
||||
WebAssembly's built-in stack protection this does not pose a security
|
||||
concern.
|
|
@ -1,3 +0,0 @@
|
|||
PyREPL interactive shell no longer starts with ``__package__`` and
|
||||
``__file__`` global names set to ``_pyrepl`` package internals. Contributed
|
||||
by Yuichiro Tachibana.
|
|
@ -1 +0,0 @@
|
|||
Fix :exc:`RuntimeError` when using a not-started :class:`threading.Thread` after calling :func:`os.fork`
|
|
@ -1 +0,0 @@
|
|||
Improve Zip file validation false positive rate in :func:`zipfile.is_zipfile`.
|
|
@ -1,3 +0,0 @@
|
|||
Fix :class:`html.parser.HTMLParser` to not unescape character entities in
|
||||
attribute values if they are followed by an ASCII alphanumeric or an equals
|
||||
sign.
|
|
@ -1,2 +0,0 @@
|
|||
:meth:`html.parser.HTMLParser.close` no longer loses data when the
|
||||
``<script>`` tag is not closed. Patch by Waylan Limberg.
|
|
@ -1 +0,0 @@
|
|||
Fix aliases for ``iso8859_8`` encoding. Patch by Dave Goncalves.
|
|
@ -1 +0,0 @@
|
|||
:data:`functools.Placeholder` cannot be passed to :func:`functools.partial` as a keyword argument.
|
|
@ -1,2 +0,0 @@
|
|||
Ignore log messages generated during handling of log messages, to avoid
|
||||
deadlock or infinite recursion.
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`xml.etree.ElementTree`: Fix a crash in :meth:`Element.__deepcopy__
|
||||
<object.__deepcopy__>` when the element is concurrently mutated.
|
||||
Patch by Bénédikt Tran.
|
|
@ -1,4 +0,0 @@
|
|||
``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.
|
|
@ -1,2 +0,0 @@
|
|||
Avoid accessing ``__annotations__`` unnecessarily in
|
||||
:func:`inspect.signature`.
|
|
@ -1,2 +0,0 @@
|
|||
Fix dot commands with trailing spaces are mistaken for multi-line SQL
|
||||
statements in the sqlite3 command-line interface.
|
|
@ -1,2 +0,0 @@
|
|||
Support t-strings (:pep:`750`) in :mod:`annotationlib`. Patch by Jelle
|
||||
Zijlstra.
|
|
@ -1,4 +0,0 @@
|
|||
Improve unparsing of t-strings in :func:`ast.unparse` and ``from __future__
|
||||
import annotations``. Empty t-strings now round-trip correctly and
|
||||
formatting in interpolations is preserved.
|
||||
Patch by Jelle Zijlstra.
|
|
@ -1,3 +0,0 @@
|
|||
Fix bug where :class:`typing.TypedDict` classes defined under ``from
|
||||
__future__ import annotations`` and inheriting from another ``TypedDict``
|
||||
had an incorrect ``__annotations__`` attribute.
|
|
@ -1,2 +0,0 @@
|
|||
Speedup pasting in ``PyREPL`` on Windows in a legacy console. Patch by Chris
|
||||
Eibl.
|
|
@ -1,2 +0,0 @@
|
|||
Fix handling of invalid markup declarations in
|
||||
:class:`html.parser.HTMLParser`.
|
|
@ -1,3 +0,0 @@
|
|||
Fix bug where :func:`annotationlib.get_annotations` would return the wrong
|
||||
result for certain classes that are part of a class hierarchy where ``from
|
||||
__future__ import annotations`` is used.
|
|
@ -1,3 +0,0 @@
|
|||
Fix bug with applying :func:`copy.replace` to :mod:`ast` objects. Attributes
|
||||
that default to ``None`` were incorrectly treated as required for manually
|
||||
created AST nodes.
|
|
@ -1 +0,0 @@
|
|||
Fixed a race in :func:`functools.lru_cache` under free-threading.
|
|
@ -1,7 +0,0 @@
|
|||
Fix :class:`argparse.ArgumentParser` with the *formatter_class* argument.
|
||||
Fix TypeError when *formatter_class* is a custom subclass of
|
||||
:class:`!HelpFormatter`.
|
||||
Fix TypeError when *formatter_class* is not a subclass of
|
||||
:class:`!HelpFormatter` and non-standard *prefix_char* is used.
|
||||
Fix support of colorizing when *formatter_class* is not a subclass of
|
||||
:class:`!HelpFormatter`.
|
|
@ -1 +0,0 @@
|
|||
Make the private class ``typing._UnionGenericAlias`` hashable.
|
|
@ -1,3 +0,0 @@
|
|||
Simplify and improve :func:`typing.evaluate_forward_ref`. It now no longer
|
||||
raises errors on certain invalid types. In several situations, it is now
|
||||
able to evaluate forward references that were previously unsupported.
|
|
@ -1,3 +0,0 @@
|
|||
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.
|
|
@ -1,2 +0,0 @@
|
|||
Make :class:`!string.templatelib.Template` and
|
||||
:class:`!string.templatelib.Interpolation` generic.
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`ipaddress`: fix collisions in :meth:`~object.__hash__` for
|
||||
:class:`~ipaddress.IPv4Network` and :class:`~ipaddress.IPv6Network`
|
||||
objects.
|
|
@ -1,6 +0,0 @@
|
|||
On POSIX-compliant systems, :func:`!multiprocessing.util.get_temp_dir` now
|
||||
ignores :envvar:`TMPDIR` (and similar environment variables) if the path
|
||||
length of ``AF_UNIX`` socket files exceeds the platform-specific maximum
|
||||
length when using the :ref:`forkserver
|
||||
<multiprocessing-start-method-forkserver>` start method. Patch by Bénédikt
|
||||
Tran.
|
|
@ -1,2 +0,0 @@
|
|||
Fix handling paths that end with a percent-encoded slash (``%2f`` or
|
||||
``%2F``) in :class:`http.server.SimpleHTTPRequestHandler`.
|
|
@ -1,3 +0,0 @@
|
|||
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.
|
|
@ -1 +0,0 @@
|
|||
Fix interaction of the new :term:`REPL` and :option:`-X showrefcount <-X>` command line option.
|
|
@ -1,2 +0,0 @@
|
|||
The :mod:`tarfile` module now handles :exc:`UnicodeEncodeError` in the same
|
||||
way as :exc:`OSError` when cannot extract a member.
|
|
@ -1,3 +0,0 @@
|
|||
Emit :exc:`RuntimeWarning` in the Python implementation of :mod:`io` when
|
||||
the :term:`file-like object <file object>` is not closed explicitly in the
|
||||
presence of multiple I/O layers.
|
|
@ -1,2 +0,0 @@
|
|||
Remove import of C implementation of :class:`io.FileIO` from Python
|
||||
implementation which has its own implementation
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`http.server`: Fix IPv6 address binding and
|
||||
:option:`--directory <http.server --directory>` handling when using HTTPS.
|
|
@ -1,2 +0,0 @@
|
|||
Fixed :exc:`UnboundLocalError` that could occur during :mod:`email` header
|
||||
parsing if an expected trailing delimiter is missing in some contexts.
|
|
@ -1,2 +0,0 @@
|
|||
Updated tab completion on REPL to include builtin modules. Contributed by
|
||||
Tom Wang, Hunter Young
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`curses`: The :meth:`curses.window.instr` and :meth:`curses.window.getstr`
|
||||
methods now allocate their internal buffer on the heap instead of the stack;
|
||||
in addition, the max buffer size is increased from 1023 to 2047.
|
|
@ -1,3 +0,0 @@
|
|||
Fixed asyncio memory leak in cancelled shield tasks. For shielded tasks
|
||||
where the shield was cancelled, log potential exceptions through the
|
||||
exception handler. Contributed by Christian Harries.
|
|
@ -1 +0,0 @@
|
|||
Fix the :meth:`threading.RLock.locked` method.
|
|
@ -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 +0,0 @@
|
|||
Fix :mod:`asyncio` to not close subprocess pipes which would otherwise error out when the event loop is already closed.
|
|
@ -1 +0,0 @@
|
|||
Converted ``asyncio.tools.CycleFoundException`` from dataclass to a regular exception type.
|
|
@ -1 +0,0 @@
|
|||
Ensure :mod:`pdb` remote debugging script is readable by remote Python process.
|
|
@ -1 +0,0 @@
|
|||
Fix tokenize.untokenize() round-trip errors related to t-strings braces escaping
|
|
@ -1,2 +0,0 @@
|
|||
:func:`multiprocessing.freeze_support` now checks for work on any "spawn"
|
||||
start method platform rather than only on Windows.
|
|
@ -1,3 +0,0 @@
|
|||
If possible, ensure that :func:`uuid.getnode` returns the same result even
|
||||
across different processes. Previously, the result was constant only within
|
||||
the same process. Patch by Bénédikt Tran.
|
|
@ -1,2 +0,0 @@
|
|||
Short-circuit the processing of long IPv6 addresses early in :mod:`ipaddress` to prevent excessive
|
||||
memory consumption and a minor denial-of-service.
|
|
@ -1,2 +0,0 @@
|
|||
Fix use-after-free in the "unicode-escape" decoder with a non-"strict" error
|
||||
handler.
|
|
@ -1,2 +0,0 @@
|
|||
Fix ``TestPyReplAutoindent.test_auto_indent_default()`` doesn't run
|
||||
``input_code``.
|
|
@ -1 +0,0 @@
|
|||
Fixed test case ``test.test_annotationlib.TestStringFormat.test_displays`` which ensures proper handling of complex data structures (lists, sets, dictionaries, and tuples) in string annotations.
|
|
@ -1,3 +0,0 @@
|
|||
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.
|
|
@ -1 +0,0 @@
|
|||
:term:`REPL` import autocomplete only suggests private modules when explicitly specified.
|
|
@ -1,2 +0,0 @@
|
|||
Ensures packages are not accidentally bundled into the traditional
|
||||
installer.
|
|
@ -1,6 +0,0 @@
|
|||
Reverts the change to generate different :file:`pyconfig.h` files based on
|
||||
compiler settings, as it was frequently causing extension builds to break.
|
||||
In particular, the ``Py_GIL_DISABLED`` preprocessor variable must now always
|
||||
be defined explicitly when compiling for the experimental free-threaded
|
||||
runtime. The :func:`sysconfig.get_config_var` function can be used to
|
||||
determine whether the current runtime was compiled with that flag or not.
|
|
@ -1 +0,0 @@
|
|||
Make :func:`os.path.realpath` ignore Windows error 1005 when in non-strict mode.
|
|
@ -1,2 +0,0 @@
|
|||
Fix a race in internal calls into WMI that can result in an "invalid handle"
|
||||
exception under high load. Patch by Chris Eibl.
|
|
@ -1,4 +1,4 @@
|
|||
This is Python version 3.14.0 beta 1
|
||||
This is Python version 3.14.0 beta 2
|
||||
====================================
|
||||
|
||||
.. image:: https://github.com/python/cpython/actions/workflows/build.yml/badge.svg?branch=main&event=push
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue