Ë
    çÞËj  ã                   óÊ   — d dl Z d dlmZ d dlmZmZ d dlmZ d dl	m
Z d dlmZ d dlZd dlmZmZ d dlmZmZ erd d	lmZ d d
lmZ d dlmZ g d¢Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zy)é    N)ÚTYPE_CHECKING)Ú_get_safe_keyÚ_key_as_string)Ú	parse_url)ÚVERSION)ÚCacheHandler)ÚOPÚSPANDATA)Úcapture_internal_exceptionsÚensure_integration_enabled)ÚAny)ÚCallable)ÚOptional)ÚsetÚset_manyÚgetÚget_manyc                 ó.   — t        t        | ||«      «      S ©N)r   r   )Úmethod_nameÚargsÚkwargss      úc/var/www/photos/backend/venv/lib/python3.12/site-packages/sentry_sdk/integrations/django/caching.pyÚ_get_span_descriptionr      s   € äœ-¨°T¸6ÓBÓCÐCó    c                 ó¼   ‡ ‡‡‡‡‡‡— ddl mŠ t        ‰ ‰«      Št        ‰‰«      ˆfd„«       Št	        j
                  ‰«      ˆˆˆ ˆˆˆfd„«       }t        ‰ ‰|«       y )Nr   ©ÚDjangoIntegrationc                 ó¶  •— |j                  d«      }| }|rt        j                  nt        j                  }	t	        |||«      }
t        j                  |	|
‰j                  ¬«      5 } ||i |¤Ž}t        «       5  |� |j                  t        j                  |«       |� |j                  t        j                  |«       t        |||«      }|� |j                  t        j                  |«       d }|rX|r5t        t!        |«      «      }|j                  t        j"                  d«       ne|j                  t        j"                  d«       nDt        |«      }|dk\  rt        t!        |d   «      «      }n|dk(  rt        t!        |d   «      «      }|� |j                  t        j$                  |«       d d d «       |cd d d «       S # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   )ÚopÚnameÚoriginTFé   é   r   )Ú
startswithr	   Ú	CACHE_PUTÚ	CACHE_GETr   Ú
sentry_sdkÚ
start_spanr"   r   Úset_datar
   ÚNETWORK_PEER_ADDRESSÚNETWORK_PEER_PORTr   Ú	CACHE_KEYÚlenÚstrÚ	CACHE_HITÚCACHE_ITEM_SIZE)Úcacher   Úoriginal_methodr   r   ÚaddressÚportÚis_set_operationÚis_get_operationr    ÚdescriptionÚspanÚvalueÚkeyÚ	item_sizeÚ	arg_countr   s                   €r   Ú_instrument_callz-_patch_cache_method.<locals>._instrument_call*   sž  ø€ ð
 '×1Ñ1°%Ó8ÐØ/Ð/Ðá-ŒR�\Š\´2·<±<ˆÜ+¨K¸¸vÓFˆä×"Ñ"ØØØ$×+Ñ+ô
ð %	ð Ù# TÐ4¨VÑ4ˆEä,Ó.ñ GØÐ&Ø—M‘M¤(×"?Ñ"?ÀÔIàÐ#Ø—M‘M¤(×"<Ñ"<¸dÔCä# K°°vÓ>�Ø�?Ø—M‘M¤(×"4Ñ"4°cÔ:à �	Ù#ÙÜ$'¬¨E«
£O˜	ØŸ™¤h×&8Ñ&8¸$Õ?àŸ™¤h×&8Ñ&8¸%Õ@ä # D£	�IØ  A’~ä$'¬¨D°©G«Ó$5™	Ø" ašä$'¬¨D°©G«Ó$5˜	àÐ(Ø—M‘M¤(×":Ñ":¸IÔF÷9Gð< ÷K%	ñ %	÷Gð Gú÷%	ð %	ús%   Á'GÁ:D6GÆ0	GÇG	ÇGÇGc            	      ó    •—  ‰‰‰‰| |‰‰«      S r   © )r   r   r>   r4   r2   r   r3   r5   s     €€€€€€r   Úsentry_methodz*_patch_cache_method.<locals>.sentry_method\   s!   ø€ ñ  Ø�; °°v¸wÈó
ð 	
r   )Úsentry_sdk.integrations.djangor   Úgetattrr   Ú	functoolsÚwrapsÚsetattr)r2   r   r4   r5   rA   r   r>   r3   s   ```` @@@r   Ú_patch_cache_methodrG   $   s^   þ€ å@ä˜e [Ó1€OäÐ 1°?ÓCó/ó Dð/ôb ‡_�_�_Ó%÷
ð 
ó &ð
ô ˆE�; Õ.r   c                 ó^   — t        | d«      s!t        D ]  }t        | |||«       Œ d| _        y y )NÚ_sentry_patchedT)ÚhasattrÚMETHODS_TO_INSTRUMENTrG   rI   )r2   r4   r5   r   s       r   Ú_patch_cacherL   f   s9   € ä�5Ð+Ô,Ü0ò 	CˆKÜ  {°G¸TÕBð	Cà $ˆÕð -r   c                 ó$  — | j                  d«      }t        |t        «      syd|v rUt        |«      }dj	                  |j
                  xs d|j                  xs d|j                  xs d«      }|j                  }n|}d }||�t        |«      fS d fS )NÚLOCATION©NNz://z	{}://{}{}Ú )
r   Ú
isinstancer/   ÚurlparseÚformatÚschemeÚhostnameÚpathr5   Úint)ÚsettingsÚlocationÚ
parsed_urlr4   r5   s        r   Ú_get_address_portr[   n   sš   € à�|‰|˜JÓ'€Hô
 �h¤Ô$Øà�ÑÜ˜hÓ'ˆ
à×$Ñ$Ø×ÑÒ# Ø×ÑÒ% 2Ø�O‰OÒ!˜ró
ˆð
 �‰‰àˆØˆà Ð!1”C˜“IÐ;Ð;°tÐ;Ð;r   c                  óÌ   — ddl m}  t        j                  «       }|j	                  | «      }ddlm} |d uxr. |j                  d uxr |j                  du xs |j                  du S )Nr   r   ©rX   T)
rB   r   r(   Ú
get_clientÚget_integrationÚdjango.confrX   Ú	spotlightÚDEBUGÚcache_spans)r   ÚclientÚintegrationrX   s       r   Úshould_enable_cache_spansrf   ˆ   sh   € å@ä×"Ñ"Ó$€FØ×(Ñ(Ð):Ó;€KÝ$à˜dÐ"ò Ø	×	Ñ	 Ð	%Ò	@¨(¯.©.¸DÐ*@ò 	+Ø×"Ñ" dÐ*ðr   c                  óJ  ‡‡— t        t        d«      s‘t        dk  rDt        j                  Št	        j
                  ‰«      ˆfd„«       } | t        _        dt        _        y t        j                  Št	        j
                  ‰«      ˆfd„«       }|t        _        dt        _        y y )NrI   )é   r#   c                 ó’   •—  ‰| |«      }t        «       r2ddlm} t        |j                  |xs d   «      \  }}t        |||«       |S )Nr   r]   Údefault)rf   r`   rX   r[   ÚCACHESrL   )ÚselfÚaliasr2   rX   r4   r5   Úoriginal_get_items         €r   Úsentry_get_itemz&patch_caching.<locals>.sentry_get_itemœ   sL   ø€ ñ *¨$°Ó6�ä,Ô.Ý4ä$5Ø Ÿ™¨Ò(:°Ñ;ó%‘M�G˜Tô ! ¨°Ô6à�r   Tc                 ó†   •—  ‰| |«      }t        «       r,t        | j                  |xs d   «      \  }}t        |||«       |S )Nrj   )rf   r[   rX   rL   )rl   rm   r2   r4   r5   Úoriginal_create_connections        €r   Úsentry_create_connectionz/patch_caching.<locals>.sentry_create_connection²   sD   ø€ ñ 3°4¸Ó?�ä,Ô.Ü$5°d·m±mÀEÒDVÈYÑ6WÓ$X‘M�G˜Tä  ¨°Ô6à�r   )rJ   r   ÚDJANGO_VERSIONÚ__getitem__rD   rE   rI   Úcreate_connection)ro   rr   rq   rn   s     @@r   Úpatch_cachingrv   –   s“   ù€ ä”<Ð!2Ô3Ü˜FÒ"Ü ,× 8Ñ 8Ðä�_‰_Ð.Ó/óó 0ðð (7ŒLÔ$Ø+/ŒLÕ(ô *6×)GÑ)GÐ&ä�_‰_Ð7Ó8ó	ó 9ð	ð .FŒLÔ*Ø+/ŒLÕ(ðO 4r   rO   )rD   Útypingr   Ú#sentry_sdk.integrations.redis.utilsr   r   Úurllib3.utilr   rR   Údjangor   rs   Údjango.core.cacher   r(   Úsentry_sdk.constsr	   r
   Úsentry_sdk.utilsr   r   r   r   r   rK   r   rG   rL   r[   rf   rv   r@   r   r   ú<module>r~      sX   ðÛ Ý  ß MÝ .å ,Ý *ã ß *÷ñ ÝÝÝòÐ òDò
?/óD%ò<ò4ó)0r   