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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|