
    gh                         S r SSKJrJr  SSKJrJr  SSKJr  Sr	Sr
SSKJr  \(       a  SSKJr  SS	KJr  SS
KJrJr  S rS rS rS rg)z+
Code used for the Caches module in Sentry
    )OPSPANDATA)_get_safe_key_key_as_string)capture_internal_exceptions)getmget)setsetex)TYPE_CHECKING)RedisIntegration)Span)AnyOptionalc                     S nU R                  5       [        ;   a  [        R                  nU$ U R                  5       [        ;   a  [        R
                  nU$ )N)lowerGET_COMMANDSr   	CACHE_GETSET_COMMANDS	CACHE_PUT)nameops     o/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/redis/modules/caches.py_get_opr      sC    	Bzz||#\\ I 
	%\\I    c                 l   [        XU5      n[        U5      nUR                  S5      nSnUR                   H/  nU H  n	U	R	                  U5      (       d  M  Sn  O   U(       d  M/    O   S n
U R                  5       [        ;   a  US   n
[        U 5      [        XX#5      UUU R                  5       UU
S.nU$ )Nz, FT)r   descriptionkeykey_as_stringredis_commandis_cache_keyvalue)	r   r   splitcache_prefixes
startswithr   r   r   _get_cache_span_description)r!   argskwargsintegrationr   r    keys_as_stringr"   prefixkeer#   
propertiess               r   _compile_cache_span_propertiesr/      s    
V
4C"3'M"((.NL,,!C~~f%%# " < - E,R m$2
 &&,,.$
J r   c                     [        [        XU5      5      nUR                  =(       a    [        U5      UR                  :  nU(       a  US UR                  [        S5      -
   S-   nU$ )Nz...)r   r   max_data_sizelen)r!   r(   r)   r*   r   data_should_be_truncateds         r   r'   r'   A   sd     }F!KLK 	!!Rc+&69R9R&R   !"JK$=$=E
$JKeSr   c                 X   [        5          U R                  [        R                  US   5        US   [        ;   a  Ub  U R                  [        R
                  S5        [        U[        5      (       d#  [        [        U5      R                  S5      5      O
[        U5      nU R                  [        R                  U5        OU R                  [        R
                  S5        OvUS   [        ;   ai  US   bc  [        US   [        5      (       d  [        US   R                  S5      5      O[        US   5      nU R                  [        R                  U5         UR                  R                  nUR'                  S5      nUb   U R                  [        R(                  U5        UR'                  S	5      nUb   U R                  [        R*                  U5        S S S 5        g ! [         a,    UR!                  5       nUR"                  UR$                  S.n Nf = f! , (       d  f       g = f)
Nr   r!   Tzutf-8Fr#   )hostportr5   r6   )r   set_datar   	CACHE_KEYr   	CACHE_HIT
isinstancebytesr2   strencodeCACHE_ITEM_SIZEr   connection_poolconnection_kwargsAttributeErrorget_default_noder5   r6   r   NETWORK_PEER_ADDRESSNETWORK_PEER_PORT)	spanredis_clientr.   return_valuesizeconnection_paramsdefault_noder5   r6   s	            r   _set_cache_datarK   N   s   	$	&h((*U*;<o&,6'h00$7 &lE:: L)009:\* 
 h66=h00%8(L8'". &j&95AA 
7+227;<Z01 
 h66=		 , < < N N !$$V,MM(77> $$V,MM(44d;S 
'	&4  	 (88:L$))$))!		5 
'	&s1   EHG"1A(H"3HHHH
H)N)__doc__sentry_sdk.constsr   r   #sentry_sdk.integrations.redis.utilsr   r   sentry_sdk.utilsr   r   r   typingr   sentry_sdk.integrations.redisr   sentry_sdk.tracingr   r   r   r   r/   r'   rK    r   r   <module>rT      sC    + M 8  >'$D
+<r   