
    lh$"                        d dl Z d dlmZmZm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mZmZmZ d dlmZ er"d d	lmZmZmZmZ d d
lmZmZ d dlmZ d dlmZmZ 	 d dl 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, 	 d dl-Z-dZ. G d de      Z/d Z0d Z1d Z2 G d de      Z3d Z4 ee/      d        Z5d Z6y# e!$ r dZ Y cw xY w# e!$ r	  ed      w xY w# e!$ r	  ed      w xY w)    N)_check_minimum_versionDidNotEnableIntegration)DEFAULT_HTTP_METHODS_TO_CAPTURERequestExtractor)SentryWsgiMiddleware)should_send_default_pii)SOURCE_FOR_STYLE)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionpackage_version)TYPE_CHECKING)AnyCallableDictUnion)EventEventProcessor)_ScopedResponse)FileStorageImmutableMultiDict)FlaskRequest)request)before_render_templategot_request_exceptionrequest_started)MarkupzFlask is not installedzblinker is not installed)endpointurlc                   :    e Zd ZdZde ZdZdefdZed        Z	y)FlaskIntegrationflaskz
auto.http. r    c                     |t         vrt        d|dt         d      || _        t        t	        t
        j                  |            | _        y )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrortransaction_styletuplemapstrupperhttp_methods_to_capture)selfr*   r/   s      o/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/flask.py__init__zFlaskIntegration.__init__:   sI     $<<$&>@  "3',S<S-T'U$    c                  h   	 ddl m}  t        | k(  rt        d      	 t        d      }t        t        |       t        j                  t               t        j                  t               t        j                  t               t        j                  fd}|t        _        y # t        $ r Y w xY w)Nr   )Quartz?This is not a Flask app but rather Quart pretending to be Flaskr$   c                 ,    t        j                         j                  t              
  ||      S t        j                         j                  t              }t	         fdt        j
                  |r|j                  nt              } |||      S )Nc                       g| i |S N )akwold_appr0   s     r1   <lambda>zNFlaskIntegration.setup_once.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>h   s    !8!8R!8 r3   )span_originr/   )
sentry_sdk
get_clientget_integrationr#   r   originr/   r   )r0   environstart_responseintegration
middlewarer<   s   `    r1   sentry_patched_wsgi_appz<FlaskIntegration.setup_once.<locals>.sentry_patched_wsgi_app`   s    $$&667GHPtWn==$//1AABRSK-8,33 #  778J g~66r3   )quartr5   r   r   ImportErrorr   r   r#   r   connect_add_sentry_tracer   _request_startedr   _capture_exception__call__)r5   versionrG   r<   s      @r1   
setup_oncezFlaskIntegration.setup_onceH   s    
	#~ #U   "'*/9&&'89 01%%&89..	7$ 1=  		s   B% %	B10B1N)
__name__
__module____qualname__
identifierrB   r*   r   r2   staticmethodrP   r9   r3   r1   r#   r#   4   s;    J*&F % ?V )1 )1r3   r#   c                 |    d|v ry t        j                         }t        |j                               }||d<   ||d<   y )Nsentry_tracesentry_trace_meta)r?   get_current_scoper   trace_propagation_meta)sendertemplatecontextextrascope
trace_metas         r1   rK   rK   u   sC     ((*E4467J(GN#-G r3   c                     	 |j                   j                  |j                   j                  d}| j                  ||   t        |          y # t
        $ r Y y w xY w)N)r!   r    )source)url_ruleruler    set_transaction_namer
   	Exception)r_   r*   r   name_for_styles       r1    _set_transaction_name_and_sourcerh      sg    
##((((11
 	"",-#$56 	# 	
  s   A
A 	AAc                 6   t        j                         j                  t              }|y t	        j
                         }t        t        j                         |j                  |       t        j                         }t        | ||      }|j                  |       y r8   )r?   r@   rA   r#   flask_request_get_current_objectrh   rY   r*   get_isolation_scope_make_request_event_processoradd_event_processor)appkwargsrE   r   r_   evt_processors         r1   rL   rL      s    '')99:JKK//1G %$$&(E(Ew **,E1#wLM	m,r3   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
FlaskRequestExtractorc                 .    | j                   j                  S r8   )r   rC   r0   s    r1   envzFlaskRequestExtractor.env       ||###r3   c           	          | j                   j                  j                         D ci c]+  \  }}|t        |t              rt        |      dk(  r|d   n|- c}}S c c}}w )N   r   )r   cookiesitems
isinstancelistlen)r0   kvs      r1   rz   zFlaskRequestExtractor.cookies   sY     ,,224
1 z!T*s1v{qtA
 	
 
s   0Ac                 6    | j                   j                         S r8   )r   get_dataru   s    r1   raw_datazFlaskRequestExtractor.raw_data   s    ||$$&&r3   c                 .    | j                   j                  S r8   )r   formru   s    r1   r   zFlaskRequestExtractor.form   s    ||   r3   c                 .    | j                   j                  S r8   )r   filesru   s    r1   r   zFlaskRequestExtractor.files   s    ||!!!r3   c                 .    | j                   j                  S r8   )r   is_jsonru   s    r1   r   zFlaskRequestExtractor.is_json   rw   r3   c                 :    | j                   j                  d      S )NT)silent)r   get_jsonru   s    r1   jsonzFlaskRequestExtractor.json   s    ||$$D$11r3   c                     |j                   S r8   )content_length)r0   files     r1   size_of_filez"FlaskRequestExtractor.size_of_file   s    """r3   N)rQ   rR   rS   rv   rz   r   r   r   r   r   r   r9   r3   r1   rs   rs      s*    $
'!"$2#r3   rs   c                     fd}|S )Nc                     | S t               5  t              j                  |        d d d        t               r t               5  t	        |        d d d        | S | S # 1 sw Y   5xY w# 1 sw Y   | S xY wr8   )r   rs   extract_into_eventr	   _add_user_to_event)eventhintr   s     r1   innerz,_make_request_event_processor.<locals>.inner   sy     ?L(* 	E!'*==eD	E #$,. *"5)* u	E 	E* s   AA+A(+A5r9   )ro   r   rE   r   s    `  r1   rm   rm      s    $ Lr3   c                     t        |t        j                         j                  ddd      \  }}t        j                  ||       y )Nr$   F)typehandled)client_options	mechanism)r   )r   r?   r@   optionscapture_event)r[   	exceptionrp   r   r   s        r1   rM   rM      sA     '!,,.66"u5KE4 U.r3   c                    t         y t         j                  }|y t               5  | j                  di       }	 |j                  d|j	                                	 |j                  d|j                         	 |j                  d|j                         d d d        y # t
        $ r Y Nw xY w# t        $ r Y @w xY w# t        $ r Y 2w xY w# 1 sw Y   y xY w)Nuseridemailusername)	flask_logincurrent_userr   
setdefaultget_idAttributeErrorr   rf   r   )r   r   	user_infos      r1   r   r      s    ##D|	$	&  $$VR0		  t{{}5 	  $**5	  T]];;   	
 	   		
  		= sd   C	 BB+7B:	B(%C	'B((C	+	B74C	6B77C	:	CC	CC		C)7r?   sentry_sdk.integrationsr   r   r   $sentry_sdk.integrations._wsgi_commonr   r   sentry_sdk.integrations.wsgir   sentry_sdk.scoper	   sentry_sdk.tracingr
   sentry_sdk.utilsr   r   r   r   typingr   r   r   r   r   sentry_sdk._typesr   r   r   werkzeug.datastructuresr   r   r   rI   r$   r   r   r   rj   flask.signalsr   r   r   
markupsafer   blinkerr(   r#   rK   rh   rL   rs   rm   rM   r   r9   r3   r1   <module>r      s    U U > 4 /  !117<G
1$. 
 "3 / >1{ >1B.-&"#, "#J0 ,-/ ./(]  K  1
/
001
  3
1
223s*    B> %C C >CCCC*