Source code for sqlspec.builder._expression_wrappers

"""Expression wrapper classes for proper type annotations."""

from typing import cast, final

from sqlglot import exp

__all__ = ("AggregateExpression", "ConversionExpression", "FunctionExpression", "MathExpression", "StringExpression")


class ExpressionWrapper:
    """Base wrapper for SQLGlot expressions."""

    __slots__ = ("_expression",)

    def __init__(self, expression: exp.Expr) -> None:
        self._expression = expression
def as_(self, alias: str) -> exp.Alias: """Create an aliased expression.""" return cast("exp.Alias", exp.alias_(self._expression, alias))