Skip to main content

Python bindings for Regorus - a fast, lightweight Rego interpreter written in Rust

Project description

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.

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 query
results = engine.eval_query('data.framework.mount_overlay=x')

# Print results
print(results['result'][0])

# Eval query as json
results_json = engine.eval_query_as_json('data.framework.mount_overlay=x')
print(results_json)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

lakera_regorus-0.1.0-cp311-cp311-manylinux_2_34_aarch64.whl (19.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.34+ ARM64

lakera_regorus-0.1.0-cp311-cp311-manylinux_2_27_x86_64.whl (20.5 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.27+ x86-64

lakera_regorus-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

lakera_regorus-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (19.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

lakera_regorus-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

lakera_regorus-0.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.3 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64

lakera_regorus-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.4 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

lakera_regorus-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (19.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

Supported by

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