| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | from collections.abc import Sequencefrom typing import Literalfrom pydantic import BaseModel, FieldSupportedComparisonOperator = Literal[    # for string or array    "contains",    "not contains",    "start with",    "end with",    "is",    "is not",    "empty",    "not empty",    "in",    "not in",    "all of",    # for number    "=",    "≠",    ">",    "<",    "≥",    "≤",    "null",    "not null",    # for file    "exists",    "not exists",]class SubCondition(BaseModel):    key: str    comparison_operator: SupportedComparisonOperator    value: str | Sequence[str] | None = Noneclass SubVariableCondition(BaseModel):    logical_operator: Literal["and", "or"]    conditions: list[SubCondition] = Field(default=list)class Condition(BaseModel):    variable_selector: list[str]    comparison_operator: SupportedComparisonOperator    value: str | Sequence[str] | None = None    sub_variable_condition: SubVariableCondition | None = None
 |