Skip to main content

This project is not ready for production yet.

https://img.shields.io/pypi/v/gresb_cel_python.svg https://img.shields.io/travis/gresb/gresb_cel_python

Parser and evaluator for CEL in Python using ANTLR4

This library provides parser and evaluator for Common Expression Language (CEL) expressions in Python projects. CEL is a language developed by Google that allows for safe and fast evaluation of expressions in a wide variety of applications, such as policy engines, rule engines, and more.

Features

  • Parse and evaluate CEL expressions directly within TypeScript projects.

  • Support for common arithmetic operations, logical operations, and comparisons.

  • Extensible design for adding custom functions and variables.

  • Error handling during parsing with custom error listeners.

  • Context-based evaluation to support dynamic expression evaluation.

Installation

You can install gresb_cel_python via pip:

pip install gresb_cel_python

Usage

Evaluate expression

To use the CEL parser and evaluator, you can instantiate the Runtime class with a CEL expression, and then evaluate it with a given context.

from gresb_cel_pyhon import Runtime

# Define a CEL expression
expression = "a + b * 10"

# Create a Runtime instance with the expression
runtime = Runtime(expression)

# Define a context with variables
context = {
  "a": 5,
  "b": 3
}

# Evaluate the expression with the context
result = runtime.evaluate(context)
print(f"Result: {result}")  # Output: Result: 35

Parsing Valiation


from cel_in_py import Runtime

# Define a CEL expression
expression = "a + b * 10"

# Create a Runtime instance with the expression
runtime = Runtime(expression)

# Define a context with variables
context = {
    "a": 5,
    "b": 3
}

# Evaluate the expression with the context
result = runtime.evaluate(context)

print(f"Result: {result}")  # Output: Result: 35

Advanced Usage

The VisitorInterp class allows for extending the functionality by adding custom functions or modifying the evaluation logic.

from cel_in_py.visitor_interp import VisitorInterp

# Define a custom function
def custom_function(x):
    return x * x

# Extend the visitor with the custom function
class CustomVisitor(VisitorInterp):
    def __init__(self, context):
        super().__init__(context)
        self.function_registry["custom_function"] = custom_function

# Use the custom visitor in the runtime
expression = "custom_function(5)"
runtime = Runtime(expression)
visitor = CustomVisitor({})
result = visitor.visit(runtime.ast)

print(f"Result: {result}")  # Output: Result: 25

Metadata

Release files for gresb-cel-python 0.0.3

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

Source distribution (sdist)

Source distribution for gresb-cel-python 0.0.3
File Size Uploaded
gresb_cel_python-0.0.3.tar.gz 54.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gresb-cel-python 0.0.3
File Interpreter ABI Platform
gresb_cel_python-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 111.6 kB

Release files / gresb_cel_python-0.0.3.tar.gz

Download URL gresb_cel_python-0.0.3.tar.gz
Size 54.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b89a51343736afd9734c5d7d5b3ac8528a6cc1217e854f393f573895d78bcf96
BLAKE2b-256 checksum
How to use checksums
33aef1c63e8c0e70a1ba60d31391c2f9768f9a36bdd9d161e709bb1ddfd85e49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.4

Release files / gresb_cel_python-0.0.3-py3-none-any.whl

Download URL gresb_cel_python-0.0.3-py3-none-any.whl
Size 57.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4f7476dff2a8e71760c9805c27864bd78db867b0a21311ba29d2844e9a33a11
BLAKE2b-256 checksum
How to use checksums
fbe2d67648b2856e54f6cfd11244ef92457450e5432c4257a4a379bc8a64ef93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.4

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

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