
    lh                         d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ erd dlmZmZmZ d dlmZ d Zd	 Zd
 Zd Zd Zd Zd Zy)    )SPANDATA)"_COMMANDS_INCLUDING_SENSITIVE_DATA_MAX_NUM_ARGS_MAX_NUM_COMMANDS_MULTI_KEY_COMMANDS_SINGLE_KEY_COMMANDS)should_send_default_pii)SENSITIVE_DATA_SUBSTITUTE)TYPE_CHECKING)AnyOptionalSequence)Spanc                 ~   | g}t        |      D ]  \  }}|t        kD  r n| j                         }|t        v r|j	                  t
               ?|dk(  }|r|j	                  t        |             at               r|j	                  t        |             |j	                  t
                dj                  |      }|S )Nr    )		enumerater   lowerr   appendr
   reprr	   join)nameargscommand_partsiargname_lowarg_is_the_keycommands           u/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/redis/utils.py_get_safe_commandr       s    FMD/ @3}::<99  !:;a  c+ '($$T#Y/$$%>?%@( hh}%GN    c                 x    t        | t              r	 | j                         S t	        |       S # t        $ r Y yw xY w)N )
isinstancebytesdecodeUnicodeDecodeErrorstrkeys    r   _safe_decoder+   /   s<    #u	::< s8O " 		s   - 	99c                     t        | t        t        t        f      rdj	                  d | D              } | S t        | t
              rt        |       } | S | d} | S t        |       } | S )Nz, c              3   2   K   | ]  }t        |        y wN)r+   ).0xs     r   	<genexpr>z!_key_as_string.<locals>.<genexpr>=   s     5AQ5s   r#   )r$   dictlisttupler   r%   r+   r(   r)   s    r   _key_as_stringr5   :   sn    #dE*+ii555 J 
C	3 J 
 J #hJr!   c                 v   d}|#| j                         t        v rt        |      }|S |Dt        |      dk\  r6t	        |d   t
        t        t        f      rt        |d         }|S |d   f}|S |Id|v rEt	        |d   t        t        f      r!t        |d         dkD  rt        |d         }|S |d   |d   f}|S )z
    Gets the key (or keys) from the given method_name.
    The method_name could be a redis command or a django caching command
    N   r   r*   )r   r   r4   lenr$   r2   r3   )method_namer   kwargsr*   s       r   _get_safe_keyr;   H   s     CK--/3FFDk$ J! 
	c$i1nd1gdE23Q.C J 7*C J 
	fUmdE]36%=!A%F5M*
 J e}(e}&Jr!   c                     | j                   S r.   )r   )r   s    r   _parse_rediscluster_commandr=   g   s    <<r!   c           	         | j                  d|       | j                  d|       g }t        |      D ]9  \  }}|t        k\  r n+ ||      }|j                  t	        |d   |dd               ; | j                  dt        |      |d       y )Nredis.is_clusterzredis.transactionr   r7   zredis.commands)count	first_ten)set_tagr   r   r   r    set_datar8   )	span
is_clusterget_command_args_fnis_transactioncommands_seqcommandsr   r   r   s	            r   _set_pipeline_datarJ   l   s     	LL#Z0LL$n5HL) D3!!%c*)'!*gabkBCD 	MM&!	
r!   c                 &   | j                  d|       |r2| j                  d|       | j                  t        j                  |       |rI|rF|j                         }|t        v s|t
        v r%t        |      dk(  r| j                  d|d          y y y y y )Nr?   zredis.commandr7   z	redis.keyr   )rB   r   DB_OPERATIONr   r   r   r8   )rD   rE   r   r   r   s        r   _set_client_datarM      s    LL#Z0_d+X**D1::<,,++D	QLLd1g. 1?+ tr!   N)sentry_sdk.constsr   $sentry_sdk.integrations.redis.constsr   r   r   r   r   sentry_sdk.scoper	   sentry_sdk.utilsr
   typingr   r   r   r   sentry_sdk.tracingr   r    r+   r5   r;   r=   rJ   rM    r!   r   <module>rU      sL    &  5 6  ..'8>
8/r!   