o
    i                     @   s  d dl 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	 d dl
mZmZ d dlmZ d dlmZ erFd d	lmZmZmZ d d
lmZ z
d dlmZmZ W n ey[   edw zd dlZW n eym   edw dZG dd deZdddeddddfddZdddZdS )    N)deepcopy)wraps)DidNotEnable)should_send_default_pii)SOURCE_FOR_STYLETransactionSource)transaction_from_function)TYPE_CHECKING)AnyCallableDict)Event)StarletteIntegrationStarletteRequestExtractorzStarlette is not installedzFastAPI is not installedzgeneric FastAPI requestc                   @   s   e Zd ZdZedddZdS )FastApiIntegrationfastapireturnNc                   C   s
   t   d S N)patch_get_request_handler r   r   \/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/integrations/fastapi.py
setup_once%   s   
zFastApiIntegration.setup_oncer   N)__name__
__module____qualname__
identifierstaticmethodr   r   r   r   r   r   "   s    r   scopezsentry_sdk.Scopetransaction_stylerequestr
   r   c                 C   s   d}|dkr|j d}|rt|pd}n|dkr-|j d}|r-t|dd }|d ur-|}|s5t}tj}nt| }| j||d d S )N endpointurlroutepath)source)	r   getr   getattr_DEFAULT_TRANSACTION_NAMEr   ROUTEr   set_transaction_name)r   r   r    namer"   r$   r%   r&   r   r   r    _set_transaction_name_and_source*   s"   r-   c                     s"   t jj d fdd} | t j_d S )Nargsr
   kwargsr   c                     sf   | d}|r#|jd ur#t|js#|jtd
fdd}||_| i | d
 fdd	}|S )N	dependantr.   r
   r/   r   c                     sF   t  }|jd ur|j  t  }|jd ur|j   | i |S r   )
sentry_sdkget_current_scopetransactionupdate_active_threadget_isolation_scopeprofileupdate_active_thread_id)r.   r/   current_scopesentry_scope)old_callr   r   _sentry_callP   s   



zTpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_callc                     s   t  t}|d u r| i |I d H S | d }tt  |j| t  }t|}|	 I d H  						d	 fdd}tj
|_|||| | i |I d H S )
Nr   reqr
   integrationr   (Callable[[Event, Dict[str, Any]], Event]c                    s   d fdd}|S )	Neventr   hintDict[str, Any]r   c                    sN   |  di } rd v rt r d |d< d v r d |d< t|| d< | S )Nr    cookiesdata)r'   r   r   )r?   r@   request_infoinfor   r   event_processorq   s   zpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_app.<locals>._make_request_event_processor.<locals>.event_processor)r?   r   r@   rA   r   r   r   )r<   r=   rG   rE   r   r   _make_request_event_processorn   s   zzpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_app.<locals>._make_request_event_processor)r<   r
   r=   r
   r   r>   )r1   
get_clientget_integrationr   r-   r2   r   r5   r   extract_request_infor   _nameadd_event_processor)r.   r/   r=   r    r9   	extractorrH   )old_apprE   r   _sentry_app`   s.   zSpatch_get_request_handler.<locals>._sentry_get_request_handler.<locals>._sentry_appr.   r
   r/   r
   r   r
   )r'   callasyncioiscoroutinefunctionr   )r.   r/   r0   r;   rP   old_get_request_handler)rO   r:   r   _sentry_get_request_handlerG   s   


&z>patch_get_request_handler.<locals>._sentry_get_request_handlerrQ   )r   routingget_request_handler)rW   r   rU   r   r   D   s   Ar   r   ) rS   copyr   	functoolsr   r1   sentry_sdk.integrationsr   sentry_sdk.scoper   sentry_sdk.tracingr   r   sentry_sdk.utilsr   typingr	   r
   r   r   sentry_sdk._typesr   !sentry_sdk.integrations.starletter   r   r   ImportErrorr)   r   strr-   r   r   r   r   r   <module>   sD    
