o
    i                     @   s2  d 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 ejj j!Z"e#ddedi de$fddZ%de&e$e$f fddZ'dd Z(dd Z)dd Z*dS ) z:
Trace queries to botocore api done via a pynamodb client
    N)config)Pin)_SPAN_MEASURED_KEY)	SPAN_KIND)trace_utils)unwrap)SpanKind)	SpanTypes)db)	COMPONENT)schematize_cloud_api_operation)schematize_service_name)ArgumentError)get_argument_value)deep_getattr)tracerpynamodb_default_servicereturnc                   C   s   t tddS )N__version__ )getattrr    r   r   [/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/pynamodb/patch.pyget_version%   s   r   c                   C   s   ddiS )Nr   z>=5.5.1r   r   r   r   r   _supported_versions)   s   r   c                   C   sF   t tjjddr
d S dtjj_tddt td d	tjjj
 d S )N_datadog_patchFTzpynamodb.connection.basezConnection._make_api_call)service)r   r   
connectionbaser   wraptwrap_function_wrapperpatched_api_callr   onto
Connectionr   r   r   r   patch-   s
   
r%   c                   C   s2   t tjjddrdtjj_ttjjjd d S d S )Nr   F_make_api_call)r   r   r   r   r   r   r$   r   r   r   r   unpatch6   s   
r'   c              	   C   sZ  t |}|r| s| |i |S tjtddddt|tj	dt
jd}}|ttj	j |tjd |ttj |td z0t||dd	}||_|d rrd
|d v rr|d d
 }|d| |d| |jd | |_W n ty   d|_d }Y nw t|d}d|||d}	||	 | |i |}
|
W  d    S 1 sw   Y  d S )Nzpynamodb.commandawsdynamodb)cloud_providercloud_servicer   )r   	span_type   r   operation_name	TableName
table_name	tablename Unknownzclient.meta.region_name)z	aws.agentzaws.operationz
aws.regionregion)r   get_fromenabledr   tracer   r   ext_servicer   r   r	   HTTP_set_tag_strr   integration_namer
   SYSTEMr   r   CLIENT
set_metricr   r   resourcer   r   set_tags)original_funcinstanceargskwargspinspan	operationr0   region_namemetaresultr   r   r   r"   <   sH   


$r"   )+__doc__pynamodb.connection.baser   r    ddtracer   ddtrace._trace.pinr   ddtrace.constantsr   r   ddtrace.contribr   $ddtrace.contrib.internal.trace_utilsr   ddtrace.extr   r	   r
   ddtrace.internal.constantsr   ddtrace.internal.schemar   r   ddtrace.internal.utilsr   r   ddtrace.internal.utils.formatsr   ddtrace.tracer   r   r   r$   _PynamoDB_client_addstrr   dictr   r%   r'   r"   r   r   r   r   <module>   s<    
	