
    lh                         d dl Z d dlmZmZ d dl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mZ d dlmZ erd dlmZ d d	lmZ 	 d d
lmZmZmZmZ dgZ G d de      Zd Zd Z d Z!y# e$ r	  ed      w xY w)    N)OPSPANDATA)IntegrationDidNotEnable)BAGGAGE_HEADER_NAME)Baggageshould_propagate_trace)SENSITIVE_DATA_SUBSTITUTEcapture_internal_exceptionsensure_integration_enabledlogger	parse_url)TYPE_CHECKING)MutableMapping)Any)AsyncClientClientRequestResponsezhttpx is not installedHttpxIntegrationc                   *    e Zd ZdZde Zed        Zy)r   httpxz
auto.http.c                  ,    t                t                y)z
        httpx has its own transport layer and can be customized when needed,
        so patch Client.send and AsyncClient.send to support both synchronous and async interfaces.
        N)_install_httpx_client_install_httpx_async_client     o/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/httpx.py
setup_oncezHttpxIntegration.setup_once!   s     	#%r   N)__name__
__module____qualname__
identifieroriginstaticmethodr   r   r   r   r   r      s%    J*&F& &r   c                  l    t         j                  t        t              fd       } | t         _        y )Nc           	         d }t               5  t        t        |j                        d      }d d d        t	        j
                  t        j                  |j                  d|r|j                  nt        t        j                        5 }|j                  t        j                  |j                         |p|j                  d|j                         |j                  t        j                  |j                          |j                  t        j"                  |j$                         t'        t	        j(                         t        |j                              rt	        j*                         j-                         D ]e  \  }}t/        j0                  dj3                  |||j                               |t4        k(  rt7        |j8                  |       W||j8                  |<   g  | |fi |}|j;                  |j<                         |j                  d|j>                         |cd d d        S # 1 sw Y   xY w# 1 sw Y   y xY w)	NFsanitize opnamer$   urlE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.keyvaluer.   reason) r   r   strr.   
sentry_sdk
start_spanr   HTTP_CLIENTmethodr
   r   r$   set_datar   HTTP_METHOD
HTTP_QUERYqueryHTTP_FRAGMENTfragmentr	   
get_clientget_current_scopeiter_trace_propagation_headersr   debugformatr   _add_sentry_baggage_to_headersheadersset_http_statusstatus_codereason_phrase	selfrequestkwargs
parsed_urlspanr1   r2   rv	real_sends	           r   sendz#_install_httpx_client.<locals>.send0   s    
(* 	E"3w{{#3eDJ	E ""~~ ",
2KK
 $**
 $	 MM(..?%eZ^^4h11:3C3CDh44j6I6IJ%j&;&;&=s7;;?OP  113RRT5 LL_ff #5gkk g  116wN/4,5 43F3B  0MM(B$4$45I$	 $		E 	E$	 $	s   !H0FH=0H:=I)r   rQ   r   r   rQ   rP   s    @r   r   r   ,   s0    I 0)<* =*X FKr   c                  F    t         j                  fd} | t         _        y )Nc           	      l  K   t        j                         j                  t               | |fi | d {   S d }t	               5  t        t        |j                        d      }d d d        t        j                  t        j                  |j                  d|r|j                  nt        t        j                        5 }|j                  t        j                   |j                         |p|j                  d|j                         |j                  t        j"                  |j$                         |j                  t        j&                  |j(                         t+        t        j                         t        |j                              rt        j,                         j/                         D ]  \  }}t1        j2                  dj5                  |||j                               |t6        k(  r:|j8                  j;                  t6              r|j8                  |xx   d|z   z  cc<   z||j8                  |<     | |fi | d {   }|j=                  |j>                         |j                  d	|j@                         |cd d d        S 7 ^# 1 sw Y   1xY w7 V# 1 sw Y   y xY ww)
NFr(   r*   r+   r.   r/   r0   ,r3   )!r5   r?   get_integrationr   r   r   r4   r.   r6   r   r7   r8   r
   r$   r9   r   r:   r;   r<   r=   r>   r	   r@   rA   r   rB   rC   r   rE   getrF   rG   rH   rI   s	           r   rQ   z)_install_httpx_async_client.<locals>.sendd   s9      "223CDL"4;F;;;
(* 	E"3w{{#3eDJ	E ""~~ ",
2KK
 $**
 &	 MM(..?%eZ^^4h11:3C3CDh44j6I6IJ%j&;&;&=s7;;?OP  113RRT5 LL_ff #5gkk g 
 11goo6I6I+7  ,e;,/4,5" !w9&99B  0MM(B$4$45M&	 &	 <	E 	EH :C&	 &	sS   5J4JJ4	!J*AJ4FJ(J&<J(J4J#J4&J((J1-J4)r   rQ   rR   s    @r   r   r   `   s      I/b Kr   c                     | j                  t        d      }t        j                  |      }t	        |      dkD  rdnd}||z   |z   | t        <   y)zAdd the Sentry baggage to the headers.

    This function directly mutates the provided headers. The provided sentry_baggage
    is appended to the existing baggage. If the baggage already contains Sentry items,
    they are stripped out first.
     r   rU   N)rW   r   r   strip_sentry_baggagelen)rE   sentry_baggageexisting_baggagestripped_existing_baggage	separators        r   rD   rD      sV     {{#6; ' < <=M N459rI 	"I->  r   )"r5   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   sentry_sdk.tracingr   sentry_sdk.tracing_utilsr   r	   sentry_sdk.utilsr
   r   r   r   r   typingr   collections.abcr   r   r   r   r   r   r   ImportError__all__r   r   r   rD   r   r   r   <module>ri      s|     * = 2 D  !.1<< 
&{ &1h5pC  1
/
001s   A* *A8