Syntax

The syntax for creating rules is based off of logical expressions evaluating to either True (matching) or False (non-matching). Rules support a small set of data types which can be defined as constants or resolved using the Python object on which the rule is being applied.

Rule Engine Type Compatible Python Types
BOOLEAN bool
DATETIME datetime.date, datetime.datetime
FLOAT int, float
NULL NoneType
STRING str

Not all supported operations work with all data types as noted in the table below. Rules follow a standard order of operations.

Grammar

The expression grammar supports a number of operations including basic arithmetic for numerical data and regular expressions for strings. Operations are type aware and will raise an exception when an incompatible type is used.

Supported Operations

Operation Description Compatible Data Types
Arithmetic Operators
+ Addition FLOAT
- Subtraction FLOAT
* Multiplication FLOAT
** Exponent FLOAT
/ True division FLOAT
// Floor division FLOAT
% Modulo FLOAT
Bitwise-Arithmetic Operators
& Bitwise-and 1 FLOAT
| Bitwise-or 1 FLOAT
^ Bitwise-xor 1 FLOAT
>> Bitwise right shift 1 FLOAT
<< Bitwise left shift 1 FLOAT
Comparison Operators
== Equal to ANY
!= Not equal to ANY
Arithmetic-Comparison Operators
> Greater than DATETIME, FLOAT
>= Greater than or equal to DATETIME, FLOAT
< Less than DATETIME, FLOAT
<= Less than or equal to DATETIME, FLOAT
Fuzzy-Comparison Operators
=~ Regex match 2 NULL, STRING
=~~ Regex search 2 NULL, STRING
!~ Regex match fails 2 NULL, STRING
!~~ Regex search fails 2 NULL, STRING
Logical Operators
and Logical and ANY
not Logical not ANY
or Logical or ANY

1 Bitwise operations support floating point values, but if the value is not a natural number, an EvaluationError will be raised.

2 When using regular expression operations, the expression on the left is the string to compare and the expression on the right is the regular expression to use for either the match or search operation.

Reserved Keywords

Keyword Description
null The NullExpression literal value
Booleans (BooleanExpression Literals)
true The “True” boolean value
false The “False” boolean value
Floats (FloatExpression Literals)
inf Floating point value for infinity
nan Floating point value for not-a-number
Logical Operators
and Logical “and” operator
not Logical “not” operator
or Logical “or” operator