Skip to main content

Verdict — Python

The Python implementation of Verdict — a small, zero-dependency, async-native rule-evaluation engine. See the top-level README.md for what Verdict is and why it's shaped this way in narrative form; this doc is just "how do I install it and write my first rule" for Python specifically.

This exact file is also what PyPI renders as the package description — none of its sibling files travel with a pip install, which is why every link below is an absolute GitHub URL rather than a relative path; on GitHub itself they work exactly the same way.

Install

pip install verdict-rules

The distribution on PyPI is named verdict-rules (the name verdict was already taken by an unrelated package), but the import name is plain verdict:

from verdict import Rule, FunctionRule, AndRule, OrRule, RulesEngine

A first rule

A FunctionRule's predicate returns a full RuleResult, not a bare boolean — that keeps it in control of detail/data, not just pass/fail:

import asyncio
from verdict import FunctionRule, AndRule, RuleResult, RulesEngine

async def under_limit(context: dict) -> RuleResult:
    return RuleResult(
        rule_name="under_limit",
        passed=context["requests_this_minute"] < context["limit"],
    )

async def in_good_standing(context: dict) -> RuleResult:
    return RuleResult(
        rule_name="in_good_standing",
        passed=context["account_status"] == "active",
    )

async def main() -> None:
    can_proceed = AndRule(
        "can_proceed",
        [
            FunctionRule("under_limit", under_limit),
            FunctionRule("in_good_standing", in_good_standing),
        ],
    )
    engine = RulesEngine([can_proceed])
    result = await engine.run_named(
        "can_proceed",
        {"requests_this_minute": 3, "limit": 10, "account_status": "active"},
    )
    print(result.passed)  # True

asyncio.run(main())

Where to go next

Doc For
docs/quickstart.md The quickstart — core concepts and a full worked example
docs/architecture.md Why it's shaped this way, in depth — type structure, the execution model
docs/extension.md Building on top of it from your own code, with no changes here
docs/maintenance.md Changing this package itself
docs/testing.md How the test suite is organized, and what a change needs to prove
docs/samples/ Worked examples — dynamic discounts, fee waivers, tier promotions, moderation routing, data-driven rule sets
examples/ Full, tested mini-projects behind the more comprehensive samples — real code, real tests, real docs

Development

uv sync
uv run pytest

Release files for verdict-rules 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for verdict-rules 0.1.0
File Size Uploaded
verdict_rules-0.1.0.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for verdict-rules 0.1.0
File Interpreter ABI Platform
verdict_rules-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size:14.8 kB

Release files / verdict_rules-0.1.0.tar.gz

Download URL verdict_rules-0.1.0.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
95f872c6845dda664e771e8df8122c1009ab312efe963a603648fe06e73e305c
BLAKE2b-256 checksum
How to use checksums
f920e2448cb4f2e2a7d5d2e813688e4767f4598154cbf6007b79efeb0892f3c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / verdict_rules-0.1.0-py3-none-any.whl

Download URL verdict_rules-0.1.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3a072b1b1b3241c299015b524535317bdd07ad3d2b4a3ad31132e1e9b007917
BLAKE2b-256 checksum
How to use checksums
7fe15e2cd34318d0cee1cf3f7f8245fce2b6767e0fc5f58888dd4b6aec83ecd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page