Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import contextlib
import os
from typing import Dict, Generic, Iterator, Optional

from opentelemetry.trace import NoOpTracerProvider, Span, SpanKind, TracerProvider, get_tracer_provider
Expand All @@ -22,11 +23,18 @@ def __init__(
tracer_provider: TracerProvider | None,
instrumentation_builder_config: TracingConfig[Operation, Destination, ExtraAttributes],
) -> None:
self.instrumentation_builder_config = instrumentation_builder_config

disable_runtime_tracing = os.environ.get("AUTOGEN_DISABLE_RUNTIME_TRACING")
if disable_runtime_tracing:
self.tracer_provider = NoOpTracerProvider()
self.tracer = self.tracer_provider.get_tracer(f"autogen {instrumentation_builder_config.name}")
return

# Evaluate in order: first try tracer_provider param, then get_tracer_provider(), finally fallback to NoOp
# This allows for nested tracing with a default tracer provided by the user
self.tracer_provider = tracer_provider or get_tracer_provider() or NoOpTracerProvider()
self.tracer = self.tracer_provider.get_tracer(f"autogen {instrumentation_builder_config.name}")
self.instrumentation_builder_config = instrumentation_builder_config

@contextlib.contextmanager
def trace_block(
Expand Down