
    fi$"                        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 n# e!$ r dZ Y nw xY w	 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, n# e!$ r  ed          w xY w	 d dl-Z-n# e!$ r  ed          w xY wdZ. G d de          Z/d Z0d Z1d Z2 G d de          Z3d Z4 ee/          d             Z5d Z6dS )    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                   B    e Zd ZdZde ZdZdefdZed             Z	dS )FlaskIntegrationflaskz
auto.http. r    c                     |t           vrt          d|dt           d          || _        t          t	          t
          j        |                    | _        d S )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      m/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/flask.py__init__zFlaskIntegration.__init__:   si     $<<<*$$$&>&>&>@   "3',S<S-T-T'U'U$$$    c                     	 ddl m}  t          | k    rt          d          n# t          $ r Y nw xY wt          d          }t          t          |           t          j	        t                     t          j	        t                     t          j	        t                     t          j        fd}|t          _        d S )Nr   )Quartz?This is not a Flask app but rather Quart pretending to be Flaskr$   c                 @    t          j                                        t                      ||          S t          j                                        t                    }t	           fdt          j        |r|j        nt                    } |||          S )Nc                       g| R i |S N )akwold_appr0   s     r1   <lambda>zNFlaskIntegration.setup_once.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>h   s!    !8!8!8!8R!8!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HPwtWn===$/11AABRSSK-88888,3 #9K778  J :g~6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     	 	 	D	 "'**/999&'8999 0111%&8999.	7 	7 	7 	7 	7$ 1s    $ 
11N)
__name__
__module____qualname__
identifierrB   r*   r   r2   staticmethodrP   r9   r3   r1   r#   r#   4   sg        J&*&&F % ?V V V V )1 )1 \)1 )1 )1r3   r#   c                     d|v rd S t          j                    }t          |                                          }||d<   ||d<   d S )Nsentry_tracesentry_trace_meta)r?   get_current_scoper   trace_propagation_meta)sendertemplatecontextextrascope
trace_metas         r1   rK   rK   u   sT      (**E446677J(GN#-G   r3   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       r1    _set_transaction_name_and_sourcerh      s    
#((1
 
 	"",-#$56 	# 	
 	
 	
 	
 	
    s   AA 
AAc                 J   t          j                                        t                    }|d S t	          j                    }t          t          j                    |j        |           t          j	                    }t          | ||          }|                    |           d S 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KKK/11G %$&&(Ew   *,,E1#wLLM	m,,,,,r3   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
FlaskRequestExtractorc                     | j         j        S r8   )r   rC   r0   s    r1   envzFlaskRequestExtractor.env       |##r3   c                 R    d | j         j                                        D             S )Nc                 z    i | ]8\  }}|t          |t                    rt          |          d k    r|d         n|9S )   r   )
isinstancelistlen).0kvs      r1   
<dictcomp>z1FlaskRequestExtractor.cookies.<locals>.<dictcomp>   sS     
 
 
1 z!T**As1vv{{qtt
 
 
r3   )r   cookiesitemsru   s    r1   r   zFlaskRequestExtractor.cookies   s4    
 
,2244
 
 
 	
r3   c                 4    | 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                 8    | j                             d          S )NT)silent)r   get_jsonru   s    r1   jsonzFlaskRequestExtractor.json   s    |$$D$1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   r   r   r   r   r   r   r   r9   r3   r1   rs   rs      s        $ $ $
 
 
' ' '! ! !" " "$ $ $2 2 2# # # # #r3   rs   c                     fd}|S )Nc                 &   | S t                      5  t                                        |            d d d            n# 1 swxY w Y   t                      r5t                      5  t	          |            d d d            n# 1 swxY w Y   | S r8   )r   rs   extract_into_eventr	   _add_user_to_event)eventhintr   s     r1   innerz,_make_request_event_processor.<locals>.inner   s#    ?L(** 	E 	E!'**==eDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E #$$ 	*,.. * *"5)))* * * * * * * * * * * * * * * s#   #AA
A*BB
B
r9   )ro   r   rE   r   s    `  r1   rm   rm      s#        $ Lr3   c                     t          |t          j                    j        ddd          \  }}t          j        ||           d S )Nr$   F)typehandled)client_options	mechanism)r   )r   r?   r@   optionscapture_event)r[   	exceptionrp   r   r   s        r1   rM   rM      sW     '!,..6"u55  KE4 U......r3   c                    t           d S t           j        }|d S t                      5  |                     di           }	 |                    d|                                           n# t
          $ r Y nw xY w	 |                    d|j                   n# t          $ r Y nw xY w	 |                    d|j                   n# t          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nuseridemailusername)	flask_logincurrent_userr   
setdefaultget_idAttributeErrorr   rf   r   )r   r   	user_infos      r1   r   r      sn   #D|	$	&	&   $$VR00		  t{{}}5555 	 	 	
 D		  $*5555 	 	 	D		  T];;;; 	 	 	D	=                 s}   C  (A)(C )
A63C 5A66C :BC 
B# C "B##C 'CC 
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      sB       U U U U U U U U U U        > = = = = = 4 4 4 4 4 4 / / / / / /            !           H11111111111177777777<<<<<<GGGGGGGG   KKK
1$$$$$$$$......         
 "!!!!!! 1 1 1
,/
0
0013NNNN 3 3 3
,1
2
223 / >1 >1 >1 >1 >1{ >1 >1 >1B. . .  - - -&"# "# "# "# "#, "# "# "#J  0 ,--/ / .-/( ( ( ( (s*    A% %A/.A/3B B#'B, ,B=