o
    3Ih)<                     @   s  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  dZ!d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Z0ej'ej$ej)ej(ej,gZ1eegZ2dZ3G dd dZ4G dd deZ5de5fddZ6de5fddZ7G dd dZ8e5j9fddZ:e5j9fddZ;dd  Z<d!d" Z=d#d$ Z>d%d& Z?d'd( Z@d)d* ZAd+d, ZBd-d. ZCd/d0 ZDd1d2 ZEd3d4 ZFd5d6 ZGd7d8 ZHd9d: ZId;d< ZJd=d> ZKd?d@ ZLdAdB ZMdCdD ZNdEe5j9fdFeOdGePdHeQdIeRdJe5f
dKdLZSde5dMeQfdNdOZTdS )P    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)g        g      @g      $@g      9@g      I@g     R@g      Y@g     @o@g     @@g     p@g     @@g     @g     @g     L@g     @)g{Gzt?g{Gz?g?g?g333333?g?g      ?g      ?g      ?   g      @   g      @
   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"   f/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/opentelemetry/instrumentation/_semconv.pyr      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    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#   r;      s   

z6_OpenTelemetrySemanticConventionStability._filter_modesignal_typereturnc                 C   s   | j |tjS r*   )r9   r8   r$   r&   )r<   rC   r"   r"   r#   (_get_opentelemetry_stability_opt_in_mode   s   zR_OpenTelemetrySemanticConventionStability._get_opentelemetry_stability_opt_in_modeN)r   r   r   r5   	threadingLockr4   r9   classmethodr?   staticmethodr;   r   r$   rE   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   rS   c                 C   s\   i }t |r|  D ]\}}||v r|||< q
t|r,|  D ]\}}||v r+|||< q|S r*   )r-   rJ   r,   )rK   rL   rM   rN   rO   rQ   rR   r"   r"   r#   )_filter_semconv_active_request_count_attr   s   rT   c                 C   s   |r|| |< d S d S r*   r"   resultrQ   r@   r"   r"   r#   set_string_attribute  s   rW   c                 C   s0   |rz	t || |< W d S  ty   Y d S w d S r*   )int
ValueErrorrU   r"   r"   r#   set_int_attribute  s   rZ   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,   rW   r   r-   r   HTTP_METHODr   )rV   original
normalizedrN   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-   rZ   r   HTTP_STATUS_CODEr,   r	   )rV   coderN   r"   r"   r#   _set_http_status_code'  
   rb   c                 C   r_   r*   )r-   rW   r   HTTP_URLr,   r   )rV   urlrN   r"   r"   r#   _set_http_url.  rc   rf   c                 C   r_   r*   )r-   rW   r   HTTP_SCHEMEr,   r   )rV   schemerN   r"   r"   r#   _set_http_scheme5  rc   ri   c                 C   r_   r*   r-   rW   r   HTTP_FLAVORr,   r   rV   versionrN   r"   r"   r#   _set_http_flavor_version<  rc   rn   c                 C   r_   r*   )r-   rW   r   HTTP_USER_AGENTr,   r   )rV   
user_agentrN   r"   r"   r#   _set_http_user_agentC  s   rq   c                 C   r_   r*   )r-   rW   r   	HTTP_HOSTr,   r   rV   hostrN   r"   r"   r#   _set_http_host_clientO  rc   ru   c                 C   r_   r*   )r-   rW   r   NET_PEER_NAMEr,   r   )rV   	peer_namerN   r"   r"   r#   _set_http_net_peer_name_clientV  rc   rx   c                 C   r_   r*   )r-   rZ   r   NET_PEER_PORTr,   r   rV   portrN   r"   r"   r#   _set_http_peer_port_client]  rc   r|   c                 C   r_   r*   rj   rl   r"   r"   r#   "_set_http_network_protocol_versiond  rc   r}   c                 C   r_   r*   )r-   rW   r   NET_HOST_NAMEr,   r   rs   r"   r"   r#   _set_http_net_hostn  rc   r   c                 C   r_   r*   )r-   rZ   r   NET_HOST_PORTr,   r   rz   r"   r"   r#   _set_http_net_host_portu  rc   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-   rW   r   HTTP_TARGETr,   r   r   )rV   targetpathqueryrN   r"   r"   r#   _set_http_target|  s   r   c                 C   @   t |rt| tj| t|r| tst| t| d S d S d S r*   )r-   rW   r   rr   r,   r8   r   rs   r"   r"   r#   _set_http_host_server  s   
r   c                 C   r   r*   )r-   rW   r   NET_PEER_IPr,   r8   r   )rV   iprN   r"   r"   r#   _set_http_peer_ip_server  s   
r   c                 C   r_   r*   )r-   rZ   r   ry   r,   r   rz   r"   r"   r#   _set_http_peer_port_server  rc   r   c                 C   r_   r*   )r-   rW   r   rv   r,   r   )rV   namerN   r"   r"   r#   _set_http_net_peer_name_server  rc   r   Tmetrics_attributesstatus_codestatus_code_strserver_spanrN   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   rN   statusr"   r"   r#   _set_status  sB   


r   rD   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   )Ur6   rF   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   #HTTP_DURATION_HISTOGRAM_BUCKETS_OLD#HTTP_DURATION_HISTOGRAM_BUCKETS_NEWr`   rr   ry   rv   r[   rk   rg   _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&   rS   rT   rW   rZ   r^   rb   rf   ri   rn   rq   ru   rx   r|   r}   r   r   r   r   r   r   r   dictrX   strboolr   r   r"   r"   r"   r#   <module>   s   
	E



	
,