Source code for sqlspec.adapters.sqlite.data_dictionary

"""SQLite-specific data dictionary for metadata queries."""

from typing import TYPE_CHECKING, Any, ClassVar, cast

from mypy_extensions import mypyc_attr

from sqlspec.adapters.sqlite.core import format_identifier
from sqlspec.data_dictionary import (
    ColumnMetadata,
    ForeignKeyMetadata,
    IndexMetadata,
    TableMetadata,
    VersionInfo,
    get_data_dictionary_loader,
    get_dialect_config,
)
from sqlspec.data_dictionary.dialects.sqlite import list_sqlite_available_features, resolve_sqlite_json_type
from sqlspec.driver import SyncDataDictionaryBase

if TYPE_CHECKING:
    from sqlspec.adapters.sqlite.driver import SqliteDriver

__all__ = ("SqliteDataDictionary",)

SQLITE_INDEX_EXPRESSION_COLUMN_ID = -2


@mypyc_attr(allow_interpreted_subclasses=True, native_class=False)
class SqliteDataDictionary(SyncDataDictionaryBase):
    """SQLite-specific sync data dictionary."""

    dialect: ClassVar[str] = "sqlite"

    def __init__(self) -> None:
        super().__init__()
def resolve_schema(self, schema: "str | None") -> "str | None": """Return a schema name using dialect defaults when missing.""" if schema is not None: return schema return get_dialect_config(type(self).dialect).default_schema