
    \j(                        d dl Z d dlZd dlZd dl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mZ 	 d dlmZ d d	lmZ d dlmZ er>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! 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*  e+edd      rd'dZ,nd dl-m,Z, dZ. G d de      Z/ ee/      d(d       Z0d d!d"e1ddddfd#Z2 G d$ d%e	      Z3	 	 	 	 	 	 d)d&Z4y# e$ r	  ed
      w xY w)*    N)IntegrationDidNotEnable)RequestExtractor)SentryWsgiMiddleware)should_send_default_pii)SOURCE_FOR_STYLE)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionreraise)HTTPException)RequestzPyramid not installed)TYPE_CHECKING)Response)Any)_ScopedResponse)Callable)Dict)Optional)RequestCookies)_FieldStorageWithFile)ExcInfo)EventEventProcessorauthenticated_useridrequestr   returnc                     | j                   S Nr   )r   s    I/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/pyramid.pyr   r   +   s    +++    r    
route_nameroute_patternc                   B    e Zd ZdZde ZdZd	deddfdZed
d       Z	y)PyramidIntegrationpyramidz
auto.http. transaction_styler   Nc                 N    |t         vrt        d|dt         d      || _        y )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrorr*   )selfr*   s     r!   __init__zPyramidIntegration.__init__<   s.    $<<$&>@  "3r"   c                     ddl m}  | j                  t        j                        	 	 	 	 	 	 	 	 	 	 dfd       }|| _        t        t        d      r)t        j                  	 	 	 	 	 	 	 	 dfd}|t        _        | j                  j                  t        t              	 	 	 	 	 	 	 	 d	fd       }|| j                  _	        y )
Nr   )routerc                 `   t        j                         j                  t              }| | |g|i |S t	        t        j
                         |j                  |       t        j                         }|j                  t        t        j                  |      |              | |g|i |S r   )
sentry_sdk
get_clientget_integrationr'    _set_transaction_name_and_sourceget_current_scoper*   get_isolation_scopeadd_event_processor_make_event_processorweakrefref)registryr   argskwargsintegrationscopeold_call_views         r!   sentry_patched_call_viewz?PyramidIntegration.setup_once.<locals>.sentry_patched_call_viewJ   s     %//1AABTUK"$XwHHHH,,,.0M0Mw 224E%%%gkk'&:KH !7DTDVDDr"   invoke_exception_viewc                      | g|i |}| j                   rat        | j                         rL|j                  dk(  r=t        j                         j                  t              	 t        | j                          |S )Ni  )exc_infoall
status_intr4   r5   r6   r'   _capture_exception)r/   r?   r@   rvold_invoke_exception_views       r!   $sentry_patched_invoke_exception_viewzKPyramidIntegration.setup_once.<locals>.sentry_patched_invoke_exception_viewa   sm     /tEdEfE MMDMM*,"--/??@RS  't}}5	r"   c                 h     	 	 	 	 	 	 d fd}t        |t        j                        } |||      S )Nc                     	  | |      S # t         $ r* t        j                         }t        |       t	        |  Y y w xY wr   )	ExceptionsysrG   rJ   r   )environstart_responseeinfoold_wsgi_callr/   s      r!   sentry_patched_inner_wsgi_callzgPyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call.<locals>.sentry_patched_inner_wsgi_cally   s@    $(wGG  $LLNE&u-UO$s   	 0A A )span_origin)rR   Dict[str, Any]rS   Callable[..., Any]r   r   )r   r'   origin)r/   rR   rS   rV   
middlewarerU   s   `    r!   sentry_patched_wsgi_callz?PyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_callu   sG    $)$;O$$ ...55J g~66r"   )
r>   r   r   r   r?   r   r@   r   r   r   )r/   r   r?   r   r@   r   r   r   )r/   r   rR   Dict[str, str]rS   rY   r   r   )r(   r2   
_call_view	functoolswrapshasattrr   rE   Router__call__r
   r'   )r2   rD   rM   r\   rC   rL   rU   s       @@@r!   
setup_oncezPyramidIntegration.setup_onceD   s   "))		'	E	E&/	E8=	EIN	E	E 
(	E" 5734(/(E(E%(-9>  -QG)..	#$6	F	7	7"2	7DX	7	7 
G	7& ":r"   )r$   )r   N)
__name__
__module____qualname__
identifierrZ   r*   strr0   staticmethodrd    r"   r!   r'   r'   6   sB    J*&F3# 3 3 D: D:r"   r'   c                     | d   t        | d   t              ry t        | t        j                         j
                  ddd      \  }}t        j                  ||       y )Nr   r(   F)typehandled)client_options	mechanism)hint)
issubclassr   r   r4   r5   optionscapture_event)rG   eventrq   s      r!   rJ   rJ      sY    {j!mD&!,,.66$7KE4 U.r"   rB   zsentry_sdk.Scoper*   c                     	 |j                   j                  |j                   j                  d}| j                  ||   t        |          y # t
        $ r Y y w xY w)Nr#   )source)matched_routenamepatternset_transaction_namer   rP   )rB   r*   r   name_for_styles       r!   r7   r7      sg    
!//44$22::
 	"",-#$56 	# 	
  s   A
A 	AAc                   T    e Zd ZdefdZddZddZdefdZddZddZ	dd	de
fd
Zy)PyramidRequestExtractorr   c                 .    | j                   j                  S r   )r   path_urlr/   s    r!   urlzPyramidRequestExtractor.url   s    ||$$$r"   c                 .    | j                   j                  S r   )r   rR   r   s    r!   envzPyramidRequestExtractor.env       ||###r"   c                 .    | j                   j                  S r   )r   cookiesr   s    r!   r   zPyramidRequestExtractor.cookies   r   r"   c                 .    | j                   j                  S r   )r   textr   s    r!   raw_dataz PyramidRequestExtractor.raw_data   s    ||   r"   c           	          | j                   j                  j                         D ci c]  \  }}t        |dd       s|| c}}S c c}}w Nfilenamer   POSTitemsgetattrr/   keyvalues      r!   formzPyramidRequestExtractor.form   sK     #ll//557
U5*d3 J
 	
 
   Ac           	          | j                   j                  j                         D ci c]  \  }}t        |dd       r|| c}}S c c}}w r   r   r   s      r!   fileszPyramidRequestExtractor.files   sK     #ll//557
Uuj$/ J
 	
 
r   postdatar   c                     |j                   }	 t        j                  |j                               j                  S # t
        $ r Y yw xY w)Nr   )fileosfstatfilenost_sizerP   )r/   r   r   s      r!   size_of_filez$PyramidRequestExtractor.size_of_file   s=    }}	88DKKM*222 		s   ,; 	AAN)r   r]   )r   r   )r   z Dict[str, _FieldStorageWithFile])re   rf   rg   ri   r   r   r   r   r   r   intr   rk   r"   r!   r~   r~      sB    %S %$$!# !

%<  r"   r~   c                      d fd}|S )Nc                 B           }|| S t               5  t        |      j                  |        d d d        t               rBt               5  | j	                  di       }|j	                  dt        |             d d d        | S | S # 1 sw Y   WxY w# 1 sw Y   | S xY w)Nuserid)r	   r~   extract_into_eventr   
setdefaultr   )ru   rq   r   	user_infoweak_requests       r!   pyramid_event_processorz6_make_event_processor.<locals>.pyramid_event_processor   s    .?L(* 	G#G,??F	G #$,. J!,,VR8	$$T+?+HIJ u	G 	GJ s   B.BBB)ru   r   rq   rX   r   r   rk   )r   rA   r   s   `  r!   r;   r;      s     #"r"   )r   r   r   zOptional[Any])rG   r   r   N)r   zCallable[[], Request]rA   r'   r   r   )5r_   r   rQ   r<   r4   sentry_sdk.integrationsr   r   $sentry_sdk.integrations._wsgi_commonr   sentry_sdk.integrations.wsgir   sentry_sdk.scoper   sentry_sdk.tracingr   sentry_sdk.utilsr	   r
   r   r   pyramid.httpexceptionsr   pyramid.requestr   ImportErrortypingr   pyramid.responser   r   r   r   r   r   webob.cookiesr   webob.requestr   r   sentry_sdk._typesr   r   r   r   pyramid.securityr-   r'   rJ   ri   r7   r~   r;   rk   r"   r!   <module>r      s    	 
   = A = 4 / 04' !)<,3(7 7*D1,
 6 ; S: S:l ./
/ 0
/25@I	  .  F#)#8L##o  0
.
//0s   C' 'C5