跳转到主要内容

限制性评估器

项目描述

Leval

License Coverage CI PyPI

一个限制性表达式评估器

ast.literal_eval()更适合动态使用,同时保持与您传入的函数一样安全。

底层,它使用ast模块解析表达式,然后在Python中遍历AST以评估结果。您还可以指定表达式复杂性的深度限制以及评估的时间限制。

示例用法

简单API

对于许多用例,simple_eval()函数就足够了。您可以指定深度限制和时间限制,以及可选的变量和函数映射。

values映射也可以通过字符串元组作为键,这是属性访问折叠成的。

在简单API中,操作通常仅限于数字。

from leval.simple import simple_eval

assert simple_eval('1 + 2') == 3
assert simple_eval('x < -80 or x > 125 or x == 85', values={'x': 85})
assert simple_eval('abs(x) > 80', values={'x': -85}, functions={'abs': abs})
assert simple_eval('x.y.z + 8', values={('x', 'y', 'z'): 34}) == 42

高级API

底层,simple_eval只是

  1. 初始化一个评估宇宙,该宇宙定义了可用的函数、变量和操作
  2. 创建一个评估器,使用给定的宇宙评估表达式

这两个类都设计为易于继承。在test_leval.py文件中有示例。

项目详情


下载文件

下载您平台对应的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源代码分发

leval-1.3.0.tar.gz (9.6 kB 查看哈希值)

上传时间 源代码

构建分发

leval-1.3.0-py3-none-any.whl (14.5 kB 查看哈希值)

上传时间 Python 3