o
    i                  	   @   s  U d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ee	Z
ededZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZd	ed
ee fddZdefdefdefdefdefd efd!efd"efd#Zeeeeeegee f f f ed$< h d%Zd&ed
eeee f fd'd(ZdS ))    N)Callable)Optional)ENV_KEY)VERSION_KEY)
get_loggerservice)zdeployment.environmentzservice.namezservice.version
otel_valuereturnc                 C      | dkrdS dS )z.Remaps the otel log level to ddtrace log leveldebugTrueN r   r   r   \/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/settings/_otel_remapper.py_remap_otel_log_level      r   c                 C   sV   g }|  dD ]}|  }|dv r||vr|| qtd| qd|p*dS )z2Remaps the otel propagators to ddtrace propagators,)b3b3multidatadogtracecontextnonez-Following style not supported by ddtrace: %s.N)splitstriplowerappendlogwarningjoin)r   accepted_stylesstyler   r   r   _remap_otel_propagators   s   
r!   c                 C   sn   | dv rt d| |  d|  } d}| dkrd}n| dkr d}n| d	kr+tjd
d}|dur5d| dS dS )z6Remaps the otel trace sampler to ddtrace trace sampler)	always_on
always_offtraceidratiozUTrace sampler set from %s to parentbased_%s; only parent based sampling is supported.parentbased_Nparentbased_always_onz1.0parentbased_always_offz0.0parentbased_traceidratioOTEL_TRACES_SAMPLER_ARG1z[{"sample_rate":z}])r   r   osenvironget)r   rater   r   r   _remap_traces_sampler(   s"   
r/   c                 C   r
   )z7Remaps the otel trace exporter to ddtrace trace enabledr   FalseNr   r   r   r   r   _remap_traces_exporter>   r   r1   c                 C   r
   )z<Remaps the otel metrics exporter to ddtrace metrics exporterr   r0   Nr   r   r   r   r   _remap_metrics_exporterE   r   r2   c                 C   s   g }zCt  }| dD ]}|d\}}|||< q| D ]&\}}| tv r9t|  }|d| d|  q|| d|  qW n
 tyO   Y dS w t|dkrj|dd |dd }}t	
d|| d|S )z$Remaps the otel tags to ddtrace tagsr   =r   :N
   zTo preserve metrics cardinality, only the following first 10 tags have been processed %s. The following tags were not ingested: %s)dictr   itemsr   OTEL_UNIFIED_TAG_MAPPINGSinsertr   	Exceptionlenr   r   r   )r   dd_tagsotel_user_tag_dicttagkeyvaluedd_keyremaining_tagsr   r   r   _remap_otel_tagsL   s.   

rC   c                 C   s   | dkrdS | dkrdS dS )z0Remaps the otel sdk config to ddtrace sdk configfalser   truer0   Nr   r   r   r   r   _remap_otel_sdk_configj   s
   rF   c                 C   s   | S )z6Remaps the otel default value to ddtrace default valuer   r   r   r   r   _remap_defaults   s   rG   
DD_SERVICEDD_TRACE_DEBUGDD_TRACE_PROPAGATION_STYLEDD_TRACE_SAMPLING_RULESDD_TRACE_ENABLEDDD_RUNTIME_METRICS_ENABLEDDD_TAGSDD_TRACE_OTEL_ENABLED)OTEL_SERVICE_NAMEOTEL_LOG_LEVELOTEL_PROPAGATORSOTEL_TRACES_SAMPLEROTEL_TRACES_EXPORTEROTEL_METRICS_EXPORTEROTEL_RESOURCE_ATTRIBUTESOTEL_SDK_DISABLEDENV_VAR_MAPPINGS>   OTEL_LOGS_EXPORTEROTEL_PYTHON_CONTEXTr)   OTEL_EXPORTER_OTLP_HEADERSOTEL_EXPORTER_OTLP_TIMEOUTOTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_PROTOCOLOTEL_EXPORTER_OTLP_CERTIFICATEOTEL_EXPORTER_OTLP_COMPRESSIONOTEL_EXPORTER_OTLP_LOGS_HEADERSOTEL_EXPORTER_OTLP_LOGS_TIMEOUT OTEL_EXPORTER_OTLP_LOGS_ENDPOINT OTEL_EXPORTER_OTLP_LOGS_INSECURE OTEL_EXPORTER_OTLP_LOGS_PROTOCOL"OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY"OTEL_EXPORTER_OTLP_METRICS_HEADERS"OTEL_EXPORTER_OTLP_METRICS_TIMEOUT#OTEL_EXPORTER_OTLP_LOGS_COMPRESSION#OTEL_EXPORTER_OTLP_METRICS_ENDPOINT#OTEL_EXPORTER_OTLP_METRICS_INSECURE#OTEL_EXPORTER_OTLP_METRICS_PROTOCOL%OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY&OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE&OTEL_EXPORTER_OTLP_METRICS_COMPRESSION*OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE-OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATEotel_envc                 C   sF   t |  \}}tj| d}| dvr| }||}|d u rdS ||fS )N )rV   rP   )rs   N)rX   r+   r,   r-   r   )rr   _otel_config_validator	raw_valuemapped_valuer   r   r   parse_otel_env   s   rx   )r+   typingr   r   ddtrace.constantsr   r   ddtrace.internal.loggerr   __name__r   r8   strr   r!   r/   r1   r2   rC   rF   rG   rX   r6   tuple__annotations__SUPPORTED_OTEL_ENV_VARSrx   r   r   r   r   <module>   s<   
 	,"