a
    xd1                     @   s   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
 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 z4d dlmZ d dlmZ d dlmZ d dlmZ W n ey   edY n0 G dd deZdd Zdd Zdd ZdS )    )absolute_import)Hub)IntegrationDidNotEnable)Span)partial)MYPY)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               	      sr   z t tttdd d } W n$ ttfyD   tdtY n0 | dk rVtdt	j
  fdd}|t	_
d S )N.   z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 U/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/boto3.pysentry_patched_init)   s    
z8Boto3Integration.setup_once.<locals>.sentry_patched_init)tuplemapintBOTOCORE_VERSIONsplit
ValueError	TypeErrorr   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   sp   t j}|td u rd S d| |f }|j|d|d}|d|  |d| |d|j |  ||j	d< d S )Nz	aws.%s.%szaws.request)hubopdescriptionzaws.service_idzaws.operation_namezaws.request.url_sentrysdk_span)
r   currentZget_integrationr   Z
start_spanZset_tagset_dataurl	__enter__context)r   requestZoperation_namer   r4   r6   spanr!   r!   r"   r   8   s    r   c                    s   |  dd }|d u rd S |d d d  |d}t|ts>d S |jd|jd|j|j fdd}||_ fdd}||_d S )	Nr7   ZBodyzaws.request.stream)r5   r6   c                     sB   z  | i |}|s   |W S  ty<       Y n0 d S N)finish	Exception)r   r   ret)	orig_readstreaming_spanr!   r"   sentry_streaming_body_readf   s    z6_sentry_after_call.<locals>.sentry_streaming_body_readc                     s       | i | d S r?   )r@   )r   r   )
orig_closerD   r!   r"   sentry_streaming_body_closes   s    z7_sentry_after_call.<locals>.sentry_streaming_body_close)	pop__exit__get
isinstancer   Zstart_childr6   readclose)r<   parsedr   r>   bodyrE   rG   r!   )rF   rC   rD   r"   r   Q   s"    

r   c                 K   s.   |  dd }|d u rd S |t||d  d S )Nr7   )rH   rI   type)r<   	exceptionr   r>   r!   r!   r"   r   {   s    r   N) 
__future__r   Z
sentry_sdkr   Zsentry_sdk.integrationsr   r   Zsentry_sdk.tracingr   Zsentry_sdk._functoolsr   Zsentry_sdk._typesr   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>   s*   *