Skip to content
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

gh-101578: Fixup NEWS and add What's New entry for new exception APIs #102157

Merged
merged 4 commits into from
Feb 23, 2023
Merged
Show file tree
Hide file tree
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
18 changes: 18 additions & 0 deletions Doc/whatsnew/3.12.rst
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,19 @@ New Features
get a frame variable by its name.
(Contributed by Victor Stinner in :gh:`91248`.)

* Add :c:func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException`
for saving and restoring the current exception.
These functions return and accept a single exception object,
rather than the triple arguments of the now-deprecated
:c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore`.
This is less error prone and a bit more efficient.
erlend-aasland marked this conversation as resolved.
Show resolved Hide resolved
(Contributed by Mark Shannon in :gh:`101578`.)

* Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs`
as convenience functions for retrieving and modifying
the :attr:`~BaseException.args` passed to the exception's constructor.
erlend-aasland marked this conversation as resolved.
Show resolved Hide resolved
(Contributed by Mark Shannon in :gh:`101578`.)

Porting to Python 3.12
----------------------

Expand Down Expand Up @@ -993,6 +1006,11 @@ Deprecated
(Contributed in :gh:`47146` by Petr Viktorin, based on
earlier work by Alexander Belopolsky and Matthias Braun.)

* :c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` are deprecated.
Use :c:func:`PyErr_GetRaisedException` and
:c:func:`PyErr_SetRaisedException` instead.
erlend-aasland marked this conversation as resolved.
Show resolved Hide resolved
(Contributed by Mark Shannon in :gh:`101578`.)


Removed
-------
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
Add new C-API functions for saving and restoring the current exception:
``PyErr_GetRaisedException`` and ``PyErr_SetRaisedException``.
These functions take and return a single exception rather than
the triple of ``PyErr_Fetch`` and ``PyErr_Restore``.
Add :c:func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException`
for saving and restoring the current exception.
These functions return and accept a single exception object,
rather than the triple arguments of the now-deprecated
:c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore`.
This is less error prone and a bit more efficient.

The three arguments forms of saving and restoring the
current exception: ``PyErr_Fetch`` and ``PyErr_Restore``
are deprecated.

Also add ``PyException_GetArgs`` and ``PyException_SetArgs``
as convenience functions to help dealing with
exceptions in the C API.
Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs`
as convenience functions for retrieving and modifying
the :attr:`~BaseException.args` passed to the exception's constructor.