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

Download files

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

Source Distribution

gresb_cel_python-0.0.3.tar.gz (54.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gresb_cel_python-0.0.3-py3-none-any.whl (57.3 kB view details)

Uploaded Python 3

File details

Details for the file gresb_cel_python-0.0.3.tar.gz.

File metadata

  • Download URL: gresb_cel_python-0.0.3.tar.gz
  • Upload date:
  • Size: 54.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for gresb_cel_python-0.0.3.tar.gz
Algorithm Hash digest
SHA256 b89a51343736afd9734c5d7d5b3ac8528a6cc1217e854f393f573895d78bcf96
MD5 ac273b88e969fe3b569bab0edf9afcb1
BLAKE2b-256 33aef1c63e8c0e70a1ba60d31391c2f9768f9a36bdd9d161e709bb1ddfd85e49

See more details on using hashes here.

File details

Details for the file gresb_cel_python-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for gresb_cel_python-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c4f7476dff2a8e71760c9805c27864bd78db867b0a21311ba29d2844e9a33a11
MD5 8002cf45addd3b16a0c491ff2f4e3f7f
BLAKE2b-256 fbe2d67648b2856e54f6cfd11244ef92457450e5432c4257a4a379bc8a64ef93

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 files

0.0.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page