Skip to main content

Simple boolean expression evaluation engine

Project description

boolrule

https://img.shields.io/pypi/v/boolrule.svg https://github.com/tailsdotcom/boolrule/actions/workflows/ci.yml/badge.svg https://readthedocs.org/projects/boolrule/badge/?version=latest

Simple boolean expression evaluation engine.

Features

Compare simple boolean statements:

>>> rule = BoolRule('5 > 3')
>>> rule.test()
True
>>> rule = BoolRule('5 < 3')
>>> rule.test()
False

Evaluate boolean statements against a context dict:

>>> can_buy_beer = BoolRule('user.age_years >= 18')
>>> can_buy_beer.test({'user':{'age_years': 12}})
False
>>> can_buy_beer.test({'user':{'age_years': 20}})
True

Combine conditions with and and or operators to produce complex expressions:

>>> is_hipster = BoolRule('address.postcode.outcode in ("E1","E2") or user.has_beard = true')
>>> address = {
>>>   'postcode': {
>>>      'outcode': 'E1'
>>>   }
>>> }
>>> is_hipster.test({'has_beard': False, 'address': address})
True

Credits

Made possible by the excellent pyparsing library.

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.3.5 (2024-02-09)

  • Introduce not∩ operator

0.3.4 (2021-09-24)

  • Fixed error caused by early return when evaluating nested expressions.

0.3.3 (2021-07-15)

  • Upgrade dependencies.

0.3.2 (2020-09-23)

  • Add Type hinting.

0.3.1 (2020-09-09)

  • Raise an exception when the whole expression cannot be parsed. Previous behaviour would discard the segment that didn’t match the expression grammar.

0.3.0 (2018-01-15)

  • Add None type and is/isnot operators (contributed by ocurero)

0.2.0 (2016-10-27)

  • Fixed error caused by refactor from internal codebase that was preventing deep context level values from being referenced in a substitution value

0.1.2 (2016-09-30)

  • Improved documentation

0.1.1 (2016-09-30)

  • Made context optional

  • Improved documentation

0.1.0 (2016-09-30)

  • First release on PyPI.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page