mirror of
https://github.com/gorules/zen.git
synced 2026-10-05 16:02:40 +00:00
89 lines
2.6 KiB
Python
89 lines
2.6 KiB
Python
from collections.abc import Awaitable
|
|
from typing import Any, Optional, TypedDict, Literal, TypeAlias, Union
|
|
|
|
|
|
class DecisionEvaluateOptions(TypedDict, total=False):
|
|
max_depth: int
|
|
trace: bool
|
|
|
|
|
|
class EvaluateResponse(TypedDict):
|
|
performance: str
|
|
result: dict
|
|
trace: dict
|
|
|
|
|
|
class BatchEvaluateResult(TypedDict):
|
|
success: bool
|
|
data: Optional[EvaluateResponse]
|
|
error: Optional[Any]
|
|
|
|
|
|
ZenContext: TypeAlias = Union[str, bytes, dict]
|
|
ZenDecisionContentInput: TypeAlias = Union[str, ZenDecisionContent]
|
|
ZenBatchRequest: TypeAlias = "tuple[str, ZenContext]"
|
|
|
|
|
|
class ZenEngine:
|
|
def __init__(self, options: Optional[dict] = None) -> None: ...
|
|
|
|
def evaluate(self, key: str, context: ZenContext,
|
|
options: Optional[DecisionEvaluateOptions] = None) -> EvaluateResponse: ...
|
|
|
|
def async_evaluate(self, key: str, context: ZenContext, options: Optional[DecisionEvaluateOptions] = None) -> \
|
|
Awaitable[EvaluateResponse]: ...
|
|
|
|
def evaluate_batch(self, requests: "list[ZenBatchRequest]",
|
|
options: Optional[DecisionEvaluateOptions] = None) -> "list[BatchEvaluateResult]": ...
|
|
|
|
def async_evaluate_batch(self, requests: "list[ZenBatchRequest]",
|
|
options: Optional[DecisionEvaluateOptions] = None) -> \
|
|
Awaitable["list[BatchEvaluateResult]"]: ...
|
|
|
|
def create_decision(self, content: ZenDecisionContentInput) -> ZenDecision: ...
|
|
|
|
def get_decision(self, key: str) -> ZenDecision: ...
|
|
|
|
|
|
class ZenDecisionContent:
|
|
def __init__(self, decision_content: str) -> None: ...
|
|
|
|
|
|
class ZenDecision:
|
|
def evaluate(self, context: ZenContext, options: Optional[DecisionEvaluateOptions] = None) -> EvaluateResponse: ...
|
|
|
|
def async_evaluate(self, context: ZenContext, options: Optional[DecisionEvaluateOptions] = None) -> Awaitable[
|
|
EvaluateResponse]: ...
|
|
|
|
def validate(self) -> None: ...
|
|
|
|
|
|
def evaluate_expression(expression: str, context: Optional[ZenContext] = None) -> Any: ...
|
|
|
|
|
|
def evaluate_unary_expression(expression: str, context: ZenContext) -> bool: ...
|
|
|
|
|
|
def render_template(template: str, context: ZenContext) -> Any: ...
|
|
|
|
|
|
def compile_expression(expression: str) -> Expression: ...
|
|
|
|
|
|
def compile_unary_expression(expression: str) -> Expression: ...
|
|
|
|
|
|
class Expression:
|
|
def evaluate(self, context: Optional[ZenContext] = None) -> Any: ...
|
|
|
|
|
|
def validate_expression(expression: str) -> Optional[ValidationResponse]: ...
|
|
|
|
|
|
def validate_unary_expression(expression: str) -> Optional[ValidationResponse]: ...
|
|
|
|
|
|
class ValidationResponse(TypedDict):
|
|
type: Literal["lexerError", "parserError", "compilerError"]
|
|
source: str
|