o
    0 i#                     @   sF  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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rxd 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$ dej%dd  ej&dZ'G dd deZ(dd Z)dddZ*dd Z+dd Z,dS )    N)HTTPConnection)OPSPANDATA)Integration)add_global_event_processor)EnvironHeadersshould_propagate_traceadd_http_request_source)SENSITIVE_DATA_SUBSTITUTEcapture_internal_exceptionsensure_integration_enabledis_sentry_urllogger	safe_repr	parse_url)TYPE_CHECKING)Any)Callable)Dict)Optional)List)EventHintz%s.%s.%s   )nameversionbuildc                   @   s   e Zd ZdZedd ZdS )StdlibIntegrationstdlibc                  C   s   t   t  tdd } d S )Nc                 S   s<   t  td ur| di }t|trd|vrt|d< | S )NcontextsZruntime)
sentry_sdk
get_clientget_integrationr   
setdefault
isinstancedict_RUNTIME_CONTEXT)eventhintr    r)   j/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/stdlib.pyadd_python_runtime_context6   s
   z@StdlibIntegration.setup_once.<locals>.add_python_runtime_context)_install_httplib_install_subprocessr   )r+   r)   r)   r*   
setup_once0   s   zStdlibIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr.   r)   r)   r)   r*   r   -   s    r   c                     s4   t jt j fdd}  fdd}| t _|t _d S )Nc                    s  | j }| j}| j}t }|td u st||r& | ||g|R i |S |}	|	d u s1|	dsGd|dkr8dp9d|||krBd| pCd|f }	d }
t	  t
|	dd	}
W d    n1 s]w   Y  tjtjd
||
rm|
jntf dd}|tj| |
d ur|d|
j |tj|
j |tj|
j  | ||g|R i |}t||	rt j|dD ]\}}tdj|||	d | || q|| _|S )N)zhttp://zhttps://z%s://%s%s%si  httpshttpz:%s F)sanitizez%s %szauto.http.stdlib.httplibopr   originurlspanzJ[Tracing] Adding `{key}` header {value} to outgoing request to {real_url}.)keyvaluereal_url)hostportdefault_portr    r!   r"   r   r   
startswithr   r   
start_spanr   ZHTTP_CLIENTr;   r
   set_datar   ZHTTP_METHODZ
HTTP_QUERYqueryZHTTP_FRAGMENTfragmentr   get_current_scopeiter_trace_propagation_headersr   debugformat	putheader_sentrysdk_span)selfmethodr;   argskwargsrA   rB   rC   clientr@   
parsed_urlr=   rvr>   r?   )real_putrequestr)   r*   
putrequestF   s`   
z$_install_httplib.<locals>.putrequestc                    s   t | dd }|d u r | g|R i |S z9 | g|R i |}|t|j |d|j W |  t  t| W d    |S 1 sHw   Y  |S |  t  t| W d    w 1 sew   Y  w )NrN   reason)	getattrZset_http_statusintstatusrF   rX   finishr   r	   )rO   rQ   rR   r=   rU   )real_getresponser)   r*   getresponse   s$   


z%_install_httplib.<locals>.getresponse)r   rW   r^   )rW   r^   r)   )r]   rV   r*   r,   A   s   9
r,   c                 C   s   ||v r|| }|dur||}|dur|||< |S |t | k r6| | }|dur,||}|dur4|| |< |S |o;|d}|durD|||< |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)rQ   rR   r   positionZsetdefault_callbackrU   r)   r)   r*   _init_argument   s$   ra   c                     sv   t jjttfdd} | t j_t jjttfdd}|t j_t jj tt  fdd}|t j_d S )Nc              	      sL  t |}t||ddpg }t||dd}d }t|t tfr>t|dk r>t  dtt|}W d    n1 s9w   Y  |d u rFt	|}d }t
jtj|ddK}t
 j|d	D ]\}}	|d u rlt||d
ddd }|	|d| dd < qZ|r|d|  | g|R i |}
|d| j |
W  d    S 1 sw   Y  d S )NrQ   r   cwd	   d    !auto.subprocess.stdlib.subprocessr8   r<   env
   c                 S   s   t | d ur| S tjS N)r%   osenviron)xr)   r)   r*   <lambda>   s    zH_install_subprocess.<locals>.sentry_patched_popen_init.<locals>.<lambda>SUBPROCESS_-_zsubprocess.cwdsubprocess.pid)listra   r$   tupler_   r   joinmapstrr   r    rE   r   Z
SUBPROCESSrI   rJ   upperreplacerF   set_tagpid)rO   akwrQ   rb   descriptionrg   r=   kvrU   )old_popen_initr)   r*   sentry_patched_popen_init   sF   	$z6_install_subprocess.<locals>.sentry_patched_popen_initc                    X   t jtjdd}|d| j  | g|R i |W  d    S 1 s%w   Y  d S Nrf   )r9   r:   rq   )r    rE   r   ZSUBPROCESS_WAITry   rz   rO   r{   r|   r=   )old_popen_waitr)   r*   sentry_patched_popen_wait      $z6_install_subprocess.<locals>.sentry_patched_popen_waitc                    r   r   )r    rE   r   ZSUBPROCESS_COMMUNICATEry   rz   r   )old_popen_communicater)   r*    sentry_patched_popen_communicate  r   z=_install_subprocess.<locals>.sentry_patched_popen_communicate)
subprocessPopen__init__r   r   waitcommunicate)r   r   r   r)   )r   r   r   r*   r-      s   4		r-   c                   C   s   t tjddS )Nrn   )prefix)r   rj   rk   r)   r)   r)   r*   "get_subprocess_traceparent_headers  s   r   ri   )-rj   r   sysplatformhttp.clientr   r    Zsentry_sdk.constsr   r   Zsentry_sdk.integrationsr   Zsentry_sdk.scoper   Zsentry_sdk.tracing_utilsr   r   r	   Zsentry_sdk.utilsr
   r   r   r   r   r   r   typingr   r   r   r   r   r   Zsentry_sdk._typesr   r   python_implementationversion_infor   r&   r   r,   ra   r-   r   r)   r)   r)   r*   <module>   s8    $

VX