
    g:                     6   d Z ddlZddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
lmZ ddlmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD dZEdZFdZGeFeGdZHeeedZIe*e(e'dZJdZKeKZLdZM ej                  eO      ZPd e
eQ   d!eQd"eeeQeRf      fd#ZSd"eeQ   fd$ZTd"eQfd%ZUd&eQd'ed   fd(ZVd'ed   d"eeQ   fd)ZW	 	 	 dCd*e	eQee:   f   d+e<d,e>d-e5fd.ZX	 dDd/e	eQeee0   ee1   f   f   d-e5fd0ZY	 dDd*e	eQee$   f   d-e5fd1ZZd2eeQ   d3eeQ   d4eeQ   d"ee	eQee:   f   e	eQeee0   ee1   f   f   e	eQee$   f   f   fd5Z[d6eQd"eeQge>f   fd7Z\d6eQd"ee>   fd8Z]d9eQd"e<fd:Z^	 	 	 	 	 	 	 	 dEd;eeQ   d2ee
eQ      d3ee
eQ      d4ee
eQ      d,ee>   d<ee4   d+e<d=ee_   fd>Z` G d? d@e      Za G dA dBea      Zby)FzF
OpenTelemetry SDK Configurator for Easy Instrumentation with Distros
    N)ABCabstractmethod)environ)CallableDictListOptionalSequenceTuple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_samplerselected_componentsentry_point_namereturnc                    g }| D ]A  }	 |j                  |t        t        t        ||                  j	                         f       C |S # t
        $ r t        d| d      t        $ r t        d| d| d      w xY w)N)groupnamezRequested entry point 'z' not foundzRequested component 'z' not found in entry point '')appendnextiterr/   loadKeyErrorRuntimeErrorStopIteration)r9   r:   component_implementationsselected_components       ^/var/www/openai/venv/lib/python3.12/site-packages/opentelemetry/sdk/_configuration/__init__.py_import_config_componentsrJ   ]   s     !#1	%,,&(&6=O df	 22 %$  	)*:);;G   	'(:'; <  014 	s   >A3A>c                  6    t        j                  t        d       S N)r   getr         rI   _get_samplerrP   ~   s    ;;*D11rO   c                  >    t        j                  t        t              S rL   )r   rM   r   _DEFAULT_ID_GENERATORrN   rO   rI   _get_id_generatorrS      s    ;;/1FGGrO   exporter_namesignal_typec                    | t         t        t        fvr| S t        j                  t
        |         xs t        j                  t              }|s| t         k(  rt        S | S |j                         }| t         k(  r |t        vrt        d| d      t        |   S t        j	                  |      }|r| |k7  rt        j                  d||        | S )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   rM   _PROTOCOL_ENV_BY_SIGNAL_TYPEr   strip_EXPORTER_BY_OTLP_PROTOCOLrE   _loggerwarning)rT   rU   otlp_protocolexporter_name_by_envs       rI   _get_exporter_entry_pointra      s     !! 
  KK$[1 2	0	1  N*,,!'')M& ::-m_OL  *-88 699-H1E EJ	
 rO   c                    t        j                  t        j                  | d            }|r!|j                         j	                         dk(  rg S |j                  d      D cg c]  }t        |j	                         |        c}S c c}w )N none,)r   rM   _EXPORTER_ENV_BY_SIGNAL_TYPElowerr[   splitra   )rU   names	_exporters      rI   _get_exporter_namesrk      s|     KK488bIJEEKKM'')V3	 S))I 	")//"3[A)  s   "!B	exportersid_generatorsamplerresourcec           
          t        |||      }t        |       | j                         D ]'  \  }}i }|j                  t	         |di |             ) y )N)rm   rn   ro   rN   )r(   r.   itemsadd_span_processorr)   )rl   rm   rn   ro   provider_exporter_classexporter_argss           rI   _init_tracingrw      sZ     !H
 !&__.>##~>>?	
 /rO   exporters_or_readersc           
          g }| j                         D ]O  \  }}i }t        |t              r|j                   |di |       0|j                  t	         |di |             Q t        ||      }t        |       y )N)ro   metric_readersrN   )rq   
issubclassr$   r@   r%   r"   r   )rx   ro   rz   rt   exporter_or_reader_classrv   rs   s          rI   _init_metricsr}      s     N';'A'A'C##.=!!":"K]"KL!!-,=}= (D h~NHx rO   c           
      P   t        |      }t        |       | j                         D ]'  \  }}i }|j                  t	         |di |             ) t        t        j                  |      }t        j                         j                  |       t        |      }t        |       y )N)ro   )levellogger_provider)r   rN   )r   r   rq   add_log_record_processorr   r   loggingNOTSET	getLogger
addHandlerr   r   )rl   ro   rs   rt   ru   rv   handlerevent_logger_providers           rI   _init_loggingr      s     x0H!&__.>))#N$C]$CD	
 / 7>>8LG""7+/I34rO   trace_exporter_namesmetric_exporter_nameslog_exporter_namesc                 n   i }i }i }t        | d      D ](  \  }}t        |t              r|||<   t        | d       t        |d      D ].  \  }}t        |t        t
        f      r|||<   "t        | d       t        |d      D ](  \  }}t        |t              r|||<   t        | d       |||fS )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)rJ   r{   r*   rE   r#   r$   r   )r   r   r   trace_exportersmetric_exporterslog_exportersrT   exporter_impls           rI   _import_exportersr     s    OM
 
#=
	 m\2-:OM*-0HIJJ
 
#?
	 mnl%CD.;]+-0IJKK
 
#9
	 m[1+8M-(-0FGHH
 ,m;;rO   sampler_namec                 P    t        | j                         gt              d   \  }}|S )Nr   )rJ   r[   _OTEL_SAMPLER_ENTRY_POINT_GROUP)r   rt   sampler_impls      rI   _import_sampler_factoryr   4  s2    /				 ?	OA| rO   c                    | sy 	 t        |       }d }| dv r&	 t        t        j                  t                    }|}nt        j                  t              } ||      }t        |t              s)d| d| d}t        j                  |       t        |      |S # t
        t        f$ r t        j                  d       d}Y w xY w# t        $ r!}t        j                  d| |       Y d }~y d }~ww xY w)N)traceidratioparentbased_traceidratiozGCould 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	TypeErrorr]   r^   
isinstancer,   	Exception)r   sampler_factoryargratern   messageexcs          rI   _import_samplerr   ;  s    1,?GGRYY'>?@ C))34C!#&'7+)/)::MgYVopGOOG$W%% 	* ] 	  I	

 s:   C "B AC &C>C  CC 	C.C))C.id_generator_namec                     t        | j                         gd      d   \  } }t        |t              r |       S t	        |  d      )Nopentelemetry_id_generatorr   z is not an IdGenerator)rJ   r[   r{   r+   rE   )r   id_generator_impls     rI   _import_id_generatorr   \  sX    +D		 	 	"#%A,,	(( #[1 ""
+,,BC
DDrO   auto_instrumentation_versionresource_attributeslogging_enabledc                    |g }|g }|g }t        |t        d      z   |t        d      z   |t        d      z         \  }}	}
|t               }t        |      }|t	               }t        |      }|i }| r| |t        j                  <   t        j                  |      }t        ||||       t        |	|       |9t        j                  t        d      j                         j!                         dk(  }|rt#        |
|       y y )Nr4   r5   r6   )rl   rm   rn   ro   falsetrue)r   rk   rP   r   rS   r   r-   TELEMETRY_AUTO_VERSIONr'   createrw   r}   r   r   r   r[   rg   r   )r   r   r   r   rn   r   rm   r   span_exportersr   r   r   r   ro   s                 rI   _initialize_componentsr   g  s3    #!$ "!6G28<< 3I >>08873N$m
 #~!,/-/+,=>" #( 	.EEF
 23H !	 "H-IIA7 UWUW 	 mX. rO   c                   4    e Zd ZdZdZdZd Zed        Zd Z	y)_BaseConfiguratorzAn ABC for configurators

    Configurators are used to configure
    SDKs (i.e. TracerProvider, MeterProvider, Processors...)
    to reduce the amount of manual configuration required.
    NFc                 n    | j                   t        j                  | g|i || _         | j                   S rL   )	_instanceobject__new__)clsargskwargss      rI   r   z_BaseConfigurator.__new__  s0    == "NN3@@@CM}}rO   c                      y)Configure the SDKNrN   selfr   s     rI   
_configurez_BaseConfigurator._configure  s    rO   c                 (     | j                   di | y)r   NrN   )r   r   s     rI   	configurez_BaseConfigurator.configure  s    !&!rO   )
__name__
__module____qualname____doc__r   _is_instrumentedr   r   r   r   rN   rO   rI   r   r     s2     I    "rO   r   c                       e Zd ZdZd Zy)_OTelSDKConfiguratora  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                     t        di | y )NrN   )r   r   s     rI   r   z_OTelSDKConfigurator._configure  s    ((rO   N)r   r   r   r   r   rN   rO   rI   r   r     s    	)rO   r   )NNNrL   )NNNNNNNN)cr   r   r   abcr   r   r   typingr   r   r   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/   rW   rX   rY   r\   rf   rZ   _RANDOM_ID_GENERATORrR   r   r   r   r]   strr   rJ   rP   rS   ra   rk   rw   r}   r   r   r   r   r   boolr   r   r   rN   rO   rI   <module>r      s     	 #  O O O % ; 3  5 9 B O   4 
 = 2 K < 4 = 3 ?- -  &.  #$   12,     , "@ 
'

H
%%c%69%eCK !%B2hsm 2H3 H))%,-H%I)X45c]  !%	
Cl++,

 
 	
0 	!U4'l);;<<! 	!4 5Ck**+55*0<"3-0<#C=0< !0< d< 	 !eD($|*<<=	=>d;	 "	0<f# (C5'>2J # (7*; BEC EK E 370415.2!%04 $&*7/"*3-7/"49-7/ $DI.7/ !c+	7/
 g7/ "*-7/ 7/ d^7/t" "4), )rO   