§
    xÅjí%  ã            
       ó  — d dl Z d dl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 d dlmZ d d	lmZmZ er
d d
lmZmZmZ g d¢Zdedddddefd„Zdddeddddddf
d„Z	 d 	 	 	 	 	 	 	 d!d„Z	 	 	 	 d"d„Zde fd„Z!d#d„Z"dS )$é    N)ÚTYPE_CHECKING)ÚVERSION)ÚCacheHandler)Ú	parse_url)ÚOPÚSPANDATA)Ú_get_safe_keyÚ_key_as_string)Úhas_span_streaming_enabled)Úcapture_internal_exceptionsÚensure_integration_enabled)ÚAnyÚCallableÚOptional)ÚsetÚset_manyÚgetÚget_manyÚmethod_nameÚargsz
tuple[Any]Úkwargsúdict[str, Any]Úreturnc                 ó>   — t          t          | ||¦  «        ¦  «        S ©N)r
   r	   )r   r   r   s      úWC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/django/caching.pyÚ_get_span_descriptionr      s   € õ �-¨°T¸6ÑBÔBÑCÔCÐCó    Úcacher   ÚaddressúOptional[str]ÚportúOptional[int]c                 ó  ‡ ‡‡‡‡‡‡— ddl mŠ t          ‰ ‰¦  «        Št          ‰‰¦  «        dddt          dddd	d
dddddddfˆfd„¦   «         Št          j        ‰¦  «        dˆˆˆ ˆˆˆfd„¦   «         }t          ‰ ‰|¦  «         d S )Nr   ©ÚDjangoIntegrationr   r   r   Úoriginal_methodzCallable[..., Any]r   ztuple[Any, ...]r   r   r    r!   r"   r#   r   r   c                 ó²
  •— |                      d¦  «        }|dk    }|dk    }	|rt          j        nt          j        }
t	          |||¦  «        }t          t          j        ¦   «         j        ¦  «        }|�r‹t          j	         
                    ¦   «         € ||i |¤ŽS t          j	                             ||
‰j        dœ¬¦  «        5 } ||i |¤Ž}t          ¦   «         5  |� |                     t          j        |¦  «         |� |                     t          j        |¦  «         t%          |||¦  «        }|� |                     t          j        |¦  «         d }|	re|i k    r>t)          t+          |¦  «        ¦  «        }|                     t          j        d¦  «         �n|                     t          j        d¦  «         nð|rŽd }t)          |¦  «        dk    r	|d	         }nd
|v r|d
         }||k    r=t)          t+          |¦  «        ¦  «        }|                     t          j        d¦  «         n�|                     t          j        d¦  «         n`t)          |¦  «        }|dk    r#t)          t+          |d	         ¦  «        ¦  «        }n(|d	k    r"t)          t+          |d         ¦  «        ¦  «        }|� |                     t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |cd d d ¦  «         S # 1 swxY w Y   d S t          j        |
|‰j        ¬¦  «        5 } ||i |¤Ž}t          ¦   «         5  |� |                     t          j        |¦  «         |� |                     t          j        |¦  «         t%          |||¦  «        }|� |                     t          j        |¦  «         d }|	re|i k    r>t)          t+          |¦  «        ¦  «        }|                     t          j        d¦  «         �n|                     t          j        d¦  «         nð|rŽd }t)          |¦  «        dk    r	|d	         }nd
|v r|d
         }||k    r=t)          t+          |¦  «        ¦  «        }|                     t          j        d¦  «         n�|                     t          j        d¦  «         n`t)          |¦  «        }|dk    r#t)          t+          |d	         ¦  «        ¦  «        }n(|d	k    r"t)          t+          |d         ¦  «        ¦  «        }|� |                     t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |cd d d ¦  «         S # 1 swxY w Y   d S )Nr   r   r   )z	sentry.opzsentry.origin)ÚnameÚ
attributesTFé   é   Údefaultr   )Úopr)   Úorigin)Ú
startswithr   Ú	CACHE_PUTÚ	CACHE_GETr   r   Ú
sentry_sdkÚ
get_clientÚoptionsÚtracesÚget_current_spanÚ
start_spanr/   r   Úset_attributer   ÚNETWORK_PEER_ADDRESSÚNETWORK_PEER_PORTr	   Ú	CACHE_KEYÚlenÚstrÚ	CACHE_HITÚCACHE_ITEM_SIZEÚset_data)r   r   r'   r   r   r    r"   Úis_set_operationÚis_get_methodÚis_get_many_methodr.   ÚdescriptionÚspan_streamingÚspanÚvalueÚkeyÚ	item_sizeÚdefault_valueÚ	arg_countr&   s                      €r   Ú_instrument_callz-_patch_cache_method.<locals>._instrument_call-   s\  ø€ ð '×1Ò1°%Ñ8Ô8ÐØ# uÒ,ˆØ(¨JÒ6Ðà-Ð?�RŒ\ˆ\µ2´<ˆÝ+¨K¸¸vÑFÔFˆå3µJÔ4IÑ4KÔ4KÔ4SÑTÔTˆØñ i	ÝÔ ×1Ò1Ñ3Ô3Ð;Ø&�¨Ð7°Ð7Ð7Ð7ÝÔ"×-Ò-Ø à!#Ø%6Ô%=ðð ð .ñ ô ð 3ð Ø'˜¨Ð8°Ð8Ð8�å0Ñ2Ô2ð (Pð (PØÐ*Ø×*Ò*­8Ô+HÈ'ÑRÔRÐRàÐ'Ø×*Ò*­8Ô+EÀtÑLÔLÐLå'¨°T¸6ÑBÔB�CØ�Ø×*Ò*­8Ô+=¸sÑCÔCÐCà $�IØ)ð :Ø  Bš;˜;Ý(+­C°©J¬J©¬˜IØ ×.Ò.­xÔ/AÀ4ÑHÔHÐHÑHà ×.Ò.­xÔ/AÀ5ÑIÔIÐIÐIØ&ð :Ø(,˜Ý˜t™9œ9¨š>˜>Ø,0°¬G˜M˜MØ&¨&Ð0Ð0Ø,2°9Ô,=˜Mà  MÒ1Ð1Ý(+­C°©J¬J©¬˜IØ ×.Ò.­xÔ/AÀ4ÑHÔHÐHÐHà ×.Ò.­xÔ/AÀ5ÑIÔIÐIÐIå$'¨¡I¤I˜	Ø$¨š>˜>å(+­C°°Q´©L¬LÑ(9Ô(9˜I˜IØ&¨!š^˜^å(+­C°°Q´©L¬LÑ(9Ô(9˜Ià Ð,Ø×*Ò*­8Ô+CÀYÑOÔOÐOðQ(Pð (Pð (Pñ (Pô (Pð (Pð (Pð (Pð (Pð (Pð (Pøøøð (Pð (Pð (Pð (PðT ðg3ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3õj Ô&ØØ Ø(Ô/ðñ ô ð 1ð Ø'˜¨Ð8°Ð8Ð8�å0Ñ2Ô2ð (Kð (KØÐ*ØŸš¥hÔ&CÀWÑMÔMÐMàÐ'ØŸš¥hÔ&@À$ÑGÔGÐGå'¨°T¸6ÑBÔB�CØ�ØŸš¥hÔ&8¸#Ñ>Ô>Ð>à $�IØ)ð :Ø  Bš;˜;Ý(+­C°©J¬J©¬˜IØ ŸMšM­(Ô*<¸dÑCÔCÐCÑCà ŸMšM­(Ô*<¸eÑDÔDÐDÐDØ&ð :Ø(,˜Ý˜t™9œ9¨š>˜>Ø,0°¬G˜M˜MØ&¨&Ð0Ð0Ø,2°9Ô,=˜Mà  MÒ1Ð1Ý(+­C°©J¬J©¬˜IØ ŸMšM­(Ô*<¸dÑCÔCÐCÐCà ŸMšM­(Ô*<¸eÑDÔDÐDÐDå$'¨¡I¤I˜	Ø$¨š>˜>å(+­C°°Q´©L¬LÑ(9Ô(9˜I˜IØ&¨!š^˜^å(+­C°°Q´©L¬LÑ(9Ô(9˜Ià Ð,ØŸš¥hÔ&>À	ÑJÔJÐJðQ(Kð (Kð (Kñ (Kô (Kð (Kð (Kð (Kð (Kð (Kð (Køøøð (Kð (Kð (Kð (KðT ðc1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1sn   ÃK4ÃG3KËK4ËK	ËK4Ë"K	Ë#K4Ë4K8Ë;K8ÌUÌ4G3T3Ô'UÔ3T7	Ô7UÔ:T7	Ô;UÕUÕUc            	      ó&   •—  ‰‰‰‰| |‰‰¦  «        S r   © )r   r   rM   r    r   r   r'   r"   s     €€€€€€r   Úsentry_methodz*_patch_cache_method.<locals>.sentry_methodª   s'   ø€ àÐØ�; °°v¸wÈñ
ô 
ð 	
r   )r   r   r   r   r   r   )Úsentry_sdk.integrations.djangor&   Úgetattrr   r>   Ú	functoolsÚwrapsÚsetattr)r   r   r    r"   rP   r&   rM   r'   s   ```` @@@r   Ú_patch_cache_methodrV   #   s%  øøøøøøø€ ð AÐ@Ð@Ð@Ð@Ð@å˜e [Ñ1Ô1€OåÐ 1°?ÑCÔCðzØðzåðzð .ðzð  ð	zð
 !ðzð !ðzð ðzð 
ðzð zð zð zð zñ DÔCðzõx „_�_Ñ%Ô%ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ñ &Ô%ð
õ
 ˆE�; Ñ.Ô.Ð.Ð.Ð.r   c                 óp   — t          | d¦  «        s%t          D ]}t          | |||¦  «         Œd| _        d S d S )NÚ_sentry_patchedT)ÚhasattrÚMETHODS_TO_INSTRUMENTrV   rX   )r   r    r"   r   s       r   Ú_patch_cacher[   ³   sW   € õ �5Ð+Ñ,Ô,ð %Ý0ð 	Cð 	CˆKÝ  {°G¸TÑBÔBÐBÐBØ $ˆÔÐÐð%ð %r   Úsettingsú#tuple[Optional[str], Optional[int]]c                 ó  — |                       d¦  «        }t          |t          ¦  «        sdS d|v rCt          |¦  «        }d                     |j        pd|j        pd|j        pd¦  «        }|j        }n|}d }||�t          |¦  «        nd fS )NÚLOCATION©NNz://z	{}://{}{}Ú )
r   Ú
isinstancer>   ÚurlparseÚformatÚschemeÚhostnameÚpathr"   Úint)r\   ÚlocationÚ
parsed_urlr    r"   s        r   Ú_get_address_portrk   ¼   sª   € ð �|Š|˜JÑ'Ô'€Hõ
 �h¥Ñ$Ô$ð Øˆzà�ÐÐÝ˜hÑ'Ô'ˆ
à×$Ò$ØÔÐ# ØÔÐ% 2ØŒOÐ!˜rñ
ô 
ˆð
 ŒˆˆàˆØˆà Ð!1•C˜‘I”I�I°tÐ;Ð;r   c                  ó¨   — ddl m}  t          j        ¦   «         }|                     | ¦  «        }ddlm} |d uo|j        d ur	|j        du p|j	        du S )Nr   r%   ©r\   T)
rQ   r&   r3   r4   Úget_integrationÚdjango.confr\   Ú	spotlightÚDEBUGÚcache_spans)r&   ÚclientÚintegrationr\   s       r   Úshould_enable_cache_spansru   ×   s�   € Ø@Ð@Ð@Ð@Ð@Ð@åÔ"Ñ$Ô$€FØ×(Ò(Ð):Ñ;Ô;€KØ$Ð$Ð$Ð$Ð$Ð$à˜dÐ"ð Ø	Ô	 Ð	%Ð	@¨(¬.¸DÐ*@ð 	+ØÔ" dÐ*ðr   c                  óŽ  ‡‡— t          t          d¦  «        s­t          dk     rQt          j        Št	          j        ‰¦  «        dddt          ddfˆfd„¦   «         } | t          _        d	t          _        d S t          j        Št	          j        ‰¦  «        dddt          ddfˆfd
„¦   «         }|t          _        d	t          _        d S d S )NrX   )é   r+   Úselfr   Úaliasr   r   c                 ó¨   •—  ‰| |¦  «        }t          ¦   «         r6ddlm} t          |j        |pd         ¦  «        \  }}t          |||¦  «         |S )Nr   rm   r-   )ru   ro   r\   rk   ÚCACHESr[   )rx   ry   r   r\   r    r"   Úoriginal_get_items         €r   Úsentry_get_itemz&patch_caching.<locals>.sentry_get_itemé   sp   ø€ à)Ð)¨$°Ñ6Ô6�å,Ñ.Ô.ð 7Ø4Ð4Ð4Ð4Ð4Ð4å$5Ø œ¨Ð(:°Ô;ñ%ô %‘M�G˜Tõ ! ¨°Ñ6Ô6Ð6à�r   Tc                 óœ   •—  ‰| |¦  «        }t          ¦   «         r0t          | j        |pd         ¦  «        \  }}t          |||¦  «         |S )Nr-   )ru   rk   r\   r[   )rx   ry   r   r    r"   Úoriginal_create_connections        €r   Úsentry_create_connectionz/patch_caching.<locals>.sentry_create_connectionþ   sW   ø€ à2Ð2°4¸Ñ?Ô?�å,Ñ.Ô.ð 7Ý$5°d´mÀEÐDVÈYÔ6WÑ$XÔ$X‘M�G˜Tå  ¨°Ñ6Ô6Ð6à�r   )	rY   r   ÚDJANGO_VERSIONÚ__getitem__rS   rT   r>   rX   Úcreate_connection)r}   r€   r   r|   s     @@r   Úpatch_cachingr„   ä   s  øø€ Ý•<Ð!2Ñ3Ô3ð %0Ý˜FÒ"Ð"Ý ,Ô 8ÐåŒ_Ð.Ñ/Ô/ð nð ½Sð ÀUð ð ð ð ð ñ 0Ô/ðð (7�LÔ$Ø+/�LÔ(Ð(Ð(õ *6Ô)GÐ&åŒ_Ð7Ñ8Ô8ð¨~ð Åcð Èeð ð ð ð ð ñ 9Ô8ðð .F�LÔ*Ø+/�LÔ(Ð(Ð(ðK%0ð %0r   r`   )r   r   r    r!   r"   r#   r   N)r\   r   r   r]   )r   N)#rS   Útypingr   Údjangor   r�   Údjango.core.cacher   Úurllib3.utilr   rc   r3   Úsentry_sdk.constsr   r   Ú#sentry_sdk.integrations.redis.utilsr	   r
   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   rZ   r>   r   rV   r[   rk   Úboolru   r„   rO   r   r   ú<module>rŽ      s)  ðØ Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð
 ð /Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ðð ð Ð ðDØðDØ(ðDØ2BðDàðDð Dð Dð DðM/ØðM/àðM/ð ðM/ð ð	M/ð
 
ðM/ð M/ð M/ð M/ðb UYð%Øð%Ø$3ð%ØBQð%à	ð%ð %ð %ð %ð<Øð<à*ð<ð <ð <ð <ð6
 4ð 
ð 
ð 
ð 
ð&0ð &0ð &0ð &0ð &0ð &0r   