"""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]]