跳转到主要内容

布尔表达式解释器

项目描述

Booleano 是一个布尔表达式的解释器,一个库,可以用于定义和运行文本(例如,在自然语言中)或 Python 代码中可用的过滤器。

稳定分支

https://img.shields.io/travis/Yupeek/booleano/master.svg https://readthedocs.org/projects/booleano/badge/?version=latest https://coveralls.io/repos/github/Yupeek/booleano/badge.svg?branch=master Latest PyPI version Number of PyPI downloads per month Code Climate

开发状态

https://img.shields.io/travis/Yupeek/booleano/develop.svg https://coveralls.io/repos/github/Yupeek/booleano/badge.svg?branch=develop

为了处理基于文本的过滤器,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``

查看示例目录以查看更多运行示例!

文档

完整文档可在http://booleano.readthedocs.io/en/latest/找到。

贡献

该项目不是由当前维护者创建的。实际上,我们对这个项目的了解远远不够完善,但有了100%的测试覆盖率,让它保持运行并不困难。

如果您发现了一个错误,或者想要一些功能,请随意创建一个问题,或者一个拉取请求,但请注意,对我们来说处理它可能很难。最好的修复方法是编写一个带有通过测试的拉取请求,如果它是好的代码,我们将合并它。

查看CONTRIBUTING.rst了解如何轻松与此项目合作。

升级说明

由于重进口路径的变更,旧版alpha发行版1.0a1与较新版本(从1.1a1开始)不兼容。不建议从模块(__init__.py)中导入所有内容。

致谢

分支自 Gustavo Narea 的 booleano 项目launchpad.net

由 yupeek 维护

项目详情


下载文件

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

源代码分发

booleano-1.1a2.tar.gz (35.5 kB 查看哈希值)

上传时间 源代码

构建分发

booleano-1.1a2-py2.py3-none-any.whl (54.9 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持