
    tniZ                        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 d dlmZ d dl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 	 d dlZn# e$ r dZY nw xY w	 d dlmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z) 	 d dl*m+Z+ n%# e$ r	 d dl,m+Z+ Y nw xY w# e$ r  ed          w xY wdZ- G d de          Z.d,dZ/d,dZ0ddde1ddddfdZ2d-d!Z3	 	 	 	 	 	 	 	 d.d$Z4	 	 	 	 	 	 	 	 d/d(Z5d0d+Z6dS )1    N)wraps)DidNotEnableIntegration)_filter_headers)SentryAsgiMiddleware)should_send_default_pii)SOURCE_FOR_STYLE)capture_internal_exceptionsensure_integration_enabledevent_from_exception)TYPE_CHECKING)Any)Union)EventEventProcessor)has_request_contexthas_websocket_contextRequestQuartrequest	websocket)got_background_exceptiongot_request_exceptiongot_websocket_exceptionrequest_startedwebsocket_started)ScaffoldzQuart is not installed)endpointurlc                   J    e Zd ZdZde ZdZd
deddfdZedd	            Z	dS )QuartIntegrationquartz
auto.http. r   transaction_stylereturnNc                 \    |t           vrt          d|dt           d          || _        d S )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrorr$   )selfr$   s     Z/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/quart.py__init__zQuartIntegration.__init__?   sJ    $<<<*$$$&>&>&>@   "3    c                  8   t          j        t                     t          j        t                     t	          j        t
                     t          j        t
                     t          j        t
                     t                       t                       d S N)
r   connect_request_websocket_startedr   r   _capture_exceptionr   r   patch_asgi_apppatch_scaffold_route r-   r+   
setup_oncezQuartIntegration.setup_onceG   sz     :;;;!"<=== ();<<<%&8999'(:;;;r-   )r   r%   N)
__name__
__module____qualname__
identifieroriginr$   strr,   staticmethodr6   r5   r-   r+   r!   r!   9   ss        J&*&&F3 3# 3t 3 3 3 3    \  r-   r!   r%   c                  X    t           j        	 	 	 	 	 	 	 	 	 	 dfd} | t           _        d S )	Nr*   r   scopereceivesendr%   c                     K   t          j                                        t                      |||           d {V S t	           fdt          j        d          } ||||           d {V S )Nc                       g| R i |S r/   r5   )akwold_appr*   s     r+   <lambda>zApatch_asgi_app.<locals>.sentry_patched_asgi_app.<locals>.<lambda>]   s!    WWT4A44444 r-      )span_originasgi_version)
sentry_sdk
get_clientget_integrationr!   r   r<   )r*   r@   rA   rB   
middlewarerG   s   `    r+   sentry_patched_asgi_appz/patch_asgi_app.<locals>.sentry_patched_asgi_appV   s        ""223CDDL ugt<<<<<<<<<)44444(/
 
 


  Zw555555555r-   )
r*   r   r@   r   rA   r   rB   r   r%   r   )r   __call__)rP   rG   s    @r+   r3   r3   S   s]    nG66!6,169>6	6 6 6 6 6 6 -ENNNr-   c                  D    t           j        dfd} | t           _        d S )Nargsr   kwargsr%   c                  &     | i |dfd}|S )Nold_funcr   r%   c                      t          j                   rUt          j                   sAt	                     t          t                     d fd                        } |          S             S )NrS   r   rT   r%   c                      t          j                    }|j        |j                                         t          j                    }|j        |j                                          | i |S r/   )rL   get_current_scopetransactionupdate_active_threadget_isolation_scopeprofileupdate_active_thread_id)rS   rT   current_scopesentry_scoperV   s       r+   _sentry_funczTpatch_scaffold_route.<locals>._sentry_route.<locals>.decorator.<locals>._sentry_funcq   sr     %/$@$B$BM$0<%1FFHHH#-#A#C#CL#+7$,DDFFF#8T4V444r-   rS   r   rT   r   r%   r   )inspect
isfunctionasyncioiscoroutinefunctionr   r   r!   )rV   ra   old_decorators   ` r+   	decoratorz>patch_scaffold_route.<locals>._sentry_route.<locals>.decoratorl   s    !(++ 3G4O5 5 3 x+,<hGG	5 	5 	5 	5 	5 HG !	5 %}\222 =***r-   )rV   r   r%   r   r5   )rS   rT   rh   rg   	old_routes      @r+   _sentry_routez+patch_scaffold_route.<locals>._sentry_routei   s>    !	42622	+ 	+ 	+ 	+ 	+ 	+, r-   rb   )r   route)rj   ri   s    @r+   r4   r4   f   s5    I     6 #HNNNr-   r@   zsentry_sdk.Scoper$   r   r   c                     	 |j         j        |j         j        d}|                     ||         t          |                    d S # t
          $ r Y d S w xY w)N)r   r   )source)url_ruleruler   set_transaction_namer	   	Exception)r@   r$   r   name_for_styles       r+    _set_transaction_name_and_sourcers      s    
#((1
 
 	"",-#$56 	# 	
 	
 	
 	
 	
    s   AA 
AAappr   rT   r   c                   K   t          j                                        t                    }|d S t	                      rt          j                    }t                      rt          j                    }t          t          j
                    |j        |           t          j                    }t          | ||          }|                    |           d S r/   )rL   rM   rN   r!   r   r   _get_current_objectr   r   rs   rY   r$   r\   _make_request_event_processoradd_event_processor)rt   rT   integrationrequest_websocketr@   evt_processors         r+   r1   r1      s      '))99:JKKK :#799 <%9;; %$&&(EGX   *,,E1#7H+VVM	m,,,,,r-   ry   r   c                     dfd}|S )Neventr   hintdict[str, Any]r%   c                 j   | S t                      5  |                     di           }j        |d<   j        |d<   j        |d<   t          t          j                            |d<   t                      r!dj	        d         i|d<   t          |            d d d            n# 1 swxY w Y   | S )	Nr   r   query_stringmethodheadersREMOTE_ADDRr   env)r
   
setdefaultr   r   r   r   dictr   r   access_route_add_user_to_event)r}   r~   request_infor   s      r+   innerz,_make_request_event_processor.<locals>.inner   s    ?L(** 	* 	* !++Ir::L")+L+2+?L(%,^L"&5d7?6K6K&L&LL#&(( *'4g6J16M&NU#"5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* s   BB((B,/B,)r}   r   r~   r   r%   r   r5   )rt   r   ry   r   s    `  r+   rw   rw      s(         . Lr-   sender	exception Union[ValueError, BaseException]c                    K   t          j                                        t                    }|d S t	          |t          j                    j        ddd          \  }}t          j        ||           d S )Nr"   F)typehandled)client_options	mechanism)r~   )rL   rM   rN   r!   r   optionscapture_event)r   r   rT   ry   r}   r~   s         r+   r2   r2      s       '))99:JKKK&!,..6"u55  KE4 U......r-   r}   r   c                     t           d S t           j        }|d S t                      5  |                     di           }t           j        j        |d<   d d d            d S # 1 swxY w Y   d S )Nuserid)
quart_authcurrent_userr
   r   _auth_id)r}   r   	user_infos      r+   r   r      s    "D|	$	&	& ; ;$$VR00	$1:	$; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   +A  A$'A$r7   )rt   r   rT   r   r%   N)rt   r   r   r   ry   r!   r%   r   )r   r   r   r   rT   r   r%   N)r}   r   r%   N)7re   rc   	functoolsr   rL   sentry_sdk.integrationsr   r   $sentry_sdk.integrations._wsgi_commonr   sentry_sdk.integrations.asgir   sentry_sdk.scoper   sentry_sdk.tracingr	   sentry_sdk.utilsr
   r   r   typingr   r   r   sentry_sdk._typesr   r   r   ImportErrorr"   r   r   r   r   r   r   quart.signalsr   r   r   r   r   quart.scaffoldr   flask.sansio.scaffoldr(   r!   r3   r4   r=   rs   r1   rw   r2   r   r5   r-   r+   <module>r      s               = = = = = = = = @ @ @ @ @ @ = = = = = = 4 4 4 4 4 4 / / / / / /         
 !           877777777   JJJ3                            3+++++++ 3 3 3222222223  1 1 1
,/
0
001 /     {   4- - - -&# # # #B25@I	    - - - -*	$3E   :// B/NS/	/ / / / ; ; ; ; ; ;s0   A A)(A)-B$ B B! B!$B5