1fromopentelemetryimporttrace 2fromopentelemetry.sdk.traceimportTracerProvider 3 4fromplain.packagesimportPackageConfig,register_config 5 6from.otelimportObserverSampler,ObserverSpanProcessor 7 8 9@register_config10classConfig(PackageConfig):11package_label="plainobserver"1213defready(self):14ifself.has_existing_trace_provider():15return1617self.setup_observer()1819@staticmethod20defhas_existing_trace_provider()->bool:21"""Check if there is an existing trace provider."""22current_provider=trace.get_tracer_provider()23returncurrent_providerandnotisinstance(24current_provider,trace.ProxyTracerProvider25)2627@staticmethod28defsetup_observer()->None:29sampler=ObserverSampler()30provider=TracerProvider(sampler=sampler)3132# Add our combined processor that handles both memory storage and export33observer_processor=ObserverSpanProcessor()34provider.add_span_processor(observer_processor)3536trace.set_tracer_provider(provider)