o
    i                     @   s  d 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Z	ddee dee defddZedd Z edddZ!edd Z"dS )z4
Some utils used by the dogtrace valkey integration
    )contextmanager)Optional)_SPAN_MEASURED_KEY)	SPAN_KIND)trace_utils)_extract_conn_tags)SpanKind)	SpanTypes)db)valkey)core)	COMPONENT)schematize_cache_operation)stringify_cache_args)tracerFargsquery
is_clusterc           	      C   s   |  ttj |  t|j |  tjtj	 | 
td |d ur.ttjtj	d}|  || |jr7| |j |sGt|drG| t|jj |d urV| 
tjt| d S dD ]}t||rk| 
tjtt|| qXd S )N   cache_providerconnection_pool)command_stack_command_stack)_set_tag_strr   r   CLIENTr   integration_namer
   SYSTEMvalkeyxAPP
set_metricr   r   RAWCMDtagsset_tagshasattrr   r   connection_kwargsARGS_LENlenPIPELINE_LENgetattr)	spanpinconfig_integrationr   instancer   r   	span_nameattr r0   O/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/_trace/utils_valkey.py_set_span_tags   s$   
r2   c              	   c   s    t ||jd}tjdttjtjd| t	| |t
j|jr$|dd n|d0}|j}t|| |||| |V  W d    n1 sCw   Y  W d    d S W d    d S 1 s[w   Y  d S )N)cmd_max_lenzvalkey.commandr    r   )r.   r+   service	span_typeresource)r   cmd_max_lengthr   context_with_datar   r   CMDr   r   ext_servicer	   VALKEYresource_only_commandsplitr*   r2   )r+   r,   r-   r   r   ctxr*   r0   r0   r1   _instrument_valkey_cmd2   s$   
	Pr@   c                 c   s    d | }}|jrd dd |D }tjttjtjd|t	| |t
jd}t|| |d || |V  W d    d S 1 sAw   Y  d S )N
c                 S      g | ]	}| d d qS r4   r   r>   .0cmdr0   r0   r1   
<listcomp>H       z7_instrument_valkey_execute_pipeline.<locals>.<listcomp>r   r7   r5   r6   joinr=   r   tracer   r   r:   r   r   r;   r	   r<   r2   )r+   r,   cmdsr-   r   
cmd_stringr7   r*   r0   r0   r1   #_instrument_valkey_execute_pipelineD      
"rP   c                 c   s    d | }}|jrd dd |D }tjttjtjd|t	| |t
jd}t|| |d || |V  W d    d S 1 sAw   Y  d S )NrA   c                 S   rB   rC   rD   rE   r0   r0   r1   rH   X   rI   zE_instrument_valkey_execute_async_cluster_pipeline.<locals>.<listcomp>r   rJ   rK   )r+   r,   rN   r-   rO   r7   r*   r0   r0   r1   1_instrument_valkey_execute_async_cluster_pipelineT   rQ   rR   N)F)#__doc__
contextlibr   typingr   ddtrace.constantsr   r   ddtrace.contribr   %ddtrace.contrib.internal.valkey_utilsr   ddtrace.extr   r	   r
   r   r   ddtrace.internalr   ddtrace.internal.constantsr   ddtrace.internal.schemar   ddtrace.internal.utils.formatsr   ddtrace.tracer   format_command_argslistboolr2   r@   rP   rR   r0   r0   r0   r1   <module>   s>    

