Source code for helix_ir.ddl.dialects

"""DDL dialect registry."""

from __future__ import annotations

from helix_ir.ddl.dialects.base import BaseDialect, DDLOptions, DDLScript
from helix_ir.ddl.dialects.bigquery import BigQueryDialect
from helix_ir.ddl.dialects.databricks import DatabricksDialect
from helix_ir.ddl.dialects.duckdb import DuckDBDialect
from helix_ir.ddl.dialects.postgres import PostgresDialect
from helix_ir.ddl.dialects.redshift import RedshiftDialect
from helix_ir.ddl.dialects.snowflake import SnowflakeDialect

DIALECTS: dict[str, type[BaseDialect]] = {
    "duckdb": DuckDBDialect,
    "postgres": PostgresDialect,
    "postgresql": PostgresDialect,
    "redshift": RedshiftDialect,
    "bigquery": BigQueryDialect,
    "snowflake": SnowflakeDialect,
    "databricks": DatabricksDialect,
}


[docs] def get_dialect(name: str) -> BaseDialect: """Return a dialect instance by name.""" name_lower = name.lower() cls = DIALECTS.get(name_lower) if cls is None: available = ", ".join(sorted(DIALECTS.keys())) raise ValueError( f"Unknown dialect {name!r}. Available dialects: {available}" ) return cls()
__all__ = [ "BaseDialect", "DDLOptions", "DDLScript", "DuckDBDialect", "PostgresDialect", "RedshiftDialect", "BigQueryDialect", "SnowflakeDialect", "DatabricksDialect", "DIALECTS", "get_dialect", ]