Skip to content

symfonic.kernel.observability_binding

observability_binding

Bind safe run attribution for callback observers before event delivery.

bind_observability

bind_observability(callbacks: Any, request: Any) -> None

Give callback observers lineage before a stage or model can fail.

Source code in src/symfonic/kernel/observability_binding.py
def bind_observability(callbacks: Any, request: Any) -> None:
    """Give callback observers lineage before a stage or model can fail."""
    observers: Iterable[Any] = (callbacks,) if callable(callbacks) else (callbacks or ())
    run_id = str(getattr(request, "run_id", "") or "")
    root_run_id = str(getattr(request, "root_run_id", "") or run_id)
    parent_run_id = str(getattr(request, "parent_run_id", "") or "") or None
    session_id = str(getattr(request, "session_id", "") or "")
    for observer in observers:
        bind = getattr(observer, "bind_run", None)
        if callable(bind):
            try:
                bind(
                    run_id,
                    root_run_id=root_run_id,
                    parent_run_id=parent_run_id,
                    session_id=session_id,
                )
            except Exception:  # noqa: BLE001 - observation must not break a turn
                continue