
    \j1                        U d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZm	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mZmZmZ d d	lmZmZmZmZmZmZmZ d d
lm Z  e r,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% d dlm&Z& d dl'm(Z(m)Z)  ejT                         dejV                  dd z  ejX                  dZ-de.d<    G d de      Z/d'dZ0	 d(ddddde1d e2d!d"dd#fd$Z3d'd%Z4d)d&Z5y)*    N)HTTPConnection)OPSPANDATA)Integration)add_global_event_processor)Span)StreamedSpan)EnvironHeadersshould_propagate_traceadd_http_request_sourcehas_span_streaming_enabled)SENSITIVE_DATA_SUBSTITUTEcapture_internal_exceptionsensure_integration_enabledis_sentry_urllogger	safe_repr	parse_url)TYPE_CHECKING)Any)Callable)Dict)Optional)List)Union)EventHintz%s.%s.%s   )nameversionbuildzdict[str, object]_RUNTIME_CONTEXTc                   "    e Zd ZdZedd       Zy)StdlibIntegrationstdlibNc                  R    t                t                t        	 	 	 	 	 	 dd       } y )Nc                     t        j                         j                  t              /| j	                  di       }t        |t              rd|vr	t        |d<   | S )Ncontextsruntime)
sentry_sdk
get_clientget_integrationr$   
setdefault
isinstancedictr"   )eventhintr(   s      H/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/stdlib.pyadd_python_runtime_contextz@StdlibIntegration.setup_once.<locals>.add_python_runtime_context9   sQ     $$&667HIU ++J;h-)82K*:HY'L    )r0   r   r1   r   returnzOptional[Event])_install_httplib_install_subprocessr   )r3   s    r2   
setup_oncezStdlibIntegration.setup_once4   s8    	#		"(		 
$	r4   r5   N)__name__
__module____qualname__
identifierstaticmethodr8    r4   r2   r$   r$   1   s    J r4   r$   r5   c                      t         j                  t         j                  dddt        dt        ddddddffd	} dfd
}| t         _        |t         _        y )Nselfr   methodurlargsr   kwargsr5   c           	      *   | j                   }t        | dd       }|r|}t        | d|      }n| j                  }| j                  }t	        j
                         }	|	j                  t              t        |	|      r | ||g|i |S |}
|
|
j                  d      s$|dk(  xr dxs dd|||k7  xr d|z  xs d	|}
d }t               5  t        |
d
      }d d d        t        |	j                        }|rt        j                  j                  |d|r|j                   nt"        dddt$        j&                  t(        j*                  |i      }|~|j-                  t(        j.                  |j                          |j-                  t(        j0                  |j2                         |j-                  t(        j4                  |j6                         |j,                  }nt	        j                  t$        j&                  |d|r|j                   nt"        d      }|j9                  t(        j:                  |       |p|j9                  d|j                          |j9                  t(        j<                  |j2                         |j9                  t(        j>                  |j6                         |j8                  }|rB |t(        j@                  | j                          |t(        jB                  | j                          | ||g|i |}tE        |	|
      ret	        jF                         jI                  |      D ]>  \  }}tK        jL                  djO                  |||
             | jQ                  ||       @ || _)        |S # 1 sw Y   xY w)N_tunnel_host_tunnel_port)zhttp://zhttps://i  httpshttpz://z:%s F)sanitize sentry.originzauto.http.stdlib.httplib	sentry.opr   
attributesopr   originrC   spanzJ[Tracing] Adding `{key}` header {value} to outgoing request to {real_url}.)keyvaluereal_url)*default_portgetattrhostportr*   r+   r,   r$   r   
startswithr   r   r   optionstraces
start_spanrC   r   r   HTTP_CLIENTr   HTTP_REQUEST_METHODset_attributeURL_FULL	URL_QUERYqueryURL_FRAGMENTfragmentset_dataHTTP_METHOD
HTTP_QUERYHTTP_FRAGMENTNETWORK_PEER_ADDRESSNETWORK_PEER_PORTr   get_current_scopeiter_trace_propagation_headersr   debugformat	putheader_sentrysdk_span)rA   rB   rC   rD   rE   rZ   tunnel_hostr\   r]   clientrY   
parsed_urlspan_streamingrV   set_on_spanrvrW   rX   real_putrequests                     r2   
putrequestz$_install_httplib.<locals>.putrequestI   sJ    (( dND9D4>D99D99D&&(!!"34<DA
 #4FtFvFF8#6#67N#O#/969$5;;	H 
(* 	="8e<J	= 4FNNC$$//Z:>>=VVX $%?00& 0 D %""8#4#4jnnE""8#5#5z7G7GH""8#8#8*:M:MN,,K ((>>Z:>>=VVX1	D MM(..7%eZ^^4h11:3C3CDh44j6I6IJ--K 55tyyA22DII>T63@@@!&(3 --/NN O +  `ggux h 
 sE*+  $	}	= 	=s   NNc                    t        | dd       }| | g|i |S 	  | g|i |}t        |t              r6t        |j                        }|dk\  rdnd|_        |j                  d|       n@|j                  t        |j                               |j                  d|j                         t        |t              r0t               5  t        |       d d d        |j                          |S |j                          t               5  t        |       d d d        |S # 1 sw Y   KxY w# 1 sw Y   |S xY w# t        |t              r<t               5  t        |       d d d        n# 1 sw Y   nxY w|j                          w |j                          t               5  t        |       d d d        w # 1 sw Y   w xY wxY w)Nru   i  errorokzhttp.response.status_codereason)r[   r.   r	   intstatusrd   set_http_statusrj   r   r   r   endfinish)rA   rD   rE   rV   r{   status_codereal_getresponses         r2   getresponsez%_install_httplib.<locals>.getresponse   s}   t.5<#D:4:6::	2!$888B$-!"))n)4);g""#>L$$S^4h		2$-02 2+D12
 	 02 2+D12 	2 22 	 $-02 2+D12 2 2
02 2+D12 2 2sT   BD9 
D 
D, D),D69GE) 	G)E2.2G F5,	G5F>:G)rA   r   rD   r   rE   r   r5   r   )r   r}   r   str)r}   r   r   r|   s     @@r2   r6   r6   E   sn    $//O%11\\(+\25\>C\OT\	\|: !+N!,Nr4   rD   z	List[Any]rE   zDict[Any, Any]r   positionsetdefault_callbackzOptional[Callable[[Any], Any]]r   c                     ||v r||   }| ||      }||||<   |S |t        |       k  r| |   }| ||      }||| |<   |S |xr  |d      }||||<   |S )a?  
    given (*args, **kwargs) of a function call, retrieve (and optionally set a
    default for) an argument by either name or position.

    This is useful for wrapping functions with complex type signatures and
    extracting a few arguments without needing to redefine that function's
    entire type signature.
    N)len)rD   rE   r   r   r   r{   s         r2   _init_argumentr      s      v~D\*$R(B>F4L I 
CI	(^*$R(B>DN I	 !>%8%>>F4LIr4   c                     t         j                  j                  t        t              	 	 	 	 	 	 	 	 dfd       } | t         j                  _        t         j                  j
                  t        t              	 	 	 	 	 	 	 	 dfd       }|t         j                  _        t         j                  j                  t        t              	 	 	 	 	 	 	 	 dfd       }|t         j                  _        y )Nc           	      P   t        |      }t        ||dd      xs g }t        ||dd      }d }t        |t         t        f      r@t	        |      dk  r2t               5  dj                  t        t        |            }d d d        |t        |      }d }t        t        j                         j                        }|r3t        j                  j                  |t         j"                  dd	      }n&t        j                  t         j"                  |d
      }|5  t        j$                         j'                  |      D ]=  \  }	}
|t        ||ddd       }|
|d|	j)                         j+                  dd      z   <   ? |r"t        |t,              r|j/                  d|        | g|i |}t        |t0              r+|j3                  t4        j6                  | j8                         n|j;                  d| j8                         |cd d d        S # 1 sw Y   xY w# 1 sw Y   y xY w)NrD   r   cwd	   d   rM   !auto.subprocess.stdlib.subprocessrO   rN   rP   rR   rU   env
   c                 D    t        | |       S t        j                        S N)r/   osenviron)xs    r2   <lambda>zH_install_subprocess.<locals>.sentry_patched_popen_init.<locals>.<lambda>&  s    $AMq"J rzz"J r4   SUBPROCESS_-_zsubprocess.cwdsubprocess.pid)listr   r.   tupler   r   joinmapr   r   r   r*   r+   r_   r`   ra   r   
SUBPROCESSrp   rq   upperreplacer   rj   r	   rd   r   PROCESS_PIDpidset_tag)rA   akwrD   r   descriptionr   ry   rV   kvr{   old_popen_inits               r2   sentry_patched_popen_initz6_install_subprocess.<locals>.sentry_patched_popen_init   s   
 GaVQ/52QE1- dT5M*s4y3,. 7!hhs3~67 #D/K3J4I4I4K4S4ST$$// !#%H 0 D ((== :D  	"446UU V  E1 ;(JC DEMAGGI$5$5c3$??@E z$-.4/q/B/B$-""8#7#7B-txx81	 	37 72	 	s    HC-HHH%c                 4   t        t        j                         j                        }|rt        j                  j                  t        j                  t        j                  dd      5 }|j                  t        j                  | j                          | g|i |cd d d        S t        j
                  t        j                  d      5 }|j                  d| j                          | g|i |cd d d        S # 1 sw Y   y xY w# 1 sw Y   y xY wNr   r   rP   )rS   rT   r   )r   r*   r+   r_   r`   ra   r   SUBPROCESS_WAITrd   r   r   r   r   )rA   r   r   ry   rV   old_popen_waits        r2   sentry_patched_popen_waitz6_install_subprocess.<locals>.sentry_patched_popen_wait:  s     4J4I4I4K4S4ST""--''!#!3!3%H .  6 ""8#7#7B%d5Q5"56 6 &&%%: 6 -txx8%d5Q5"56 66 66 6   +6D(DDDc                 4   t        t        j                         j                        }|rt        j                  j                  t        j                  t        j                  dd      5 }|j                  t        j                  | j                          | g|i |cd d d        S t        j
                  t        j                  d      5 }|j                  d| j                          | g|i |cd d d        S # 1 sw Y   y xY w# 1 sw Y   y xY wr   )r   r*   r+   r_   r`   ra   r   SUBPROCESS_COMMUNICATErd   r   r   r   r   )rA   r   r   ry   rV   old_popen_communicates        r2    sentry_patched_popen_communicatez=_install_subprocess.<locals>.sentry_patched_popen_communicateU  s     4J4I4I4K4S4ST""--..!#!:!:%H .  = ""8#7#7B,T<A<<= = &&,,: = -txx8,T<A<<= == == =r   )rA   subprocess.Popen[Any]r   r   r   r   r5   N)rA   r   r   r   r   r   r5   r   )
subprocessPopen__init__r   r$   waitcommunicate)r   r   r   r   r   r   s      @@@r2   r7   r7      s!   %%..N 1>BD%D+0D8=D	D CDL !:J%%**N 1>B6%6+068=6	6 C6, 6J&,,88 13HI=%=+0=8==	= J=, $DJ r4   c                  8    t        t        j                  d      S )Nr   )prefix)r
   r   r   r?   r4   r2   "get_subprocess_traceparent_headersr   o  s    "**];;r4   r9   r   )r5   r
   )6r   r   sysplatformhttp.clientr   r*   sentry_sdk.constsr   r   sentry_sdk.integrationsr   sentry_sdk.scoper   sentry_sdk.tracingr   sentry_sdk.tracesr	   sentry_sdk.tracing_utilsr
   r   r   r   sentry_sdk.utilsr   r   r   r   r   r   r   typingr   r   r   r   r   r   r   sentry_sdk._typesr   r   python_implementationversion_infor    r"   __annotations__r$   r6   r   r   r   r7   r   r?   r4   r2   <module>r      s    	  
  &  * / 7 # *    !- +H**,S--bq12[[) %  (@-P =A!
!! ! 	!
 :! !H@DF<r4   