Skip to main content

Parser and evaluator for CEL in Python using Antlr

Project description

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

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

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.

Supported by

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