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 details)
Built Distribution
File details
Details for the file simpleruleengine-2.0.3.tar.gz
.
File metadata
- Download URL: simpleruleengine-2.0.3.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91210176e7ea5d67ad7eb6fce1b7ac0b105e6e3e6c372371475e7c44b01daea8 |
|
MD5 | 2de5a1dbd929ac758804d6162b29cff3 |
|
BLAKE2b-256 | 393744d33a6b5f2886ecfb625b06807af0b07ed1290b7a716d9992d1922a62ad |
File details
Details for the file simpleruleengine-2.0.3-py3-none-any.whl
.
File metadata
- Download URL: simpleruleengine-2.0.3-py3-none-any.whl
- Upload date:
- Size: 27.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d934ef44b8752489f0aee7c16da6a6e281b211dbe5fdc1cedda0989c68d05488 |
|
MD5 | c8c03439b4e5152ecfd297b9d18227d0 |
|
BLAKE2b-256 | b8d4e0ce44a3bbefb6cb04ccbf4144a20425f9064b2d9f1c239ffbdacb9a4cbb |