Source code for sqlspec.observability._config

"""Configuration objects for the observability suite."""

from collections.abc import Callable, Iterable
from typing import TYPE_CHECKING, Any, Protocol, cast

from sqlspec.observability._dispatcher import LifecycleHook

if TYPE_CHECKING:  # pragma: no cover
    from sqlspec.config import LifecycleConfig
    from sqlspec.observability._formatters._base import CloudLogFormatter
    from sqlspec.observability._observer import StatementEvent
    from sqlspec.observability._sampling import SamplingConfig

__all__ = (
    "LifecycleHook",
    "LoggingConfig",
    "ObservabilityConfig",
    "RedactionConfig",
    "StatementObserver",
    "TelemetryConfig",
)


class StatementObserver(Protocol):
    """Protocol for callbacks that receive SQL execution events."""

    def __call__(self, event: "StatementEvent", /) -> None:
        """Handle a SQL execution event."""
        ...