A lightweight rule engine that allows declarative specification of business rules.
Project description
simple-rule-engine
A lightweight yet powerful rule engine that allows declarative specification of business rules and saves tons of repeated development work.
- This library has been utilized in authoring & evaluation of a number of complex credit decisioning, upgrade/downgrade, and lender evaulation criteria rules at FundsCorner
- This library can also be considered as a Policy Framework for validating IaC (Infrastructure as Code).
At a glance
simple-rule-engine is a Python library that enables declarative specification of decision or scoring rules.
Example Decision matrix
Bureau Score | Marital Status | Decision |
---|---|---|
between 650 and 800 | in [Married, Unspecified] | GO |
Rule specification
from simpleruleengine.conditional.when_all import WhenAll
from simpleruleengine.expression.expression import Expression
from simpleruleengine.operator.between import Between
from simpleruleengine.operator.string_in import In
from simpleruleengine.rulerow.rule_row_decision import RuleRowDecision
from simpleruleengine.ruleset.rule_set_decision import RuleSetDecision
from simpleruleengine.token.numeric_token import NumericToken
from simpleruleengine.token.string_token import StringToken
if __name__ == "__main__":
cibil_score_between_650_800 = Expression(
NumericToken("cibil_score"),
Between(floor=650, ceiling=800)
)
marital_status_in_married_unspecified = Expression(
StringToken("marital_status"),
In("Married", "Unspecified")
)
rule_row_decision_go = RuleRowDecision(
WhenAll(
cibil_score_between_650_800,
marital_status_in_married_unspecified
),
"GO"
)
rule_set_decision = RuleSetDecision(rule_row_decision_go)
fact = dict(
cibil_score=700,
marital_status="Married"
)
assert rule_set_decision.evaluate(fact) == "GO"
Key Features
- Ability to declaratively author both Scoring and Decision Rules.
- The library offers composable functional syntax that can be extended with various format adapters. See here for an example of such an extension.
- Ability to version control rule declarations thus enabling auditing of rule changes over a period of time.
- Ability to author chained rules. Evaluation of one rule can refer to the result of another rule, thus enabling modular, hierarchical rules.
Installation
pip install simpleruleengine==2.0.2
Source Code
simple-rule-engine GitHub Repository
Simple Rule Engine - Motivation and Under-the-Hood
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
simpleruleengine-2.0.3.tar.gz
(11.9 kB
view hashes)
Built Distribution
Close
Hashes for simpleruleengine-2.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d934ef44b8752489f0aee7c16da6a6e281b211dbe5fdc1cedda0989c68d05488 |
|
MD5 | c8c03439b4e5152ecfd297b9d18227d0 |
|
BLAKE2b-256 | b8d4e0ce44a3bbefb6cb04ccbf4144a20425f9064b2d9f1c239ffbdacb9a4cbb |