o
    i                     @   s*  d dl 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 edeedee deee ddd 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d  Z!d!d" Z"dS )#    N)config)Pin)_instrument_redis_cmd)"_instrument_redis_execute_pipeline)_run_redis_command_async)schematize_service_name)DDTraceDeprecationWarning)CMD_MAX_LEN)asbool)stringify_cache_args)unwrap)	deprecateyaaredisredisDD_YAAREDIS_CMD_MAX_LENGTHDD_REDIS_RESOURCE_ONLY_COMMANDT)_default_servicecmd_max_lengthresource_only_commandreturnc                   C   s   t tddS )N__version__ )getattrr    r   r   [/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/yaaredis/patch.pyget_version   s   r   c                   C   s   ddiS )Nr   z>=2.0.0r   r   r   r   r   _supported_versions"   s   r   c                  C   sn   t ddtdd ttddrdS dt_tj} | d	d
t | d	dt | ddt	 | ddt t
 tj dS )zPatch the instrumented methodsz"The yaaredis module is deprecated.z6The yaaredis module is deprecated and will be deleted.z3.0.0)prefixmessagecategoryremoval_version_datadog_patchFNTzyaaredis.clientzStrictRedis.execute_commandzStrictRedis.pipelinezyaaredis.pipelinezStrictPipeline.executez(StrictPipeline.immediate_execute_command)r   r   r   r   r!   wraptwrap_function_wrappertraced_execute_commandtraced_pipelinetraced_execute_pipeliner   ontoStrictRedis)_wr   r   r   patch&   s   r*   c                   C   sR   t tddr'dt_ttjjd ttjjd ttjjd ttjjd d S d S )Nr!   Fexecute_commandpipelineexecuteimmediate_execute_command)r   r   r!   r   clientr(   r,   StrictPipeliner   r   r   r   unpatch<   s   r1   c                    sv   t |}|r| s| |i |I d H S t|tj||}t|| ||dI d H W  d    S 1 s4w   Y  d S )N)ctxfuncargskwargs)r   get_fromenabledr   r   r   r   )r3   instancer4   r5   pinr2   r   r   r   r$   F   s   
$r$   c                    s2   | |i |I d H }t |}|r|| |S )N)r   r6   r'   )r3   r8   r4   r5   r,   r9   r   r   r   r%   O   s   

r%   c                    s   t |}|r| s| |i |I d H S dd |jD }t|tj|| | |i |I d H W  d    S 1 s;w   Y  d S )Nc                 S   s    g | ]\}}t |tjjd qS ))cmd_max_len)r   r   r   r   ).0c_r   r   r   
<listcomp>\   s     z+traced_execute_pipeline.<locals>.<listcomp>)r   r6   r7   command_stackr   r   r   )r3   r8   r4   r5   r9   cmdsr   r   r   r&   W   s   
$r&   )#osr"   r   ddtracer   ddtrace._trace.pinr   $ddtrace.contrib.internal.redis_utilsr   r   r   ddtrace.internal.schemar   #ddtrace.internal.utils.deprecationsr   ddtrace.internal.utils.formatsr	   r
   r   ddtrace.internal.utils.wrappersr   ddtrace.vendor.debtcollectorr   _adddictintgetenvstrr   r   r*   r1   r$   r%   r&   r   r   r   r   <module>   s<    

	