o
    0 i                     @   s  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 zd dlmZ d d	lmZ W n eyY   ed
w d dlmZ erd 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rdd Z,nd dl-m,Z, dZ.G dd deZ/ee/dd Z0dd Z1G d d! d!e	Z2d"d# Z3dS )$    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_useridc                 C   s   | j S Nr   )request r   k/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/pyramid.pyr   +   s   r   
route_nameZroute_patternc                   @   s4   e Zd ZdZde ZdZd
ddZedd Zd	S )PyramidIntegrationpyramidz
auto.http. r!   c                 C   s"   |t vrtd|t f || _d S )Nz7Invalid value for transaction_style: %s (must be in %s))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style)selfr'   r   r   r   __init__=   s   
zPyramidIntegration.__init__c                     sz   ddl m}  | j t  fdd}|| _ttdr(tjfdd}|t_| jj	t
tfdd	}|| j_	d S )
Nr   )routerc                    sv   t  t}|d u r | |g|R i |S tt  |j| t  }|t	t
||  | |g|R i |S r   )
sentry_sdk
get_clientget_integrationr"    _set_transaction_name_and_sourceZget_current_scoper'   Zget_isolation_scopeZadd_event_processor_make_event_processorweakrefref)registryr   argskwargsintegrationscope)old_call_viewr   r   sentry_patched_call_viewM   s   z?PyramidIntegration.setup_once.<locals>.sentry_patched_call_viewinvoke_exception_viewc                    sP    | g|R i |}| j r&t| j r&|jdkr&t td ur&t| j  |S )Ni  )exc_infoallZ
status_intr+   r,   r-   r"   _capture_exception)r(   r3   r4   rv)old_invoke_exception_viewr   r   $sentry_patched_invoke_exception_viewc   s   

zKPyramidIntegration.setup_once.<locals>.sentry_patched_invoke_exception_viewc                    s&    fdd}t |tjd}|||S )Nc                    s<   z | |W S  t y   t }t| t|  Y d S w r   )	Exceptionsysr:   r<   r   )environstart_responseZeinfo)old_wsgi_callr(   r   r   sentry_patched_inner_wsgi_cally   s   zgPyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call.<locals>.sentry_patched_inner_wsgi_call)Zspan_origin)r   r"   origin)r(   rB   rC   rE   Z
middleware)rD   r(   r   sentry_patched_wsgi_callv   s   	
z?PyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call)r#   r*   Z
_call_view	functoolswrapshasattrr   r9   ZRouter__call__r	   r"   )r*   r8   r?   rH   r   )r7   r>   rD   r   
setup_onceF   s   
zPyramidIntegration.setup_onceN)r!   )	__name__
__module____qualname__
identifierrF   r'   r)   staticmethodrM   r   r   r   r   r"   7   s    

	r"   c                 C   sN   | d d u st | d trd S t| t jdddd\}}tj||d d S )Nr   r#   F)typeZhandled)Zclient_optionsZ	mechanism)hint)
issubclassr   r
   r+   r,   optionsZcapture_event)r:   eventrT   r   r   r   r<      s   
r<   c                 C   sD   z|j j|j jd}| j|| t| d W d S  ty!   Y d S w )Nr    )source)Zmatched_routenamepatternZset_transaction_namer   r@   )r6   r'   r   Zname_for_styler   r   r   r.      s   r.   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )PyramidRequestExtractorc                 C      | j jS r   )r   path_urlrG   r   r   r   url      zPyramidRequestExtractor.urlc                 C   r\   r   )r   rB   rG   r   r   r   env   r_   zPyramidRequestExtractor.envc                 C   r\   r   )r   cookiesrG   r   r   r   ra      r_   zPyramidRequestExtractor.cookiesc                 C   r\   r   )r   textrG   r   r   r   raw_data   r_   z PyramidRequestExtractor.raw_datac                 C      dd | j j D S )Nc                 S   s"   i | ]\}}t |d ds||qS filenameNgetattr.0keyvaluer   r   r   
<dictcomp>       
z0PyramidRequestExtractor.form.<locals>.<dictcomp>r   POSTitemsrG   r   r   r   form      
zPyramidRequestExtractor.formc                 C   rd   )Nc                 S   s"   i | ]\}}t |d dr||qS re   rg   ri   r   r   r   rm      rn   z1PyramidRequestExtractor.files.<locals>.<dictcomp>ro   rG   r   r   r   files   rs   zPyramidRequestExtractor.filesc                 C   s.   |j }z	t| jW S  ty   Y dS w )Nr   )fileosfstatfilenost_sizer@   )r(   Zpostdataru   r   r   r   size_of_file   s   z$PyramidRequestExtractor.size_of_fileN)
rN   rO   rP   r^   r`   ra   rc   rr   rt   rz   r   r   r   r   r[      s    r[   c                    s    fdd}|S )Nc                    s     }|d u r	| S t   t||  W d    n1 sw   Y  t rHt   | di }|dt| W d    | S 1 sCw   Y  | S )Nuserid)r   r[   Zextract_into_eventr   
setdefaultr   )rW   rT   r   Z	user_infoweak_requestr   r   pyramid_event_processor   s   
z6_make_event_processor.<locals>.pyramid_event_processorr   )r   r5   r   r   r~   r   r/      s   r/   )4rI   rv   rA   r0   r+   Zsentry_sdk.integrationsr   r   Z$sentry_sdk.integrations._wsgi_commonr   Zsentry_sdk.integrations.wsgir   Zsentry_sdk.scoper   Zsentry_sdk.tracingr   Zsentry_sdk.utilsr   r	   r
   r   Zpyramid.httpexceptionsr   Zpyramid.requestr   ImportErrortypingr   Zpyramid.responser   r   r   r   r   r   Zwebob.cookiesr   Zwebob.requestr   r   Zsentry_sdk._typesr   r   rh   r   Zpyramid.securityr%   r"   r<   r.   r[   r/   r   r   r   r   <module>   sN    
T
*