Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

common-expression-language

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

common-expression-language

  • 0.3.1
  • PyPI
  • Socket score

Maintainers
1

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.

Install from PyPI:

pip install common-expression-language

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"}
    }
)
True

Custom Python Functions

This Python library supports user defined Python functions in the context:

from cel import evaluate

def is_adult(age):
    return age > 21

evaluate("is_adult(age)", {'is_adult': is_adult, 'age': 18})
# False

You can also explicitly create a Context object:

from cel import evaluate, Context

def is_adult(age):
    return age > 21

context = Context()
context.add_function("is_adult", is_adult)
context.update({"age": 18})

evaluate("is_adult(age)", context)
# False

Testing

uv run pytest --log-cli-level=debug

Future work

Command line interface

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

$ python -m cel '1 + 2'
3

Separate compilation and Execution steps

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc