"""mssql-python database configuration."""
from typing import TYPE_CHECKING, Any, ClassVar, TypedDict, cast
from typing_extensions import NotRequired
from sqlspec.adapters.mssql_python._typing import MssqlPythonConnection, MssqlPythonSessionContext
from sqlspec.adapters.mssql_python.core import apply_driver_features, build_connection_config, default_statement_config
from sqlspec.adapters.mssql_python.driver import MssqlPythonDriver
from sqlspec.adapters.mssql_python.migrations import MssqlPythonSyncMigrationTracker
from sqlspec.adapters.mssql_python.pool import MssqlPythonConnectionPool
from sqlspec.config import ExtensionConfigs, SyncDatabaseConfig
from sqlspec.driver._sync import SyncPoolConnectionContext, SyncPoolSessionFactory
from sqlspec.utils.config_tools import normalize_connection_config
from sqlspec.utils.serializers import from_json, to_json
if TYPE_CHECKING:
from collections.abc import Callable
from types import TracebackType
from sqlspec.core import StatementConfig
from sqlspec.observability import ObservabilityConfig
__all__ = (
"MssqlPythonConfig",
"MssqlPythonConnectionParams",
"MssqlPythonConnectionPool",
"MssqlPythonDriverFeatures",
"MssqlPythonPoolParams",
)
class MssqlPythonConnectionParams(TypedDict):
"""mssql-python connection parameters."""
connection_string: NotRequired[str]
server: NotRequired[str]
address: NotRequired[str]
addr: NotRequired[str]
port: NotRequired[int]
database: NotRequired[str]
db: NotRequired[str]
uid: NotRequired[str]
user: NotRequired[str]
username: NotRequired[str]
pwd: NotRequired[str]
password: NotRequired[str]
authentication: NotRequired[str]
trusted_connection: NotRequired[bool | str]
trust_server_certificate: NotRequired[bool | str]
trust: NotRequired[bool | str]
encrypt: NotRequired[bool | str]
hostname_in_certificate: NotRequired[str]
hostnameincertificate: NotRequired[str]
server_certificate: NotRequired[str]
servercertificate: NotRequired[str]
server_spn: NotRequired[str]
serverspn: NotRequired[str]
multi_subnet_failover: NotRequired[bool | str]
multisubnetfailover: NotRequired[bool | str]
application_intent: NotRequired[str]
applicationintent: NotRequired[str]
connect_retry_count: NotRequired[int]
connectretrycount: NotRequired[int]
connect_retry_interval: NotRequired[int]
connectretryinterval: NotRequired[int]
keep_alive: NotRequired[int]
keepalive: NotRequired[int]
keep_alive_interval: NotRequired[int]
keepaliveinterval: NotRequired[int]
ip_address_preference: NotRequired[str]
ipaddresspreference: NotRequired[str]
packet_size: NotRequired[int]
packetsize: NotRequired[int]
connection_timeout: NotRequired[int]
login_timeout: NotRequired[int]
command_timeout: NotRequired[int]
autocommit: NotRequired[bool]
attrs_before: NotRequired[dict[int, int | str | bytes]]
timeout: NotRequired[int]
native_uuid: NotRequired[bool]
extra: NotRequired[dict[str, Any]]