a
    xd|                     @   s   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ erTd dlmZ eg dZeg dZd	d
 ZG dd deZdd ZdS )    )absolute_import)Hub)capture_internal_exceptionslogger)IntegrationDidNotEnable)MYPY)Any)
ZdecrZdecrbygetincrZincrbyZpttlsetsetexZsetnxZttl)deltouchunlinkc                  C   s`   zdd l } W n ty    Y d S 0 t| j t| d| j}d|  k rNdk r\n n
t| j d S )Nr   VERSION)r      r   )r   r   r   )redisclusterImportErrorpatch_redis_clientZRedisClustergetattr__version__ZStrictRedisCluster)r   version r   U/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/redis.py_patch_rediscluster   s    
r   c                   @   s   e Zd ZdZedd ZdS )RedisIntegrationredisc                  C   s   zdd l } W n ty&   tdY n0 t| j zdd l}W n tyP   Y n&0 t|jj t|jj t|jj	 z
t
  W n ty   td Y n0 d S )Nr   zRedis client not installedz4Error occurred while patching `rediscluster` library)r   r   r   r   ZStrictRedisZ
rb.clientsZclientsZFanoutClientZMappingClientZRoutingClientr   	Exceptionr   	exception)r   rbr   r   r   
setup_once(   s     

zRedisIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr!   r   r   r   r   r   %   s   r   c                    s   | j   fdd}|| _ dS )z`
    This function can be used to instrument custom redis client classes or
    subclasses.
    c                    s*  t j}|td u r, | |g|R i |S |}t L |g}t|D ]"\}}|dkrZ qj|t| qFd|}W d    n1 s0    Y  |j	d|dt}	|r|	
d| |r|r| }
|
tv s|
tv rt|dkr|	
d|d   | |g|R i |W  d    S 1 s0    Y  d S )	N
    r   )opdescriptionzredis.command   z	redis.keyr   )r   currentZget_integrationr   r   	enumerateappendreprjoinZ
start_spanZset_taglower_SINGLE_KEY_COMMANDS_MULTI_KEY_COMMANDSlen)selfnameargskwargsZhubr*   Zdescription_partsiargspanZname_lowZold_execute_commandr   r   sentry_patched_execute_commandJ   s.    (
z:patch_redis_client.<locals>.sentry_patched_execute_commandN)Zexecute_command)clsr=   r   r<   r   r   A   s     r   N)
__future__r   Z
sentry_sdkr   Zsentry_sdk.utilsr   r   Zsentry_sdk.integrationsr   r   Zsentry_sdk._typesr   typingr	   	frozensetr2   r3   r   r   r   r   r   r   r   <module>   s   