o
    iy	                     @   s   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ZdgZee Zd	d
 Zdedeeeeef  defddZdejfddZdS )    )Optional)Union)net)valkey)core)stringify_cache_args)GETGETDELGETEXGETRANGEGETSETLINDEXLRANGERPOPLPOPHGETHGETALLHKEYSHMGET
HRANDFIELDHVALSMGETc              
   C   sh   z(t j| d t j| d t j| d tj| dpdi}| d}|r&||tj< |W S  ty3   i  Y S w )z.Transform valkey conn info into dogtrace metashostportdbr   client_name)	r   TARGET_HOSTTARGET_PORTSERVER_ADDRESSvalkeyxDBgetCLIENT_NAME	Exception)conn_kwargs	conn_tagsr    r&   Y/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/valkey_utils.py_extract_conn_tags   s   




r(   valkey_commandresultreturnc                    sl   dg i d g | vr4| dkr fdd|D }t |S | dkr2 fdd|D }t |dkr0dS dS dS dS )	N    r   c                       g | ]}| vr|qS r&   r&   .0xempty_resultsr&   r'   
<listcomp>6       z'determine_row_count.<locals>.<listcomp>r   c                    r-   r&   r&   r.   r1   r&   r'   r3   :   r4   r      )lenr)   r*   r&   r1   r'   determine_row_count0   s   r8   ctxc                    s   t |}|dd }d }d }z1z&||i |I d H }|W W |d u r)t||d}|tvr/d }td| |g S  tyA   d} w |d u rLt||d}|tvrRd }td| |g w )N r   r7   zvalkey.async_command.post)r   splitr8   ROW_RETURNING_COMMANDSr   dispatchBaseException)r9   funcargskwargsparsed_commandr)   rowcountr*   r&   r&   r'   _run_valkey_command_asyncB   s,   rD   N)typingr   r   ddtrace.extr   r   r   ddtrace.internalr   ddtrace.internal.utils.formatsr   SINGLE_KEY_COMMANDSMULTI_KEY_COMMANDSr<   r(   strlistdictintr8   ExecutionContextrD   r&   r&   r&   r'   <module>   s    $