布尔表达式解释器
项目描述
Booleano 是一个布尔表达式的解释器,一个库,可以用于定义和运行文本(例如,在自然语言中)或 Python 代码中可用的过滤器。
稳定分支
开发状态
为了处理基于文本的过滤器,Booleano 伴随一个功能齐全的解析器,其语法是 自适应的:其属性可以通过简单的配置指令来覆盖。
另一方面,该库公开了一个纯Python编写的过滤器Pythonic API。这些过滤器特别有用,可以从第三方库提供的对象中构建可重用的条件。
TLDR;
字符串 + 一些变量 = 安全的布尔评估
# is this character a minor guy with a "0" in his name and born after 1983 ?
eval_boolean(
'age < const:majority & "o" in name & birthdate > "1983-02-02"',
{"name": "sokka", "age": 15, "birthdate": datetime.date(1984, 1, 1)},
{'majority': 18},
grammar_tokens={'belongs_to': 'in'}
) => True
有趣的用例
Booleano 允许安全地评估表达式,使其可用于其他目的。
用户:名字是 "john" 并且用户:姓氏在 {"doe", "shepard"}
+``{“user”: {“name”: “katara”}}`` => False +``{“user”: {“name”: “john”, “surname”: “doe”}}`` => True
使用一些代码,您可以提供任何类型,并且表达式仍然可以是文本
+``user:birthdate > “03-07-1987”`` +``duration > 1m30s``
查看示例目录以查看更多运行示例!
文档
贡献
该项目不是由当前维护者创建的。实际上,我们对这个项目的了解远远不够完善,但有了100%的测试覆盖率,让它保持运行并不困难。
如果您发现了一个错误,或者想要一些功能,请随意创建一个问题,或者一个拉取请求,但请注意,对我们来说处理它可能很难。最好的修复方法是编写一个带有通过测试的拉取请求,如果它是好的代码,我们将合并它。
查看CONTRIBUTING.rst了解如何轻松与此项目合作。
升级说明
由于重进口路径的变更,旧版alpha发行版1.0a1与较新版本(从1.1a1开始)不兼容。不建议从模块(__init__.py)中导入所有内容。
致谢
分支自 Gustavo Narea 的 booleano 项目launchpad.net。
由 yupeek 维护
链接
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。