Quick examples:
xpress.evaluate([[3, ">", 1], "and", [1, "<", 3]]) # True
rules = [["var:temp", "<", 110], "and", ["var:pie.filling", "==", "apple"]]
data = { "temp" : 100, "pie" : { "filling" : "apple" } }
xpress.evaluate(rules, data) # True
The original purpose was building a flexible query builder. Later, I also used it for expressing log routing conditions in our config file.