
    \j                     l   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r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  G d de      Z! ee!      de"ddde"ddddf
d       Z#	 	 	 	 	 	 	 	 ddZ$	 	 	 	 	 	 	 	 ddZ%y# e $ r	  e	d      w xY w)    )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                   ,    e Zd ZdZde Zedd       Zy)Boto3Integrationboto3z
auto.http.Nc                      t        t              } t        t        | d       t        j
                  	 	 	 	 	 	 	 	 dfd}|t        _        y )Nbotocorec                 T    | g|i | | j                   }|j                  j                  j                         }|j                  j                  dt        t        |             |j                  j                  dt               |j                  j                  dt               y )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)selfargskwargsr   r   	orig_inits        G/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/boto3.pysentry_patched_initz8Boto3Integration.setup_once.<locals>.sentry_patched_init*   s     d,T,V,99D++66@@BJKK  !/JG KK  /ABKK  !35MN    )r&   zType[BaseClient]r'   r   r(   r   returnN)r   BOTOCORE_VERSIONr   r   r   __init__)versionr+   r)   s     @r*   
setup_oncezBoto3Integration.setup_once#   sZ     01/*E''		O$	O-2	O>C	O	O 2
r,   )r-   N)__name__
__module____qualname__
identifieroriginstaticmethodr1    r,   r*   r   r      s%    J*&F2 2r,   r   r   requestr   operation_namer(   r   r-   c                    d| d|}t        j                  t        j                  |t        j
                        }t               5  t        |j                  d      }|j                  d|j                         |j                  t        j                  |j                         |j                  t        j                  |j                         d d d        |j                  d|        |j                  d|       |j                  t        j                   |j"                         |j%                          ||j&                  d	<   y # 1 sw Y   wxY w)
Nzaws..opnamer6   F)sanitizezaws.request.urlzaws.service_idzaws.operation_name_sentrysdk_span)
sentry_sdk
start_spanr   HTTP_CLIENTr   r6   r
   r   urlset_datar   
HTTP_QUERYqueryHTTP_FRAGMENTfragmentset_tagHTTP_METHODmethod	__enter__context)r   r9   r:   r(   descriptionspan
parsed_urls          r*   r#   r#   :   s     ",^<K  >>&&D 
%	& Cw{{U;
'8h)):+;+;<h,,j.A.AB	C 	LL!:.LL%~6MM(&&7 	NN *.GOO%&!C Cs   BEEc                   	 | j                  dd       }|y |j                  d d d        |j                  d      }t        |t              sy |j                  t        j                  |j                  t        j                        	|j                  |j                  dddddt        f	fd}||_        d
	fd	}||_        y )NrA   Bodyr=   r'   r   r(   r-   c                  z    	  | i |}|sj                          |S # t        $ r j                           w xY wN)finish	Exception)r'   r(   ret	orig_readstreaming_spans      r*   sentry_streaming_body_readz6_sentry_after_call.<locals>.sentry_streaming_body_reado   sI    	T,V,C%%'J 	!!#	s    :c                  6    j                           | i | y rV   )rW   )r'   r(   
orig_closer[   s     r*   sentry_streaming_body_closez7_sentry_after_call.<locals>.sentry_streaming_body_close{   s    D#F#r,   )r'   r   r(   r   r-   N)pop__exit__get
isinstancer   start_childr   HTTP_CLIENT_STREAMrP   r   r6   readclosebytes)
rO   parsedr(   rQ   bodyr\   r_   r^   rZ   r[   s
          @@@r*   r$   r$   X   s     %[[):DAD |MM$d#::fDdM*%%  && & N 		IJ% 5 U  +DI$ -DJr,   c                 f    | j                  dd       }|y |j                  t        |      |d        y )NrA   )r`   ra   type)rO   	exceptionr(   rQ   s       r*   r%   r%      s3     %[[):DAD |MM$y/9d3r,   )rO   Dict[str, Any]ri   rn   r(   r   r-   N)rO   rn   rm   zType[BaseException]r(   r   r-   N)&	functoolsr   rB   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%   r8   r,   r*   <module>rz      s      * U U #  !48*/.
2{ 26 ,-..*.<?.KP.	. ..:'-'-'7'-CH'-	'-T44*?4KP4	4O  4
2
334s   B% %B3