o
    gA:                     @   sx  d dl Z d dlZd dlmZ d dlmZ d dl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 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  ej!ej"ej#ej$ej%ej&ej'gZ(e
eeeeegZ)ej%ej"ej'ej!ej&ej*ej+ej,gZ-e
eeeeegZ.ej%ej"ej'ej&ej*gZ/eegZ0dZ1G dd dZ2G dd deZ3de3fddZ4de3fddZ5G dd dZ6e3j7fddZ8e3j7fddZ9dd Z:dd  Z;d!d" Z<d#d$ Z=d%d& Z>d'd( Z?d)d* Z@d+d, ZAd-d. ZBd/d0 ZCd1d2 ZDd3d4 ZEd5d6 ZFd7d8 ZGd9d: ZHd;d< ZId=d> ZJd?d@ ZKdAdB ZLdCe3j7fdDeMdEeNdFeOdGePdHe3f
dIdJZQde3dKeOfdLdMZRdS )N    N)Enum)http_status_to_status_code)CLIENT_ADDRESSCLIENT_PORT)
ERROR_TYPE)HTTP_REQUEST_METHODHTTP_REQUEST_METHOD_ORIGINALHTTP_RESPONSE_STATUS_CODE
HTTP_ROUTE)NETWORK_PROTOCOL_VERSION)SERVER_ADDRESSSERVER_PORT)URL_FULLURL_PATH	URL_QUERY
URL_SCHEME)USER_AGENT_ORIGINAL)SpanAttributes)Status
StatusCodeOTEL_SEMCONV_STABILITY_OPT_INc                   @   s   e Zd ZdZdZdS )!_OpenTelemetryStabilitySignalTypehttpdatabaseN)__name__
__module____qualname__HTTPDATABASE r   r   ]/var/www/visachat/venv/lib/python3.10/site-packages/opentelemetry/instrumentation/_semconv.pyr   n   s    r   c                   @   s    e Zd ZdZdZdZdZdZdS )_StabilityModedefaultr   zhttp/dupr   zdatabase/dupN)r   r   r   DEFAULTr   HTTP_DUPr   DATABASE_DUPr   r   r   r    r!   s   s    r!   modec                 C   s
   | t jkS N)r!   r#   r&   r   r   r    _report_new{   s   
r)   c                 C   s   | t jt jfvS r'   )r!   r   r   r(   r   r   r    _report_old   s   r*   c                   @   sJ   e Zd ZdZe Zi Zedd Z	e
dd Zededefdd	Zd
S ))_OpenTelemetrySemanticConventionStabilityFc                 C   s   | j [ | jr	 W d    d S tjt}|s/tjtj	tj
tj	i| _d| _	 W d    d S dd |dD }| |tjtj| jtj< | |tj
tj| jtj
< d| _W d    d S 1 saw   Y  d S )NTc                 S   s   g | ]}|  qS r   )strip).0sr   r   r    
<listcomp>   s    zI_OpenTelemetrySemanticConventionStability._initialize.<locals>.<listcomp>,)_lock_initializedosenvirongetr   r   r   r!   r#   r   &_OTEL_SEMCONV_STABILITY_SIGNAL_MAPPINGsplit_filter_moder$   r%   )clsopt_inopt_in_listr   r   r    _initialize   s:   
"z5_OpenTelemetrySemanticConventionStability._initializec                 C   s"   |j | v r|S |j | v r|S tjS r'   )valuer!   r#   )r;   stable_modedup_moder   r   r    r8      s   

z6_OpenTelemetrySemanticConventionStability._filter_modesignal_typereturnc                 C   s   | j |tjS r'   )r6   r5   r!   r#   )r9   r@   r   r   r    (_get_opentelemetry_stability_opt_in_mode   s   zR_OpenTelemetrySemanticConventionStability._get_opentelemetry_stability_opt_in_modeN)r   r   r   r2   	threadingLockr1   r6   classmethodr<   staticmethodr8   r   r!   rB   r   r   r   r    r+      s    
$
r+   c                 C   s<   i }|t jkr	|n|}|  D ]\}}||v r|||< q|S r'   )r!   r   items)attrs	old_attrs	new_attrssem_conv_opt_in_modefiltered_attrsallowed_attributeskeyvalr   r   r    _filter_semconv_duration_attrs   s   rP   c                 C   s\   i }t |r|  D ]\}}||v r|||< q
t|r,|  D ]\}}||v r+|||< q|S r'   )r*   rG   r)   )rH   rI   rJ   rK   rL   rN   rO   r   r   r    )_filter_semconv_active_request_count_attr   s   rQ   c                 C   s   |r|| |< d S d S r'   r   resultrN   r=   r   r   r    set_string_attribute   s   rT   c                 C   s0   |rz	t || |< W d S  ty   Y d S w d S r'   )int
ValueErrorrR   r   r   r    set_int_attribute   s   rW   c                 C   s^   |  }|  }||krt|rt| t| t|r!t| tj| t|r-t| t| d S d S r'   )r,   r)   rT   r   r*   r   HTTP_METHODr   )rS   original
normalizedrK   r   r   r    _set_http_method   s   r[   c                 C   2   t |rt| tj| t|rt| t| d S d S r'   )r*   rW   r   HTTP_STATUS_CODEr)   r	   )rS   coderK   r   r   r    _set_http_status_code  
   r_   c                 C   r\   r'   )r*   rT   r   HTTP_URLr)   r   )rS   urlrK   r   r   r    _set_http_url	  r`   rc   c                 C   r\   r'   )r*   rT   r   HTTP_SCHEMEr)   r   )rS   schemerK   r   r   r    _set_http_scheme  r`   rf   c                 C   r\   r'   r*   rT   r   HTTP_FLAVORr)   r   rS   versionrK   r   r   r    _set_http_flavor_version  r`   rk   c                 C   r\   r'   )r*   rT   r   HTTP_USER_AGENTr)   r   )rS   
user_agentrK   r   r   r    _set_http_user_agent  s   rn   c                 C   r\   r'   )r*   rT   r   	HTTP_HOSTr)   r   rS   hostrK   r   r   r    _set_http_host_client*  r`   rr   c                 C   r\   r'   )r*   rT   r   NET_PEER_NAMEr)   r   )rS   	peer_namerK   r   r   r    _set_http_net_peer_name_client1  r`   ru   c                 C   r\   r'   )r*   rW   r   NET_PEER_PORTr)   r   rS   portrK   r   r   r    _set_http_peer_port_client8  r`   ry   c                 C   r\   r'   rg   ri   r   r   r    "_set_http_network_protocol_version?  r`   rz   c                 C   r\   r'   )r*   rT   r   NET_HOST_NAMEr)   r   rp   r   r   r    _set_http_net_hostI  r`   r|   c                 C   r\   r'   )r*   rW   r   NET_HOST_PORTr)   r   rw   r   r   r    _set_http_net_host_portP  r`   r~   c                 C   sJ   t |rt| tj| t|r!|rt| t| |r#t| t| d S d S d S r'   )r*   rT   r   HTTP_TARGETr)   r   r   )rS   targetpathqueryrK   r   r   r    _set_http_targetW  s   r   c                 C   r\   r'   )r*   rT   r   ro   r)   r   rp   r   r   r    _set_http_host_servera  r`   r   c                 C   s@   t |rt| tj| t|r| tst| t| d S d S d S r'   )r*   rT   r   NET_PEER_IPr)   r5   r   )rS   iprK   r   r   r    _set_http_peer_ip_serverm  s   
r   c                 C   r\   r'   )r*   rW   r   rv   r)   r   rw   r   r   r    _set_http_peer_port_serverv  r`   r   c                 C   r\   r'   )r*   rT   r   rs   r)   r   )rS   namerK   r   r   r    _set_http_net_peer_name_server}  r`   r   Tmetrics_attributesstatus_codestatus_code_strserver_spanrK   c                 C   s   |dk r)t |r||t< |  r't |r| t| | ttjd|  d S d S t||d}t	|rC|  r>| t
j| ||t
j< t |rh|  rQ| t| ||t< |tjkrh|  rd| t| ||t< |  ru| t| d S d S )Nr   zNon-integer HTTP status: )r   )r)   r   is_recordingset_attribute
set_statusr   r   ERRORr   r*   r   r]   r	   )spanr   r   r   r   rK   statusr   r   r    _set_status  sB   


r   rA   c                 C   s   | t ju rdS tjS )Nz'https://opentelemetry.io/schemas/1.11.0)r!   r#   r   
SCHEMA_URLr(   r   r   r    _get_schema_url  s   
r   )Sr3   rC   enumr   #opentelemetry.instrumentation.utilsr   2opentelemetry.semconv.attributes.client_attributesr   r   1opentelemetry.semconv.attributes.error_attributesr   0opentelemetry.semconv.attributes.http_attributesr   r   r	   r
   3opentelemetry.semconv.attributes.network_attributesr   2opentelemetry.semconv.attributes.server_attributesr   r   /opentelemetry.semconv.attributes.url_attributesr   r   r   r   6opentelemetry.semconv.attributes.user_agent_attributesr   opentelemetry.semconv.tracer   opentelemetry.trace.statusr   r   r]   ro   rv   rs   rX   rh   rd   _client_duration_attrs_old_client_duration_attrs_newHTTP_SERVER_NAMEr{   r}   _server_duration_attrs_old_server_duration_attrs_new'_server_active_requests_count_attrs_old'_server_active_requests_count_attrs_newr   r   r!   r)   r*   r+   r#   rP   rQ   rT   rW   r[   r_   rc   rf   rk   rn   rr   ru   ry   rz   r|   r~   r   r   r   r   r   dictrU   strboolr   r   r   r   r   r    <module>   s   
	E



	
,