modelx.get_traceback#
- get_traceback(show_locals=False)[source]#
Traces back the last formula error.
Returns traceback information if an error is thrown during the last formula execution. Otherwise, returns an empty list. The traceback information is a list of tuples, each of which has 2 or 3 elements depending on
show_locals
. The first element is a Node object representing a call to a formula. The second element is the line number at which point, the formula either called the next formula or raised the error. Whenshow_locals
isTrue
, there exists another elemet. The third element is adict
of the local variables referenced by the formula execution.- Parameters
show_locals (
bool
, optional) – Whether to show the local variabls of each call.False
by default.
Example
>>> import modelx as mx >>> @mx.defcells ... def foo(x): ... a = 1 ... return bar(x) + a >>> @mx.defcells ... def bar(y): ... b = 2 ... return 2 * y / 0 # raises ZeroDivisionError >>> foo(1) modelx.core.errors.FormulaError: Error raised during formula execution ZeroDivisionError: division by zero Formula traceback: 0: Model1.Space1.foo(x=1), line 3 1: Model1.Space1.bar(y=1), line 3 Formula source: def bar(y): b = 2 return 2 * y / 0 # raise ZeroDivizion >>> mx.get_traceback(show_locals=True) [(Model1.Space1.foo(x=1), 3, {'x': 1, 'a': 1}), (Model1.Space1.bar(y=1), 3, {'y': 1, 'b': 2})]
Changed in version 0.22.0:
show_locals
option is added.Changed in version 0.21.0: The 3rd element is added.
See also