Safe boolean expression evaluator
Project description
Boolexp provides “safe” evaluation of boolean expressions for use cases where eval might be dangerous. Boolexp expressions are context-free and mimic Python sytax. Only basic math opearations and data structures are provided.
Instalation
To install Boolexp, change to the directory where setup.py is located and type:
python setup.py install
Requirements:
Python 2.7
pyparsing 1.5.0 or later
Expression Syntax Overview
Basic math operators *,/,+,- have highest priority
>>> from boolexp import Expression
>>> Expression("4 + 4 / 2").evaluate()
>>> 6
>>> Expression("( 4 + 4 ) / 2 ").evaluate()
>>> 4
Comparsion operators !=, ==, <, >, <=, >=, in are next in priority. All comparsion operators have return type of boolean, which can be used as input for boolean operators and, or, not with lowest priority.
>>> from boolexp import Expression
>>> Expression(2 == 1).evaluate()
>>> False
>>> Expression("2 * - 2 == - 4").evaluate()
>>> True
>>> Expression("not 2 == 3").evaluate()
>>> True
>>> Expression("3 <= 8 and 2 == 5").evaluate()
>>> False
Expresions with with variables
This all would not be much of a fun without posibility to use variables. Allowed types for variables are bool,int,float,str,list,dict
>>> from boolexp import Expression
>>> Expression("1 in v").evaluate(dict(v=[1,2])).evaluate()
>>> True
>>> Expression("one[1].part == 2").evaluate(dict(one=[1, dict(part=2)], two=1)).evaluate()
>>> True
Diclaimer
This project is now in a state of proof of concept only, thus far from suitable for production enviroment.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.