"""Psqlpy database configuration."""
from typing import TYPE_CHECKING, Any, ClassVar, Literal, TypedDict, cast
from mypy_extensions import mypyc_attr
from typing_extensions import NotRequired
from sqlspec.adapters.psqlpy._typing import PsqlpyConnection, PsqlpyCursor, PsqlpySessionContext
from sqlspec.adapters.psqlpy.core import (
apply_driver_features,
build_connection_config,
build_postgres_extension_probe_names,
default_statement_config,
resolve_postgres_extension_state,
resolve_runtime_statement_config,
)
from sqlspec.adapters.psqlpy.driver import PsqlpyDriver, PsqlpyExceptionHandler
from sqlspec.config import AsyncDatabaseConfig, ExtensionConfigs
from sqlspec.driver._async import AsyncPoolConnectionContext, AsyncPoolSessionFactory
from sqlspec.extensions.events import EventRuntimeHints
from sqlspec.utils.config_tools import normalize_connection_config
if TYPE_CHECKING:
from collections.abc import Awaitable, Callable
from types import TracebackType
from psqlpy import ConnectionPool
from sqlspec.core import StatementConfig
__all__ = ("PsqlpyConfig", "PsqlpyConnectionParams", "PsqlpyCursor", "PsqlpyDriverFeatures", "PsqlpyPoolParams")
class PsqlpyConnectionParams(TypedDict):
"""Psqlpy connection parameters."""
dsn: NotRequired[str]
username: NotRequired[str]
password: NotRequired[str]
db_name: NotRequired[str]
host: NotRequired[str]
port: NotRequired[int]
connect_timeout_sec: NotRequired[int]
connect_timeout_nanosec: NotRequired[int]
tcp_user_timeout_sec: NotRequired[int]
tcp_user_timeout_nanosec: NotRequired[int]
keepalives: NotRequired[bool]
keepalives_idle_sec: NotRequired[int]
keepalives_idle_nanosec: NotRequired[int]
keepalives_interval_sec: NotRequired[int]
keepalives_interval_nanosec: NotRequired[int]
keepalives_retries: NotRequired[int]
ssl_mode: NotRequired[str]
ca_file: NotRequired[str]
target_session_attrs: NotRequired[str]
options: NotRequired[str]
application_name: NotRequired[str]
client_encoding: NotRequired[str]
gssencmode: NotRequired[str]
sslnegotiation: NotRequired[str]
sslcompression: NotRequired[str]
sslcert: NotRequired[str]
sslkey: NotRequired[str]
sslpassword: NotRequired[str]
sslrootcert: NotRequired[str]
sslcrl: NotRequired[str]
require_auth: NotRequired[str]
channel_binding: NotRequired[str]
krbsrvname: NotRequired[str]
gsslib: NotRequired[str]
gssdelegation: NotRequired[str]
service: NotRequired[str]
load_balance_hosts: NotRequired[str]