o
    Zh                     @   s  d dl mZ d dlmZ d dl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 erRd 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"yw   e	dw G dd deZ#dd Z$dd Z%dd Z&dS )    )absolute_import)Hub)OPSPANDATA)IntegrationDidNotEnable)Span)partial)TYPE_CHECKING)capture_internal_exceptions	parse_urlparse_version)Any)Dict)Optional)Type)__version__)
BaseClient)StreamingBody)
AWSRequestzbotocore is not installedc                   @   s   e Zd ZdZedd ZdS )Boto3IntegrationZboto3c                     sJ   t t} | d u rtdt| dk rtdtj  fdd}|t_d S )NzUnparsable botocore version: {})      z#Botocore 1.12 or newer is required.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)
metaZservice_modelr   Z	hyphenizeeventsregisterr	   _sentry_request_created_sentry_after_call_sentry_after_call_error)selfargskwargsr   r   Z	orig_init T/var/www/html/lang_env/lib/python3.10/site-packages/sentry_sdk/integrations/boto3.pysentry_patched_init.   s   
z8Boto3Integration.setup_once.<locals>.sentry_patched_init)r   BOTOCORE_VERSIONr   formatr   __init__)versionr&   r$   r#   r%   
setup_once   s   
zBoto3Integration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr+   r$   r$   r$   r%   r      s    r   c                 K   s   t j}|td u rd S d| |f }|j|tj|d}t & t|j	dd}|
d|j	 |
tj|j |
tj|j W d    n1 sGw   Y  |d|  |d| |
tj|j |  ||jd< d S )	Nz	aws.%s.%s)hubopdescriptionF)sanitizezaws.request.urlzaws.service_idzaws.operation_name_sentrysdk_span)r   currentZget_integrationr   Z
start_spanr   ZHTTP_CLIENTr   r   urlset_datar   Z
HTTP_QUERYqueryZHTTP_FRAGMENTfragmentZset_tagZHTTP_METHODmethod	__enter__context)r   requestZoperation_namer"   r1   r3   span
parsed_urlr$   r$   r%   r   =   s(   r   c                    s   |  dd }|d u rd S |d d d  |d}t|tsd S |jtj|jd|j	|j
 fdd}||_	 fdd}||_
d S )Nr5   ZBody)r2   r3   c                     s:   z | i |}|s   |W S  ty       w N)finish	Exception)r!   r"   ret)	orig_readstreaming_spanr$   r%   sentry_streaming_body_readr   s   z6_sentry_after_call.<locals>.sentry_streaming_body_readc                     s       | i | d S rA   )rB   )r!   r"   )
orig_closerF   r$   r%   sentry_streaming_body_close   s   z7_sentry_after_call.<locals>.sentry_streaming_body_close)pop__exit__get
isinstancer   Zstart_childr   ZHTTP_CLIENT_STREAMr3   readclose)r=   parsedr"   r?   bodyrG   rI   r$   )rH   rE   rF   r%   r   ]   s"   


r   c                 K   s.   |  dd }|d u rd S |t||d  d S )Nr5   )rJ   rK   type)r=   	exceptionr"   r?   r$   r$   r%   r      s   r   N)'
__future__r   Z
sentry_sdkr   Zsentry_sdk.constsr   r   Zsentry_sdk.integrationsr   r   Zsentry_sdk.tracingr   Zsentry_sdk._functoolsr	   Zsentry_sdk._typesr
   Zsentry_sdk.utilsr   r   r   typingr   r   r   r   Zbotocorer   r'   Zbotocore.clientr   Zbotocore.responser   Zbotocore.awsrequestr   ImportErrorr   r   r   r   r$   r$   r$   r%   <module>   s2    " *