
    tni2                     :   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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/m0Z0 d dl1m2Z2m3Z3m4Z4 n# e5$ r  ed          w xY wd dl6m7Z7 e7rFd dl8m9Z9 d dl:m;Z; d dl,m<Z<m=Z= d dl>m?Z? d dl@mAZA d dl6mBZB d dl6mCZC d dl6mDZD d dl6mEZE d dlmFZF d dlGmHZHmIZI dZJ G d de          ZKd-d!ZL	 	 	 	 d.d%ZMd/d'ZNd(ZO	 	 	 	 d0d,ZPdS )1    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add_http_request_source)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                   R    e Zd ZdZde Z	 deddedddd	fd
Zedd            Z	d	S )AioHttpIntegrationaiohttpz
auto.http.r5   )failed_request_status_codestransaction_styler:   zSet[int]returnNc                j    |t           vrt          d|dt           d          || _        || _        d S )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrorr;   _failed_request_status_codes)selfr;   r:   s      \/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/aiohttp.py__init__zAioHttpIntegration.__init__K   sT     $<<<*$$$&>&>&>@   "3,G)))    c                     t          t                    } t          t          |            t          st          dt          z             t          d           t          j	        	 	 	 	 	 	 	 	 	 	 dfd
}|t          _	        t          j        t                    	 	 	 	 	 	 dfd            }|t          _        t          j        t          t                    dfd            }|t          _        d S )NzSThe aiohttp integration for Sentry requires Python 3.7+  or aiocontextvars package.zaiohttp.serverrB   r.   requestr(   argskwargsr<   c           	        K   t          j                                        t                    }| | |g|R i | d {V S t	          j        |          }t          j                    5 }t          |d          5  |                                 |	                                 |
                    t          |                     t          |j                  }t          |t          j        dt"          j        t          j                  }t          j        |d|i          5  	  | |           d {V }	n# t*          $ r<}
|                    |
j                   |
j        |j        v rt3                        d }
~
wt4          j        t8          f$ r! |                    t<          j                    t@          $ r tC          t3                        Y nw xY w	 |	j"        }|                    |           n# tF          $ r Y nw xY w|	cd d d            cd d d            cd d d            S # 1 swxY w Y   	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrG   )session_modezgeneric AIOHTTP request)opnamesourceoriginaiohttp_request)custom_sampling_context)$
sentry_sdk
get_clientget_integrationr8   weakrefrefisolation_scoper   generate_propagation_contextclear_breadcrumbsadd_event_processor_make_request_processordictheadersr   r   HTTP_SERVERr   ROUTErO   start_transactionr%   set_http_statusstatus_coderA   _capture_exceptionasyncioCancelledErrorConnectionResetError
set_statusr   	CANCELLED	Exceptionr   statusAttributeError)rB   rG   rH   rI   integrationweak_requestscoper]   transactionresponseeresponse_status
old_handles               rC   sentry_app_handlez8AioHttpIntegration.setup_once.<locals>.sentry_app_handlej   s      %/11AABTUUK"'ZgGGGGGGGGGGGGG";w//L+-- 5("5yAAA 4( 4( 66888++-----.El.S.STTT"7?33G"0> 70618# # #K $5#1BG0L   #( #(;-7Zg-F-F'F'F'F'F'F'FHH, 	" 	" 	"'77FFF !"#.#K!L !L !3 4 4 4! ' 68LM " " "'22:3GHHH!( ; ; ; $%7%9%9::::;
	I
 /7oO (77HHHH  . ! ! ! D!
  (G#( #( #( #( #( #( #(#4( 4( 4( 4( 4( 4( 4(5( 5( 5( 5( 5( 5( 5( 5($#( #( #( #( #( #( #( #( #(#4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4(5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5(s   +I=B)I&H-(D;:H-;
G	7E<	<AG	H-G	H-G7!H-7
H	H-H	H-II-H11I4H15I9II			II		II!$I!r&   r)   c                 2  K    | |           d {V }t          j                                        t                    }||S d }	 |j        dk    rt          |j                  }nd|j        dk    rY|                                }|                    d          p|                    d          }d	                    |j
        |          }n# t          $ r Y nw xY w|8t          j                                        |t          |j                            |S )Nr5   r6   path	formatterz{} {})rN   )rR   rS   rT   r8   r;   r   handlerget_infogetformatmethodri   get_current_scopeset_transaction_namer   )rB   rG   rvrl   rM   
route_infopatternold_urldispatcher_resolves          rC   sentry_urldispatcher_resolvezCAioHttpIntegration.setup_once.<locals>.sentry_urldispatcher_resolve   s6      10w????????B$/11AABTUUK"	D0NBB4RZ@@DD 26OOO!#J(nnV44S
{8S8SG">>'.'BBD    ,..CC+K,IJ D   
 Is   BC 
CCc                      t          |                    d          pd          }t                      }|                    |           ||d<    | i |S )Ntrace_configs )listrz   create_trace_configappend)rH   rI   client_trace_configstrace_configold_client_session_inits       rC   initz+AioHttpIntegration.setup_once.<locals>.init   sa    #'

?(C(C(Ir#J#J .00L ''555&:F?#**D;F;;;rE   )
rB   r.   rG   r(   rH   r.   rI   r.   r<   r.   )rB   r&   rG   r(   r<   r)   )rH   r.   rI   r.   r<   N)r   AIOHTTP_VERSIONr	   r8   r   r   r   r   r$   _handler&   resolver   r"   rD   r   )versionrt   r   r   r   rs   r   s       @@@rC   
setup_oncezAioHttpIntegration.setup_onceY   sc   0017;;;# 	 .0IJ  
 	&''' (
>	(>	("+>	(49>	(EJ>	(>	( >	( >	( >	( >	( >	(@ 0$1$9!	(	)	)	!	,5	"	 	 	 	 	 
*	)	: !="/"8	#$68O	P	P	< 	< 	< 	< 	< 
Q	P	< "&rE   )r5   )r<   N)
__name__
__module____qualname__
identifierrO   r   strrD   staticmethodr   r   rE   rC   r8   r8   G   s        J&*&&F "0H 3W	H H HH &0	H
 
H H H H & & & \& & &rE   r8   r<   r#   c                      	 	 	 	 	 	 	 	 dd} 	 	 	 	 	 	 	 	 dd
}t                      }|j                            |            |j                            |           |S )Nsessionr"   trace_config_ctxr-   paramsr*   r<   c                   K   t          j                                        t                    d S |j                                        }d }t                      5  t          t          |j	                  d          }d d d            n# 1 swxY w Y   t          j
        t          j        |d|r|j	        nt          t          j                  }|                    t           j        |           |e|                    d|j	                   |                    t           j        |j                   |                    t           j        |j                   t          j                    }t-          |t          |j	                            rt          j                                        |          D ]\  }}t3          j        d                    |||j	                             |t8          k    r8|j                            t8                    r|j        |xx         d	|z   z  cc<   w||j        |<   ||_        d S )
NF)sanitize )rL   rM   rO   url)spanzE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.)keyvaluer   ,) rR   rS   rT   r8   r|   upperr   r   r   r   
start_spanr   HTTP_CLIENTr   rO   set_datar   HTTP_METHOD
HTTP_QUERYqueryHTTP_FRAGMENTfragmentr   r}   iter_trace_propagation_headersr   debugr{   r   r]   rz   r   )	r   r   r   r|   
parsed_urlr   clientr   r   s	            rC   on_request_startz-create_trace_config.<locals>.on_request_start   s     
  ""223EFFNF$$&&
(** 	D 	D"3vz??UCCCJ	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D $~vvRz~~9RRT%,	
 
 
 	h*F333!MM%000MM(-z/?@@@MM(0*2EFFF&((!&#fj//:: 	0 -//NN O  0 0  [bbu&* c    
 ---&.2D2D'3 3- N3'''3;6''''*/FN3'' $s   $B		BBr+   c                 V  K   |j         d S |j         }|                    t          |j        j                             |                    d|j        j                   |                                 t                      5  t          |           d d d            d S # 1 swxY w Y   d S )Nreason)
r   ra   intrp   rj   r   r   finishr   r   )r   r   r   r   s       rC   on_request_endz+create_trace_config.<locals>.on_request_end  s      
  (F$S!788999h 6777(** 	* 	*#D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   BB"%B")r   r"   r   r-   r   r*   r<   N)r   r"   r   r-   r   r+   r<   N)r#   r   r   r   )r   r   r   s      rC   r   r      s    0% 0%+0% *0% 
	0% 0% 0% 0%d* *+* (* 
	* * * *  ==L!(()9:::&&~666rE   rm   weakref.ReferenceType[Request]r4   c                       	 	 	 	 	 	 d fd}|S )Neventr3   hint*dict[str, Tuple[type, BaseException, Any]]r<   c                 ~                }|| S t                      5  |                     di           }|j        d|j        |j        |d<   |j        |d<   |j        |d<   d|j        i|d<   t          t          |j
                            |d<   t          |          |d	<   d d d            n# 1 swxY w Y   | S )
NrG   z://r   query_stringr|   REMOTE_ADDRenvr]   data)r   
setdefaultschemehostrv   r   r|   remoter   r\   r]   get_aiohttp_request_data)r   r   rG   request_inform   s       rC   aiohttp_processorz2_make_request_processor.<locals>.aiohttp_processor*  s)    ,..?L(** 	E 	E ++Ir::L #L ,3+?L(%,^L"#0'."AL&5d7?6K6K&L&LL#
 $<G#D#DL #	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E& s   BB22B69B6)r   r3   r   r   r<   r3   r   )rm   r   s   ` rC   r[   r[   '  sC    : 
     : rE   r2   c                      t          j                    } t          | t          j                    j        ddd          \  }}t          j        ||           | S )Nr9   F)typehandled)client_options	mechanism)r   )sysexc_infor   rR   rS   optionscapture_event)r   r   r   s      rC   rc   rc   J  s_    |~~H&!,..6$77  KE4
 U....OrE   z8[Can't show request body due to implementation details.]rG   r(   $Union[Optional[str], AnnotatedValue]c                     | j         }|`t          t          j                    t	          |                    st          j                    S | j        pd}|                    |d          S | j	        rt          S d S )Nzutf-8replace)_read_bytesr   rR   rS   lenr    removed_because_over_size_limitcharsetdecodecan_read_bodyBODY_NOT_READ_MESSAGE)rG   
bytes_bodyencodings      rC   r   r   X  s}     $J)**?*A*A3z??SS 	D!ACCC?-g  9555 %$$ 4rE   )r<   r#   )rm   r   r<   r4   )r<   r2   )rG   r(   r<   r   )Qr   rU   	functoolsr   rR   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   r   sentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r   r    rd   r9   r!   r   r"   r#   aiohttp.webr$   r%   r&   ImportErrortypingr'   aiohttp.web_requestr(   aiohttp.web_urldispatcherr)   r*   r+   collections.abcr,   typesr-   r.   r/   r0   r1   r2   sentry_sdk._typesr3   r4   r?   r8   r   r[   rc   r   r   r   rE   rC   <module>r      s    



            ) ) ) ) ) ) 6 6 6 6 6 6 6 6 6 6            : 9 9 9 9 9 - - - - - -                
 U T T T T T T T                           0NNN66666622222222EEEEEEEEEEE 0 0 0
,.
/
//0 !           8++++++======FFFFFFFF######%%%%%%((((((77777777 G R& R& R& R& R& R& R& R&jH H H HV 2        F    S +     s   2B B 