
    \jl              
           d Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
 dZdZddlmZ erdd	lmZ dd
lmZ ddlmZmZmZ deddfdZdeddddddddf
dZdedddddddef
dZ	 	 	 	 	 	 	 	 	 	 ddZy)z+
Code used for the Caches module in Sentry
    )OPSPANDATA)_get_safe_key_key_as_string)StreamedSpan)capture_internal_exceptions)getmget)setsetex)TYPE_CHECKING)RedisIntegration)Span)AnyOptionalUnionnamereturnzOptional[str]c                     d }| j                         t        v rt        j                  }|S | j                         t        v rt        j
                  }|S )N)lowerGET_COMMANDSr   	CACHE_GETSET_COMMANDS	CACHE_PUT)r   ops     V/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/redis/modules/caches.py_get_opr      sC    	Bzz||#\\ I 
	%\\I    redis_commandargsztuple[Any, ...]kwargsdict[str, Any]integrationr   c                 R   t        | ||      }t        |      }|j                  d      }d}|j                  D ]"  }|D ]  }	|	j	                  |      sd} n |s" n d }
| j                         t        v r|d   }
t        |       t        | |||      ||| j                         ||
d}|S )Nz, FT)r   descriptionkeykey_as_stringr   is_cache_keyvalue)	r   r   splitcache_prefixes
startswithr   r   r   _get_cache_span_description)r   r    r!   r#   r'   r(   keys_as_stringr)   prefixkeer*   
propertiess               r   _compile_cache_span_propertiesr3      s     tV
4C"3'M"((.NL,, ! 	C~~f%#	  E,R m$24
 &&,,.$
J r   c                     t        t        | ||            }|j                  r6t        |      |j                  kD  r|d |j                  t        d      z
   dz   }|S )Nz...)r   r   max_data_sizelen)r   r    r!   r#   r&   s        r   r.   r.   E   sY     !}dF!KLK  S%58Q8Q%Q!"JK$=$=E
$JKeSr   Nc                    t        | t              r| j                  }n| j                  }t	               5   |t
        j                  |d          |d   t        v r|m |t
        j                  d       t        |t              s#t        t        |      j                  d            n
t        |      } |t
        j                  |       n} |t
        j                  d       ne|d   t        v rZ|d   Ut        |d   t              st        |d   j                  d            nt        |d         } |t
        j                  |       	 |j                  j                   }|j+                  d      }| |t
        j,                  |       |j+                  d	      }	|	 |t
        j.                  |	       d d d        y # t"        $ r, |j%                         }|j&                  |j(                  d}Y w xY w# 1 sw Y   y xY w)
Nr'   r   Tzutf-8Fr*   )hostportr8   r9   )
isinstancer   set_attributeset_datar   r   	CACHE_KEYr   	CACHE_HITbytesr6   strencodeCACHE_ITEM_SIZEr   connection_poolconnection_kwargsAttributeErrorget_default_noder8   r9   r	   NETWORK_PEER_ADDRESSNETWORK_PEER_PORT)
spanredis_clientr2   return_valueset_on_spansizeconnection_paramsdefault_noder8   r9   s
             r   _set_cache_datarP   S   s    $%((mm	$	& ):H&&
5(9:o&,6'H..5 &lE: L)009:\* 
 H44d;H..6(L8'". &j&95A 
7+227;<Z01 
 H44d;		 , < < N N !$$V,55t< $$V,22D9S): ):4  	 (88:L$))$))!		5): ):s1   DG2F:AG2:2G/,G2.G//G22G;)
rI   zUnion[Span, StreamedSpan]rJ   r   r2   r"   rK   zOptional[Any]r   N)__doc__sentry_sdk.constsr   r   #sentry_sdk.integrations.redis.utilsr   r   sentry_sdk.tracesr   sentry_sdk.utilsr   r   r   typingr   sentry_sdk.integrations.redisr   sentry_sdk.tracingr   r   r   r   r@   r   r3   r.   rP    r   r   <module>rZ      s    + M * 8  >'++# / ##
# # $	#
 #L
  $	
 	4:
%4:4: !4: "	4:
 
4:r   