1313)
1414from opentelemetry .sdk .resources import Resource
1515from opentelemetry .sdk .trace import TracerProvider , SpanProcessor , ReadableSpan
16+ from opentelemetry .sdk .trace .sampling import Sampler
1617from opentelemetry .propagators .textmap import TextMapPropagator
1718from opentelemetry .propagate import set_global_textmap
1819from opentelemetry .sdk .trace .export import (
@@ -69,6 +70,7 @@ def __new__(
6970 processor : SpanProcessor = None ,
7071 propagator : TextMapPropagator = None ,
7172 exporter : SpanExporter = None ,
73+ sampler : Optional [Sampler ] = None ,
7274 should_enrich_metrics : bool = True ,
7375 instruments : Optional [Set [Instruments ]] = None ,
7476 block_instruments : Optional [Set [Instruments ]] = None ,
@@ -82,7 +84,7 @@ def __new__(
8284
8385 obj .__image_uploader = image_uploader
8486 obj .__resource = Resource (attributes = TracerWrapper .resource_attributes )
85- obj .__tracer_provider = init_tracer_provider (resource = obj .__resource )
87+ obj .__tracer_provider = init_tracer_provider (resource = obj .__resource , sampler = sampler )
8688 if processor :
8789 Telemetry ().capture ("tracer:init" , {"processor" : "custom" })
8890 obj .__spans_processor : SpanProcessor = processor
@@ -339,12 +341,15 @@ def init_spans_exporter(api_endpoint: str, headers: Dict[str, str]) -> SpanExpor
339341 return GRPCExporter (endpoint = f"{ api_endpoint } " , headers = headers )
340342
341343
342- def init_tracer_provider (resource : Resource ) -> TracerProvider :
344+ def init_tracer_provider (resource : Resource , sampler : Optional [ Sampler ] = None ) -> TracerProvider :
343345 provider : TracerProvider = None
344346 default_provider : TracerProvider = get_tracer_provider ()
345347
346348 if isinstance (default_provider , ProxyTracerProvider ):
347- provider = TracerProvider (resource = resource )
349+ if sampler is not None :
350+ provider = TracerProvider (resource = resource , sampler = sampler )
351+ else :
352+ provider = TracerProvider (resource = resource )
348353 trace .set_tracer_provider (provider )
349354 elif not hasattr (default_provider , "add_span_processor" ):
350355 logging .error (
0 commit comments