o
    i                     @   sV  d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZmZmZ d dlmZ erNd dlmZ d d	lmZ d d
lmZ d dlmZ zd dlmZ d dlmZ d dlmZ d dlmZ W n e ys   e	dw G dd deZ!ee!de"ddde"ddddf
ddZ#								d%dd Z$			!	"				d&d#d$Z%dS )'    )partialN)OPSPANDATA)_check_minimum_versionIntegrationDidNotEnable)Span)capture_internal_exceptionsensure_integration_enabled	parse_urlparse_version)TYPE_CHECKING)Any)Dict)Optional)Type)__version__)
BaseClient)StreamingBody)
AWSRequestzbotocore is not installedc                   @   s(   e Zd ZdZde ZedddZdS )Boto3Integrationboto3z
auto.http.returnNc                     sB   t t} tt| d tj 								 d
 fdd	}|t_d S )NbotocoreselfType[BaseClient]argsr   kwargsr   c                    s^    | g|R i | | j }|jj }|jdtt|d |jdt |jdt	 d S )Nzrequest-created)
service_idz
after-callzafter-call-error)
metaservice_modelr   	hyphenizeeventsregisterr   _sentry_request_created_sentry_after_call_sentry_after_call_error)r   r   r   r   r   	orig_init Z/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/integrations/boto3.pysentry_patched_init*   s   
z8Boto3Integration.setup_once.<locals>.sentry_patched_init)r   r   r   r   r   r   r   N)r   BOTOCORE_VERSIONr   r   r   __init__)versionr+   r)   r'   r*   
setup_once#   s   
zBoto3Integration.setup_once)r   N)__name__
__module____qualname__
identifieroriginstaticmethodr/   r)   r)   r)   r*   r      s
    
r   r   requestr   operation_namer   r   r   c                 K   s   d| |f }t jtj|tjd}t & t|jdd}|	d|j |	t
j|j |	t
j|j W d    n1 s<w   Y  |d|  |d| |	t
j|j |  ||jd< d S )	Nz	aws.%s.%sopnamer4   F)sanitizezaws.request.urlzaws.service_idzaws.operation_name_sentrysdk_span)
sentry_sdk
start_spanr   HTTP_CLIENTr   r4   r	   r   urlset_datar   
HTTP_QUERYqueryHTTP_FRAGMENTfragmentset_tagHTTP_METHODmethod	__enter__context)r   r6   r7   r   descriptionspan
parsed_urlr)   r)   r*   r$   :   s"   r$   rJ   Dict[str, Any]parsedc                    s   |  dd }|d u rd S |d d d  |d}t|tsd S |jtj|jt	j
d|j|j dddddtffdd	}||_d fd
d}||_d S )Nr<   Bodyr8   r   r   r   r   c                     s:   z | i |}|s   |W S  ty       w N)finish	Exception)r   r   ret)	orig_readstreaming_spanr)   r*   sentry_streaming_body_reado   s   z6_sentry_after_call.<locals>.sentry_streaming_body_readc                     s       | i | d S rQ   )rR   )r   r   )
orig_closerV   r)   r*   sentry_streaming_body_close{   s   z7_sentry_after_call.<locals>.sentry_streaming_body_close)r   r   r   r   r   N)pop__exit__get
isinstancer   start_childr   HTTP_CLIENT_STREAMrK   r   r4   readclosebytes)rJ   rO   r   rL   bodyrW   rY   r)   )rX   rU   rV   r*   r%   X   s$   



r%   	exceptionType[BaseException]c                 K   s.   |  dd }|d u rd S |t||d  d S )Nr<   )rZ   r[   type)rJ   rd   r   rL   r)   r)   r*   r&      s   r&   )rJ   rN   rO   rN   r   r   r   N)rJ   rN   rd   re   r   r   r   N)&	functoolsr   r=   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   r   sentry_sdk.tracingr   sentry_sdk.utilsr	   r
   r   r   typingr   r   r   r   r   r   r   r,   botocore.clientr   botocore.responser   botocore.awsrequestr   ImportErrorr   strr$   r%   r&   r)   r)   r)   r*   <module>   sf    
*