Source code for sqlspec.adapters.arrow_odbc.config

"""arrow-odbc database configuration."""

from typing import TYPE_CHECKING, Any, ClassVar, TypedDict, cast

from typing_extensions import NotRequired

from sqlspec.adapters.arrow_odbc._typing import ArrowOdbcConnection, ArrowOdbcSessionContext, arrow_odbc_connect
from sqlspec.adapters.arrow_odbc.core import (
    apply_driver_features,
    build_connection_config,
    build_statement_config,
    default_statement_config,
    resolve_dialect_from_dbms_name,
)
from sqlspec.adapters.arrow_odbc.driver import ArrowOdbcDriver
from sqlspec.config import ExtensionConfigs, NoPoolSyncConfig
from sqlspec.driver._sync import SyncPoolConnectionContext, SyncPoolSessionFactory
from sqlspec.exceptions import ImproperConfigurationError
from sqlspec.extensions.events import EventRuntimeHints
from sqlspec.utils.config_tools import normalize_connection_config
from sqlspec.utils.serializers import from_json, to_json
from sqlspec.utils.type_guards import supports_close

if TYPE_CHECKING:
    from collections.abc import Callable
    from types import TracebackType

    from sqlspec.core import StatementConfig
    from sqlspec.observability import ObservabilityConfig

__all__ = ("ArrowOdbcConfig", "ArrowOdbcConnectionParams", "ArrowOdbcDriverFeatures")


class ArrowOdbcConnectionParams(TypedDict):
    """arrow-odbc connection parameters."""

    connection_string: NotRequired[str]
    dsn: NotRequired[str]
    driver: NotRequired[str]
    server: NotRequired[str]
    host: NotRequired[str]
    database: NotRequired[str]
    uid: NotRequired[str]
    pwd: NotRequired[str]
    user: NotRequired[str]
    password: NotRequired[str]
    trusted_connection: NotRequired[bool | str]
    trust_server_certificate: NotRequired[bool | str]
    encrypt: NotRequired[bool | str]
    login_timeout: NotRequired[int]
    login_timeout_sec: NotRequired[int]
    packet_size: NotRequired[int]
    autocommit: NotRequired[bool]
    extra: NotRequired[dict[str, Any]]
class ArrowOdbcDriverFeatures(TypedDict): """arrow-odbc driver feature flags.""" chunk_size: NotRequired[int] max_bytes_per_batch: NotRequired[int] max_text_size: NotRequired[int] max_binary_size: NotRequired[int] fetch_concurrently: NotRequired[bool] query_timeout_sec: NotRequired[int] connection_string: NotRequired[str] dbms_name: NotRequired[str] json_serializer: "NotRequired[Callable[[Any], str]]" json_deserializer: "NotRequired[Callable[[str], Any]]" enable_events: NotRequired[bool] on_connection_create: "NotRequired[Callable[[ArrowOdbcConnection], None]]"