
    fi                        d dl Z d dl m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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 n# e$ r  ed          w xY wdgZ G d de          Z d Z!d Z"d Z#dS )    N)
start_span)OPSPANDATA)IntegrationDidNotEnable)BAGGAGE_HEADER_NAME)Baggageshould_propagate_traceadd_http_request_source)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                   2    e Zd ZdZde Zed             ZdS )r   httpxz
auto.http.c                  >    t                       t                       dS )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     m/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/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                  x    t           j        t          t                    fd            } | t           _        d S )Nc           	         d }t                      5  t          t          |j                  d          }d d d            n# 1 swxY w Y   t	          t
          j        |j        d|r|j        nt          t          j
                  5 }|                    t          j        |j                   |e|                    d|j                   |                    t          j        |j                   |                    t          j        |j                   t%          t'          j                    t          |j                            rt'          j                                                    D ]_\  }}t/          j        d                    |||j                             |t4          k    rt7          |j        |           U||j        |<   ` | |fi |}|                    |j                   |                    d|j                   d d d            n# 1 swxY w Y   t                      5  tA          |           d d d            n# 1 swxY w Y   |S )	NFsanitize opnamer&   urlE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.keyvaluer0   reason)!r   r   strr0   r   r   HTTP_CLIENTmethodr   r   r&   set_datar   HTTP_METHOD
HTTP_QUERYqueryHTTP_FRAGMENTfragmentr
   
sentry_sdk
get_clientget_current_scopeiter_trace_propagation_headersr   debugformatr   _add_sentry_baggage_to_headersheadersset_http_statusstatus_codereason_phraser   	selfrequestkwargs
parsed_urlspanr3   r4   rv	real_sends	           r    sendz#_install_httpx_client.<locals>.send5   s    
(** 	E 	E"3w{#3#3eDDDJ	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E ~ ",K
2KK
 $*
 
 
 "	6 MM(.???%eZ^444h1:3CDDDh4j6IJJJ%j&;&=&=s7;?O?OPP 5  133RRTT5 5 L_ff #5gk g     1116wNNNN/4,,433F33B  000MM(B$4555E"	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6 "	6H )** 	* 	*#D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	s6   $AA	AFHH"H4III)r   rR   r   r   rR   rQ   s    @r    r   r   1   sG    I 0)<<- - - - =<-^ FKKKr   c                  B    t           j        fd} | t           _        d S )Nc           	        K   t          j                                        t                     | |fi | d {V S d }t	                      5  t          t          |j                  d          }d d d            n# 1 swxY w Y   t          t          j
        |j        d|r|j        nt          t          j                  5 }|                    t          j        |j                   |e|                    d|j                   |                    t          j        |j                   |                    t          j        |j                   t+          t          j                    t          |j                            rt          j                                                    D ]\  }}t1          j        d                    |||j                             |t6          k    r8|j                            t6                    r|j        |xx         d|z   z  cc<   w||j        |<    | |fi | d {V }|                    |j                   |                    d	|j                    d d d            n# 1 swxY w Y   t	                      5  tC          |           d d d            n# 1 swxY w Y   |S )
NFr*   r,   r-   r0   r1   r2   ,r5   )"r?   r@   get_integrationr   r   r   r6   r0   r   r   r7   r8   r   r&   r9   r   r:   r;   r<   r=   r>   r
   rA   rB   r   rC   rD   r   rF   getrG   rH   rI   r   rJ   s	           r    rR   z)_install_httpx_async_client.<locals>.sendl   s      ""223CDDL"4;;F;;;;;;;;;
(** 	E 	E"3w{#3#3eDDDJ	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E ~ ",K
2KK
 $*
 
 
 $	6 MM(.???%eZ^444h1:3CDDDh4j6IJJJ%j&;&=&=s7;?O?OPP 5  133RRTT5 5 L_ff #5gk g    
 111go6I6I+7 71  ,,,e;,,,,/4,, yw99&99999999B  000MM(B$4555I$	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6L )** 	* 	*#D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	s7   $A??BBF,J  JJJ55J9<J9)r   rR   rS   s    @r    r   r   h   s5     I2 2 2 2 2h Kr   c                     |                      t          d          }t          j        |          }t	          |          dk    rdnd}||z   |z   | t          <   dS )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   rV   N)rX   r   r	   strip_sentry_baggagelen)rF   sentry_baggageexisting_baggagestripped_existing_baggage	separators        r    rE   rE      sg     {{#6;; ' <=M N N45599rI 	"I->    r   )$r?   r   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   sentry_sdk.tracingr   sentry_sdk.tracing_utilsr	   r
   r   sentry_sdk.utilsr   r   r   r   r   typingr   collections.abcr   r   r   r   r   r   r   ImportError__all__r   r   r   rE   r   r   r    <module>rj      s       ! ! ! ! ! ! * * * * * * * * = = = = = = = = 2 2 2 2 2 2         
              !           ......1<<<<<<<<<<<<< 1 1 1
,/
0
001 
& & & & &{ & & &4 4 4n8 8 8v    s   A A,