o
    i                  	   @   s  d dl Z d dlZd dlmZ d dlZd dl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 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 d dlm Z  d dl!m"Z" ej#j$Z%dZ&dZ'h dZ(h dZ)e*ddeej+dddi de,fddZ-de.e,e,f fd d!Z/d"d# Z0d$d% Z1d&d' Z2d(d) Z3d*d+ Z4dS ),    N__version__)config)Pin)_derive_peer_hostname)_SPAN_MEASURED_KEY)	SPAN_KIND)SpanKind)	SpanTypes)aws)http)	COMPONENT)schematize_cloud_api_operation)schematize_service_name)in_aws_lambda)get_argument_value)asbool)unwrap)tracer)operation_nameparamspathverb)methodr   headersdatahost	auth_pathsender>   r   r   r   >   r   r   r   bototag_no_paramsDD_AWS_TAG_NO_PARAMSF)defaultreturnc                   C   s   t S )Nr    r$   r$   W/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/boto/patch.pyget_version4   s   r&   c                   C   s   ddiS )Nr   *r$   r$   r$   r$   r%   _supported_versions8   s   r(   c                   C   sb   t tjddr	d S dtj_tddt tddt tdd	tjj
 tdd	tjj d S )	N_datadog_patchFTzboto.connectionzAWSQueryConnection.make_requestzAWSAuthConnection.make_requestr   )service)getattrr   
connectionr)   wraptwrap_function_wrapperpatched_query_requestpatched_auth_requestr   ontoAWSQueryConnectionAWSAuthConnectionr$   r$   r$   r%   patch<   s   r4   c                   C   s:   t tjddrdtj_ttjjd ttjjd d S d S )Nr)   Fmake_request)r+   r   r,   r)   r   r2   r3   r$   r$   r$   r%   unpatchJ   s
   r6   c                 C   s  t |}|r| s| |i |S |jdd }tjtd|d|dt	d|j
|tjd}|ttjj |ttj |td d }|rrt||dd	}t||dd
}d|| f |_|rqtjd sqt||| n||_t|}	tjdtj|i}
|	r|	|
tj< |	|
tj < t!|	|
tj"< t# rt$||	|}|r||
d< |%|
 | |i |}|&t'j(|j) |t'j*|j+ |W  d    S 1 sw   Y  d S )N.r   
{}.commandr   cloud_providercloud_service{}.{}r*   	span_type   actionr   %s.%sr    r   peer.service),r   get_fromenabledr   splitr   tracer   formatr   r*   r
   HTTP_set_tag_strr   r   r   integration_namer   r	   CLIENT
set_metricr   r   lowerresourcer   _add_api_param_span_tags_get_instance_region_nameAGENT	OPERATIONREGION	AWSREGIONget_aws_partition	PARTITIONr   r   set_tagsset_tagr   STATUS_CODEstatusMETHOD_method)original_funcinstanceargskwargspinendpoint_namespanr   r   region_namemetahostnameresultr$   r$   r%   r/   R   sT   



$r/   c                 C   s  d }t  j}d }|r|jjdkr|jjj}n|j}|st|}|r'| s.| |i |S |j	dd }t
jtd|d|dtd|j|tjd}|td	 |rht||dd
}	d||	 f |_n||_t|}
tjdtj|i}|
r|
|tj< |
|tj< t|
|tj< t rt ||
d }|r||d< |!| | |i |}|"t#j$|j% |&t#j'|j( |&t)t*j+j, |&t-t.j/ |W  d    S 1 sw   Y  d S )Nr5   r7   r   r8   r   r9   r<   r=   r?   r   rA   r   rB   )0inspectcurrentframef_backf_codeco_namer   rC   rD   r   rE   r   rF   r   rG   r   r*   r
   rH   rL   r   r   rM   rN   rP   r   rQ   rR   rS   rT   rU   rV   r   r   rW   rX   r   rY   rZ   rI   r[   r\   r   r   r   rJ   r   r	   rK   )r]   r^   r_   r`   r   framera   rb   rc   http_methodrd   re   rf   rg   r$   r$   r%   r0      s\   
	




$r0   c                 C   s2   t | dd }|s
d S t|tr|dd S |jS )Nregion:r?   )r+   
isinstancestrrE   name)r^   ro   r$   r$   r%   rP      s   
rP   )5rh   osr   r   boto.connectionr-   ddtracer   ddtrace._trace.pinr   'ddtrace._trace.utils_botocore.span_tagsr   ddtrace.constantsr   r   ddtrace.extr	   r
   r   r   ddtrace.internal.constantsr   ddtrace.internal.schemar   r   ddtrace.internal.serverlessr   ddtrace.internal.utilsr   ddtrace.internal.utils.formatsr   ddtrace.internal.utils.wrappersr   ddtrace.tracer   r,   r2   _Boto_clientAWS_QUERY_ARGS_NAMEAWS_AUTH_ARGS_NAMEAWS_QUERY_TRACED_ARGSAWS_AUTH_TRACED_ARGS_addgetenvrr   r&   dictr(   r4   r6   r/   r0   rP   r$   r$   r$   r%   <module>   sN    	?I