Skip to main content

Build complex rules, operate them with Pydantic, and execute them in Python

Project description

pydantic-logic

License: MIT GitHub stars PyPI version code style: black formatted with: isort mypy: checked

Build complex rules, operate them with Pydantic, and execute them in Python

Installation

pip install pydantic-logic

Examples

True expression

from pydantic_logic import Logic, LogicExpression, Operator

data = {
    "Phone number": "123123123",
    "some_value": True,
    "some_other_value": 1,
}

logic = Logic(
    expressions=[
        LogicExpression.b("Phone number", Operator.NE, "adasdasdasd"),
        LogicExpression.b("some_value", Operator.EQ, True),
        LogicExpression.b("some_other_value", Operator.GT, 0),
    ]
)
assert logic.evaluate(data)

False expression

from pydantic_logic import Logic, LogicExpression, Operator

data = {
    "Phone number": "123123123",
    "some_value": True,
    "some_other_value": 1,
}

logic = Logic(
    expressions=[
        LogicExpression.b("Phone number", Operator.EQ, "123123123"),
        LogicExpression.b("some_value", Operator.NE, False),
        LogicExpression.b("some_other_value", Operator.LT, 1),
    ]
)
assert not logic.evaluate(data)

Empty expression with default result

Suitable if the expressions are set by the end users, not the code

from pydantic_logic import Logic

data = {
    "Phone number": "123123123",
    "some_value": True,
    "some_other_value": 1,
}

logic = Logic(
    expressions=[]
)
assert logic.evaluate(data, default_if_empty=True)

Get wrong expressions

from pydantic_logic import Logic, LogicExpression, Operator

data = {
    "Phone number": "123123123",
    "some_value": True,
    "some_other_value": 1,
}

logic = Logic(
    expressions=[
        LogicExpression.b("Phone number", Operator.EQ, "123123123"),
        LogicExpression.b("some_value", Operator.NE, False),
        LogicExpression.b("some_other_value", Operator.LT, 1),
    ]
)
logic.get_wrong_expressions(data)  # second and third

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

pydantic_logic-1.0.3.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_logic-1.0.3-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_logic-1.0.3.tar.gz.

File metadata

  • Download URL: pydantic_logic-1.0.3.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for pydantic_logic-1.0.3.tar.gz
Algorithm Hash digest
SHA256 2d6238f5fa0dd8e6a14985324acc06cb0e1cc513cca462731c4d981acfe29445
MD5 e0270cfdbfb082e89350b4bb36fc64a1
BLAKE2b-256 04d90cf570405e45573852ccdded25a9ff0be39c388208d0d1942079338ad6e3

See more details on using hashes here.

File details

Details for the file pydantic_logic-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: pydantic_logic-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for pydantic_logic-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 17ea12645fc4235057a00345ffa5c69f86e18945b2094f891661cea9943a9a33
MD5 673338728e3fb3c95de142c3c40b6453
BLAKE2b-256 b9e9de52d3c3197bd88c732893ef03ebd937b24541cea40a294e187fc0fa99ea

See more details on using hashes here.

Supported by

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