
    lh_2                        d dl Z d dlZd dlmZ d dl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 d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZ d d
lmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) 	 d dl*Z*d dl+m,Z- d dl+m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl5m6Z6 e6rFd dl7m8Z8 d dl9m:Z: d dl+m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dl5mAZA d dl5mBZB d dl5mCZC d dl5mDZD d dlmEZE d dlFmGZGmHZH dZI G d de      ZJd ZKd  ZLd! ZMd"ZNd# ZOy# e4$ r	  ed      w xY w)$    N)wraps)continue_trace)OP
SPANSTATUSSPANDATA)$_DEFAULT_FAILED_REQUEST_STATUS_CODES_check_minimum_versionIntegrationDidNotEnable)ignore_logger)track_session)_filter_headersrequest_body_within_bounds)BAGGAGE_HEADER_NAMESOURCE_FOR_STYLETransactionSource)should_propagate_trace)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionlogger	parse_urlparse_versionreraisetransaction_from_functionHAS_REAL_CONTEXTVARSCONTEXTVARS_ERROR_MESSAGESENSITIVE_DATA_SUBSTITUTEAnnotatedValue)__version__)ClientSessionTraceConfig)ApplicationHTTPExceptionUrlDispatcherzAIOHTTP not installed)TYPE_CHECKING)Request)UrlMappingMatchInfo)TraceRequestStartParamsTraceRequestEndParams)Set)SimpleNamespace)Any)Optional)Tuple)Union)ExcInfo)EventEventProcessor)handler_namemethod_and_path_patternc                   :    e Zd ZdZde Z	 deddZed        Zy)AioHttpIntegrationaiohttpz
auto.http.)failed_request_status_codesc                \    |t         vrt        d|dt         d      || _        || _        y )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style_failed_request_status_codes)selfr>   r9   s      q/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/aiohttp.py__init__zAioHttpIntegration.__init__K   s8     $<<$&>@  "3,G)    c                     t        t              } t        t        |        t        st        dt        z         t        d       t        j                  fd}|t        _	        t        j                  t              fd       }|t        _        t        j                  t        t              fd       }|t        _        y )NzSThe aiohttp integration for Sentry requires Python 3.7+  or aiocontextvars package.zaiohttp.serverc           	        K   t        j                         j                  t              }| | |g|i | d {   S t	        j
                  |      }t        j                         5 }t        |d      5  |j                          |j                          |j                  t        |             t        |j                        }t        |t        j                   dt"        j$                  t        j&                        }t        j(                  |d|i      5  	  | |       d {   }		 	jD                  }|j-                  |       	cd d d        cd d d        cd d d        S 7 -7 B# t*        $ rC}
|j-                  |
j.                         |
j.                  |j0                  v r
t3                 d }
~
wt4        j6                  t8        f$ r! |j;                  t<        j>                          t@        $ r tC        t3                 Y w xY w# tF        $ r Y w xY w# 1 sw Y   nxY w	 d d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY ww)Nrequest)session_modezgeneric AIOHTTP request)opnamesourceoriginaiohttp_request)custom_sampling_context)$
sentry_sdk
get_clientget_integrationr7   weakrefrefisolation_scoper   generate_propagation_contextclear_breadcrumbsadd_event_processor_make_request_processordictheadersr   r   HTTP_SERVERr   ROUTErK   start_transactionr$   set_http_statusstatus_coder?   _capture_exceptionasyncioCancelledErrorConnectionResetError
set_statusr   	CANCELLED	Exceptionr   statusAttributeError)r@   rF   argskwargsintegrationweak_requestscoperY   transactionresponseeresponse_status
old_handles               rA   sentry_app_handlez8AioHttpIntegration.setup_once.<locals>.sentry_app_handlem   s$    $//1AABTUK"'gGGGGG";;w/L++- 5("5yA 4( 668++---.El.ST"7??3G"0>> 7066188#K $55#1BG0L #(;-7g-F'FH&	I
 /7ooO (77H'G#( #(#4( 4(5( 5(	 H6 (G, 	"'77F !"#.#K#K!L !3 4! ' 6 68LM "'22:3G3GH!( ; $%7%9:;  . ! !=#( #( #(#4( 4( 4(5( 5( 5(s   :IE*-I+I
9B#H5HE/*E-
+E/0H<H	H5	I
 I-E//	H	8>F6	6AH	
HH	H	H	HH	HH($H5,	I
5H>	:I
	I
IIc                 (  K    | |       d {   }t        j                         j                  t              }||S d }	 |j                  dk(  rt        |j                        }n_|j                  dk(  rP|j                         }|j                  d      xs |j                  d      }dj                  |j                  |      }|6t        j                         j                  |t        |j                            |S 7 # t        $ r Y Gw xY ww)Nr4   r5   path	formatterz{} {})rJ   )rN   rO   rP   r7   r>   r   handlerget_infogetformatmethodre   get_current_scopeset_transaction_namer   )r@   rF   rvrj   rI   
route_infopatternold_urldispatcher_resolves          rA   sentry_urldispatcher_resolvezCAioHttpIntegration.setup_once.<locals>.sentry_urldispatcher_resolve   s     1w??B$//1AABTUK"	D00NB4RZZ@D 226OO!#J(nnV4S
{8SG">>'..'BD ,,.CC+K,I,IJ D 
 I1 @  s4   DD1DBD ;D	DDDDc                      t        |j                  d      xs d      }t               }|j                  |       ||d<    | i |S )Ntrace_configs )listrx   create_trace_configappend)rh   ri   client_trace_configstrace_configold_client_session_inits       rA   initz+AioHttpIntegration.setup_once.<locals>.init   sN     $(

?(C(Ir#J .0L ''5&:F?#*D;F;;rC   )r   AIOHTTP_VERSIONr	   r7   r   r   r   r   r#   _handler%   resolver   r!   rB   r   )versionrr   r   r   r   rq   r   s       @@@rA   
setup_oncezAioHttpIntegration.setup_onceZ   s      017;# .0IJ 
 	&' ((
=	(~ 0$1$9$9!	(	)	 
*	8 !="/"8"8	#$68O	P	< 
Q	< "&rC   N)r4   )	__name__
__module____qualname__
identifierrK   r   rB   staticmethodr   r   rC   rA   r7   r7   G   s@    J*&F )H %I	H @& @&rC   r7   c                      d } d }t               }|j                  j                  |        |j                  j                  |       |S )Nc                   K   t        j                         j                  t              y |j                  j                         }d }t               5  t        t        |j                        d      }d d d        t        j                  t        j                  |d|r|j                  nt        t        j                        }|j                  t         j"                  |       |p|j                  d|j                         |j                  t         j$                  |j&                         |j                  t         j(                  |j*                         t        j                         }t-        |t        |j                              rt        j.                         j1                  |      D ]  \  }}t3        j4                  dj7                  |||j                               |t8        k(  r:|j:                  j=                  t8              r|j:                  |xx   d	|z   z  cc<   z||j:                  |<    ||_        y # 1 sw Y   xY ww)
NF)sanitize )rH   rI   rK   url)spanzE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.)keyvaluer   ,) rN   rO   rP   r7   rz   upperr   r   strr   
start_spanr   HTTP_CLIENTr   rK   set_datar   HTTP_METHOD
HTTP_QUERYqueryHTTP_FRAGMENTfragmentr   r{   iter_trace_propagation_headersr   debugry   r   rY   rx   r   )	sessiontrace_config_ctxparamsrz   
parsed_urlr   clientr   r   s	            rA   on_request_startz-create_trace_config.<locals>.on_request_start   s      "223EFN$$&
(* 	D"3vzz?UCJ	D $$~~z~~9RRT%,,	
 	h**F3!MM%0MM(--z/?/?@MM(00*2E2EF&&(!&#fjj/: --/NN O 0  [bbu&** c 
 --&..2D2D'3 NN3'3;6'*/FNN3'#0& !%K	D 	Ds   AI!I2GIIIc                   K   |j                   y |j                   }|j                  t        |j                  j                               |j                  d|j                  j                         |j                          y w)Nreason)r   r]   intrn   rf   r   r   finish)r   r   r   r   s       rA   on_request_endz+create_trace_config.<locals>.on_request_end  s^       ($$S!7!789h 6 67s   A?B)r"   r   r   r   )r   r   r   s      rA   r   r      sE    -%^ =L!!(()9:&&~6rC   c                       fd}|S )Nc                            }|| S t               5  | j                  di       }|j                  d|j                  |j                  |d<   |j
                  |d<   |j                  |d<   d|j                  i|d<   t        t        |j                              |d<   t        |      |d	<   d d d        | S # 1 sw Y   | S xY w)
NrF   z://r   query_stringrz   REMOTE_ADDRenvrY   data)r   
setdefaultschemehostrt   r   rz   remoter   rX   rY   get_aiohttp_request_data)eventhintrF   request_infork   s       rA   aiohttp_processorz2_make_request_processor.<locals>.aiohttp_processor$  s    
 .?L(* 	E ++Ir:L #L ,3+?+?L(%,^^L"#0'.."AL&5d7??6K&LL#
 $<G#DL #	E& '	E& s   BB<<Cr   )rk   r   s   ` rA   rW   rW   "  s    < rC   c                      t        j                         } t        | t        j                         j
                  ddd      \  }}t        j                  ||       | S )Nr8   F)typehandled)client_options	mechanism)r   )sysexc_infor   rN   rO   optionscapture_event)r   r   r   s      rA   r_   r_   E  sO    ||~H&!,,.66$7KE4
 U.OrC   z8[Can't show request body due to implementation details.]c                     | j                   }|]t        t        j                         t	        |            st        j                         S | j                  xs d}|j                  |d      S | j                  rt        S y )Nzutf-8replace)_read_bytesr   rN   rO   lenr   removed_because_over_size_limitcharsetdecodecan_read_bodyBODY_NOT_READ_MESSAGE)rF   
bytes_bodyencodings      rA   r   r   T  sn    $$J)**?*?*A3z?S!AACC??-g  955$$ rC   )Pr   rQ   	functoolsr   rN   sentry_sdk.apir   sentry_sdk.constsr   r   r   sentry_sdk.integrationsr   r	   r
   r   sentry_sdk.integrations.loggingr   sentry_sdk.sessionsr   $sentry_sdk.integrations._wsgi_commonr   r   sentry_sdk.tracingr   r   r   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r   r   r`   r8   r    r   r!   r"   aiohttp.webr#   r$   r%   ImportErrortypingr&   aiohttp.web_requestr'   aiohttp.web_urldispatcherr(   r)   r*   collections.abcr+   typesr,   r-   r.   r/   r0   r1   sentry_sdk._typesr2   r3   r<   r7   r   rW   r_   r   r   r   rC   rA   <module>r      s    
    ) 6 6  : - 
 <   062EE !+=F#%(7 G T& T&nAH F	 S K	  0
.
//0s   0C6 6D