modelx v0.21.0 (2022年9月24日)#
本次更新引入了以下改进,使公式错误检查更加便捷。
要更新modelx,请运行以下命令:
>>> pip install modelx --upgrade
如果您使用的是Anaconda,请改用conda命令:
>>> conda update modelx
功能增强#
关于get_traceback()的更新以及trace_locals()的介绍#
当公式抛出错误时,可通过get_traceback()获取公式执行的追溯信息。
get_traceback()现已增强功能,能够在追溯列表中同时报告公式引用的局部变量。
此外,还引入了便捷函数trace_locals(),用于快速查看错误公式或其调用者所引用的局部变量:
>>> 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()
[(Model1.Space1.foo(x=1), 3, {'x': 1, 'a': 1}),
(Model1.Space1.bar(y=1), 3, {'y': 1, 'b': 2})]
>>> mx.trace_locals()
{'y': 1, 'b': 2}
>>> mx.trace_locals(-2)
{'x': 1, 'a': 1}