Python 3.15.0b1

This commit is contained in:
Hugo van Kemenade 2026-05-07 16:26:06 +03:00
parent 299cf3c497
commit f31a89bb90
251 changed files with 2424 additions and 627 deletions

View file

@ -1375,7 +1375,7 @@ Tracebacks
The caller does not need to hold an :term:`attached thread state`, nor does
*tstate* need to be attached.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: const char* PyUnstable_DumpTracebackThreads(int fd, PyInterpreterState *interp, PyThreadState *current_tstate, Py_ssize_t max_threads)
@ -1411,4 +1411,4 @@ Tracebacks
another thread deletes its :term:`thread state` while this function is being
called, the process will likely crash.
.. versionadded:: next
.. versionadded:: 3.15

View file

@ -414,7 +414,7 @@ In some cases, failure is not distinguishable from a successful ``NULL`` result.
See :ref:`duringgc-functions` for common information.
.. versionadded:: next
.. versionadded:: 3.15
.. seealso::
@ -433,7 +433,7 @@ In some cases, failure is not distinguishable from a successful ``NULL`` result.
The reference is valid for the duration
of the :c:member:`!tp_traverse` handler call.
.. versionadded:: next
.. versionadded:: 3.15
.. seealso:: :c:func:`PyType_GetBaseByToken`
@ -445,7 +445,7 @@ In some cases, failure is not distinguishable from a successful ``NULL`` result.
These functions return a :term:`borrowed reference`, which is
valid for the duration of the :c:member:`!tp_traverse` handler call.
.. versionadded:: next
.. versionadded:: 3.15
.. seealso::

View file

@ -410,7 +410,7 @@ Initializing and finalizing the interpreter
(zero) if not. After :c:func:`Py_FinalizeEx` is called, this returns false until
:c:func:`Py_Initialize` is called again.
.. versionchanged:: next
.. versionchanged:: 3.15
This function no longer returns true until initialization has fully
completed, including import of the :mod:`site` module. Previously it
could return true while :c:func:`Py_Initialize` was still running.
@ -631,7 +631,7 @@ it possible to avoid these issues by temporarily preventing finalization:
automatically after all guards are released: it requires an explicit
:c:func:`Py_EndInterpreter` call.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyInterpreterGuard *PyInterpreterGuard_FromCurrent(void)
@ -671,7 +671,7 @@ it possible to avoid these issues by temporarily preventing finalization:
The caller must hold an :term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyInterpreterGuard *PyInterpreterGuard_FromView(PyInterpreterView *view)
@ -688,7 +688,7 @@ it possible to avoid these issues by temporarily preventing finalization:
The caller does not need to hold an :term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: void PyInterpreterGuard_Close(PyInterpreterGuard *guard)
@ -705,7 +705,7 @@ it possible to avoid these issues by temporarily preventing finalization:
This function cannot fail, and the caller doesn't need to hold an
:term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
.. _interpreter-views:
@ -723,7 +723,7 @@ deleted. This can be done using interpreter views.
This is a thread-safe way to access an interpreter that may have be
finalizing or already destroyed.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyInterpreterView *PyInterpreterView_FromCurrent(void)
@ -738,7 +738,7 @@ deleted. This can be done using interpreter views.
The caller must hold an :term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: void PyInterpreterView_Close(PyInterpreterView *view)
@ -752,7 +752,7 @@ deleted. This can be done using interpreter views.
This function cannot fail, and the caller doesn't need to hold an
:term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyInterpreterView *PyInterpreterView_FromMain(void)
@ -774,7 +774,7 @@ deleted. This can be done using interpreter views.
The caller does not need to hold an :term:`attached thread state`.
.. versionadded:: next
.. versionadded:: 3.15
Process-wide parameters

View file

@ -795,7 +795,7 @@ remove it.
:c:macro:`Py_slot_subslots`, except it specifies an array of
:c:type:`PyModuleDef_Slot` structures.
.. versionadded:: next
.. versionadded:: 3.15
.. _moduledef-dynamic:

View file

@ -10,14 +10,14 @@ Sentinel objects
This instance of :c:type:`PyTypeObject` represents the Python
:class:`sentinel` type. This is the same object as :class:`sentinel`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: int PySentinel_Check(PyObject *o)
Return true if *o* is a :class:`sentinel` object. The :class:`sentinel` type
does not allow subclasses, so this check is exact.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyObject* PySentinel_New(const char *name, const char *module_name)
@ -32,4 +32,4 @@ Sentinel objects
path matching *name*. Pickle treats *name* as a global variable name
in *module_name* (see :meth:`object.__reduce__`).
.. versionadded:: next
.. versionadded:: 3.15

View file

@ -30,7 +30,7 @@ explicitly marked with :c:macro:`PySlot_STATIC`.
Except when documented otherwise, multiple slots with the same ID
(:c:member:`~PySlot.sl_id`) may not occur in a single slots array.
.. versionadded:: next
.. versionadded:: 3.15
Slot arrays generalize an earlier way of defining objects:
using :c:type:`PyType_Spec` with :c:type:`PyType_Slot` for types, and
@ -125,7 +125,7 @@ Entries of the slots array use the following structure:
Note that the "optionality" only applies to unknown slot IDs.
This flag does not make Python skip invalid values of known slots.
.. versionadded:: next
.. versionadded:: 3.15
Convenience macros
@ -169,7 +169,7 @@ Convenience macros
#define PySlot_STATIC_DATA(NAME, VALUE) \
{.sl_id=NAME, .sl_flags=PySlot_STATIC, .sl_ptr=(VALUE)}
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: PySlot_END
@ -179,7 +179,7 @@ Convenience macros
#define PySlot_END {0}
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: PySlot_PTR(name, value)
PySlot_PTR_STATIC(name, value)
@ -197,7 +197,7 @@ Convenience macros
#define PySlot_PTR_STATIC(NAME, VALUE) \
{NAME, PySlot_INTPTR|Py_SLOT_STATIC, {0}, {(void*)(VALUE)}}
.. versionadded:: next
.. versionadded:: 3.15
.. _pyslot-common-ids:
@ -211,7 +211,7 @@ The following slot IDs may be used in both type and module definitions.
Marks the end of a slots array.
Defined as zero.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_slot_subslots
@ -226,7 +226,7 @@ The following slot IDs may be used in both type and module definitions.
Slot nesting depth is limited to 5 levels.
This restriction may be lifted in the future.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_slot_invalid
@ -237,4 +237,4 @@ The following slot IDs may be used in both type and module definitions.
no effect.
Without the flag, processing a slot with this ID will fail.
.. versionadded:: next
.. versionadded:: 3.15

View file

@ -74,7 +74,7 @@ There are two Stable ABIs:
:term:`free-threaded <free-threaded build>` builds of CPython.
It has stricter API limitations than ``abi3``.
.. versionadded:: next
.. versionadded:: 3.15
``abi3t`` was added in :pep:`803`
@ -170,7 +170,7 @@ both Stable ABIs.
:term:`free-threaded builds <free-threaded build>` of CPython.
See :ref:`above <abi3-compiling>` for common information.
.. versionadded:: next
.. versionadded:: 3.15
Both macros specify a target ABI; the different naming style is due to
backwards compatibility.

View file

@ -296,7 +296,7 @@ Attaching/detaching thread states
Otherwise, if both of the above cases fail, a new thread state is created
for *guard*. It is then attached and marked as owned by ``PyThreadState_Ensure``.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: PyThreadStateToken *PyThreadState_EnsureFromView(PyInterpreterView *view)
@ -308,7 +308,7 @@ Attaching/detaching thread states
be implicitly guarded. The guard will be released upon the corresponding
:c:func:`PyThreadState_Release` call.
.. versionadded:: next
.. versionadded:: 3.15
.. c:function:: void PyThreadState_Release(PyThreadStateToken *token)
@ -335,7 +335,7 @@ Attaching/detaching thread states
attached thread state will be deallocated and deleted upon the internal counter
reaching zero. Otherwise, nothing happens when the counter reaches zero.
.. versionadded:: next
.. versionadded:: 3.15
.. c:type:: PyThreadStateToken

View file

@ -575,7 +575,7 @@ but need extra remarks for use as slots:
array, so that if processing of a later slots fails, error messages
can include the name.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_basicsize
@ -591,7 +591,7 @@ but need extra remarks for use as slots:
Use :c:member:`PyTypeObject.tp_basicsize` instead if needed, but be aware
that a type's size is often considered an implementation detail.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_extra_basicsize
@ -620,7 +620,7 @@ but need extra remarks for use as slots:
This slot may not be used with :c:func:`PyType_GetSlot`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_itemsize
@ -652,7 +652,7 @@ but need extra remarks for use as slots:
This slot may not be used with :c:func:`PyType_GetSlot`.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_flags
@ -668,7 +668,7 @@ but need extra remarks for use as slots:
This slot may not be used with :c:func:`PyType_GetSlot`.
Use :c:func:`PyType_GetFlags` instead.
.. versionadded:: next
.. versionadded:: 3.15
The following slots do not correspond to public fields in the
underlying structures:
@ -691,7 +691,7 @@ underlying structures:
This slot may not be used with :c:func:`PyType_GetSlot`.
Use :c:func:`Py_TYPE` on the type object instead.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_module
@ -711,7 +711,7 @@ underlying structures:
This slot may not be used with :c:func:`PyType_GetSlot`.
Use :c:func:`PyType_GetModule` instead.
.. versionadded:: next
.. versionadded:: 3.15
.. c:macro:: Py_tp_token
@ -760,7 +760,7 @@ underlying structures:
:c:macro:`Py_slot_subslots`, except it specifies an array of
:c:type:`PyType_Slot` structures.
.. versionadded:: next
.. versionadded:: 3.15
Soft-deprecated API

View file

@ -107,7 +107,7 @@ The module defines the following item:
A tuple with all available type codes.
.. versionchanged:: next
.. versionchanged:: 3.15
The type changed from :class:`str` to :class:`tuple`.

View file

@ -168,7 +168,7 @@ Node classes
arguments that were set as attributes of the AST node, even if they did not
match any of the fields of the AST node. These cases now raise a :exc:`TypeError`.
.. deprecated-removed:: next 3.20
.. deprecated-removed:: 3.15 3.20
In the :ref:`grammar above <abstract-grammar>`, the AST node classes that
correspond to production rules with variants (aka "sums") are abstract
@ -2548,7 +2548,7 @@ and classes for traversing abstract syntax trees:
.. versionchanged:: 3.15
Omit optional ``Load()`` values by default.
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *color* parameter.
@ -2608,7 +2608,7 @@ Command-line usage
.. versionadded:: 3.9
.. versionchanged:: next
.. versionchanged:: 3.15
The output is now syntax highlighted by default. This can be
:ref:`controlled using environment variables <using-on-controlling-color>`.

View file

@ -381,7 +381,7 @@ and reliable way to wait for all tasks in the group to finish.
* pass the task group instance or bound :meth:`cancel` method to some other task *before*
opening the task group, allowing remote cancellation
.. versionadded:: next
.. versionadded:: 3.15
Example::

View file

@ -345,7 +345,7 @@ Refer to the documentation of the individual functions for more information.
.. versionadded:: 3.4
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *canonical* parameter.
Single-character final groups are now always rejected as encoding
violations.

View file

@ -756,7 +756,7 @@ The following options are accepted:
By default, today's date is highlighted in color and can be
:ref:`controlled using environment variables <using-on-controlling-color>`.
.. versionchanged:: next
.. versionchanged:: 3.15
By default, the month is now also highlighted in color, and
the days of the week are also in color. This behavior can be
:ref:`controlled using environment variables <using-on-controlling-color>`.

View file

@ -482,7 +482,7 @@ Functions and classes provided:
.. versionadded:: 3.2
.. versionchanged:: next
.. versionchanged:: 3.15
Decorating a generator function, coroutine function, or asynchronous
generator function now keeps the context manager open across iteration
or await. Previously the context manager exited as soon as the
@ -538,7 +538,7 @@ Functions and classes provided:
.. versionadded:: 3.10
.. versionchanged:: next
.. versionchanged:: 3.15
Decorating an asynchronous generator function now keeps the context
manager open across iteration. Previously the context manager exited
as soon as the generator object was created. Synchronous functions

View file

@ -380,7 +380,7 @@ in both C and ``libffi``, the following complex types are available:
- :py:class:`complex`
- ``'Zg'``
.. versionchanged:: next
.. versionchanged:: 3.15
The :py:attr:`~_SimpleCData._type_` types ``F``, ``D`` and ``G`` have been
replaced with ``Zf``, ``Zd`` and ``Zg``.

View file

@ -67,7 +67,7 @@ Dumping the traceback
.. versionchanged:: 3.5
Added support for passing file descriptor to this function.
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *max_threads* keyword argument.
@ -140,7 +140,7 @@ Fault handler state
.. versionchanged:: 3.14
The dump now displays the C stack trace if *c_stack* is true.
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *max_threads* keyword argument.
.. function:: disable()
@ -178,7 +178,7 @@ Dumping the tracebacks after a timeout
.. versionchanged:: 3.7
This function is now always available.
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *max_threads* keyword argument.
.. function:: cancel_dump_traceback_later()
@ -204,7 +204,7 @@ Dumping the traceback on a user signal
.. versionchanged:: 3.5
Added support for passing file descriptor to this function.
.. versionchanged:: next
.. versionchanged:: 3.15
Added the *max_threads* keyword argument.
.. function:: unregister(signum)

View file

@ -1881,7 +1881,7 @@ are always available. They are listed here in alphabetical order.
The name of the module where the sentinel was created.
.. versionadded:: next
.. versionadded:: 3.15
.. class:: slice(stop, /)

View file

@ -379,7 +379,7 @@ instantiation, of which this module provides three different variants:
.. versionchanged:: 3.9
The *directory* parameter accepts a :term:`path-like object`.
.. versionchanged:: next
.. versionchanged:: 3.15
Added *extra_response_headers* parameter.
A lot of the work, such as parsing the request, is done by the base class
@ -400,7 +400,7 @@ instantiation, of which this module provides three different variants:
cannot be guessed from the file extension of the requested URL.
By default, it is set to ``'application/octet-stream'``.
.. versionadded:: next
.. versionadded:: 3.15
.. attribute:: extensions_map
@ -562,7 +562,7 @@ The following options are accepted:
python -m http.server --content-type text/html
.. versionadded:: next
.. versionadded:: 3.15
.. option:: --tls-cert
@ -604,7 +604,7 @@ The following options are accepted:
headers. Headers that are sent automatically by the server (for instance
Content-Type) will not be overwritten by the server.
.. versionadded:: next
.. versionadded:: 3.15
.. _http.server-security:

View file

@ -702,7 +702,7 @@ The following attributes are defined on instances of :class:`IMAP4`:
interface. The caller is responsible to ensure that the current file is
closed before changing it.
.. deprecated-removed:: next 3.19
.. deprecated-removed:: 3.15 3.19
.. _imap4-example:

View file

@ -1244,7 +1244,7 @@ Classes and functions
order of keyword-only parameters as of version 3.7, although in practice
this order had always been preserved in Python 3.
.. versionchanged:: next
.. versionchanged:: 3.15
The *annotation_format* parameter was added.
@ -1850,7 +1850,7 @@ appending a colon and the qualified name of the target object.
Print information about the specified object rather than the source code
.. versionchanged:: next
.. versionchanged:: 3.15
The ``--details`` option now supports basic introspection for modules
without available source code and indicates when modules are frozen.

View file

@ -79,7 +79,7 @@ Command-line options
A pickle file to read, or ``-`` to indicate reading from standard input.
.. versionadded:: next
.. versionadded:: 3.15
Output is in color by default and can be
:ref:`controlled using environment variables <using-on-controlling-color>`.

View file

@ -209,7 +209,7 @@ PrettyPrinter objects
.. versionchanged:: 3.11
No longer attempts to write to :data:`!sys.stdout` if it is ``None``.
.. versionchanged:: next
.. versionchanged:: 3.15
Changed default *indent* from 1 to 4
and default *width* from 80 to 88.
The default ``compact=False`` layout is now similar to

View file

@ -96,7 +96,7 @@ or tab) are executed with :func:`exec`.
The :file:`.pth` files are now decoded by UTF-8 at first and then by the
:term:`locale encoding` if it fails.
.. versionchanged:: next
.. versionchanged:: 3.15
:file:`.pth` file lines starting with ``import`` are deprecated. During
the deprecation period, such lines are still executed (except in the case
@ -110,7 +110,7 @@ or tab) are executed with :func:`exec`.
file. Each error is reported and the remaining lines continue to be
processed.
.. deprecated-removed:: next 3.20
.. deprecated-removed:: 3.15 3.20
Decoding :file:`{name}.pth` files in any encoding other than ``utf-8-sig``
is deprecated in Python 3.15, and support for decoding from the locale
@ -126,7 +126,7 @@ or tab) are executed with :func:`exec`.
Startup entry points (:file:`.start` files)
-------------------------------------------
.. versionadded:: next
.. versionadded:: 3.15
A startup entry point file is a file whose name has the form
:file:`{name}.start` and exists in one of the site-packages directories
@ -371,7 +371,7 @@ Module contents
startup data found in those files, so that you can process them explicitly
(this is typically used by the :func:`main` function).
.. versionchanged:: next
.. versionchanged:: 3.15
Also processes :file:`.start` files. See :ref:`site-start-files`.
All :file:`.pth` and :file:`.start` files are now read and

View file

@ -284,7 +284,7 @@ platform-dependent.
.. versionchanged:: 3.14
Added support for the ``'F'`` and ``'D'`` formats.
.. versionchanged:: next
.. versionchanged:: 3.15
Added support for the ``'Zf'`` and ``'Zd'`` formats.
.. seealso::

View file

@ -1502,7 +1502,7 @@ of the derived iterators.
In this example, each number is printed exactly once, but the work is shared
between the two threads.
.. versionadded:: next
.. versionadded:: 3.15
.. function:: synchronized_iterator(func)
@ -1540,7 +1540,7 @@ of the derived iterators.
The returned wrapper preserves the metadata of *func*, such as its name and
wrapped function reference.
.. versionadded:: next
.. versionadded:: 3.15
.. function:: concurrent_tee(iterable, n=2)
@ -1591,4 +1591,4 @@ of the derived iterators.
In this example, both consumer threads see the full sequence of squares
from a single generator expression.
.. versionadded:: next
.. versionadded:: 3.15

View file

@ -279,7 +279,7 @@ most cases. You can use :func:`time.process_time` to measure CPU time.
baseline overhead can be measured by invoking the program without arguments,
and it might differ between Python versions.
.. versionadded:: next
.. versionadded:: 3.15
Output is in color by default and can be
:ref:`controlled using environment variables <using-on-controlling-color>`.

View file

@ -173,7 +173,7 @@ The following options are accepted:
If :file:`filename.py` is specified its contents are tokenized to stdout.
Otherwise, tokenization is performed on stdin.
.. versionadded:: next
.. versionadded:: 3.15
Output is in color by default and can be
:ref:`controlled using environment variables <using-on-controlling-color>`.

View file

@ -2970,7 +2970,7 @@ types.
.. versionchanged:: 3.13
Support for the :data:`ReadOnly` qualifier was added. See :pep:`705`.
.. versionchanged:: next
.. versionchanged:: 3.15
Support for the *closed* and *extra_items* class arguments was added. See :pep:`728`.
@ -3476,7 +3476,7 @@ Functions and decorators
detail, and the exact set of standard library classes that are
disjoint bases at runtime may change in future versions of Python.
.. versionadded:: next
.. versionadded:: 3.15
.. decorator:: type_check_only

View file

@ -1110,7 +1110,7 @@ Test cases
.. versionchanged:: 3.3
Added the *msg* keyword argument when used as a context manager.
.. versionchanged:: next
.. versionchanged:: 3.15
Warnings that do not match the specified category are no longer
swallowed.
Nested context managers are now supported.
@ -1144,7 +1144,7 @@ Test cases
.. versionchanged:: 3.3
Added the *msg* keyword argument when used as a context manager.
.. versionchanged:: next
.. versionchanged:: 3.15
Warnings that do not match the specified category or regex are
no longer swallowed.
Nested context managers are now supported.

View file

@ -223,11 +223,11 @@ Notes:
.. versionchanged:: 3.13
Support for iOS has been added.
.. versionadded:: next
.. versionadded:: 3.15
:class:`!MacOS` has been added as a replacement for :class:`!MacOSXOSAScript`,
opening browsers via :program:`/usr/bin/open` instead of :program:`osascript`.
.. deprecated-removed:: next 3.17
.. deprecated-removed:: 3.15 3.17
:class:`!MacOSXOSAScript` is deprecated in favour of :class:`!MacOS`.
Using :program:`/usr/bin/open` instead of :program:`osascript` is a
security and usability improvement: :program:`osascript` may be blocked

View file

@ -54,7 +54,7 @@ This module also defines utility functions.
"!", "?", and "=" are forbidden.
The name cannot start with a digit or a character like "-", ".", and "·".
.. versionadded:: next
.. versionadded:: 3.15
.. function:: is_valid_text(data)
@ -66,7 +66,7 @@ This module also defines utility functions.
characters (excluding TAB, CR and LF), surrogate characters and special
Unicode characters U+FFFE and U+FFFF.
.. versionadded:: next
.. versionadded:: 3.15
.. _xml-security:

View file

@ -662,7 +662,7 @@ Miscellaneous options
initialization. Python needs to be :ref:`built in debug mode <debug-build>`
for this option to exist. See also :envvar:`PYTHON_PRESITE`.
.. versionchanged:: next
.. versionchanged:: 3.15
Accept also ``module:func`` entry point format.
.. versionadded:: 3.13
@ -1462,7 +1462,7 @@ Debug-mode variables
Needs Python configured with the :option:`--with-pydebug` build option.
.. versionchanged:: next
.. versionchanged:: 3.15
Accept also ``module:func`` entry point format.
.. versionadded:: 3.13

View file

@ -1052,7 +1052,7 @@ Linker options
The default (when ``-enable-shared`` is used) is to link the Python
interpreter against the built shared library.
.. versionadded:: next
.. versionadded:: 3.15
Libraries options

View file

@ -23,11 +23,11 @@
#define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 15
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 8
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_BETA
#define PY_RELEASE_SERIAL 1
/* Version as a string */
#define PY_VERSION "3.15.0a8+"
#define PY_VERSION "3.15.0b1"
/*--end constants--*/

View file

@ -1,4 +1,4 @@
# Autogenerated by Sphinx on Tue Apr 7 14:21:08 2026
# Autogenerated by Sphinx on Thu May 7 16:26:23 2026
# as part of the release process.
module_docs = {

View file

@ -1,4 +1,4 @@
# Autogenerated by Sphinx on Tue Apr 7 14:21:08 2026
# Autogenerated by Sphinx on Thu May 7 16:26:23 2026
# as part of the release process.
topics = {
@ -2572,7 +2572,7 @@ A literal pattern corresponds to most literals in Python. Syntax:
| "None"
| "True"
| "False"
signed_number: ["-"] NUMBER
signed_number: ["+" | "-"] NUMBER
The rule "strings" and the token "NUMBER" are defined in the standard
Python grammar. Triple-quoted strings are supported. Raw strings and
@ -6841,8 +6841,9 @@ steps:
1. find a module, loading and initializing it if necessary
2. define a name or names in the local namespace for the scope where
the "import" statement occurs.
2. define a name or names in the current namespace for the scope where
the "import" statement occurs, just as an assignment statement
would (including "global" and "nonlocal" semantics).
When the statement contains multiple clauses (separated by commas) the
two steps are carried out separately for each clause, just as though
@ -6887,7 +6888,7 @@ The "from" form uses a slightly more complex process:
3. if the attribute is not found, "ImportError" is raised.
4. otherwise, a reference to that value is stored in the local
4. otherwise, a reference to that value is stored in the current
namespace, using the name in the "as" clause if it is present,
otherwise using the attribute name
@ -6984,6 +6985,53 @@ See **PEP 810** for the full specification of lazy imports.
Added in version 3.15.
Compatibility via "__lazy_modules__"
------------------------------------
As an alternative to using the "lazy" keyword, a module can opt into
lazy loading for specific imports by defining a module-level
"__lazy_modules__" variable. When present, it must be a container of
fully qualified module name strings. Any regular (non-"lazy")
"import" statement at module scope whose target appears in
"__lazy_modules__" is treated as a lazy import, exactly as if the
"lazy" keyword had been used.
This provides a way to enable lazy loading for specific dependencies
without changing individual "import" statements. This is useful when
supporting Python versions older than 3.15 while using lazy imports in
3.15+:
__lazy_modules__ = ["json", "pathlib"]
import json # loaded lazily (name is in __lazy_modules__)
import os # loaded eagerly (name not in __lazy_modules__)
import pathlib # loaded lazily
Relative imports are resolved to their absolute name before the
lookup, so "__lazy_modules__" must always contain fully qualified
module names.
For "from"-style imports, the relevant name is the module following
"from", not the names of its members:
# In mypackage/mymodule.py
__lazy_modules__ = ["mypackage", "mypackage.sub.utils"]
from . import helper # loaded lazily: . resolves to mypackage
from .sub.utils import func # loaded lazily: .sub.utils resolves to mypackage.sub.utils
import json # loaded eagerly (not in __lazy_modules__)
Imports inside functions, class bodies, or "try"/"except"/"finally"
blocks are always eager, regardless of "__lazy_modules__".
Setting "-X lazy_imports=none" (or the "PYTHON_LAZY_IMPORTS"
environment variable to "none") overrides "__lazy_modules__" and
forces all imports to be eager.
Added in version 3.15.
Future statements
=================
@ -11035,8 +11083,18 @@ str.strip(chars=None, /)
str.swapcase()
Return a copy of the string with uppercase characters converted to
lowercase and vice versa. Note that it is not necessarily true that
"s.swapcase().swapcase() == s".
lowercase and vice versa. For example:
>>> 'Hello World'.swapcase()
'hELLO wORLD'
Note that it is not necessarily true that "s.swapcase().swapcase()
== s". For example:
>>> 'straße'.swapcase().swapcase()
'strasse'
See also "str.lower()" and "str.upper()".
str.title()
@ -12871,6 +12929,19 @@ module.__annotate__
Added in version 3.14.
module.__lazy_modules__
A container (an object implementing "__contains__()") of fully
qualified module name strings. When defined at module scope, any
regular "import" statement in that module whose target module name
appears in this container is treated as a lazy import, as if the
"lazy" keyword had been used. Imports inside functions, class
bodies, or "try"/"except"/"finally" blocks are unaffected.
See Compatibility via __lazy_modules__ for details and examples.
Added in version 3.15.
Module dictionaries
-------------------
@ -13167,12 +13238,6 @@ Special read-only attributes
+----------------------------------------------------+----------------------------------------------------+
| codeobject.co_firstlineno | The line number of the first line of the function |
+----------------------------------------------------+----------------------------------------------------+
| codeobject.co_lnotab | A string encoding the mapping from *bytecode* |
| | offsets to line numbers. For details, see the |
| | source code of the interpreter. Deprecated since |
| | version 3.12: This attribute of code objects is |
| | deprecated, and may be removed in Python 3.15. |
+----------------------------------------------------+----------------------------------------------------+
| codeobject.co_stacksize | The required stack size of the code object |
+----------------------------------------------------+----------------------------------------------------+
| codeobject.co_flags | An "integer" encoding a number of flags for the |

2256
Misc/NEWS.d/3.15.0b1.rst Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,8 +0,0 @@
Add a new ``./configure`` option
:option:`--enable-static-libpython-for-interpreter` which, when used
with :option:`--enable-shared`, continues to build the shared library
but does not use it for the interpreter. Instead, libpython is
statically linked into the interpreter, as if :option:`--enable-shared`
had not been used. This allows you to do a single build and get a Python
interpreter binary that does not use a shared library but also get a
shared library for use by other programs.

View file

@ -1 +0,0 @@
Allow for custom LLVM path using ``LLVM_TOOLS_INSTALL_DIR`` during JIT build.

View file

@ -1,3 +0,0 @@
Fix static module builds on non-WASI targets by linking HACL dependencies as
static libraries when ``MODULE_BUILDTYPE=static``, preventing duplicate
``_Py_LibHacl_*`` symbol errors at link time.

View file

@ -1 +0,0 @@
The Android build tools have been moved to the Platforms folder.

View file

@ -1 +0,0 @@
Fixed compilation of :file:`Python/pystrhex.c` with older clang versions.

View file

@ -1 +0,0 @@
Use ``Py_GCC_ATTRIBUTE(unused)`` for stop_tracing label.

View file

@ -1,6 +0,0 @@
No longer use the ``gcc -fprofile-update=atomic`` flag on i686. The flag has
been added to fix a random GCC internal error on PGO build (:gh:`145801`)
caused by corruption of profile data (.gcda files). The problem is that it
makes the PGO build way slower (up to 47x slower) on i686. Since the GCC
internal error was not seen on i686 so far, don't use
``-fprofile-update=atomic`` on i686 anymore. Patch by Victor Stinner.

View file

@ -1 +0,0 @@
Errors during the PGO training job on Windows are no longer ignored, and a non-zero return code will cause the build to fail.

View file

@ -1,2 +0,0 @@
Block Apple Clang from being used to build the JIT as it ships without
required LLVM tools.

View file

@ -1,4 +0,0 @@
Windows free-threaded builds now output to a different default path with
default filenames, for example, ``PCbuild/amd64t/python.exe`` rather than
``PCbuild/amd64/python3.15t.exe``. The ``PC/layout`` script has been updated
to ensure compatibility of generated layouts.

View file

@ -1 +0,0 @@
Update to WASI SDK 33.

View file

@ -1,2 +0,0 @@
Avoid possible broken macOS framework install names when DESTDIR is
specified during builds.

View file

@ -1,2 +0,0 @@
Avoid unnecessary JIT-related rebuilds during ``make install`` after
``--enable-optimizations`` builds.

View file

@ -1,9 +0,0 @@
Add functions that are guaranteed to be safe for use in
:c:member:`~PyTypeObject.tp_traverse` handlers:
:c:func:`PyObject_GetTypeData_DuringGC`,
:c:func:`PyObject_GetItemData_DuringGC`,
:c:func:`PyType_GetModuleState_DuringGC`,
:c:func:`PyModule_GetState_DuringGC`, :c:func:`PyModule_GetToken_DuringGC`,
:c:func:`PyType_GetBaseByToken_DuringGC`,
:c:func:`PyType_GetModule_DuringGC`,
:c:func:`PyType_GetModuleByToken_DuringGC`.

View file

@ -1,2 +0,0 @@
Add :c:func:`PyObject_CallFinalizerFromDealloc` function to the limited C API.
Patch by Victor Stinner.

View file

@ -1,3 +0,0 @@
:c:func:`Py_IsInitialized` no longer returns true until initialization has
fully completed, including import of the :mod:`site` module. The underlying
runtime flags now use atomic operations.

View file

@ -1 +0,0 @@
Implement :pep:`803` -- ``abi3t``: Stable ABI for Free-Threaded Builds.

View file

@ -1,3 +0,0 @@
Rename ``_Py_DumpTraceback`` and ``_Py_DumpTracebackThreads`` to
:c:func:`PyUnstable_DumpTraceback` and
:c:func:`PyUnstable_DumpTracebackThreads`.

View file

@ -1,2 +0,0 @@
Using :c:macro:`Py_LIMITED_API` on a non-Windows free-threaded build no
longer needs an extra :c:macro:`Py_GIL_DISABLED`.

View file

@ -1 +0,0 @@
Implement :pep:`820`: Unified slot system for the C API.

View file

@ -1 +0,0 @@
Implement :pep:`788`.

View file

@ -1,5 +0,0 @@
:c:type:`PyType_WatchCallback` callbacks registered via
:c:func:`PyType_AddWatcher` are now also invoked when a watched heap type is
deallocated. Previously, type watchers were only notified of modifications,
which could cause stale references when a type was freed and its address was
reused.

View file

@ -1,2 +0,0 @@
:c:type:`PyCriticalSection` and related functions are added to the Stable
ABI.

View file

@ -1,3 +0,0 @@
Specialize ``BINARY_OP`` for concatenation of lists and tuples, and
propagate the result type through ``_BINARY_OP_EXTEND`` in the tier 2
optimizer so that follow-up type guards can be eliminated.

View file

@ -1,2 +0,0 @@
Removed deprecated in :pep:`626` since Python 3.12
:attr:`!codeobject.co_lnotab` from :class:`types.CodeType`.

View file

@ -1 +0,0 @@
Add support for :data:`!socket.SO_PASSRIGHTS` on Linux.

View file

@ -1 +0,0 @@
Fix :exc:`SystemError` when searching ELF Files in :func:`sys.remote_exec`.

View file

@ -1,4 +0,0 @@
:mod:`ast`: The constructors of AST nodes now raise a :exc:`TypeError` when
a required argument is omitted or when a keyword argument that does not map to
a field on the AST node is passed. These cases had previously raised a
:exc:`DeprecationWarning` since Python 3.13. Patch by Brian Schubert.

View file

@ -1,2 +0,0 @@
Fix the ``__qualname__`` attribute of ``__annotate__`` functions on
functions.

View file

@ -1,2 +0,0 @@
Support for creating instances of abstract AST nodes from the :mod:`ast` module
is deprecated and scheduled for removal in Python 3.20. Patch by Brian Schubert.

View file

@ -1,2 +0,0 @@
Restore ``function__entry`` and ``function__return`` DTrace/SystemTap probes
that were broken since Python 3.11.

View file

@ -1,3 +0,0 @@
Reorder function annotations so positional-only arguments are returned
before other arguments. This fixes how :func:`functools.singledispatch`
registers functions with positional-only arguments.

View file

@ -1 +0,0 @@
Optimize and eliminate redundant ref-counting for ``MAKE_FUNCTION`` in the JIT.

View file

@ -1,4 +0,0 @@
The :mod:`encodings` is now partially frozen, including
the ``aliases`` and ``utf_8`` submodules.
The :mod:`linecache` is now frozen.

View file

@ -1 +0,0 @@
The unstable API _PyInterpreterState_SetEvalFrameFunc has a companion function _PyInterpreterState_SetEvalFrameAllowSpecialization to specify if specialization should be allowed. When this option is set to 1 the specializer will turn Python -> Python calls into specialized opcodes which the replacement interpreter loop can choose to respect and perform inlined dispatch.

View file

@ -1 +0,0 @@
Add support for unwinding JIT frames using GDB. Patch by Diego Russo and Pablo Galindo.

View file

@ -1,3 +0,0 @@
Global :mod:`sys.monitoring` events can now be turned on and disabled on a
per code object basis. Returning ``DISABLE`` from a callback disables the
event for the entire code object (for the current tool).

View file

@ -1,2 +0,0 @@
Specialize float true division in the tier 2 optimizer with inplace
mutation for uniquely-referenced operands.

View file

@ -1 +0,0 @@
Fix O(N²) compile-time regression in constant folding after it was moved from AST to CFG optimizer.

View file

@ -1,3 +0,0 @@
Fixed a memory leak in interpreter helper calls so cleanup works when an
operation falls across interpreter boundaries. Patch by Maurycy
Pawłowski-Wieroński.

View file

@ -1,2 +0,0 @@
Accept a function name in :option:`-X presite <-X>` command line option and
:envvar:`PYTHON_PRESITE` environment variable. Patch by Victor Stinner.

View file

@ -1,5 +0,0 @@
Enable frame pointers by default for GCC-compatible CPython builds, including
``-mno-omit-leaf-frame-pointer``, ``-marm`` on 32-bit ARM, and/or ``-mbackchain``
on s390x platforms when the compiler supports them, so profilers and debuggers
can unwind native interpreter frames more reliably. Users can pass
:option:`--without-frame-pointers` to ``./configure`` to opt out.

View file

@ -1 +0,0 @@
The specializing interpreter now specializes for :class:`enum.Enum` improving performance and scaling in free-threading. Patch by Kumar Aditya.

View file

@ -1 +0,0 @@
Fix recursion depth leak in :c:func:`PyObject_Print`

View file

@ -1 +0,0 @@
Fix vectorcall support in :class:`types.GenericAlias` when the underlying type does not support the vectorcall protocol. Fix possible leaks in :class:`types.GenericAlias` and :class:`types.UnionType` in case of memory error.

View file

@ -1 +0,0 @@
Repaired undercount of bytes in type-specific free lists reported by sys._debugmallocstats(). For types that participate in cyclic garbage collection, it was missing two pointers used by GC.

View file

@ -1 +0,0 @@
Improve JIT code generation on Linux AArch64 by reducing the indirect call to external symbols. Patch by Diego Russo.

View file

@ -1 +0,0 @@
Remove critical section from :c:func:`!PyCode_Addr2Line` in free-threading.

View file

@ -1 +0,0 @@
Fix high stack consumption in Python's interpreter loop on Clang 22 by setting function limits for inlining when building with computed gotos.

View file

@ -1,5 +0,0 @@
Add a ``GCMonitor`` class with a ``get_gc_stats`` method to the
:mod:`!_remote_debugging` module to allow reading GC statistics from an
external Python process without requiring the full ``RemoteUnwinder``
functionality.
Patch by Sergey Miryanov and Pablo Galindo.

View file

@ -1 +0,0 @@
Fix a bug in the JIT optimizer where class attribute loads were not invalidated after type mutation.

View file

@ -1,2 +0,0 @@
Fix data races between :c:func:`PyDict_Watch` / :c:func:`PyDict_Unwatch`
and concurrent dict mutation in the :term:`free-threaded build`.

View file

@ -1 +0,0 @@
Fix a possible reference leak in a corrupted ``TYPE_CODE`` marshal stream.

View file

@ -1,5 +0,0 @@
Fix an undefined behavior in :class:`memoryview` when using the native
boolean format (``?``) in :meth:`~memoryview.cast`. Previously, on some
common platforms, calling ``memoryview(b).cast("?").tolist()`` incorrectly
returned ``[False]`` instead of ``[True]`` for any even byte *b*.
Patch by Bénédikt Tran.

View file

@ -1,2 +0,0 @@
Fix a bug in the JIT optimizer reading operands for uops with multiple
caches.

View file

@ -1,3 +0,0 @@
Unary plus is now accepted in :keyword:`match` literal patterns, mirroring
the existing support for unary minus.
Patch by Bartosz Sławecki.

View file

@ -1,3 +0,0 @@
Added ``PyTypeObject.tp_basicsize``, ``PyTypeObject.tp_dictoffset``, and
``PyHeapTypeObject.ht_cached_keys`` offsets to :c:type:`!_Py_DebugOffsets` to
support version-independent read-only dict introspection tools.

View file

@ -1 +0,0 @@
Forward-port the generational cycle garbage collector to the default 3.15 build, replacing the incremental collector while leaving the free-threaded collector unchanged.

View file

@ -1,2 +0,0 @@
Forbid :mod:`marshalling <marshal>` recursive code objects, :class:`slice`
and :class:`frozendict` objects which cannot be correctly unmarshalled.

View file

@ -1 +0,0 @@
Fix a crash in the JIT optimizer when specialized opcode families inherited incompatible recorded operand layouts.

View file

@ -1,2 +0,0 @@
The interpreter help (such as ``python --help``) is now in color. Patch by
Hugo van Kemenade.

View file

@ -1 +0,0 @@
Fix a sequential consistency bug in ``structmember.c``.

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