Skip to content

Tracer

TracerProtocol #

Bases: Protocol

Protocol that defines the tracer interface for type checking.

NoOpSpan #

A no-op span that does nothing when tracing is disabled.

NoOpTracer #

A no-op tracer that returns no-op spans when tracing is disabled.

SpanContextManagerWrapper #

SpanContextManagerWrapper(
    context_manager: Any, session_id: str | None
)

Wrapper for span context managers to add session_id on enter.

Source code in src/rapidata/rapidata_client/config/tracer.py
def __init__(self, context_manager: Any, session_id: str | None):
    self._context_manager = context_manager
    self.session_id = session_id

RapidataTracer #

RapidataTracer(name: str = __name__)

Tracer implementation that updates when the configuration changes.

Source code in src/rapidata/rapidata_client/config/tracer.py
def __init__(self, name: str = __name__):
    self._name = name
    self._otlp_initialized = False
    self._tracer_provider = None
    self._real_tracer = None
    self._no_op_tracer = NoOpTracer()
    self._enabled = True  # Default to enabled
    self.session_id: str | None = None

    # Register this tracer to receive configuration updates
    register_config_handler(self._handle_config_update)

start_span #

start_span(name: str, *args, **kwargs) -> Any

Start a span, or return a no-op span if tracing is disabled.

Source code in src/rapidata/rapidata_client/config/tracer.py
def start_span(self, name: str, *args, **kwargs) -> Any:
    """Start a span, or return a no-op span if tracing is disabled."""
    if self._enabled and self._real_tracer:
        span = self._real_tracer.start_span(name, *args, **kwargs)
        return self._add_session_id_to_span(span)
    return self._no_op_tracer.start_span(name, *args, **kwargs)

start_as_current_span #

start_as_current_span(name: str, *args, **kwargs) -> Any

Start a span as current, or return a no-op span if tracing is disabled.

Source code in src/rapidata/rapidata_client/config/tracer.py
def start_as_current_span(self, name: str, *args, **kwargs) -> Any:
    """Start a span as current, or return a no-op span if tracing is disabled."""
    if self._enabled and self._real_tracer:
        context_manager = self._real_tracer.start_as_current_span(
            name, *args, **kwargs
        )
        return SpanContextManagerWrapper(context_manager, self.session_id)
    return self._no_op_tracer.start_as_current_span(name, *args, **kwargs)