project/nanoeval/nanoeval/recorder.py (23 lines of code) (raw):

from __future__ import annotations import logging from contextlib import contextmanager from contextvars import ContextVar from typing import Generator from nanoeval.library_config import get_library_config from nanoeval.recorder_protocol import RecorderConfig, RecorderProtocol logger = logging.getLogger(__name__) recorder: ContextVar[RecorderProtocol] = ContextVar("recorder") def get_recorder() -> RecorderProtocol: return recorder.get() @contextmanager def set_default_recorder( rec: RecorderProtocol, sample_id: str, group_id: str ) -> Generator[None, None, None]: """ Context manager to set the default recorder for the current thread. """ token = recorder.set(rec) try: with get_library_config().set_recorder_context(rec, sample_id, group_id): yield finally: recorder.reset(token) def dummy_recorder(log: bool = True) -> RecorderConfig: """ Returns a dummy recorder that does nothing. """ return get_library_config().get_dummy_recorder(log)