Skip to main content

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).

CodeFactor CircleCI

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

  1. Ability to declaratively author both Scoring and Decision Rules.
  2. The library offers composable functional syntax that can be extended with various format adapters. See here for an example of such an extension.
  3. Ability to version control rule declarations thus enabling auditing of rule changes over a period of time.
  4. Ability to author chained rules. Evaluation of one rule can refer to the result of another rule, thus enabling modular, hierarchical rules.

Installation

pypi repository

pip install simpleruleengine==2.0.2

Source Code

simple-rule-engine GitHub Repository

Simple Rule Engine - Motivation and Under-the-Hood

https://jeyabalajis.gitbook.io/simple-rule-engine/

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)

Uploaded Source

Built Distribution

simpleruleengine-2.0.3-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

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

Hashes for simpleruleengine-2.0.3.tar.gz
Algorithm Hash digest
SHA256 91210176e7ea5d67ad7eb6fce1b7ac0b105e6e3e6c372371475e7c44b01daea8
MD5 2de5a1dbd929ac758804d6162b29cff3
BLAKE2b-256 393744d33a6b5f2886ecfb625b06807af0b07ed1290b7a716d9992d1922a62ad

See more details on using hashes here.

File details

Details for the file simpleruleengine-2.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for simpleruleengine-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d934ef44b8752489f0aee7c16da6a6e281b211dbe5fdc1cedda0989c68d05488
MD5 c8c03439b4e5152ecfd297b9d18227d0
BLAKE2b-256 b8d4e0ce44a3bbefb6cb04ccbf4144a20425f9064b2d9f1c239ffbdacb9a4cbb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page