Ë
    çÞËjß  ã                   óŒ   — d Z ddlmZmZ ddlmZ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 d„ Zd„ Zd„ Zd„ Zy)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                 ó¦   — 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)ÚnameÚops     úi/var/www/photos/backend/venv/lib/python3.12/site-packages/sentry_sdk/integrations/redis/modules/caches.pyÚ_get_opr      sC   € à	€BØ‡z�zƒ|”|Ñ#Ü�\‰\ˆð €Ið 
�‰‹œÑ	%Ü�\‰\ˆà€Ió    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_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Ô   € ä
˜ t¨VÓ
4€CÜ" 3Ó'€MØ"×(Ñ(¨Ó.€Nà€LØ×,Ñ,ò ˆØ!ò 	ˆCØ�~‰~˜fÕ%Ø#�Ùð	ò Ùðð €EØ×ÑÓ¤Ñ,Ø�R‘ˆô �mÓ$Ü2Ø˜4 ¨ó
ð Ø&Ø&×,Ñ,Ó.Ø$Øñ
€Jð Ðr   c                 ó¾   — t        t        | ||«      «      }|j                  xr t        |«      |j                  kD  }|r|d |j                  t        d«      z
   dz   }|S )Nz...)r   r   Úmax_data_sizeÚlen)r!   r(   r)   r*   r   Údata_should_be_truncateds         r   r'   r'   A   sf   € ä ¤¨}¸dÀFÓ!KÓL€Kð 	×!Ñ!ÒR¤c¨+Ó&6¸×9RÑ9RÑ&Rð ñ  Ø!Ð"J K×$=Ñ$=ÄÀEÃ
Ñ$JÐKÈeÑSˆàÐr   c                 ó(  — t        «       5  | j                  t        j                  |d   «       |d   t        v r¢|�| j                  t        j
                  d«       t        |t        «      s#t        t        |«      j                  d«      «      n
t        |«      }| j                  t        j                  |«       n�| j                  t        j
                  d«       nn|d   t        v rc|d   �^t        |d   t        «      st        |d   j                  d«      «      nt        |d   «      }| j                  t        j                  |«       	 |j                  j                  }|j'                  d«      }|� | j                  t        j(                  |«       |j'                  d	«      }|� | j                  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Ú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ô & l´EÔ:ô œ˜LÓ)×0Ñ0°Ó9Ô:ä˜\Ó*ð ð
 —‘œh×6Ñ6¸Õ=à—‘œh×0Ñ0°%Õ8à˜Ñ(¬LÑ8Ø˜'Ñ"Ð.ô & j°Ñ&9¼5ÔAô ˜
 7Ñ+×2Ñ2°7Ó;Ô<ä˜Z¨Ñ0Ó1ð ð
 —‘œh×6Ñ6¸Ô=ð		Ø ,× <Ñ <× NÑ NÐð !×$Ñ$ VÓ,ˆØÐØ�M‰Mœ(×7Ñ7¸Ô>à ×$Ñ$ VÓ,ˆØÐØ�M‰Mœ(×4Ñ4°dÔ;÷S)<ð )<øô4 ò 	ð (×8Ñ8Ó:ˆLà$×)Ñ)Ø$×)Ñ)ñ!Òð		ú÷5)<ð )<ús1   ‹D?HÅGÅ!A&HÇ2HÈ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   