
    ZjSY                       d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZ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mZmZ ddl 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,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZC ddlDmEZE ddlFmGZG ddlHmIZI ddlJmKZK dZLdZMdZNeMeNdZOeeedZPe*e(e'dZQdZReRZSd ZT ejU        eV          ZWeeXeA         eXe5         z  eXe6         z  eXe$         z  eeYef         f         ZZ G d! d"e          Z[ G d# d$e          Z\dyd+Z]dzd-Z^d{d.Z_dzd/Z`dzd0Zadzd1Zbd|d5Zcd}d7Zd	 	 	 	 	 	 	 d~ddHZe	 	 	 dddMZf	 	 	 	 	 	 dddXZgdd\Zhdd^Zidd`ZjddbZkddgZlddjZmddkZnddnZo	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dddtZp G du dve          Zq G dw dxeq          ZrdS )zF
OpenTelemetry SDK Configurator for Easy Instrumentation with Distros
    )annotationsN)ABCabstractmethod)CallableMappingSequence)environ)AnyLiteralProtocol)set_logger_provider)OTEL_LOGS_EXPORTEROTEL_METRICS_EXPORTEROTEL_PYTHON_ID_GENERATOROTEL_TRACES_EXPORTER)set_meter_provider)LoggerProviderLoggingHandlerLogRecordProcessor)_LoggerConfiguratorT)BatchLogRecordProcessorLogRecordExporter)
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_PYTHON_LOGGER_CONFIGURATOROTEL_PYTHON_METER_CONFIGURATOROTEL_PYTHON_TRACER_CONFIGURATOROTEL_TRACES_SAMPLEROTEL_TRACES_SAMPLER_ARG)MeterProvider)_MeterConfiguratorT)MetricExporterMetricReaderPeriodicExportingMetricReader)
AttributesResource)SpanProcessorTracerProvider_TracerConfiguratorT)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                      e Zd ZddZdS )$_ConfigurationExporterSpanProcessorTspan_exporterr.   returnr*   c                    d S N )selfr?   argskwargss       f/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/opentelemetry/sdk/_configuration/__init__.py__call__z-_ConfigurationExporterSpanProcessorT.__call__l   s        N)r?   r.   r@   r*   __name__
__module____qualname__rH   rC   rI   rG   r>   r>   k   s(             rI   r>   c                      e Zd ZddZdS ))_ConfigurationExporterLogRecordProcessorTexporterr   r@   r   c                    d S rB   rC   )rD   rP   rE   rF   s       rG   rH   z2_ConfigurationExporterLogRecordProcessorT.__call__r   s     SrI   N)rP   r   r@   r   rJ   rC   rI   rG   rO   rO   q   s(        ! ! ! ! ! !rI   rO   selected_componentsSequence[str]entry_point_namestrr@   list[tuple[str, type]]c                :   g }| D ]}	 |                     |t          t          t          ||                                                              f           V# t
          $ r t          d| d          t          $ r t          d| d| d          w xY w|S )N)groupnamezRequested entry point 'z' not foundzRequested component 'z' not found in entry point '')appendnextiterr3   loadKeyErrorRuntimeErrorStopIteration)rR   rT   component_implementationsselected_components       rG   _import_config_componentsrd   w   s    !#1  	%,,&(&6=O     dff	     	 	 	G*:GGG    	 	 	4(: 4 4 04 4 4  	 %$s   AA=B
str | Nonec                 6    t          j        t          d           S rB   )r	   getr!   rC   rI   rG   _get_samplerrh      s    ;*D111rI   c                 @    t          j        t          t                    S rB   )r	   rg   r   _DEFAULT_ID_GENERATORrC   rI   rG   _get_id_generatorrk      s    ;/1FGGGrI   c                 6    t          j        t          d           S rB   )r	   rg   r    rC   rI   rG   _get_tracer_configuratorrm          ;6===rI   c                 6    t          j        t          d           S rB   )r	   rg   r   rC   rI   rG   _get_meter_configuratorrp      s    ;5t<<<rI   c                 6    t          j        t          d           S rB   )r	   rg   r   rC   rI   rG   _get_logger_configuratorrr      rn   rI   exporter_namesignal_type$Literal['traces', 'metrics', 'logs']c                   | t           t          t          fvr| S t          j        t
          |                   pt          j        t                    }|s| t           k    rt          S | S |                                }| t           k    r)|t          vrt          d| d          t          |         S t                              |          }|r"| |k    rt                              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	   rg   _PROTOCOL_ENV_BY_SIGNAL_TYPEr   strip_EXPORTER_BY_OTLP_PROTOCOLr`   _loggerwarning)rs   rt   otlp_protocolexporter_name_by_envs       rG   _get_exporter_entry_pointr      s    !!  
  K$[1  2	0	1	1   N**,,!''))M&& :::LmLLL   *-88 699-HH 
1E E EJ	
 	
 	
 rI   	list[str]c                     t          j        t                               d                    }|r*|                                                                dk    rg S  fd|                    d          D             S )N nonec                T    g | ]$}t          |                                          %S rC   )r   r{   ).0	_exporterrt   s     rG   
<listcomp>z'_get_exporter_names.<locals>.<listcomp>   s=        	")//"3"3[AA  rI   ,)r	   rg   _EXPORTER_ENV_BY_SIGNAL_TYPElowerr{   split)rt   namess   ` rG   _get_exporter_namesr      s     K488bIIJJE EKKMM''))V33	   S))   rI   	exportersdict[str, type[SpanExporter]]id_generatorIdGenerator | NonesamplerSampler | NoneresourceResource | Noneexporter_args_mapExporterArgsMap | Nonespan_processorsSequence[SpanProcessor] | Noneexport_span_processor+_ConfigurationExporterSpanProcessorT | Nonetracer_configurator_TracerConfiguratorT | Nonec           
     H   t          ||||          }t          |           |pi }|pt          }	|pg }|D ]}
|                    |
           |                                 D ]?\  }}|                    |i           }|                     |	 |di |                     @d S )N)r   r   r   _tracer_configuratorrC   )r+   r2   r-   add_span_processoritemsrg   )r   r   r   r   r   r   r   r   providerexport_processorspan_processor_exporter_classexporter_argss                 rG   _init_tracingr      s     !0	  H !!!)/R,B0B%+O) 4 4##N3333&__.. 
 
>)--nbAA##^^<<m<<==	
 	
 	
 	

 
rI   exporters_or_readers4dict[str, type[MetricExporter] | type[MetricReader]]meter_configurator_MeterConfiguratorT | Nonec           
     f   g }|pi }|                                  D ]t\  }}|                    |i           }t          |t                    r|                     |di |           L|                    t           |di |                     ut          |||          }t          |           d S )N)r   metric_readers_meter_configuratorrC   )r   rg   
issubclassr&   r[   r'   r#   r   )	r   r   r   r   r   r   exporter_or_reader_classr   r   s	            rG   _init_metricsr     s     N)/R';'A'A'C'C 	 	##)--.FKK.== 	!!":":"K"K]"K"KLLLL!!-,,==}==     %.  H
 x     rI   T"dict[str, type[LogRecordExporter]]setup_logging_handlerboollog_record_processors#Sequence[LogRecordProcessor] | Noneexport_log_record_processor0_ConfigurationExporterLogRecordProcessorT | Nonelogger_configurator_LoggerConfiguratorT | Nonec           
        t          ||          }t          |           |pi }|pt          }|pg }|D ]}	|                    |	           |                                 D ]?\  }
}|                    |i           }|                     | |d
i |                     @t          j                    5  t          j        dt                     ddl
m} ddlm}  ||          } ||           d d d            n# 1 swxY w Y   |rlt          j        dt                     t          t           j        |	          }t!          j                                        |           t)          |           d S d S )N)r   _logger_configuratorignore)categoryr   )set_event_logger_provider)EventLoggerProvider)logger_providerzThe `OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED` environment variable and the `LoggingHandler` in `opentelemetry-sdk` that it controls are deprecated.Install `opentelemetry-instrumentation-logging` package instead.)levelr   rC   )r   r   r   add_log_record_processorr   rg   warningscatch_warningssimplefilterDeprecationWarningopentelemetry._eventsr   opentelemetry.sdk._eventsr   warnr   loggingNOTSET	getLogger
addHandler_overwrite_logging_config_fns)r   r   r   r   r   r   r   r   r   log_record_processorr   r   r   r   r   event_logger_providerhandlers                    rG   _init_loggingr   #  sL    0C  H !!!)/R2M6M17R 5 @ @))*>????&__.. 
 
>)--nbAA))^^<<m<<==	
 	
 	
 	

 
	 	"	" 9 9h1CDDDD	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 !4 3H M M M!!"78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9  /O 		
 	
 	
 !.(
 
 
 	&&w///%g...../ /s   3?C>>DDr   r   Nonec                     t          j                    d fd} |t           j        j                  t           j        _         |t           j        j                  t           j        _         |t           j                  t           _        d S )N	config_fnr   r@   c                      fd}|S )Nc                     d}j         v rd}j                                        	  | i | |r                               d S d S # |r                               w w xY w)NFT)handlersremover   )rE   rF   removed_handlerr   r   roots      rG   overwritten_config_fnzM_overwrite_logging_config_fns.<locals>.wrapper.<locals>.overwritten_config_fna  s    #O $-''"&$$W----	4*6*** # -OOG,,,,,- -? -OOG,,,,-s   A A'rC   )r   r   r   r   s   ` rG   wrapperz._overwrite_logging_config_fns.<locals>.wrapper`  s/    	- 	- 	- 	- 	- 	- 	- %$rI   )r   r   r@   r   )r   r   config
fileConfig
dictConfigbasicConfig)r   r   r   s   ` @rG   r   r   ]  s    D% % % % % % %" !((A B BGN '(A B BGN!''"566GrI   logger_configurator_namec                    | sd S 	 t          |                                 gd          d         \  }}n4# t          $ r'}t                              d| |           Y d }~d S d }~ww xY w|S )N"_opentelemetry_logger_configuratorr   zMUsing default logger configurator. Failed to load logger configurator, %s: %srd   r{   	Exceptionr}   r~   )r   r   logger_configurator_implexcs       rG   _import_logger_configuratorr   v       $ t&?%++--.0'
 '
 '###    [$	
 	
 	

 ttttt $#   ,3 
A$AA$tracer_configurator_namec                    | sd S 	 t          |                                 gd          d         \  }}n4# t          $ r'}t                              d| |           Y d }~d S d }~ww xY w|S )N"_opentelemetry_tracer_configuratorr   zMUsing default tracer configurator. Failed to load tracer configurator, %s: %sr   )r   r   tracer_configurator_implr   s       rG   _import_tracer_configuratorr     r   r   meter_configurator_namec                    | sd S 	 t          |                                 gd          d         \  }}n4# t          $ r'}t                              d| |           Y d }~d S d }~ww xY w|S )N!_opentelemetry_meter_configuratorr   zKUsing default meter configurator. Failed to load meter configurator, %s: %sr   )r   r   meter_configurator_implr   s       rG   _import_meter_configuratorr     s     # t%>$**,,-/&
 &
 &"""    Y#	
 	
 	

 ttttt #"r   trace_exporter_namesmetric_exporter_nameslog_exporter_names~tuple[dict[str, type[SpanExporter]], dict[str, type[MetricExporter] | type[MetricReader]], dict[str, type[LogRecordExporter]]]c                   i }i }i }t          | d          D ]1\  }}t          |t                    r|||<    t          | d          t          |d          D ]8\  }}t          |t          t
          f          r|||<   't          | d          t          |d          D ]1\  }}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)rd   r   r.   r`   r%   r&   r   )r   r   r   trace_exportersmetric_exporterslog_exportersrs   exporter_impls           rG   _import_exportersr    sX    OM
 
#=
 
	K 	K 	 m\22 	K-:OM**-IIIJJJ
 
#?
 
L L 	 mnl%CDD 	L.;]++-JJJKKK
 
#9
 
	I 	I 	 m%677 	I+8M-((-GGGHHH,m;;rI   sampler_name'Callable[[float | str | None], Sampler]c                h    t          |                                 gt                    d         \  }}|S )Nr   )rd   r{   _OTEL_SAMPLER_ENTRY_POINT_GROUP)r  r   sampler_impls      rG   _import_sampler_factoryr    s<     0					 ? 	OA| rI   c                6   | sd S 	 t          |           }d }| dv r_	 t          t          j        t          d                    }n3# t
          t          f$ r t                              d           d}Y nw xY w|}nt          j        t                    } ||          }t          |t                    s2d| d| d}t                              |           t          |          |S # t          $ r'}t                              d| |           Y d }~d S d }~ww xY w)	N)traceidratioparentbased_traceidratior   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	TypeErrorr}   r~   
isinstancer0   r   )r  sampler_factoryargrater   messager   s          rG   _import_samplerr    s[    t1,??GGGRY'>CCDD	*   ]   	
 CC)344C!/#&&'7++ 	&p/ppgpppGOOG$$$W%%%   I	
 	
 	

 ttttts;   C' 'A C' -A41C' 3A44A2C' '
D1DDid_generator_namer/   c                    t          |                                 gd          d         \  } }t          |t                    r
 |            S t	          |  d          )Nopentelemetry_id_generatorr   z is not an IdGenerator)rd   r{   r   r/   r`   )r  id_generator_impls     rG   _import_id_generatorr    sq    +D		 	 	"	"#%A, ,,	(( #[11 #  """
+CCC
D
DDrI   auto_instrumentation_versionlist[str] | Noneresource_attributesAttributes | Nonebool | Nonec           
     8   |g }|g }|g }t          |t          d          z   |t          d          z   |t          d          z             \  }}}|t                      }t          |          }|t	                      }t          |          }|i }| r| |t          j        <   |t                      }t          |          }|t                      }t          |          }|t                      }t          |          }t          j        |          }t!          ||||||	|
|           t#          ||||           |Bt%          j        t(          d                                                                          dk    }t/          |||||||           d S )	Nr8   r9   r:   )r   r   r   r   r   r   r   r   )r   r   r   r   falsetrue)r   r   r   r   )r  r   rh   r  rk   r  r1   TELEMETRY_AUTO_VERSIONrm   r   rp   r   rr   r   r)   creater   r   r  r  r   r{   r   r   )r   r   r   r   r   r"  r   r   r   r   r   r   r   r   r   r   span_exportersr  r  r  r  r   r   r   r   s                            rG   _initialize_componentsr+    s$   ( #!$ "!6G28<<< 3I > >>08887 73N$m
 #~~!,//-//+,=>>" # 
( 	.EF "#;#=#= 9$
 
 !"9";";7#
 
 "#;#=#= 9$
 
 233H !+'3/	 	 	 	 -+-	    $IA7  UWWUWW 	 +3$?/     rI   c                  <    e Zd ZdZdZdZd Zed             Zd Z	dS )_BaseConfiguratorzAn ABC for configurators

    Configurators are used to configure
    SDKs (i.e. TracerProvider, MeterProvider, Processors...)
    to reduce the amount of manual configuration required.
    NFc                R    | j         t          j        | g|R i || _         | j         S rB   )	_instanceobject__new__)clsrE   rF   s      rG   r1  z_BaseConfigurator.__new__  s3    = "N3@@@@@@CM}rI   c                    dS )Configure the SDKNrC   rD   rF   s     rG   
_configurez_BaseConfigurator._configure  s      rI   c                      | j         di | dS )r4  NrC   )r6  r5  s     rG   	configurez_BaseConfigurator.configure  s     !!&!!!!!rI   )
rK   rL   rM   __doc__r/  _is_instrumentedr1  r   r6  r8  rC   rI   rG   r-  r-    sd          I       ^ " " " " "rI   r-  c                      e Zd ZdZd ZdS )_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 | d S )NrC   )r+  r5  s     rG   r6  z_OTelSDKConfigurator._configure  s    (((((((rI   N)rK   rL   rM   r9  r6  rC   rI   rG   r<  r<    s-        	 	) ) ) ) )rI   r<  )rR   rS   rT   rU   r@   rV   )r@   re   )r@   rU   )rs   rU   rt   ru   )rt   ru   r@   r   )NNNNNNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNN)r   r   r   r   r   r   r   r   )NTNNNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r@   r   )r   re   r@   r   )r   re   r@   r   )r   re   r@   r   )r   rS   r   rS   r   rS   r@   r   )r  rU   r@   r  )r  re   r@   r   )r  rU   r@   r/   )NNNNNNNNNNNNNNNN) r   re   r   r!  r   r!  r   r!  r   r   r"  r#  r   r   r   r$  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )sr9  
__future__r   r   logging.configr  r   abcr   r   collections.abcr   r   r   r	   typingr
   r   r   opentelemetry._logsr   #opentelemetry.environment_variablesr   r   r   r   opentelemetry.metricsr   opentelemetry.sdk._logsr   r   r   !opentelemetry.sdk._logs._internalr   opentelemetry.sdk._logs.exportr   r   'opentelemetry.sdk.environment_variablesr   r   r   r   r   r   r   r    r!   r"   opentelemetry.sdk.metricsr#   #opentelemetry.sdk.metrics._internalr$    opentelemetry.sdk.metrics.exportr%   r&   r'   opentelemetry.sdk.resourcesr(   r)   opentelemetry.sdk.tracer*   r+   r,   opentelemetry.sdk.trace.exportr-   r.   $opentelemetry.sdk.trace.id_generatorr/    opentelemetry.sdk.trace.samplingr0   opentelemetry.semconv.resourcer1   opentelemetry.tracer2   &opentelemetry.util._importlib_metadatar3   rw   rx   ry   r|   r   rz   _RANDOM_ID_GENERATORrj   r
  r   rK   r}   typerU   ExporterArgsMapr>   rO   rd   rh   rk   rm   rp   rr   r   r   r   r   r   r   r   r   r   r  r  r  r  r+  r-  r<  rC   rI   rG   <module>rX     s  
  # " " " " "      				  # # # # # # # # 7 7 7 7 7 7 7 7 7 7       ) ) ) ) ) ) ) ) ) ) 3 3 3 3 3 3            5 4 4 4 4 4         
 C B B B B B                               4 3 3 3 3 3 C C C C C C         
 = < < < < < < <         
 L K K K K K K K < < < < < < 4 4 4 4 4 4 = = = = = = 3 3 3 3 3 3 ? ? ? ? ? ?- -  &.   #$     12,       , "@ 
'
H
%
%
>
<  CH	    8   ! ! ! ! ! ! ! !% % % %B2 2 2 2H H H H> > > >= = = => > > >) ) ) )X     (," $046:IM7;
 
 
 
 
D !%0459	! ! ! ! !> !%"&04AE7;7/ 7/ 7/ 7/ 7/t7 7 7 72$ $ $ $*$ $ $ $*# # # #*0< 0< 0< 0<f      BE E E E 04-1.2+/"-1'+)-046:IMAE7;597;#a a a a aH" " " " " " " "4) ) ) ) ), ) ) ) ) )rI   