+------------------------------+--------------------------------------+
| :const:`PyTrace_LINE` | Always *NULL*. |
+------------------------------+--------------------------------------+
- | :const:`PyTrace_RETURN` | Value being returned to the caller. |
+ | :const:`PyTrace_RETURN` | Value being returned to the caller, |
+ | | or *NULL* if caused by an exception. |
+------------------------------+--------------------------------------+
- | :const:`PyTrace_C_CALL` | Name of function being called. |
+ | :const:`PyTrace_C_CALL` | Function object being called. |
+------------------------------+--------------------------------------+
- | :const:`PyTrace_C_EXCEPTION` | Always *NULL*. |
+ | :const:`PyTrace_C_EXCEPTION` | Function object being called. |
+------------------------------+--------------------------------------+
- | :const:`PyTrace_C_RETURN` | Always *NULL*. |
+ | :const:`PyTrace_C_RETURN` | Function object being called. |
+------------------------------+--------------------------------------+
``'return'``
A function (or other code block) is about to return. The local trace
- function is called; *arg* is the value that will be returned. The trace
- function's return value is ignored.
+ function is called; *arg* is the value that will be returned, or ``None``
+ if the event is caused by an exception being raised. The trace function's
+ return value is ignored.
``'exception'``
An exception has occurred. The local trace function is called; *arg* is a
a built-in. *arg* is the C function object.
``'c_return'``
- A C function has returned. *arg* is ``None``.
+ A C function has returned. *arg* is the C function object.
``'c_exception'``
- A C function has raised an exception. *arg* is ``None``.
+ A C function has raised an exception. *arg* is the C function object.
Note that as an exception is propagated down the chain of callers, an
``'exception'`` event is generated at each level.