
    3iB                       S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJr  SSKJr  SSKJr  SSK J!r!J"r"  SSK#J$r$J%r%  SSK&J'r'J(r(J)r)J*r*J+r+J,r,J-r-  SSK.J/r/  SSK0J1r1J2r2J3r3  SSK4J5r5J6r6  SSK7J8r8  SSK9J:r:J;r;  SSK<J=r=  SSK>J?r?  SSK@JArA  SSKBJCrC  SSKDJErE  SrFSrGSrH\G\HS.rI\\\S.rJ\+\)\(S.rKSrL\LrMS rN\R                  " \P5      rQ\\\\;   \\1   \\2   \\%   4   \\R\4   4   rS      S3S! jrTS4S" jrUS5S# jrV    S6S$ jrW    S7S% jrX    S8         S9S& jjrY  S:     S;S' jjrZ   S<       S=S( jjr[S>S) jr\        S?S* jr]    S@S+ jr^SAS, jr_SBS- jr`         SC                 SDS. jjra " S/ S0\5      rb " S1 S2\b5      rcg)EzF
OpenTelemetry SDK Configurator for Easy Instrumentation with Distros
    )annotationsN)ABCabstractmethod)environ)AnyCallableMappingSequenceTypeUnion)Literal)set_event_logger_provider)set_logger_provider)OTEL_LOGS_EXPORTEROTEL_METRICS_EXPORTEROTEL_PYTHON_ID_GENERATOROTEL_TRACES_EXPORTER)set_meter_provider)EventLoggerProvider)LoggerProviderLoggingHandler)BatchLogRecordProcessorLogExporter)1_OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED OTEL_EXPORTER_OTLP_LOGS_PROTOCOL#OTEL_EXPORTER_OTLP_METRICS_PROTOCOLOTEL_EXPORTER_OTLP_PROTOCOL"OTEL_EXPORTER_OTLP_TRACES_PROTOCOLOTEL_TRACES_SAMPLEROTEL_TRACES_SAMPLER_ARG)MeterProvider)MetricExporterMetricReaderPeriodicExportingMetricReader)
AttributesResource)TracerProvider)BatchSpanProcessorSpanExporter)IdGenerator)Sampler)ResourceAttributes)set_tracer_provider)entry_pointsotlpotlp_proto_grpcotlp_proto_http)grpczhttp/protobuf)tracesmetricslogsrandomopentelemetry_traces_samplerc                   / nU  H>  n UR                  U[        [        [        XS95      5      R	                  5       45        M@     U$ ! [
         a    [        SU S35      e[         a    [        SU SU S35      ef = f)N)groupnamezRequested entry point 'z' not foundzRequested component 'z' not found in entry point '')appendnextiterr.   loadKeyErrorRuntimeErrorStopIteration)selected_componentsentry_point_namecomponent_implementationsselected_components       c/home/james-whalen/.local/lib/python3.13/site-packages/opentelemetry/sdk/_configuration/__init__.py_import_config_componentsrH   j   s     !#1	%,,&(&6 df	 22 %$  	)*:);;G   	'(:'; <  014 	s   :A		5A>c                 8    [         R                  " [        S 5      $ N)r   getr        rG   _get_samplerrN      s    ;;*D11rM   c                 @    [         R                  " [        [        5      $ rJ   )r   rK   r   _DEFAULT_ID_GENERATORrL   rM   rG   _get_id_generatorrQ      s    ;;/1FGGrM   c                   U [         [        [        4;  a  U $ [        R                  " [
        U   5      =(       d    [        R                  " [        5      nU(       d  U [         :X  a  [        $ U $ UR                  5       nU [         :X  a"  U[        ;  a  [        SU S35      e[        U   $ [        R	                  U5      nU(       a  X:w  a  [        R                  SUU 5        U $ )NzUnsupported OTLP protocol 'z' is configuredz<Conflicting values for %s OTLP exporter protocol, using '%s')_EXPORTER_OTLP_EXPORTER_OTLP_PROTO_GRPC_EXPORTER_OTLP_PROTO_HTTPr   rK   _PROTOCOL_ENV_BY_SIGNAL_TYPEr   strip_EXPORTER_BY_OTLP_PROTOCOLrA   _loggerwarning)exporter_namesignal_typeotlp_protocolexporter_name_by_envs       rG   _get_exporter_entry_pointr_      s     !! 
  KK$[1 2	0	1  N*,,!'')M& ::-m_OL  *-88 699-H EJ	
 rM   c                *   [         R                  " [        R                  U S5      5      nU(       a"  UR                  5       R	                  5       S:X  a  / $ UR                  S5       Vs/ s H  n[        UR	                  5       U 5      PM     sn$ s  snf )N none,)r   rK   _EXPORTER_ENV_BY_SIGNAL_TYPElowerrW   splitr_   )r\   names	_exporters      rG   _get_exporter_namesri      s|     KK488bIJEEKKM'')V3	 S))I 	")//"3[A)  s   )$Bc           
         [        UUUS9n[        U5        U=(       d    0 nU R                  5        H7  u  pgUR                  U0 5      nUR	                  [        U" S0 UD65      5        M9     g )N)id_generatorsamplerresourcerL   )r'   r-   itemsrK   add_span_processorr(   )		exportersrk   rl   rm   exporter_args_mapprovider_exporter_classexporter_argss	            rG   _init_tracingrv      sp     !H
 !)/R&__.)--nbA##~>>?	
 /rM   c           
     8   / nU=(       d    0 nU R                  5        He  u  pEUR                  U0 5      n[        U[        5      (       a  UR	                  U" S0 UD65        ME  UR	                  [        U" S0 UD65      5        Mg     [        XS9n[        U5        g )N)rm   metric_readersrL   )rn   rK   
issubclassr#   r<   r$   r!   r   )exporters_or_readersrm   rq   rx   rs   exporter_or_reader_classru   rr   s           rG   _init_metricsr|      s     N)/R';'A'A'C#)--.FK.==!!":"K]"KL!!-,=}= (D hNHx rM   c           
        [        US9n[        U5        U=(       d    0 nU R                  5        H7  u  pVUR                  U0 5      nUR	                  [        U" S0 UD65      5        M9     [        US9n[        U5        U(       aH  [        [        R                  US9n	[        R                  " 5       R                  U	5        [        U	5        g g )N)rm   )logger_provider)levelr~   rL   )r   r   rn   rK   add_log_record_processorr   r   r   r   loggingNOTSET	getLogger
addHandler_overwrite_logging_config_fns)
rp   rm   setup_logging_handlerrq   rr   rs   rt   ru   event_logger_providerhandlers
             rG   _init_loggingr      s     x0H!)/R&__.)--nbA))#N$C]$CD	
 / 0I34 ..(
 	&&w/%g. rM   c                N  ^ ^ [         R                  " 5       mSU U4S jjnU" [         R                  R                  5      [         R                  l        U" [         R                  R                  5      [         R                  l        U" [         R
                  5      [         l        g )Nc                   >^  U UU4S jnU$ )Nc                    > SnTTR                   ;   a  SnTR                   R                  T5         T" U 0 UD6  U(       a  TR                  T5        g g ! U(       a  TR                  T5        f f = f)NFT)handlersremover   )argskwargsremoved_handler	config_fnr   roots      rG   overwritten_config_fnM_overwrite_logging_config_fns.<locals>.wrapper.<locals>.overwritten_config_fn  sj    #O $--'"&$$W--4*6* #OOG, #?OOG, #s   A A/rL   )r   r   r   r   s   ` rG   wrapper._overwrite_logging_config_fns.<locals>.wrapper  s    	- %$rM   )r   r   returnr   )r   r   config
fileConfig
dictConfigbasicConfig)r   r   r   s   ` @rG   r   r     sf    D% %" !((A(A BGNN '(A(A BGNN!'"5"56GrM   c                   0 n0 n0 n[        U S5       H-  u  nn[        U[        5      (       a  XsU'   M!  [        U S35      e   [        US5       H3  u  nn[        U[        [
        45      (       a  XtU'   M'  [        U S35      e   [        US5       H-  u  nn[        U[        5      (       a  XuU'   M!  [        U S35      e   X4U4$ )Nopentelemetry_traces_exporterz is not a trace exporteropentelemetry_metrics_exporterz is not a metric exporteropentelemetry_logs_exporterz is not a log exporter)rH   ry   r)   rA   r"   r#   r   )trace_exporter_namesmetric_exporter_nameslog_exporter_namestrace_exportersmetric_exporterslog_exportersr[   exporter_impls           rG   _import_exportersr   1  s    OM
 
#=
	 m\22-:M*-0HIJJ
 
#?
	 mnl%CDD.;]+-0IJKK
 
#9
	 m[11+8-(-0FGHH
 m;;rM   c                N    [        U R                  5       /[        5      S   u  pU$ )Nr   )rH   rW   _OTEL_SAMPLER_ENTRY_POINT_GROUP)sampler_namers   sampler_impls      rG   _import_sampler_factoryr   d  s2     0				 ?	OA rM   c                   U (       d  g  [        U 5      nS nU S;   a(   [        [        R                  " [        S5      5      nUnO[        R                  " [        5      nU" U5      n[        U[        5      (       d)  SU SU S3n[        R                  U5        [        U5      eU$ ! [
        [        4 a    [        R                  S5        Sn Nf = f! [         a!  n[        R                  SU U5         S nAg S nAff = f)	N)traceidratioparentbased_traceidratiora   zGCould not convert TRACES_SAMPLER_ARG to float. Using default value 1.0.g      ?zSampler factory, z, produced output, z, which is not a Sampler.z;Using default sampler. Failed to initialize sampler, %s: %s)r   floatosgetenvr    
ValueError	TypeErrorrY   rZ   
isinstancer+   	Exception)r   sampler_factoryargraterl   messageexcs          rG   _import_samplerr   m  s    1,?GGRYY'>CD C))34C!#&'7++)/)::MgYVopGOOG$W%% 	* ] 	  I	

 s;   C $B' A$C ''CC CC 
C?C::C?c                    [        U R                  5       /S5      S   u  p[        U[        5      (       a  U" 5       $ [	        U  S35      e)Nopentelemetry_id_generatorr   z is not an IdGenerator)rH   rW   ry   r*   rA   )id_generator_nameid_generator_impls     rG   _import_id_generatorr     sX    +D		 	 	"#%A,,	( #[11 ""
+,,BC
DDrM   c	                   Uc  / nUc  / nUc  / n[        U[        S5      -   U[        S5      -   U[        S5      -   5      u  pnUc  [        5       n[        U5      nUc  [	        5       n[        U5      nUc  0 nU (       a  U U[        R                  '   [        R                  " U5      n[        U	UUUUS9  [        XUS9  Uc:  [        R                  " [        S5      R                  5       R!                  5       S:H  n[#        UUUUS9  g )Nr3   r4   r5   )rp   rk   rl   rm   rq   )rq   falsetrue)r   ri   rN   r   rQ   r   r,   TELEMETRY_AUTO_VERSIONr&   createrv   r|   r   r   r   rW   re   r   )auto_instrumentation_versionr   r   r   rl   resource_attributesrk   r   rq   span_exportersr   r   r   r   rm   s                  rG   _initialize_componentsr     s:    #!$ "!6G28<< 3I >>08873Nm
 #~!,/-/+,=>" #( 	.EEF
 23H !+ 6G $IIA7 UWUW 	 +	rM   c                  <    \ rS rSrSrSrSrS r\S 5       r	S r
Srg)	_BaseConfiguratori  zAn ABC for configurators

Configurators are used to configure
SDKs (i.e. TracerProvider, MeterProvider, Processors...)
to reduce the amount of manual configuration required.
NFc                r    U R                   c  [        R                  " U /UQ70 UD6U l         U R                   $ rJ   )	_instanceobject__new__)clsr   r   s      rG   r   _BaseConfigurator.__new__  s0    == "NN3@@@CM}}rM   c                    g)Configure the SDKNrL   selfr   s     rG   
_configure_BaseConfigurator._configure  s    rM   c                (    U R                   " S0 UD6  g)r   NrL   )r   r   s     rG   	configure_BaseConfigurator.configure  s    !&!rM   rL   )__name__
__module____qualname____firstlineno____doc__r   _is_instrumentedr   r   r   r   __static_attributes__rL   rM   rG   r   r     s2     I    "rM   r   c                      \ rS rSrSrS rSrg)_OTelSDKConfiguratori  a  A basic Configurator by OTel Python for initializing OTel SDK components

Initializes several crucial OTel SDK components (i.e. TracerProvider,
MeterProvider, Processors...) according to a default implementation. Other
Configurators can subclass and slightly alter this initialization.

NOTE: This class should not be instantiated nor should it become an entry
point on the `opentelemetry-sdk` package. Instead, distros should subclass
this Configurator and enhance it as needed.
c                    [        S0 UD6  g )NrL   )r   r   s     rG   r   _OTelSDKConfigurator._configure  s    ((rM   rL   N)r   r   r   r   r   r   r   rL   rM   rG   r   r     s    	)rM   r   )rC   Sequence[str]rD   strr   zlist[tuple[str, Type]])r   
str | None)r   r   )r[   r   r\   $Literal['traces', 'metrics', 'logs'])r\   r   r   z	list[str])NNNN)
rp   zdict[str, Type[SpanExporter]]rk   IdGenerator | Nonerl   Sampler | Nonerm   Resource | Nonerq   ExporterArgsMap | None)NN)rz   z:dict[str, Union[Type[MetricExporter], Type[MetricReader]]]rm   r   rq   r   )NTN)rp   zdict[str, Type[LogExporter]]rm   r   r   boolrq   r   )r   r   r   None)r   r   r   r   r   r   r   z~tuple[dict[str, Type[SpanExporter]], dict[str, Union[Type[MetricExporter], Type[MetricReader]]], dict[str, Type[LogExporter]]])r   r   r   z'Callable[[float | str | None], Sampler])r   r   r   r   )r   r   r   r*   )	NNNNNNNNN)r   r   r   list[str] | Noner   r   r   r   rl   r   r   zAttributes | Nonerk   r   r   zbool | Nonerq   r   )dr   
__future__r   r   logging.configr   abcr   r   r   typingr   r   r	   r
   r   r   typing_extensionsr   opentelemetry._eventsr   opentelemetry._logsr   #opentelemetry.environment_variablesr   r   r   r   opentelemetry.metricsr   opentelemetry.sdk._eventsr   opentelemetry.sdk._logsr   r   opentelemetry.sdk._logs.exportr   r   'opentelemetry.sdk.environment_variablesr   r   r   r   r   r   r    opentelemetry.sdk.metricsr!    opentelemetry.sdk.metrics.exportr"   r#   r$   opentelemetry.sdk.resourcesr%   r&   opentelemetry.sdk.tracer'   opentelemetry.sdk.trace.exportr(   r)   $opentelemetry.sdk.trace.id_generatorr*    opentelemetry.sdk.trace.samplingr+   opentelemetry.semconv.resourcer,   opentelemetry.tracer-   &opentelemetry.util._importlib_metadatar.   rS   rT   rU   rX   rd   rV   _RANDOM_ID_GENERATORrP   r   r   r   rY   r   ExporterArgsMaprH   rN   rQ   r_   ri   rv   r|   r   r   r   r   r   r   r   r   r   rL   rM   rG   <module>r     s    #   	 #  @ @ % ; 3  5 9 B O   4 
 = 2 K < 4 = 3 ?- -  &.  #$   12,     , "@ 


H
%	\^\[	 CH%&%:=%%B2H))%I)X5  (," $04
,
$
 
 	

 .
4 !%04!! 	!
 .!6 !%"&04	/+//  / .	/8720<'0<(0< &0<	0<f,BE 04-1.2+/"-1'+)-04?",?*? ,? )	?
 ? +? %? '? .?D" "4), )rM   