Skip to content

Commit b23034d

Browse files
[3.12] gh-101100: Improve documentation of TracebackType attributes (GH-112884) (#112911)
gh-101100: Improve documentation of `TracebackType` attributes (GH-112884) (cherry picked from commit 96f64a2) Co-authored-by: Alex Waygood <[email protected]>
1 parent ebcf757 commit b23034d

File tree

6 files changed

+52
-33
lines changed

6 files changed

+52
-33
lines changed

Doc/library/stdtypes.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5458,8 +5458,9 @@ It is written as ``NotImplemented``.
54585458
Internal Objects
54595459
----------------
54605460

5461-
See :ref:`types` for this information. It describes stack frame objects,
5462-
traceback objects, and slice objects.
5461+
See :ref:`types` for this information. It describes
5462+
:ref:`stack frame objects <frame-objects>`,
5463+
:ref:`traceback objects <traceback-objects>`, and slice objects.
54635464

54645465

54655466
.. _specialattrs:

Doc/library/traceback.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ interpreter.
1616

1717
.. index:: pair: object; traceback
1818

19-
The module uses traceback objects --- these are objects of type :class:`types.TracebackType`,
19+
The module uses :ref:`traceback objects <traceback-objects>` --- these are
20+
objects of type :class:`types.TracebackType`,
2021
which are assigned to the ``__traceback__`` field of :class:`BaseException` instances.
2122

2223
.. seealso::
@@ -205,7 +206,8 @@ The module defines the following functions:
205206

206207
.. function:: walk_tb(tb)
207208

208-
Walk a traceback following ``tb_next`` yielding the frame and line number
209+
Walk a traceback following :attr:`~traceback.tb_next` yielding the frame and
210+
line number
209211
for each frame. This helper is used with :meth:`StackSummary.extract`.
210212

211213
.. versionadded:: 3.5

Doc/library/types.rst

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -376,11 +376,8 @@ Standard names are defined for the following types:
376376

377377
.. data:: FrameType
378378

379-
The type of frame objects such as found in ``tb.tb_frame`` if ``tb`` is a
380-
traceback object.
381-
382-
See :ref:`the language reference <frame-objects>` for details of the
383-
available attributes and operations.
379+
The type of :ref:`frame objects <frame-objects>` such as found in
380+
:attr:`tb.tb_frame <traceback.tb_frame>` if ``tb`` is a traceback object.
384381

385382

386383
.. data:: GetSetDescriptorType

Doc/reference/datamodel.rst

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,8 +1244,9 @@ Frame objects
12441244

12451245
.. index:: pair: object; frame
12461246

1247-
Frame objects represent execution frames. They may occur in traceback objects
1248-
(see below), and are also passed to registered trace functions.
1247+
Frame objects represent execution frames. They may occur in
1248+
:ref:`traceback objects <traceback-objects>`,
1249+
and are also passed to registered trace functions.
12491250

12501251
.. index::
12511252
single: f_back (frame attribute)
@@ -1352,26 +1353,30 @@ Traceback objects
13521353
single: sys.exception
13531354
single: sys.last_traceback
13541355

1355-
Traceback objects represent a stack trace of an exception. A traceback object
1356+
Traceback objects represent the stack trace of an :ref:`exception <tut-errors>`.
1357+
A traceback object
13561358
is implicitly created when an exception occurs, and may also be explicitly
13571359
created by calling :class:`types.TracebackType`.
13581360

1361+
.. versionchanged:: 3.7
1362+
Traceback objects can now be explicitly instantiated from Python code.
1363+
13591364
For implicitly created tracebacks, when the search for an exception handler
13601365
unwinds the execution stack, at each unwound level a traceback object is
13611366
inserted in front of the current traceback. When an exception handler is
13621367
entered, the stack trace is made available to the program. (See section
13631368
:ref:`try`.) It is accessible as the third item of the
1364-
tuple returned by ``sys.exc_info()``, and as the ``__traceback__`` attribute
1369+
tuple returned by :func:`sys.exc_info`, and as the ``__traceback__`` attribute
13651370
of the caught exception.
13661371

13671372
When the program contains no suitable
13681373
handler, the stack trace is written (nicely formatted) to the standard error
13691374
stream; if the interpreter is interactive, it is also made available to the user
1370-
as ``sys.last_traceback``.
1375+
as :data:`sys.last_traceback`.
13711376

13721377
For explicitly created tracebacks, it is up to the creator of the traceback
1373-
to determine how the ``tb_next`` attributes should be linked to form a
1374-
full stack trace.
1378+
to determine how the :attr:`~traceback.tb_next` attributes should be linked to
1379+
form a full stack trace.
13751380

13761381
.. index::
13771382
single: tb_frame (traceback attribute)
@@ -1380,27 +1385,40 @@ full stack trace.
13801385
pair: statement; try
13811386

13821387
Special read-only attributes:
1383-
:attr:`tb_frame` points to the execution frame of the current level;
1384-
:attr:`tb_lineno` gives the line number where the exception occurred;
1385-
:attr:`tb_lasti` indicates the precise instruction.
1388+
1389+
.. list-table::
1390+
1391+
* - .. attribute:: traceback.tb_frame
1392+
- Points to the execution :ref:`frame <frame-objects>` of the current
1393+
level.
1394+
1395+
Accessing this attribute raises an
1396+
:ref:`auditing event <auditing>` ``object.__getattr__`` with arguments
1397+
``obj`` and ``"tb_frame"``.
1398+
1399+
* - .. attribute:: traceback.tb_lineno
1400+
- Gives the line number where the exception occurred
1401+
1402+
* - .. attribute:: traceback.tb_lasti
1403+
- Indicates the "precise instruction".
1404+
13861405
The line number and last instruction in the traceback may differ from the
1387-
line number of its frame object if the exception occurred in a
1406+
line number of its :ref:`frame object <frame-objects>` if the exception
1407+
occurred in a
13881408
:keyword:`try` statement with no matching except clause or with a
1389-
finally clause.
1390-
1391-
Accessing ``tb_frame`` raises an :ref:`auditing event <auditing>`
1392-
``object.__getattr__`` with arguments ``obj`` and ``"tb_frame"``.
1409+
:keyword:`finally` clause.
13931410

13941411
.. index::
13951412
single: tb_next (traceback attribute)
13961413

1397-
Special writable attribute: :attr:`tb_next` is the next level in the stack
1398-
trace (towards the frame where the exception occurred), or ``None`` if
1399-
there is no next level.
1414+
.. attribute:: traceback.tb_next
14001415

1401-
.. versionchanged:: 3.7
1402-
Traceback objects can now be explicitly instantiated from Python code,
1403-
and the ``tb_next`` attribute of existing instances can be updated.
1416+
The special writable attribute :attr:`!tb_next` is the next level in the
1417+
stack trace (towards the frame where the exception occurred), or ``None`` if
1418+
there is no next level.
1419+
1420+
.. versionchanged:: 3.7
1421+
This attribute is now writable
14041422

14051423

14061424
Slice objects

Doc/whatsnew/3.5.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1947,7 +1947,8 @@ traceback
19471947
---------
19481948

19491949
New :func:`~traceback.walk_stack` and :func:`~traceback.walk_tb`
1950-
functions to conveniently traverse frame and traceback objects.
1950+
functions to conveniently traverse frame and
1951+
:ref:`traceback objects <traceback-objects>`.
19511952
(Contributed by Robert Collins in :issue:`17911`.)
19521953

19531954
New lightweight classes: :class:`~traceback.TracebackException`,

Doc/whatsnew/3.7.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,8 +525,8 @@ Other Language Changes
525525

526526
* In order to better support dynamic creation of stack traces,
527527
:class:`types.TracebackType` can now be instantiated from Python code, and
528-
the ``tb_next`` attribute on :ref:`tracebacks <traceback-objects>` is now
529-
writable.
528+
the :attr:`~traceback.tb_next` attribute on
529+
:ref:`tracebacks <traceback-objects>` is now writable.
530530
(Contributed by Nathaniel J. Smith in :issue:`30579`.)
531531

532532
* When using the :option:`-m` switch, ``sys.path[0]`` is now eagerly expanded

0 commit comments

Comments
 (0)