blob: 5459daa7969da9557e3d717481e3776de3efa6af [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`traceback` --- Print or retrieve a stack traceback
2========================================================
3
4.. module:: traceback
5 :synopsis: Print or retrieve a stack traceback.
6
7
8This module provides a standard interface to extract, format and print stack
9traces of Python programs. It exactly mimics the behavior of the Python
10interpreter when it prints a stack trace. This is useful when you want to print
11stack traces under program control, such as in a "wrapper" around the
12interpreter.
13
14.. index:: object: traceback
15
16The module uses traceback objects --- this is the object type that is stored in
R. David Murraye02a3012009-04-27 18:38:19 +000017the :data:`sys.last_traceback` variable and returned as the third item from
Georg Brandl116aa622007-08-15 14:28:22 +000018:func:`sys.exc_info`.
19
20The module defines the following functions:
21
22
Senthil Kumarana82908f2016-01-15 21:45:17 -080023.. function:: print_tb(tb, limit=None, file=None)
Georg Brandl116aa622007-08-15 14:28:22 +000024
Senthil Kumarana82908f2016-01-15 21:45:17 -080025 Print up to *limit* stack trace entries from traceback object *tb* (starting
26 from the caller's frame) if *limit* is positive. Otherwise, print the last
27 ``abs(limit)`` entries. If *limit* is omitted or ``None``, all entries are
28 printed. If *file* is omitted or ``None``, the output goes to
29 ``sys.stderr``; otherwise it should be an open file or file-like object to
30 receive the output.
Serhiy Storchaka24559e42015-05-03 13:19:46 +030031
32 .. versionchanged:: 3.5
33 Added negative *limit* support.
Georg Brandl116aa622007-08-15 14:28:22 +000034
35
Senthil Kumarana82908f2016-01-15 21:45:17 -080036.. function:: print_exception(etype, value, tb, limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000037
Senthil Kumarana82908f2016-01-15 21:45:17 -080038 Print exception information and stack trace entries from traceback object
39 *tb* to *file*. This differs from :func:`print_tb` in the following
Georg Brandl1aea30a2008-07-19 15:51:07 +000040 ways:
41
Senthil Kumarana82908f2016-01-15 21:45:17 -080042 * if *tb* is not ``None``, it prints a header ``Traceback (most recent
Georg Brandl1aea30a2008-07-19 15:51:07 +000043 call last):``
Senthil Kumarana82908f2016-01-15 21:45:17 -080044 * it prints the exception *etype* and *value* after the stack trace
45 * if *etype* is :exc:`SyntaxError` and *value* has the appropriate format, it
Georg Brandl1aea30a2008-07-19 15:51:07 +000046 prints the line where the syntax error occurred with a caret indicating the
47 approximate position of the error.
48
Serhiy Storchaka24559e42015-05-03 13:19:46 +030049 The optional *limit* argument has the same meaning as for :func:`print_tb`.
Georg Brandl1aea30a2008-07-19 15:51:07 +000050 If *chain* is true (the default), then chained exceptions (the
51 :attr:`__cause__` or :attr:`__context__` attributes of the exception) will be
52 printed as well, like the interpreter itself does when printing an unhandled
53 exception.
Georg Brandl116aa622007-08-15 14:28:22 +000054
55
Georg Brandl7f01a132009-09-16 15:58:14 +000056.. function:: print_exc(limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000057
Serhiy Storchaka24559e42015-05-03 13:19:46 +030058 This is a shorthand for ``print_exception(*sys.exc_info(), limit, file,
59 chain)``.
Georg Brandl116aa622007-08-15 14:28:22 +000060
61
Georg Brandl7f01a132009-09-16 15:58:14 +000062.. function:: print_last(limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000063
64 This is a shorthand for ``print_exception(sys.last_type, sys.last_value,
Serhiy Storchaka24559e42015-05-03 13:19:46 +030065 sys.last_traceback, limit, file, chain)``. In general it will work only
66 after an exception has reached an interactive prompt (see
67 :data:`sys.last_type`).
Georg Brandl116aa622007-08-15 14:28:22 +000068
69
Georg Brandl7f01a132009-09-16 15:58:14 +000070.. function:: print_stack(f=None, limit=None, file=None)
Georg Brandl116aa622007-08-15 14:28:22 +000071
Serhiy Storchaka24559e42015-05-03 13:19:46 +030072 Print up to *limit* stack trace entries (starting from the invocation
73 point) if *limit* is positive. Otherwise, print the last ``abs(limit)``
74 entries. If *limit* is omitted or ``None``, all entries are printed.
75 The optional *f* argument can be used to specify an alternate stack frame
76 to start. The optional *file* argument has the same meaning as for
77 :func:`print_tb`.
78
79 .. versionchanged:: 3.5
80 Added negative *limit* support.
Georg Brandl116aa622007-08-15 14:28:22 +000081
82
Senthil Kumarana82908f2016-01-15 21:45:17 -080083.. function:: extract_tb(tb, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +000084
Serhiy Storchaka24559e42015-05-03 13:19:46 +030085 Return a list of "pre-processed" stack trace entries extracted from the
Senthil Kumarana82908f2016-01-15 21:45:17 -080086 traceback object *tb*. It is useful for alternate formatting of
Serhiy Storchaka24559e42015-05-03 13:19:46 +030087 stack traces. The optional *limit* argument has the same meaning as for
88 :func:`print_tb`. A "pre-processed" stack trace entry is a 4-tuple
89 (*filename*, *line number*, *function name*, *text*) representing the
90 information that is usually printed for a stack trace. The *text* is a
91 string with leading and trailing whitespace stripped; if the source is
92 not available it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +000093
94
Georg Brandl7f01a132009-09-16 15:58:14 +000095.. function:: extract_stack(f=None, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +000096
97 Extract the raw traceback from the current stack frame. The return value has
98 the same format as for :func:`extract_tb`. The optional *f* and *limit*
99 arguments have the same meaning as for :func:`print_stack`.
100
101
Senthil Kumarana82908f2016-01-15 21:45:17 -0800102.. function:: format_list(extracted_list)
Georg Brandl116aa622007-08-15 14:28:22 +0000103
104 Given a list of tuples as returned by :func:`extract_tb` or
Senthil Kumarana82908f2016-01-15 21:45:17 -0800105 :func:`extract_stack`, return a list of strings ready for printing. Each
106 string in the resulting list corresponds to the item with the same index in
107 the argument list. Each string ends in a newline; the strings may contain
108 internal newlines as well, for those items whose source text line is not
109 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000110
111
Senthil Kumarana82908f2016-01-15 21:45:17 -0800112.. function:: format_exception_only(etype, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000113
Senthil Kumarana82908f2016-01-15 21:45:17 -0800114 Format the exception part of a traceback. The arguments are the exception
115 type and value such as given by ``sys.last_type`` and ``sys.last_value``.
116 The return value is a list of strings, each ending in a newline. Normally,
117 the list contains a single string; however, for :exc:`SyntaxError`
118 exceptions, it contains several lines that (when printed) display detailed
119 information about where the syntax error occurred. The message indicating
120 which exception occurred is the always last string in the list.
Georg Brandl116aa622007-08-15 14:28:22 +0000121
122
Senthil Kumarana82908f2016-01-15 21:45:17 -0800123.. function:: format_exception(etype, value, tb, limit=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125 Format a stack trace and the exception information. The arguments have the
126 same meaning as the corresponding arguments to :func:`print_exception`. The
Senthil Kumarana82908f2016-01-15 21:45:17 -0800127 return value is a list of strings, each ending in a newline and some
128 containing internal newlines. When these lines are concatenated and printed,
129 exactly the same text is printed as does :func:`print_exception`.
Georg Brandl116aa622007-08-15 14:28:22 +0000130
131
Georg Brandl7f01a132009-09-16 15:58:14 +0000132.. function:: format_exc(limit=None, chain=True)
Georg Brandl1aea30a2008-07-19 15:51:07 +0000133
Senthil Kumarana82908f2016-01-15 21:45:17 -0800134 This is like ``print_exc(limit)`` but returns a string instead of printing to
135 a file.
Georg Brandl1aea30a2008-07-19 15:51:07 +0000136
137
Georg Brandl7f01a132009-09-16 15:58:14 +0000138.. function:: format_tb(tb, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000139
140 A shorthand for ``format_list(extract_tb(tb, limit))``.
141
142
Georg Brandl7f01a132009-09-16 15:58:14 +0000143.. function:: format_stack(f=None, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000144
145 A shorthand for ``format_list(extract_stack(f, limit))``.
146
Andrew Kuchling173a1572013-09-15 18:15:56 -0400147.. function:: clear_frames(tb)
148
149 Clears the local variables of all the stack frames in a traceback *tb*
150 by calling the :meth:`clear` method of each frame object.
151
152 .. versionadded:: 3.4
153
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300154.. function:: walk_stack(f)
155
Berker Peksag49f373b2015-03-06 12:18:06 +0200156 Walk a stack following ``f.f_back`` from the given frame, yielding the frame
157 and line number for each frame. If *f* is ``None``, the current stack is
158 used. This helper is used with :meth:`StackSummary.extract`.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300159
160 .. versionadded:: 3.5
161
162.. function:: walk_tb(tb)
163
Berker Peksag49f373b2015-03-06 12:18:06 +0200164 Walk a traceback following ``tb_next`` yielding the frame and line number
165 for each frame. This helper is used with :meth:`StackSummary.extract`.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300166
167 .. versionadded:: 3.5
168
169The module also defines the following classes:
170
171:class:`TracebackException` Objects
172-----------------------------------
173
Berker Peksag49f373b2015-03-06 12:18:06 +0200174.. versionadded:: 3.5
175
176:class:`TracebackException` objects are created from actual exceptions to
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300177capture data for later printing in a lightweight fashion.
178
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300179.. class:: TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300180
Berker Peksag49f373b2015-03-06 12:18:06 +0200181 Capture an exception for later rendering. *limit*, *lookup_lines* and
182 *capture_locals* are as for the :class:`StackSummary` class.
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300183
184 Note that when locals are captured, they are also shown in the traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300185
Berker Peksag49f373b2015-03-06 12:18:06 +0200186 .. attribute:: __cause__
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300187
Berker Peksag49f373b2015-03-06 12:18:06 +0200188 A :class:`TracebackException` of the original ``__cause__``.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300189
Berker Peksag49f373b2015-03-06 12:18:06 +0200190 .. attribute:: __context__
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300191
Berker Peksag49f373b2015-03-06 12:18:06 +0200192 A :class:`TracebackException` of the original ``__context__``.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300193
Berker Peksag49f373b2015-03-06 12:18:06 +0200194 .. attribute:: __suppress_context__
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300195
Berker Peksag49f373b2015-03-06 12:18:06 +0200196 The ``__suppress_context__`` value from the original exception.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300197
Berker Peksag49f373b2015-03-06 12:18:06 +0200198 .. attribute:: stack
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300199
Berker Peksag49f373b2015-03-06 12:18:06 +0200200 A :class:`StackSummary` representing the traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300201
Berker Peksag49f373b2015-03-06 12:18:06 +0200202 .. attribute:: exc_type
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300203
Berker Peksag49f373b2015-03-06 12:18:06 +0200204 The class of the original traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300205
Berker Peksag49f373b2015-03-06 12:18:06 +0200206 .. attribute:: filename
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300207
Berker Peksag49f373b2015-03-06 12:18:06 +0200208 For syntax errors - the file name where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300209
Berker Peksag49f373b2015-03-06 12:18:06 +0200210 .. attribute:: lineno
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300211
Berker Peksag49f373b2015-03-06 12:18:06 +0200212 For syntax errors - the line number where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300213
Berker Peksag49f373b2015-03-06 12:18:06 +0200214 .. attribute:: text
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300215
Berker Peksag49f373b2015-03-06 12:18:06 +0200216 For syntax errors - the text where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300217
Berker Peksag49f373b2015-03-06 12:18:06 +0200218 .. attribute:: offset
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300219
Berker Peksag49f373b2015-03-06 12:18:06 +0200220 For syntax errors - the offset into the text where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300221
Berker Peksag49f373b2015-03-06 12:18:06 +0200222 .. attribute:: msg
223
224 For syntax errors - the compiler error message.
225
226 .. classmethod:: from_exception(exc, *, limit=None, lookup_lines=True, capture_locals=False)
227
228 Capture an exception for later rendering. *limit*, *lookup_lines* and
229 *capture_locals* are as for the :class:`StackSummary` class.
230
231 Note that when locals are captured, they are also shown in the traceback.
232
233 .. method:: format(*, chain=True)
234
235 Format the exception.
236
237 If *chain* is not ``True``, ``__cause__`` and ``__context__`` will not
238 be formatted.
239
240 The return value is a generator of strings, each ending in a newline and
241 some containing internal newlines. :func:`~traceback.print_exception`
242 is a wrapper around this method which just prints the lines to a file.
243
244 The message indicating which exception occurred is always the last
245 string in the output.
246
247 .. method:: format_exception_only()
248
249 Format the exception part of the traceback.
250
251 The return value is a generator of strings, each ending in a newline.
252
253 Normally, the generator emits a single string; however, for
254 :exc:`SyntaxError` exceptions, it emits several lines that (when
255 printed) display detailed information about where the syntax
256 error occurred.
257
258 The message indicating which exception occurred is always the last
259 string in the output.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300260
261
262:class:`StackSummary` Objects
263-----------------------------
264
Berker Peksag49f373b2015-03-06 12:18:06 +0200265.. versionadded:: 3.5
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300266
Berker Peksag49f373b2015-03-06 12:18:06 +0200267:class:`StackSummary` objects represent a call stack ready for formatting.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300268
Berker Peksag49f373b2015-03-06 12:18:06 +0200269.. class:: StackSummary
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300270
Berker Peksag49f373b2015-03-06 12:18:06 +0200271 .. classmethod:: extract(frame_gen, *, limit=None, lookup_lines=True, capture_locals=False)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300272
Berker Peksag49f373b2015-03-06 12:18:06 +0200273 Construct a :class:`StackSummary` object from a frame generator (such as
274 is returned by :func:`~traceback.walk_stack` or
275 :func:`~traceback.walk_tb`).
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300276
Berker Peksag49f373b2015-03-06 12:18:06 +0200277 If *limit* is supplied, only this many frames are taken from *frame_gen*.
278 If *lookup_lines* is ``False``, the returned :class:`FrameSummary`
279 objects will not have read their lines in yet, making the cost of
280 creating the :class:`StackSummary` cheaper (which may be valuable if it
281 may not actually get formatted). If *capture_locals* is ``True`` the
282 local variables in each :class:`FrameSummary` are captured as object
283 representations.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300284
Berker Peksag49f373b2015-03-06 12:18:06 +0200285 .. classmethod:: from_list(a_list)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300286
Berker Peksag49f373b2015-03-06 12:18:06 +0200287 Construct a :class:`StackSummary` object from a supplied old-style list
288 of tuples. Each tuple should be a 4-tuple with filename, lineno, name,
289 line as the elements.
290
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300291
292:class:`FrameSummary` Objects
293-----------------------------
294
Berker Peksag49f373b2015-03-06 12:18:06 +0200295.. versionadded:: 3.5
296
297:class:`FrameSummary` objects represent a single frame in a traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300298
299.. class:: FrameSummary(filename, lineno, name, lookup_line=True, locals=None, line=None)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300300
301 Represent a single frame in the traceback or stack that is being formatted
302 or printed. It may optionally have a stringified version of the frames
Berker Peksag49f373b2015-03-06 12:18:06 +0200303 locals included in it. If *lookup_line* is ``False``, the source code is not
304 looked up until the :class:`FrameSummary` has the :attr:`~FrameSummary.line`
305 attribute accessed (which also happens when casting it to a tuple).
306 :attr:`~FrameSummary.line` may be directly provided, and will prevent line
307 lookups happening at all. *locals* is an optional local variable
308 dictionary, and if supplied the variable representations are stored in the
309 summary for later display.
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Georg Brandl116aa622007-08-15 14:28:22 +0000311.. _traceback-example:
312
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000313Traceback Examples
314------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000315
316This simple example implements a basic read-eval-print loop, similar to (but
317less useful than) the standard Python interactive interpreter loop. For a more
318complete implementation of the interpreter loop, refer to the :mod:`code`
319module. ::
320
321 import sys, traceback
322
323 def run_user_code(envdir):
Georg Brandl8d5c3922007-12-02 22:48:17 +0000324 source = input(">>> ")
Georg Brandl116aa622007-08-15 14:28:22 +0000325 try:
326 exec(source, envdir)
Andrew Svetlov47395612012-11-02 22:07:26 +0200327 except Exception:
Collin Winterc79461b2007-09-01 23:34:30 +0000328 print("Exception in user code:")
329 print("-"*60)
Georg Brandl116aa622007-08-15 14:28:22 +0000330 traceback.print_exc(file=sys.stdout)
Collin Winterc79461b2007-09-01 23:34:30 +0000331 print("-"*60)
Georg Brandl116aa622007-08-15 14:28:22 +0000332
333 envdir = {}
Collin Winterc79461b2007-09-01 23:34:30 +0000334 while True:
Georg Brandl116aa622007-08-15 14:28:22 +0000335 run_user_code(envdir)
336
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000337
338The following example demonstrates the different ways to print and format the
R. David Murraye02a3012009-04-27 18:38:19 +0000339exception and traceback:
340
341.. testcode::
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000342
343 import sys, traceback
344
345 def lumberjack():
346 bright_side_of_death()
Georg Brandl48310cd2009-01-03 21:18:54 +0000347
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000348 def bright_side_of_death():
349 return tuple()[0]
Georg Brandl48310cd2009-01-03 21:18:54 +0000350
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000351 try:
352 lumberjack()
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000353 except IndexError:
354 exc_type, exc_value, exc_traceback = sys.exc_info()
Georg Brandlf6945182008-02-01 11:56:49 +0000355 print("*** print_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000356 traceback.print_tb(exc_traceback, limit=1, file=sys.stdout)
Georg Brandlf6945182008-02-01 11:56:49 +0000357 print("*** print_exception:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000358 traceback.print_exception(exc_type, exc_value, exc_traceback,
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000359 limit=2, file=sys.stdout)
Georg Brandlf6945182008-02-01 11:56:49 +0000360 print("*** print_exc:")
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000361 traceback.print_exc()
Georg Brandlf6945182008-02-01 11:56:49 +0000362 print("*** format_exc, first and last line:")
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000363 formatted_lines = traceback.format_exc().splitlines()
Georg Brandlf6945182008-02-01 11:56:49 +0000364 print(formatted_lines[0])
365 print(formatted_lines[-1])
366 print("*** format_exception:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000367 print(repr(traceback.format_exception(exc_type, exc_value,
368 exc_traceback)))
Georg Brandlf6945182008-02-01 11:56:49 +0000369 print("*** extract_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000370 print(repr(traceback.extract_tb(exc_traceback)))
Georg Brandlf6945182008-02-01 11:56:49 +0000371 print("*** format_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000372 print(repr(traceback.format_tb(exc_traceback)))
373 print("*** tb_lineno:", exc_traceback.tb_lineno)
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000374
R. David Murraye02a3012009-04-27 18:38:19 +0000375The output for the example would look similar to this:
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000376
R. David Murraye02a3012009-04-27 18:38:19 +0000377.. testoutput::
378 :options: +NORMALIZE_WHITESPACE
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000379
380 *** print_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000381 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000382 lumberjack()
383 *** print_exception:
384 Traceback (most recent call last):
R. David Murraye02a3012009-04-27 18:38:19 +0000385 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000386 lumberjack()
R. David Murraye02a3012009-04-27 18:38:19 +0000387 File "<doctest...>", line 4, in lumberjack
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000388 bright_side_of_death()
389 IndexError: tuple index out of range
390 *** print_exc:
391 Traceback (most recent call last):
R. David Murraye02a3012009-04-27 18:38:19 +0000392 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000393 lumberjack()
R. David Murraye02a3012009-04-27 18:38:19 +0000394 File "<doctest...>", line 4, in lumberjack
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000395 bright_side_of_death()
396 IndexError: tuple index out of range
397 *** format_exc, first and last line:
398 Traceback (most recent call last):
399 IndexError: tuple index out of range
400 *** format_exception:
401 ['Traceback (most recent call last):\n',
R. David Murraye02a3012009-04-27 18:38:19 +0000402 ' File "<doctest...>", line 10, in <module>\n lumberjack()\n',
403 ' File "<doctest...>", line 4, in lumberjack\n bright_side_of_death()\n',
404 ' File "<doctest...>", line 7, in bright_side_of_death\n return tuple()[0]\n',
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000405 'IndexError: tuple index out of range\n']
406 *** extract_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000407 [('<doctest...>', 10, '<module>', 'lumberjack()'),
408 ('<doctest...>', 4, 'lumberjack', 'bright_side_of_death()'),
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000409 ('<doctest...>', 7, 'bright_side_of_death', 'return tuple()[0]')]
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000410 *** format_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000411 [' File "<doctest...>", line 10, in <module>\n lumberjack()\n',
412 ' File "<doctest...>", line 4, in lumberjack\n bright_side_of_death()\n',
413 ' File "<doctest...>", line 7, in bright_side_of_death\n return tuple()[0]\n']
414 *** tb_lineno: 10
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000415
416
417The following example shows the different ways to print and format the stack::
418
419 >>> import traceback
420 >>> def another_function():
421 ... lumberstack()
Georg Brandl48310cd2009-01-03 21:18:54 +0000422 ...
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000423 >>> def lumberstack():
424 ... traceback.print_stack()
Georg Brandlf6945182008-02-01 11:56:49 +0000425 ... print(repr(traceback.extract_stack()))
426 ... print(repr(traceback.format_stack()))
Georg Brandl48310cd2009-01-03 21:18:54 +0000427 ...
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000428 >>> another_function()
429 File "<doctest>", line 10, in <module>
430 another_function()
431 File "<doctest>", line 3, in another_function
432 lumberstack()
433 File "<doctest>", line 6, in lumberstack
434 traceback.print_stack()
435 [('<doctest>', 10, '<module>', 'another_function()'),
436 ('<doctest>', 3, 'another_function', 'lumberstack()'),
Georg Brandlf6945182008-02-01 11:56:49 +0000437 ('<doctest>', 7, 'lumberstack', 'print(repr(traceback.extract_stack()))')]
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000438 [' File "<doctest>", line 10, in <module>\n another_function()\n',
439 ' File "<doctest>", line 3, in another_function\n lumberstack()\n',
Georg Brandlf6945182008-02-01 11:56:49 +0000440 ' File "<doctest>", line 8, in lumberstack\n print(repr(traceback.format_stack()))\n']
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000441
442
R. David Murraye02a3012009-04-27 18:38:19 +0000443This last example demonstrates the final few formatting functions:
444
445.. doctest::
446 :options: +NORMALIZE_WHITESPACE
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000447
448 >>> import traceback
Georg Brandl0142d4a2009-04-27 16:22:44 +0000449 >>> traceback.format_list([('spam.py', 3, '<module>', 'spam.eggs()'),
450 ... ('eggs.py', 42, 'eggs', 'return "bacon"')])
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000451 [' File "spam.py", line 3, in <module>\n spam.eggs()\n',
452 ' File "eggs.py", line 42, in eggs\n return "bacon"\n']
Georg Brandl0142d4a2009-04-27 16:22:44 +0000453 >>> an_error = IndexError('tuple index out of range')
454 >>> traceback.format_exception_only(type(an_error), an_error)
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000455 ['IndexError: tuple index out of range\n']