from typing import Any
from typing import Optional

from .. import inspect as inspect
from .. import util as util
from ..sql import and_ as and_
from ..sql import operators as operators

class UnevaluatableError(Exception): ...

class _NoObject(operators.ColumnOperators):
    def operate(self, *arg: Any, **kw: Any) -> None: ...
    def reverse_operate(self, *arg: Any, **kw: Any) -> None: ...

class EvaluatorCompiler:
    target_cls: Any = ...
    def __init__(self, target_cls: Optional[Any] = ...) -> None: ...
    def process(self, *clauses: Any): ...
    def visit_grouping(self, clause: Any): ...
    def visit_null(self, clause: Any): ...
    def visit_false(self, clause: Any): ...
    def visit_true(self, clause: Any): ...
    def visit_column(self, clause: Any): ...
    def visit_tuple(self, clause: Any): ...
    def visit_clauselist(self, clause: Any): ...
    def visit_binary(self, clause: Any): ...
    def visit_unary(self, clause: Any): ...
    def visit_bindparam(self, clause: Any): ...
