
    g8                        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jB                  ejD                  ejF                  ejH                  ejJ                  ejL                  ejN                  gZ(e
eeeeegZ)ejJ                  ejD                  ejN                  ejB                  ejL                  ejT                  ejV                  ejX                  gZ-e
eeeeegZ.ejJ                  ejD                  ejN                  ejL                  ejT                  gZ/eegZ0dZ1 G d d      Z2 G d de      Z3d Z4d Z5 G d d      Z6e3jn                  fdZ8e3jn                  fdZ9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd  ZBd! ZCd" ZDd# ZEd$ ZFd% ZGd& ZHd' ZId( ZJd) ZKd* ZLd+e3jn                  fd,eMd-eNd.eOd/ePd0e3f
d1ZQd2e3d3eOfd4ZRy)5    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                       e Zd ZdZy)!_OpenTelemetryStabilitySignalTypehttpN)__name__
__module____qualname__HTTP     [/var/www/openai/venv/lib/python3.12/site-packages/opentelemetry/instrumentation/_semconv.pyr   r   n   s    Dr    r   c                       e Zd ZdZdZdZy)_HTTPStabilityModer   zhttp/dupdefaultN)r   r   r   r   HTTP_DUPDEFAULTr   r    r!   r#   r#   r   s    DHGr    r#   c                 P    | j                   t        j                  j                   k7  S N)namer#   r&   modes    r!   _report_newr,   {   s    99*227777r    c                 P    | j                   t        j                  j                   k7  S r(   )r)   r#   r   r*   s    r!   _report_oldr.      s    99*//4444r    c                   `    e Zd ZdZ ej
                         Zi Zed        Z	ede
defd       Zy))_OpenTelemetrySemanticConventionStabilityFc                 N   t         j                  5  t         j                  st        j                  j                  t        d      }g }|r,|j                  d      D cg c]  }|j                          }}t        j                  }|rYt        j                  j                  |v rt        j                  }n,t        j                  j                  |v rt        j                  }|t         j                  t        j                  <   dt         _        d d d        y c c}w # 1 sw Y   y xY w)N ,T)r0   _lock_initializedosenvirongetr   splitstripr#   r&   r%   valuer   &_OTEL_SEMCONV_STABILITY_SIGNAL_MAPPINGr   )clsopt_inopt_in_listshttp_opt_ins        r!   _initializez5_OpenTelemetrySemanticConventionStability._initialize   s    6<<<II (ErJ 6<ll36G"H6G17796GK"H088 *2288KG&8&A&A+0066+E&8&=&=   :``5:: JN9F' =< #I =<s   ADD4BDDD$signal_typereturnc                 ^    t         j                  j                  |t        j                        S r(   )r0   r<   r8   r#   r&   )r=   rC   s     r!   (_get_opentelemetry_stability_opt_in_modezR_OpenTelemetrySemanticConventionStability._get_opentelemetry_stability_opt_in_mode   s)     9__cc+33
 	
r    N)r   r   r   r5   	threadingLockr4   r<   classmethodrB   r   r#   rF   r   r    r!   r0   r0      sU    LINNE-/*N N, 
6
 

 
r    r0   c                 |    i }|t         j                  k(  r|n|}| j                         D ]  \  }}||v s|||<    |S r(   )r#   r   items)attrs	old_attrs	new_attrssem_conv_opt_in_modefiltered_attrsallowed_attributeskeyvals           r!   _filter_semconv_duration_attrsrT      sX     N  #5#:#:: 	 
 KKMS$$"%N3 " r    c                     i }t        |      r"| j                         D ]  \  }}||v s|||<    t        |      r"| j                         D ]  \  }}||v s|||<    |S r(   )r.   rK   r,   )rL   rM   rN   rO   rP   rR   rS   s          r!   )_filter_semconv_active_request_count_attrrV      sq     N'(HCi&)s# & '(HCi&)s# & r    c                     |r|| |<   y y r(   r   resultrR   r;   s      r!   set_string_attributerZ      s    s r    c                 F    |r	 t        |      | |<   y y # t        $ r Y y w xY wr(   )int
ValueErrorrX   s      r!   set_int_attributer^      s0    	e*F3K   		s    	  c                    |j                         }|j                         }||k7  rt        |      rt        | t        |       t	        |      rt        | t
        j                  |       t        |      rt        | t        |       y y r(   )r:   r,   rZ   r	   r.   r   HTTP_METHODr   )rY   original
normalizedrO   s       r!   _set_http_methodrc      sq    ~~H!!#J :+.B"CV%A8L'(V^%?%?L'(V%8*E )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   r^   r   HTTP_STATUS_CODEr,   r
   )rY   coderO   s      r!   _set_http_status_coderg      s8    '(&."A"A4H'(&";TB )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   HTTP_URLr,   r   )rY   urlrO   s      r!   _set_http_urlrk      s7    '(V^%<%<cB'(VXs3 )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   HTTP_SCHEMEr,   r   )rY   schemerO   s      r!   _set_http_schemero      s7    '(V^%?%?H'(VZ8 )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   r.   rZ   r   HTTP_FLAVORr,   r   rY   versionrO   s      r!   _set_http_flavor_versionru      8    '(V^%?%?I'(V%=wG )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   HTTP_USER_AGENTr,   r   )rY   
user_agentrO   s      r!   _set_http_user_agentrz     s=    '(N22J	
 '(V%8*E )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   	HTTP_HOSTr,   r   rY   hostrO   s      r!   _set_http_host_clientr     7    '(V^%=%=tD'(V^T: )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   NET_PEER_NAMEr,   r   )rY   	peer_namerO   s      r!   _set_http_net_peer_name_clientr     s7    '(V^%A%A9M'(V^Y? )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   r^   r   NET_PEER_PORTr,   r   rY   portrO   s      r!   _set_http_peer_port_clientr      7    '(&.">">E'(&+t4 )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   rq   rs   s      r!   "_set_http_network_protocol_versionr   '  rv   r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   NET_HOST_NAMEr,   r   r}   s      r!   _set_http_net_hostr   1  7    '(V^%A%A4H'(V^T: )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   r^   r   NET_HOST_PORTr,   r   r   s      r!   _set_http_net_host_portr   8  r   r    c                     t        |      rt        | t        j                  |       t	        |      r(|rt        | t
        |       |rt        | t        |       y y y r(   )r.   rZ   r   HTTP_TARGETr,   r   r   )rY   targetpathqueryrO   s        r!   _set_http_targetr   ?  sN    '(V^%?%?H'( 48 E:  )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   r|   r,   r   r}   s      r!   _set_http_host_serverr   I  r   r    c                     t        |      rt        | t        j                  |       t	        |      r(| j                  t              st        | t        |       y y y r(   )r.   rZ   r   NET_PEER_IPr,   r8   r   )rY   iprO   s      r!   _set_http_peer_ip_serverr   U  sH    '(V^%?%?D'(zz.) < * )r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   r^   r   r   r,   r   r   s      r!   _set_http_peer_port_serverr   ^  r   r    c                     t        |      rt        | t        j                  |       t	        |      rt        | t
        |       y y r(   )r.   rZ   r   r   r,   r   )rY   r)   rO   s      r!   _set_http_net_peer_name_serverr   e  r   r    Tmetrics_attributesstatus_codestatus_code_strserver_spanrO   c                    |dk  rh||t         <   | j                         rNt        |      r| j                  t         |       | j	                  t        t        j                  d|z                y y t        ||      }t        |      rC| j                         r | j                  t        j                  |       ||t        j                  <   t        |      rq| j                         r| j                  t        |       ||t        <   |t        j                  k(  r/| j                         r| j                  t         |       ||t         <   | j                         r| j	                  t        |             y y )Nr   zNon-integer HTTP status: )r   )r   is_recordingr,   set_attribute
set_statusr   r   ERRORr   r.   r   re   r
   )spanr   r   r   r   rO   statuss          r!   _set_statusr   l  sC    Q)8:&/0"":?OO$$//A  ,[
 +,  """"33[ CN~>>?+,  """#<kJ<G89)))$$&&&z?C1@":.OOF6N+ r    r+   rD   c                 H    | t         j                  u ryt        j                  S )Nz'https://opentelemetry.io/schemas/1.11.0)r#   r&   r   
SCHEMA_URLr*   s    r!   _get_schema_urlr     s     !)))8$$$r    )Sr6   rG   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   re   r|   r   r   r`   rr   rm   _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.   r0   r&   rT   rV   rZ   r^   rc   rg   rk   ro   ru   rz   r   r   r   r   r   r   r   r   r   r   r   dictr\   strboolr   r   r   r    r!   <module>r      st   
   J I   7 9
 ##      	  ####    	    ##+ ' + ' !@   85$
 $
V ,33	. ,33	$
FC49HF;@5H;5;;=5; /A/I/I',', ', 	',
 ', -',V%, % %r    