Kaydet (Commit) c0bc0b46 authored tarafından Nick Coghlan's avatar Nick Coghlan

Issue #20500: Note other public APIs with the new assertion

üst 0c3949c9
...@@ -149,6 +149,9 @@ Object Protocol ...@@ -149,6 +149,9 @@ Object Protocol
representation on success, *NULL* on failure. This is the equivalent of the representation on success, *NULL* on failure. This is the equivalent of the
Python expression ``repr(o)``. Called by the :func:`repr` built-in function. Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
.. versionchanged:: 3.4
This function now includes a debug assertion to help ensure that it
does not silently discard an active exception.
.. c:function:: PyObject* PyObject_ASCII(PyObject *o) .. c:function:: PyObject* PyObject_ASCII(PyObject *o)
...@@ -171,8 +174,8 @@ Object Protocol ...@@ -171,8 +174,8 @@ Object Protocol
and, therefore, by the :func:`print` function. and, therefore, by the :func:`print` function.
.. versionchanged:: 3.4 .. versionchanged:: 3.4
This function now includes a debug assertion that ensures it does not This function now includes a debug assertion to help ensure that it
silently discard an active exception. does not silently discard an active exception.
.. c:function:: PyObject* PyObject_Bytes(PyObject *o) .. c:function:: PyObject* PyObject_Bytes(PyObject *o)
......
...@@ -322,6 +322,10 @@ the same library that the Python runtime is using. ...@@ -322,6 +322,10 @@ the same library that the Python runtime is using.
it causes an exception to immediately be thrown; this is used for the it causes an exception to immediately be thrown; this is used for the
:meth:`~generator.throw` methods of generator objects. :meth:`~generator.throw` methods of generator objects.
.. versionchanged:: 3.4
This function now includes a debug assertion to help ensure that it
does not silently discard an active exception.
.. c:function:: int PyEval_MergeCompilerFlags(PyCompilerFlags *cf) .. c:function:: int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
......
...@@ -1708,12 +1708,16 @@ Changes in the Python API ...@@ -1708,12 +1708,16 @@ Changes in the Python API
Changes in the C API Changes in the C API
-------------------- --------------------
* :c:func:`PyObject_Str` now includes a debug assertion that ensures it will * :c:func:`PyEval_EvalFrameEx`, :c:func:`PyObject_Repr(), and
no longer silently discard currently active exceptions. In cases where :c:func:`PyObject_Str`, along with some other internal C APIs, now include
a debugging assertion that ensures they are not used in situations where
they may silently discard a currently active exception. In cases where
discarding the active exception is expected and desired (for example, discarding the active exception is expected and desired (for example,
because it has already been saved locally with :c:func:`PyErr_Fetch`), an because it has already been saved locally with :c:func:`PyErr_Fetch` or
explicit :c:func:`PyErr_Clear` call will be needed to avoid triggering the is being deliberately replaced with a different exception), an explicit
assertion. :c:func:`PyErr_Clear` call will be needed to avoid triggering the
assertion when running against a version of Python that is compiled with
assertions enabled.
* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg** * :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
argument is not set. Previously only ``NULL`` was returned with no exception argument is not set. Previously only ``NULL`` was returned with no exception
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment