Files
regorus/bindings/python
Anand Krishnamoorthi f98865fc98 chore(release): release regorus v0.11.0 (#766)
Release the core `regorus` crate as v0.11.0 (up from v0.10.1) and align
every language binding to the same version.

This release carries an API-breaking change (flagged by
cargo-semver-checks), so it takes a minor bump under the 0.x SemVer
convention.

Highlights since v0.10.1:

- fix(rvm): assert every-quantifier results so failing cases don't pass
  (#765)
- fix: deep-merge nested data documents in Engine::add_data (#760)
- feat(compiler): support registered host-await builtins for natural
  function call syntax (#667)
- feat(value): introduce Set/Object storage abstractions (#740, #735,
  #736)
- security: reject data nested beyond 128 levels to avoid stack overflow

Version updates:

- Core crate (Cargo.toml/Cargo.lock) 0.10.1 -> 0.11.0
- Bindings aligned via `cargo xtask bindings`: ffi, java, python, wasm,
  ruby, csharp (manifests, lockfiles, pom.xml, Directory.Packages.props,
  version.rb)
- CHANGELOG.md updated with the 0.11.0 section
2026-07-21 17:06:44 -05:00
..
2026-03-27 12:34:49 -05:00
2024-01-28 14:39:59 -08:00
2024-02-01 13:47:27 -08:00

regorus

Regorus is

  • Rego-Rus(t) - A fast, light-weight Rego interpreter written in Rust.
  • Rigorous - A rigorous enforcer of well-defined Rego semantics.

Regorus can be used in Python via regorus package. (It is not yet available in PyPI, but can be manually built.)

See Repository.

Automation

Run cargo xtask build-python to produce wheels via maturin, or cargo xtask test-python to reinstall the package locally and execute the sample script and pytest suite.

To build this binding, see building

Usage

import regorus

# Create engine
engine = regorus.Engine()

# Load policies
engine.add_policy_from_file('../../tests/aci/framework.rego')
engine.add_policy_from_file('../../tests/aci/api.rego')
engine.add_policy_from_file('../../tests/aci/policy.rego')

# Add policy data
data = {
  "metadata": {
    "devices": {
      "/run/layers/p0-layer0": "1b80f120dbd88e4355d6241b519c3e25290215c469516b49dece9cf07175a766",
      "/run/layers/p0-layer1": "e769d7487cc314d3ee748a4440805317c19262c7acd2fdbdb0d47d2e4613a15c",
      "/run/layers/p0-layer2": "eb36921e1f82af46dfe248ef8f1b3afb6a5230a64181d960d10237a08cd73c79",
      "/run/layers/p0-layer3": "41d64cdeb347bf236b4c13b7403b633ff11f1cf94dbc7cf881a44d6da88c5156",
      "/run/layers/p0-layer4": "4dedae42847c704da891a28c25d32201a1ae440bce2aecccfa8e6f03b97a6a6c",
      "/run/layers/p0-layer5": "fe84c9d5bfddd07a2624d00333cf13c1a9c941f3a261f13ead44fc6a93bc0e7a"
    }
  }
}
engine.add_data(data)

# Set input
input = {
  "containerID": "container0",
  "layerPaths": [
    "/run/layers/p0-layer0",
    "/run/layers/p0-layer1",
    "/run/layers/p0-layer2",
    "/run/layers/p0-layer3",
    "/run/layers/p0-layer4",
    "/run/layers/p0-layer5"
  ],
  "target": "/run/gcs/c/container0/rootfs"
}
engine.set_input(input)

# Eval rule
value = engine.eval_rule('data.framework.mount_overlay')

# Print value
print(value)