blob: 6ec9ada530cae26a1bc50fd9f9db46629d3ab7e9 [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
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007**Source code:** :source:`Lib/traceback.py`
8
9--------------
Georg Brandl116aa622007-08-15 14:28:22 +000010
11This module provides a standard interface to extract, format and print stack
12traces of Python programs. It exactly mimics the behavior of the Python
13interpreter when it prints a stack trace. This is useful when you want to print
14stack traces under program control, such as in a "wrapper" around the
15interpreter.
16
17.. index:: object: traceback
18
19The module uses traceback objects --- this is the object type that is stored in
R. David Murraye02a3012009-04-27 18:38:19 +000020the :data:`sys.last_traceback` variable and returned as the third item from
Georg Brandl116aa622007-08-15 14:28:22 +000021:func:`sys.exc_info`.
22
23The module defines the following functions:
24
25
Senthil Kumarana82908f2016-01-15 21:45:17 -080026.. function:: print_tb(tb, limit=None, file=None)
Georg Brandl116aa622007-08-15 14:28:22 +000027
Senthil Kumarana82908f2016-01-15 21:45:17 -080028 Print up to *limit* stack trace entries from traceback object *tb* (starting
29 from the caller's frame) if *limit* is positive. Otherwise, print the last
30 ``abs(limit)`` entries. If *limit* is omitted or ``None``, all entries are
31 printed. If *file* is omitted or ``None``, the output goes to
32 ``sys.stderr``; otherwise it should be an open file or file-like object to
33 receive the output.
Serhiy Storchaka24559e42015-05-03 13:19:46 +030034
35 .. versionchanged:: 3.5
36 Added negative *limit* support.
Georg Brandl116aa622007-08-15 14:28:22 +000037
38
Senthil Kumarana82908f2016-01-15 21:45:17 -080039.. function:: print_exception(etype, value, tb, limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000040
Senthil Kumarana82908f2016-01-15 21:45:17 -080041 Print exception information and stack trace entries from traceback object
42 *tb* to *file*. This differs from :func:`print_tb` in the following
Georg Brandl1aea30a2008-07-19 15:51:07 +000043 ways:
44
Senthil Kumarana82908f2016-01-15 21:45:17 -080045 * if *tb* is not ``None``, it prints a header ``Traceback (most recent
Georg Brandl1aea30a2008-07-19 15:51:07 +000046 call last):``
Senthil Kumarana82908f2016-01-15 21:45:17 -080047 * it prints the exception *etype* and *value* after the stack trace
48 * if *etype* is :exc:`SyntaxError` and *value* has the appropriate format, it
Georg Brandl1aea30a2008-07-19 15:51:07 +000049 prints the line where the syntax error occurred with a caret indicating the
50 approximate position of the error.
51
Serhiy Storchaka24559e42015-05-03 13:19:46 +030052 The optional *limit* argument has the same meaning as for :func:`print_tb`.
Georg Brandl1aea30a2008-07-19 15:51:07 +000053 If *chain* is true (the default), then chained exceptions (the
54 :attr:`__cause__` or :attr:`__context__` attributes of the exception) will be
55 printed as well, like the interpreter itself does when printing an unhandled
56 exception.
Georg Brandl116aa622007-08-15 14:28:22 +000057
58
Georg Brandl7f01a132009-09-16 15:58:14 +000059.. function:: print_exc(limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000060
Serhiy Storchaka24559e42015-05-03 13:19:46 +030061 This is a shorthand for ``print_exception(*sys.exc_info(), limit, file,
62 chain)``.
Georg Brandl116aa622007-08-15 14:28:22 +000063
64
Georg Brandl7f01a132009-09-16 15:58:14 +000065.. function:: print_last(limit=None, file=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +000066
67 This is a shorthand for ``print_exception(sys.last_type, sys.last_value,
Serhiy Storchaka24559e42015-05-03 13:19:46 +030068 sys.last_traceback, limit, file, chain)``. In general it will work only
69 after an exception has reached an interactive prompt (see
70 :data:`sys.last_type`).
Georg Brandl116aa622007-08-15 14:28:22 +000071
72
Georg Brandl7f01a132009-09-16 15:58:14 +000073.. function:: print_stack(f=None, limit=None, file=None)
Georg Brandl116aa622007-08-15 14:28:22 +000074
Serhiy Storchaka24559e42015-05-03 13:19:46 +030075 Print up to *limit* stack trace entries (starting from the invocation
76 point) if *limit* is positive. Otherwise, print the last ``abs(limit)``
77 entries. If *limit* is omitted or ``None``, all entries are printed.
78 The optional *f* argument can be used to specify an alternate stack frame
79 to start. The optional *file* argument has the same meaning as for
80 :func:`print_tb`.
81
82 .. versionchanged:: 3.5
83 Added negative *limit* support.
Georg Brandl116aa622007-08-15 14:28:22 +000084
85
Senthil Kumarana82908f2016-01-15 21:45:17 -080086.. function:: extract_tb(tb, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +000087
Serhiy Storchaka24559e42015-05-03 13:19:46 +030088 Return a list of "pre-processed" stack trace entries extracted from the
Senthil Kumarana82908f2016-01-15 21:45:17 -080089 traceback object *tb*. It is useful for alternate formatting of
Serhiy Storchaka24559e42015-05-03 13:19:46 +030090 stack traces. The optional *limit* argument has the same meaning as for
91 :func:`print_tb`. A "pre-processed" stack trace entry is a 4-tuple
92 (*filename*, *line number*, *function name*, *text*) representing the
93 information that is usually printed for a stack trace. The *text* is a
94 string with leading and trailing whitespace stripped; if the source is
95 not available it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +000096
97
Georg Brandl7f01a132009-09-16 15:58:14 +000098.. function:: extract_stack(f=None, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +000099
100 Extract the raw traceback from the current stack frame. The return value has
101 the same format as for :func:`extract_tb`. The optional *f* and *limit*
102 arguments have the same meaning as for :func:`print_stack`.
103
104
Senthil Kumarana82908f2016-01-15 21:45:17 -0800105.. function:: format_list(extracted_list)
Georg Brandl116aa622007-08-15 14:28:22 +0000106
107 Given a list of tuples as returned by :func:`extract_tb` or
Senthil Kumarana82908f2016-01-15 21:45:17 -0800108 :func:`extract_stack`, return a list of strings ready for printing. Each
109 string in the resulting list corresponds to the item with the same index in
110 the argument list. Each string ends in a newline; the strings may contain
111 internal newlines as well, for those items whose source text line is not
112 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000113
114
Senthil Kumarana82908f2016-01-15 21:45:17 -0800115.. function:: format_exception_only(etype, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000116
Senthil Kumarana82908f2016-01-15 21:45:17 -0800117 Format the exception part of a traceback. The arguments are the exception
118 type and value such as given by ``sys.last_type`` and ``sys.last_value``.
119 The return value is a list of strings, each ending in a newline. Normally,
120 the list contains a single string; however, for :exc:`SyntaxError`
121 exceptions, it contains several lines that (when printed) display detailed
122 information about where the syntax error occurred. The message indicating
123 which exception occurred is the always last string in the list.
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125
Senthil Kumarana82908f2016-01-15 21:45:17 -0800126.. function:: format_exception(etype, value, tb, limit=None, chain=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000127
128 Format a stack trace and the exception information. The arguments have the
129 same meaning as the corresponding arguments to :func:`print_exception`. The
Senthil Kumarana82908f2016-01-15 21:45:17 -0800130 return value is a list of strings, each ending in a newline and some
131 containing internal newlines. When these lines are concatenated and printed,
132 exactly the same text is printed as does :func:`print_exception`.
Georg Brandl116aa622007-08-15 14:28:22 +0000133
134
Georg Brandl7f01a132009-09-16 15:58:14 +0000135.. function:: format_exc(limit=None, chain=True)
Georg Brandl1aea30a2008-07-19 15:51:07 +0000136
Senthil Kumarana82908f2016-01-15 21:45:17 -0800137 This is like ``print_exc(limit)`` but returns a string instead of printing to
138 a file.
Georg Brandl1aea30a2008-07-19 15:51:07 +0000139
140
Georg Brandl7f01a132009-09-16 15:58:14 +0000141.. function:: format_tb(tb, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143 A shorthand for ``format_list(extract_tb(tb, limit))``.
144
145
Georg Brandl7f01a132009-09-16 15:58:14 +0000146.. function:: format_stack(f=None, limit=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000147
148 A shorthand for ``format_list(extract_stack(f, limit))``.
149
Andrew Kuchling173a1572013-09-15 18:15:56 -0400150.. function:: clear_frames(tb)
151
152 Clears the local variables of all the stack frames in a traceback *tb*
153 by calling the :meth:`clear` method of each frame object.
154
155 .. versionadded:: 3.4
156
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300157.. function:: walk_stack(f)
158
Berker Peksag49f373b2015-03-06 12:18:06 +0200159 Walk a stack following ``f.f_back`` from the given frame, yielding the frame
160 and line number for each frame. If *f* is ``None``, the current stack is
161 used. This helper is used with :meth:`StackSummary.extract`.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300162
163 .. versionadded:: 3.5
164
165.. function:: walk_tb(tb)
166
Berker Peksag49f373b2015-03-06 12:18:06 +0200167 Walk a traceback following ``tb_next`` yielding the frame and line number
168 for each frame. This helper is used with :meth:`StackSummary.extract`.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300169
170 .. versionadded:: 3.5
171
172The module also defines the following classes:
173
174:class:`TracebackException` Objects
175-----------------------------------
176
Berker Peksag49f373b2015-03-06 12:18:06 +0200177.. versionadded:: 3.5
178
179:class:`TracebackException` objects are created from actual exceptions to
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300180capture data for later printing in a lightweight fashion.
181
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300182.. class:: TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300183
Berker Peksag49f373b2015-03-06 12:18:06 +0200184 Capture an exception for later rendering. *limit*, *lookup_lines* and
185 *capture_locals* are as for the :class:`StackSummary` class.
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300186
187 Note that when locals are captured, they are also shown in the traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300188
Berker Peksag49f373b2015-03-06 12:18:06 +0200189 .. attribute:: __cause__
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300190
Berker Peksag49f373b2015-03-06 12:18:06 +0200191 A :class:`TracebackException` of the original ``__cause__``.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300192
Berker Peksag49f373b2015-03-06 12:18:06 +0200193 .. attribute:: __context__
Robert Collinsd7c7e0e2015-03-05 20:28:52 +1300194
Berker Peksag49f373b2015-03-06 12:18:06 +0200195 A :class:`TracebackException` of the original ``__context__``.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300196
Berker Peksag49f373b2015-03-06 12:18:06 +0200197 .. attribute:: __suppress_context__
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300198
Berker Peksag49f373b2015-03-06 12:18:06 +0200199 The ``__suppress_context__`` value from the original exception.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300200
Berker Peksag49f373b2015-03-06 12:18:06 +0200201 .. attribute:: stack
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300202
Berker Peksag49f373b2015-03-06 12:18:06 +0200203 A :class:`StackSummary` representing the traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300204
Berker Peksag49f373b2015-03-06 12:18:06 +0200205 .. attribute:: exc_type
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300206
Berker Peksag49f373b2015-03-06 12:18:06 +0200207 The class of the original traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300208
Berker Peksag49f373b2015-03-06 12:18:06 +0200209 .. attribute:: filename
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300210
Berker Peksag49f373b2015-03-06 12:18:06 +0200211 For syntax errors - the file name where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300212
Berker Peksag49f373b2015-03-06 12:18:06 +0200213 .. attribute:: lineno
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300214
Berker Peksag49f373b2015-03-06 12:18:06 +0200215 For syntax errors - the line number where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300216
Berker Peksag49f373b2015-03-06 12:18:06 +0200217 .. attribute:: text
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300218
Berker Peksag49f373b2015-03-06 12:18:06 +0200219 For syntax errors - the text where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300220
Berker Peksag49f373b2015-03-06 12:18:06 +0200221 .. attribute:: offset
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300222
Berker Peksag49f373b2015-03-06 12:18:06 +0200223 For syntax errors - the offset into the text where the error occurred.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300224
Berker Peksag49f373b2015-03-06 12:18:06 +0200225 .. attribute:: msg
226
227 For syntax errors - the compiler error message.
228
229 .. classmethod:: from_exception(exc, *, limit=None, lookup_lines=True, capture_locals=False)
230
231 Capture an exception for later rendering. *limit*, *lookup_lines* and
232 *capture_locals* are as for the :class:`StackSummary` class.
233
234 Note that when locals are captured, they are also shown in the traceback.
235
236 .. method:: format(*, chain=True)
237
238 Format the exception.
239
240 If *chain* is not ``True``, ``__cause__`` and ``__context__`` will not
241 be formatted.
242
243 The return value is a generator of strings, each ending in a newline and
244 some containing internal newlines. :func:`~traceback.print_exception`
245 is a wrapper around this method which just prints the lines to a file.
246
247 The message indicating which exception occurred is always the last
248 string in the output.
249
250 .. method:: format_exception_only()
251
252 Format the exception part of the traceback.
253
254 The return value is a generator of strings, each ending in a newline.
255
256 Normally, the generator emits a single string; however, for
257 :exc:`SyntaxError` exceptions, it emits several lines that (when
258 printed) display detailed information about where the syntax
259 error occurred.
260
261 The message indicating which exception occurred is always the last
262 string in the output.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300263
264
265:class:`StackSummary` Objects
266-----------------------------
267
Berker Peksag49f373b2015-03-06 12:18:06 +0200268.. versionadded:: 3.5
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300269
Berker Peksag49f373b2015-03-06 12:18:06 +0200270:class:`StackSummary` objects represent a call stack ready for formatting.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300271
Berker Peksag49f373b2015-03-06 12:18:06 +0200272.. class:: StackSummary
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300273
Berker Peksag49f373b2015-03-06 12:18:06 +0200274 .. classmethod:: extract(frame_gen, *, limit=None, lookup_lines=True, capture_locals=False)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300275
Berker Peksag49f373b2015-03-06 12:18:06 +0200276 Construct a :class:`StackSummary` object from a frame generator (such as
277 is returned by :func:`~traceback.walk_stack` or
278 :func:`~traceback.walk_tb`).
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300279
Berker Peksag49f373b2015-03-06 12:18:06 +0200280 If *limit* is supplied, only this many frames are taken from *frame_gen*.
281 If *lookup_lines* is ``False``, the returned :class:`FrameSummary`
282 objects will not have read their lines in yet, making the cost of
283 creating the :class:`StackSummary` cheaper (which may be valuable if it
284 may not actually get formatted). If *capture_locals* is ``True`` the
285 local variables in each :class:`FrameSummary` are captured as object
286 representations.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300287
Berker Peksag49f373b2015-03-06 12:18:06 +0200288 .. classmethod:: from_list(a_list)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300289
Berker Peksag49f373b2015-03-06 12:18:06 +0200290 Construct a :class:`StackSummary` object from a supplied old-style list
291 of tuples. Each tuple should be a 4-tuple with filename, lineno, name,
292 line as the elements.
293
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300294
295:class:`FrameSummary` Objects
296-----------------------------
297
Berker Peksag49f373b2015-03-06 12:18:06 +0200298.. versionadded:: 3.5
299
300:class:`FrameSummary` objects represent a single frame in a traceback.
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300301
302.. class:: FrameSummary(filename, lineno, name, lookup_line=True, locals=None, line=None)
Robert Collins6bc2c1e2015-03-05 12:07:57 +1300303
304 Represent a single frame in the traceback or stack that is being formatted
305 or printed. It may optionally have a stringified version of the frames
Berker Peksag49f373b2015-03-06 12:18:06 +0200306 locals included in it. If *lookup_line* is ``False``, the source code is not
307 looked up until the :class:`FrameSummary` has the :attr:`~FrameSummary.line`
308 attribute accessed (which also happens when casting it to a tuple).
309 :attr:`~FrameSummary.line` may be directly provided, and will prevent line
310 lookups happening at all. *locals* is an optional local variable
311 dictionary, and if supplied the variable representations are stored in the
312 summary for later display.
Georg Brandl116aa622007-08-15 14:28:22 +0000313
Georg Brandl116aa622007-08-15 14:28:22 +0000314.. _traceback-example:
315
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000316Traceback Examples
317------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319This simple example implements a basic read-eval-print loop, similar to (but
320less useful than) the standard Python interactive interpreter loop. For a more
321complete implementation of the interpreter loop, refer to the :mod:`code`
322module. ::
323
324 import sys, traceback
325
326 def run_user_code(envdir):
Georg Brandl8d5c3922007-12-02 22:48:17 +0000327 source = input(">>> ")
Georg Brandl116aa622007-08-15 14:28:22 +0000328 try:
329 exec(source, envdir)
Andrew Svetlov47395612012-11-02 22:07:26 +0200330 except Exception:
Collin Winterc79461b2007-09-01 23:34:30 +0000331 print("Exception in user code:")
332 print("-"*60)
Georg Brandl116aa622007-08-15 14:28:22 +0000333 traceback.print_exc(file=sys.stdout)
Collin Winterc79461b2007-09-01 23:34:30 +0000334 print("-"*60)
Georg Brandl116aa622007-08-15 14:28:22 +0000335
336 envdir = {}
Collin Winterc79461b2007-09-01 23:34:30 +0000337 while True:
Georg Brandl116aa622007-08-15 14:28:22 +0000338 run_user_code(envdir)
339
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000340
341The following example demonstrates the different ways to print and format the
R. David Murraye02a3012009-04-27 18:38:19 +0000342exception and traceback:
343
344.. testcode::
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000345
346 import sys, traceback
347
348 def lumberjack():
349 bright_side_of_death()
Georg Brandl48310cd2009-01-03 21:18:54 +0000350
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000351 def bright_side_of_death():
352 return tuple()[0]
Georg Brandl48310cd2009-01-03 21:18:54 +0000353
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000354 try:
355 lumberjack()
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000356 except IndexError:
357 exc_type, exc_value, exc_traceback = sys.exc_info()
Georg Brandlf6945182008-02-01 11:56:49 +0000358 print("*** print_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000359 traceback.print_tb(exc_traceback, limit=1, file=sys.stdout)
Georg Brandlf6945182008-02-01 11:56:49 +0000360 print("*** print_exception:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000361 traceback.print_exception(exc_type, exc_value, exc_traceback,
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000362 limit=2, file=sys.stdout)
Georg Brandlf6945182008-02-01 11:56:49 +0000363 print("*** print_exc:")
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000364 traceback.print_exc()
Georg Brandlf6945182008-02-01 11:56:49 +0000365 print("*** format_exc, first and last line:")
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000366 formatted_lines = traceback.format_exc().splitlines()
Georg Brandlf6945182008-02-01 11:56:49 +0000367 print(formatted_lines[0])
368 print(formatted_lines[-1])
369 print("*** format_exception:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000370 print(repr(traceback.format_exception(exc_type, exc_value,
371 exc_traceback)))
Georg Brandlf6945182008-02-01 11:56:49 +0000372 print("*** extract_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000373 print(repr(traceback.extract_tb(exc_traceback)))
Georg Brandlf6945182008-02-01 11:56:49 +0000374 print("*** format_tb:")
Ezio Melotti5e0110e2010-03-13 01:28:34 +0000375 print(repr(traceback.format_tb(exc_traceback)))
376 print("*** tb_lineno:", exc_traceback.tb_lineno)
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000377
R. David Murraye02a3012009-04-27 18:38:19 +0000378The output for the example would look similar to this:
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000379
R. David Murraye02a3012009-04-27 18:38:19 +0000380.. testoutput::
381 :options: +NORMALIZE_WHITESPACE
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000382
383 *** print_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000384 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000385 lumberjack()
386 *** print_exception:
387 Traceback (most recent call last):
R. David Murraye02a3012009-04-27 18:38:19 +0000388 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000389 lumberjack()
R. David Murraye02a3012009-04-27 18:38:19 +0000390 File "<doctest...>", line 4, in lumberjack
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000391 bright_side_of_death()
392 IndexError: tuple index out of range
393 *** print_exc:
394 Traceback (most recent call last):
R. David Murraye02a3012009-04-27 18:38:19 +0000395 File "<doctest...>", line 10, in <module>
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000396 lumberjack()
R. David Murraye02a3012009-04-27 18:38:19 +0000397 File "<doctest...>", line 4, in lumberjack
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000398 bright_side_of_death()
399 IndexError: tuple index out of range
400 *** format_exc, first and last line:
401 Traceback (most recent call last):
402 IndexError: tuple index out of range
403 *** format_exception:
404 ['Traceback (most recent call last):\n',
R. David Murraye02a3012009-04-27 18:38:19 +0000405 ' File "<doctest...>", line 10, in <module>\n lumberjack()\n',
406 ' File "<doctest...>", line 4, in lumberjack\n bright_side_of_death()\n',
407 ' File "<doctest...>", line 7, in bright_side_of_death\n return tuple()[0]\n',
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000408 'IndexError: tuple index out of range\n']
409 *** extract_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000410 [('<doctest...>', 10, '<module>', 'lumberjack()'),
411 ('<doctest...>', 4, 'lumberjack', 'bright_side_of_death()'),
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000412 ('<doctest...>', 7, 'bright_side_of_death', 'return tuple()[0]')]
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000413 *** format_tb:
R. David Murraye02a3012009-04-27 18:38:19 +0000414 [' File "<doctest...>", line 10, in <module>\n lumberjack()\n',
415 ' File "<doctest...>", line 4, in lumberjack\n bright_side_of_death()\n',
416 ' File "<doctest...>", line 7, in bright_side_of_death\n return tuple()[0]\n']
417 *** tb_lineno: 10
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000418
419
420The following example shows the different ways to print and format the stack::
421
422 >>> import traceback
423 >>> def another_function():
424 ... lumberstack()
Georg Brandl48310cd2009-01-03 21:18:54 +0000425 ...
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000426 >>> def lumberstack():
427 ... traceback.print_stack()
Georg Brandlf6945182008-02-01 11:56:49 +0000428 ... print(repr(traceback.extract_stack()))
429 ... print(repr(traceback.format_stack()))
Georg Brandl48310cd2009-01-03 21:18:54 +0000430 ...
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000431 >>> another_function()
432 File "<doctest>", line 10, in <module>
433 another_function()
434 File "<doctest>", line 3, in another_function
435 lumberstack()
436 File "<doctest>", line 6, in lumberstack
437 traceback.print_stack()
438 [('<doctest>', 10, '<module>', 'another_function()'),
439 ('<doctest>', 3, 'another_function', 'lumberstack()'),
Georg Brandlf6945182008-02-01 11:56:49 +0000440 ('<doctest>', 7, 'lumberstack', 'print(repr(traceback.extract_stack()))')]
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000441 [' File "<doctest>", line 10, in <module>\n another_function()\n',
442 ' File "<doctest>", line 3, in another_function\n lumberstack()\n',
Georg Brandlf6945182008-02-01 11:56:49 +0000443 ' File "<doctest>", line 8, in lumberstack\n print(repr(traceback.format_stack()))\n']
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000444
445
R. David Murraye02a3012009-04-27 18:38:19 +0000446This last example demonstrates the final few formatting functions:
447
448.. doctest::
449 :options: +NORMALIZE_WHITESPACE
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000450
451 >>> import traceback
Georg Brandl0142d4a2009-04-27 16:22:44 +0000452 >>> traceback.format_list([('spam.py', 3, '<module>', 'spam.eggs()'),
453 ... ('eggs.py', 42, 'eggs', 'return "bacon"')])
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000454 [' File "spam.py", line 3, in <module>\n spam.eggs()\n',
455 ' File "eggs.py", line 42, in eggs\n return "bacon"\n']
Georg Brandl0142d4a2009-04-27 16:22:44 +0000456 >>> an_error = IndexError('tuple index out of range')
457 >>> traceback.format_exception_only(type(an_error), an_error)
Christian Heimesb9eccbf2007-12-05 20:18:38 +0000458 ['IndexError: tuple index out of range\n']