Skip to content

[3.14] Add whatsnew text for warnings module changes. (gh-135869) #135961

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 26, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions Doc/whatsnew/3.14.rst
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,23 @@ be specified by the build backend, as it will no longer be determined
automatically by the C compiler. For a running interpreter, the setting that
was used at compile time can be found using :func:`sysconfig.get_config_var`.

A new flag has been added, :data:`~sys.flags.context_aware_warnings`. This
flag defaults to true for the free-threaded build and false for the GIL-enabled
build. If the flag is true then the :class:`warnings.catch_warnings` context
manager uses a context variable for warning filters. This makes the context
manager behave predicably when used with multiple threads or asynchronous
tasks.

A new flag has been added, :data:`~sys.flags.thread_inherit_context`. This flag
defaults to true for the free-threaded build and false for the GIL-enabled
build. If the flag is true then threads created with :class:`threading.Thread`
start with a copy of the :class:`~contextvars.Context()` of the caller of
:meth:`~threading.Thread.start`. Most significantly, this makes the warning
filtering context established by :class:`~warnings.catch_warnings` be
"inherited" by threads (or asyncio tasks) started within that context. It also
affects other modules that use context variables, such as the :mod:`decimal`
context manager.


.. _whatsnew314-pyrepl-highlighting:

Expand Down Expand Up @@ -1028,6 +1045,18 @@ Please report any bugs or major performance regressions that you encounter!

.. seealso:: :pep:`744`

Concurrent safe warnings control
--------------------------------

The :class:`warnings.catch_warnings` context manager will now optionally
use a context variable for warning filters. This is enabled by setting
the :data:`~sys.flags.context_aware_warnings` flag, either with the ``-X``
command-line option or an environment variable. This gives predicable
warnings control when using :class:`~warnings.catch_warnings` combined with
multiple threads or asynchronous tasks. The flag defaults to true for the
free-threaded build and false for the GIL-enabled build.

(Contributed by Neil Schemenauer and Kumar Aditya in :gh:`130010`.)

Other language changes
======================
Expand Down
Loading