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}