
    lhf                        d dl Z d dlZd dlZd dlmZ d dlm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m Z m!Z!m"Z" d dl#m$Z$ e$rd dl#m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/ 	 d dl0Z0d dl0m1Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZCmDZD 	 d dlFmGZG 	 	 d dlIZJdZKdZL G d de      ZMd ZN eeM      d,d       ZOd ZP eeM      d         ZQd! ZRd" ZSd# ZTd$ ZUd% ZVd& ZW G d' d(      ZXd) ZYd* ZZd+ Z[y# eE$ r	  ed      w xY w# eE$ r	 d dlHmGZG Y |w xY w# eE$ r d dlJZJY w xY w# eE$ r dZJY w xY w)-    N)Set)deepcopy)JSONDecodeError)OP)DidNotEnableIntegration$_DEFAULT_FAILED_REQUEST_STATUS_CODES)DEFAULT_HTTP_METHODS_TO_CAPTUREHttpCodeRangeContainer_is_json_content_typerequest_body_within_bounds)SentryAsgiMiddleware)should_send_default_pii)SOURCE_FOR_STYLETransactionSource)AnnotatedValuecapture_internal_exceptionsensure_integration_enabledevent_from_exceptionparse_versiontransaction_from_function)TYPE_CHECKING)Any	AwaitableCallable	ContainerDictOptionalTupleUnion)EventHttpStatusCodeRange)__version__)	Starlette)
UploadFile)
Middleware)AuthenticationMiddleware)Request)Match)ASGIAppReceiveScopeSendzStarlette is not installed)ExceptionMiddlewarezgeneric Starlette request)endpointurlc                   >    e Zd ZdZde ZdZdedefdZe	d        Z
y)	StarletteIntegration	starlettez
auto.http. r0   Tc                 P   |t         vrt        d|dt         d      || _        || _        t	        t        t        j                  |            | _        t        |t              r|| _        y t        j                  dt        d       |t        | _        y t!        |      | _        y )Nz%Invalid value for transaction_style: z (must be in )zgPassing a list or None for failed_request_status_codes is deprecated. Please pass a set of int instead.   )
stacklevel)TRANSACTION_STYLE_VALUES
ValueErrortransaction_stylemiddleware_spanstuplemapstrupperhttp_methods_to_capture
isinstancer   failed_request_status_codeswarningswarnDeprecationWarningr	   r   )selfr;   rC   r<   rA   s        s/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py__init__zStarletteIntegration.__init__X   s     $<<$&>@  "3 0',S<S-T'U$137+ , MM4"	 +23W03I/40    c                      t        t              } | t        dj                  t                    t	                t                t                | dk\  rt                y y )Nz Unparsable Starlette version: {})r      )r   STARLETTE_VERSIONr   formatpatch_middlewarespatch_asgi_apppatch_request_responsepatch_templates)versions    rH   
setup_oncezStarletteIntegration.setup_once|   sW       12?299:KL  	 g rJ   N)__name__
__module____qualname__
identifieroriginr;   r	   r
   rI   staticmethodrT    rJ   rH   r2   r2   R   sA    J*&F  $H ?"H  rJ   r2   c                 X    | j                   fd}j                  dv}|r|| _         | S )Nc                   K   t        j                         j                  t              }||j                  s | |fi | d {   S | j
                  j                  t        | ||      \  }}|%t        j                         j                  ||       t        j                  t        j                  t        j                        5 }|j                  d       fd}	t        dt!                    }
|
dk(  }|s|	n}fd}t        dt!                    }|dk(  }|s|n} | |||fi | d {   cd d d        S 7 7 # 1 sw Y   y xY ww)	NsourceopnamerY   starlette.middleware_namec            
        K   t        j                  t        j                  t	        dt                    t        j                        5 }|j                  d        | i | d {   cd d d        S 7 # 1 sw Y   y xY wwNrW   r`   rc   )	
sentry_sdk
start_spanr   MIDDLEWARE_STARLETTE_RECEIVEgetattrr?   r2   rY   set_tag)argskwargsspanmiddleware_namereceives      rH   _sentry_receivezO_enable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive   sz     **66 .#g,G/66 : LL!<oN!($!9&!99: : :: :0   A	BA:*A8+A:.
B8A::B?BrU   rp   c            
        K   t        j                  t        j                  t	        dt                    t        j                        5 }|j                  d        | i | d {   cd d d        S 7 # 1 sw Y   y xY wwre   )	rf   rg   r   MIDDLEWARE_STARLETTE_SENDri   r?   r2   rY   rj   )rk   rl   rm   rn   sends      rH   _sentry_sendzL_enable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send   sz     **33 ~s4yA/66 7 LL!<oN!%t!6v!667 7 77 7rq   ru   )rf   
get_clientget_integrationr2   r<   	__class__rU    _get_transaction_from_middlewareget_current_scopeset_transaction_namerg   r   MIDDLEWARE_STARLETTErY   rj   ri   r?   )appscopero   rt   rl   integrationrb   r_   middleware_spanrp   receive_namereceive_patchednew_receiveru   	send_namesend_patchednew_sendrn   old_calls     ``             @rH   _create_span_callz6_enable_span_for_middleware.<locals>._create_span_call   sm     ++-==>RSk&B&B!#ugtFvFFF--00 8UKPf((*?? @ 
 ""&& '..
 %	O ##$?Q: #7JGEL*.??O1@/gK7  j#d)<I$6L+7|TH!#uk8NvNNK%	O %	O Gb OK%	O %	Os>   AE EBE A0EEEE EEE )r   %_sentry_authenticationmiddleware_call _sentry_exceptionmiddleware_call)__call__rU   )middleware_classr   not_yet_patchedr   s      @rH   _enable_span_for_middlewarer      s@    ((H5On '' 0 O $5!rJ   c                     t        | t        j                         j                  t        j
                  |d      \  }}t        j                  ||       y )N)typehandled)client_options	mechanism)hint)r   rf   rv   optionsr2   rX   capture_event)	exceptionr   eventr   s       rH   _capture_exceptionr      sG     '!,,.66/::wOKE4 U.rJ   c                     | j                   dt              v}|r%fd}|| _         | j                  fd}|| _        yy)zX
    Capture all exceptions in Starlette app and
    also extract user information.
    _sentry_middleware_initc                      | g|i | | j                   j                         fd}| j                   j                         D ]  }|| j                   |<    y )Nc                   K   t        j                         j                  t              }|d   }|Qt	        |d      xr4 t        |j                  t              xr |j                  |j                  v }|rt        |d       d }t        |      j                  D ]  }|v s|   } n |y t        |      r || g|i | d {   S  || g|i |S 7 w)Nr   status_codeT)r   )rf   rv   rw   r2   hasattrrB   r   intrC   r   r   __mro___is_async_callable)	rG   rk   rl   r   expis_http_server_errorold_handlerclsold_handlerss	           rH   !_sentry_patched_exception_handlerzfpatch_exception_middleware.<locals>._sentry_middleware_init.<locals>._sentry_patched_exception_handler   s     (335EE( 1g*]3 W&s<WOO{/V/VV )
 ,*3= #9,, Cl*&23&7
 &%k2!,T!CD!CF!CCC&t=d=f== Ds   BC"%CCC)_exception_handlerscopykeys)rG   rk   rl   r   keyr   old_middleware_inits        @rH   r   z;patch_exception_middleware.<locals>._sentry_middleware_init   sc    6t6v6  3388:L>@ //446 R0Q((-RrJ   c                 N   K   t        |        | |||       d {    y 7 wN_add_user_to_sentry_scoperG   r~   ro   rt   r   s       rH   r   zDpatch_exception_middleware.<locals>._sentry_exceptionmiddleware_call  s%      &e,4666s   %#%N)rI   r?   r   )r   r   r   r   r   r   s       @@rH   patch_exception_middlewarer      sX     +33/s;N7OOO(	RT %<!#,,	7  %E!A rJ   c                 j   d| vryt               syi }| d   }t        |dd      }|r|j                  d|j                         t        |dd      }|r|j                  d|j                         t        |dd      }|r|j                  d|j
                         t        j                         }||_        y)zZ
    Extracts user information from the ASGI scope and
    adds it to Sentry's scope.
    userNusernameidemail)	r   ri   
setdefaultr   r   r   rf   get_isolation_scoper   )r~   	user_infostarlette_userr   user_idr   sentry_scopes          rH   r   r   .  s     U"$I6]N~z48HZ)@)@AndD1GT>#4#45NGT2EWn&:&:;113L!LrJ   c                 V    | j                   dt              v}|rfd}|| _         yy)z/
    Add user information to Sentry scope.
    r   c                 N   K    | |||       d {    t        |       y 7 wr   r   r   s       rH   r   zNpatch_authentication_middleware.<locals>._sentry_authenticationmiddleware_callY  s(     4666%e, 7s   %#%N)r   r?   )r   r   r   r   s      @rH   patch_authentication_middlewarer   N  s7    
  ((H=S]RO	-
 %J! rJ   c                  f    t         j                  dt              v} | rfd}|t         _        yy)za
    Patches Starlettes `Middleware` class to record
    spans for every middleware invoked.
    r   c                     |t         k(  r | |g|i |S t        |      } | |g|i | |t        k(  rt        |       |t        k(  rt        |       y y r   )r   r   r'   r   r.   r   )rG   r   rk   rl   span_enabled_clsr   s        rH   r   z2patch_middlewares.<locals>._sentry_middleware_initm  sj    ***4FtFvFF:3?&6HHH../4))*3/ *rJ   N)r&   rI   r?   )r   r   r   s     @rH   rO   rO   a  s8     %--/s;N7OOO	0 6
! rJ   c                  F    t         j                  fd} | t         _        y)zG
    Instrument Starlette ASGI app using the SentryAsgiMiddleware.
    c                 L   K   t        j                         j                  t              }|  |||       d {   S t	         fdt        j
                  |j                  t        j                  |r|j                  nt        d      } ||||       d {   S 7 c7 w)Nc                       g| i |S r   r[   )akwold_apprG   s     rH   <lambda>zBpatch_asgi_app.<locals>._sentry_patched_asgi_app.<locals>.<lambda>  s    WT4A44 rJ      )mechanism_typer;   span_originrA   asgi_version)
rf   rv   rw   r2   r   rX   r;   rY   rA   r
   )rG   r~   ro   rt   r   
middlewarer   s   `     rH   _sentry_patched_asgi_appz0patch_asgi_app.<locals>._sentry_patched_asgi_app  s      ++-==>RS ugt<<<)4/::);;,33  334

  w555 = 6s"   8B$B AB$B"B$"B$N)r$   r   )r   r   s    @rH   rP   rP   ~  s    
   G6* 2IrJ   c                 
   t        | t        j                        r'| j                  } t        | t        j                        r't	        j
                  |       xs, t        |       xr t	        j
                  | j                        S r   )rB   	functoolspartialfuncasyncioiscoroutinefunctioncallabler   )objs    rH   r   r     sb    
S)++
,hh S)++
, &&s+ C'55cllCrJ   c                  n    t         j                  j                  fd} | t         j                  _        y )Nc                     | t              }|rfd}|} nt        j                        fd       }|}  |       S )Nc                    K   t        j                         j                  t              }| | i | d {   S | d   }t	        t        j
                         |j                  |       t        j                         }t        |      }|j                          d {   fd}t        j                  |_        |j                   |||              | i | d {   S 7 7 H7 w)Nr   c                     fd}|S )Nc                 |    | j                  di       }rdv rd   |d<   dv rd   |d<   t        |      | d<   | S )Nrequestcookiesdatagetr   )r   r   request_infoinfos      rH   event_processorzpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func.<locals>._make_request_event_processor.<locals>.event_processor  sW     (-yyB'?(D0:>y/Y 7%~7;F|V 4+3L+Ai($rJ   r[   )reqr   r   r   s      rH   _make_request_event_processorz{patch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func.<locals>._make_request_event_processor  s    % +*rJ   )rf   rv   rw   r2    _set_transaction_name_and_sourcerz   r;   r   StarletteRequestExtractorextract_request_inforX   _nameadd_event_processor)	rk   rl   r   r   r   	extractorr   r   old_funcs	          @rH   _sentry_async_funczTpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_async_func  s     (335EE( &!)4!:6!:::q'000211  *==?5g>	&;;==+$ &:%D%D"001';G &t6v666K ; >2 7s5   5C+C%A$C+C'AC+ C)!C+'C+)C+c                  2   t        j                         j                  t              }| 	| i |S t        j                         }|j
                  |j
                  j                          t        j                         }|j                  |j                  j                          | d   }t        ||j                  |       t        |      }|j                         fd}t        j                  |_        |j!                   |||              	| i |S )Nr   c                     fd}|S )Nc                 V    | j                  di       }r|d<   t        |      | d<   | S )Nr   r   r   )r   r   r   r   s      rH   r   zpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func.<locals>._make_request_event_processor.<locals>.event_processor  s6     (-yyB'?"6=L3+3L+Ai($rJ   r[   )r   r   r   r   s      rH   r   zzpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func.<locals>._make_request_event_processor  s    
% +*rJ   )rf   rv   rw   r2   rz   transactionupdate_active_threadr   profileupdate_active_thread_idr   r;   r   extract_cookies_from_requestrX   r   r   )
rk   rl   r   current_scoper   r   r   r   r   r   s
           @rH   _sentry_sync_funczSpatch_request_response.<locals>._sentry_request_response.<locals>._sentry_sync_func  s    )335EE( &#T4V44 * < < > ,,8!--BBD)==?''3 ((@@Bq'0 +"?"? 6g>	#@@B+  &:%D%D"001';G  000rJ   )r   r   wraps)r   is_coroutiner   r   r   old_request_responses       @rH   _sentry_request_responsez8patch_request_response.<locals>._sentry_request_response  sR    )(3+7Z &D __X&.1 '.1` %D#D))rJ   )r3   routingrequest_response)r   r   s    @rH   rQ   rQ     s-    $,,==k*Z *BI&rJ   c                      	 ddl m ddlm}  | j
                  dt              v}|rfd}|| _        y y # t        $ r Y y w xY w)Nr   )Markup)Jinja2Templates_sentry_jinja2templates_initc                     fd}|j                  dg        ||d   vr|d   j                  |        | g|i |S )Nc                 \     t        j                         j                               }d|iS )Nsentry_trace_meta)rf   rz   trace_propagation_meta)r   
trace_metar  s     rH   add_sentry_trace_metazTpatch_templates.<locals>._sentry_jinja2templates_init.<locals>.add_sentry_trace_meta4  s3    #002IIK
 ( rJ   context_processors)r   append)rG   rk   rl   r
  r  old_jinja2templates_inits       rH   r  z5patch_templates.<locals>._sentry_jinja2templates_init2  sS     2B7$F3G,HH+,334IJ+DB4B6BBrJ   )
markupsafer  ImportErrorstarlette.templatingr  rI   r?   )r  r   r  r  r  s      @@rH   rR   rR     s_    % 5.774C = O 	C$ $@ )   s   : 	AAc                   D    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)r   z
    Extracts useful information from the Starlette request
    (like form data or cookies) and adds it to the Sentry event.
    Nc                     || _         y r   )r   )rG   r   s     rH   rI   z"StarletteRequestExtractor.__init__O  s	    rJ   c                 >    d }t               r| j                         }|S r   )r   r   )rG   r   s     rH   r   z6StarletteRequestExtractor.extract_cookies_from_requestS  s    "$llnGrJ   c                   K   t        j                         }i }t               5  t               r| j	                         |d<   | j                          d {   }|s|cd d d        S |r.t        ||      s"t        j                         |d<   |cd d d        S | j                          d {   }|r||d<   |cd d d        S | j                          d {   }|rUi }|j                         D ]0  \  }}t        |t              }	|	s|nt        j                         ||<   2 ||d<   |cd d d        S t        j                         |d<   |cd d d        S 7 7 7 # 1 sw Y   y xY ww)Nr   r   )rf   rv   r   r   r   content_lengthr   r   removed_because_over_size_limitjsonformitemsrB   r%   removed_because_raw_data)
rG   clientr   r  r  r  	form_datar   valis_files
             rH   r   z.StarletteRequestExtractor.extract_request_info[  sq    &&((* (	 &(*.,,.Y' $(#6#6#88N!#(	  (	  &@' (6'U'U'WV$#(	  (	 $ $D'+V$#+(	  (	 0 $D	 $

 HC(j9G  ' +DDF cN (1V$#I(	  (	 N $2#J#J#LL Q(	  (	  9 % %1(	  (	 s   !E#1EEE
E#&&E
E#E)E*E6
E# EEAE%
E#/E
E#EEEE E#c                    K   d| j                   j                  v r"t        | j                   j                  d         S y w)Nzcontent-length)r   headersr   rG   s    rH   r  z(StarletteRequestExtractor.content_length  s6     t||333t||++,<=>>s   <>c                 .    | j                   j                  S r   )r   r   r!  s    rH   r   z!StarletteRequestExtractor.cookies  s    ||###rJ   c                    K   t         y | j                  j                          d {    | j                  j                          d {   S 7 &7 wr   )	multipartr   bodyr  r!  s    rH   r  zStarletteRequestExtractor.form  sF      ll!!!\\&&((( 	"(s!   %AA!A	A
AAc                 ^    t        | j                  j                  j                  d            S )Nzcontent-type)r   r   r   r   r!  s    rH   is_jsonz!StarletteRequestExtractor.is_json  s"    $T\\%9%9%=%=n%MNNrJ   c                    K   | j                         sy 	 | j                  j                          d {   S 7 # t        $ r Y y w xY wwr   )r'  r   r  r   r!  s    rH   r  zStarletteRequestExtractor.json  sA     ||~	**,,,, 		s1   A9 79 A9 	AAAA)rU   rV   rW   __doc__r   rI   r   r   r  r   r  r'  r  r[   rJ   rH   r   r   G  s8    
 G. `$)OrJ   r   c                     | j                  d      }|sy |j                  D ]8  }|j                  |       }|d   t        j                  k(  s+	 |j
                  c S  y # t        $ r | j                  d      cY c S w xY w)Nrouterr   path)r   routesmatchesr)   FULLr,  AttributeError)r~   r+  routematchs       rH   _transaction_name_from_routerr3    s{    YYx F )e$8uzz!)zz!	) 	 " )yy(()s   AA<;A<c                    d }t         |   }|dk(  r-|j                  j                  d      }|r*t        |      xs d }n|dk(  rt	        |j                        }|t
        }t        j                  }| j                  ||       y )Nr/   r0   r^   )	r   r~   r   r   r3  _DEFAULT_TRANSACTION_NAMEr   ROUTEr{   )r~   r;   r   rb   r_   r/   s         rH   r   r     s~    D/0FJ&==$$Z0,X6>$D	e	#,W]];|("((	tF3rJ   c                     d }d }|j                   dk(  r)t        | j                        }t        j                  }||fS |j                   dk(  rt        |      }t        j                  }||fS )Nr/   r0   )r;   r   rx   r   	COMPONENTr3  r6  )r}   
asgi_scoper   rb   r_   s        rH   ry   ry     sn    DF$$
2(7",,
 <	 
	&	&%	/,Z8"((<rJ   )F)\r   r   rD   collections.abcr   r   r   r  r   rf   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r	   $sentry_sdk.integrations._wsgi_commonr
   r   r   r   sentry_sdk.integrations.asgir   sentry_sdk.scoper   sentry_sdk.tracingr   r   sentry_sdk.utilsr   r   r   r   r   r   typingr   r   r   r   r   r   r   r   r    sentry_sdk._typesr!   r"   r3   r#   rM   starlette.applicationsr$   starlette.datastructuresr%   starlette.middlewarer&   #starlette.middleware.authenticationr'   starlette.requestsr(   starlette.routingr)   starlette.typesr*   r+   r,   StarletteScoper-   r  starlette.middleware.exceptionsr.   starlette.exceptionspython_multipartr$  r5  r9   r2   r   r   r   r   r   rO   rP   r   rQ   rR   r   r3  r   ry   r[   rJ   rH   <module>rO     s             
  > 4  !XXX<5:03/ +'OO9C
	, 8 . 9; 9xDN 01/ 2/JEZ 01" 2">J&6:2BqBh'@Tg gT$4(A  5
3
445  989    IsH   :D' D8 E	 'D58EE		EE EE E"!E"