Skip to main content

No project description provided

Project description

Common Expression Language (CEL)

The Common Expression Language (CEL) is a non-Turing complete language designed for simplicity, speed, and safety. CEL is primarily used for evaluating expressions in a variety of applications, such as policy evaluation, state machine transitions, and graph traversals.

This Python package wraps the Rust implementation cel-interpreter.

Basic usage:

from cel import evaluate
expression = "age > 21"
result = evaluate(expression, {"age": 18})
print(result)  # False

Simply pass the CEL expression and a dictionary of context to the evaluate function. The function returns the result of the expression evaluation converted to Python primitive types.

CEL supports a variety of operators, functions, and types

evaluate(
    'resource.name.startsWith("/groups/" + claim.group)', 
    {
        "resource": {"name": "/groups/hardbyte"},
        "claim": {"group": "hardbyte"}
    }
)

Future work

Support for converting Python datetime objects and timedeltas into CEL types.

Command line interface

The package (plans to) also provides a command line interface for evaluating CEL expressions:

$ python -m cel '1 + 2'
3

Custom Python Functions

Ability to add Python functions to the Context object:

from cel import evaluate, Context

def is_adult(age):
    return age > 21

context = Context()
context.add_function("is_adult", is_adult)
print(evaluate("is_adult(age)", {"age": 18}, context))  # False

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

common_expression_language-0.1.1.tar.gz (17.5 kB view hashes)

Uploaded Source

Built Distributions

common_expression_language-0.1.1-cp312-none-win_amd64.whl (907.5 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

common_expression_language-0.1.1-cp312-none-win32.whl (823.3 kB view hashes)

Uploaded CPython 3.12 Windows x86

common_expression_language-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

common_expression_language-0.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.2 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

common_expression_language-0.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

common_expression_language-0.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

common_expression_language-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

common_expression_language-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (2.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

common_expression_language-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

common_expression_language-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

common_expression_language-0.1.1-cp311-none-win_amd64.whl (906.7 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

common_expression_language-0.1.1-cp311-none-win32.whl (822.1 kB view hashes)

Uploaded CPython 3.11 Windows x86

common_expression_language-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

common_expression_language-0.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.2 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

common_expression_language-0.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

common_expression_language-0.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

common_expression_language-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

common_expression_language-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (2.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

common_expression_language-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

common_expression_language-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

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