
    gh                         S SK r S SKJr  S SKJrJr  S SKJr  S SK	J
r  S SKJr  S SKrS SKJrJr  S SKJrJr  \(       a  S S	KJr  S S
KJr  S SKJr  / SQrS rS rSS jrS rS rS rg)    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                 ,    [        [        XU5      5      $ N)r   r   )method_nameargskwargss      i/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/django/caching.py_get_span_descriptionr      s    -6BCC    c                    ^ ^^^^^^ SSK Jm  [        T T5      m[        TT5      U4S j5       m[        R
                  " T5      UUU UUU4S j5       n[        T TU5        g )Nr   DjangoIntegrationc                   > UR                  S5      nU(       + nU(       a  [        R                  O[        R                  n	[	        XU5      n
[
        R                  " U	U
TR                  S9 nU" U0 UD6n[        5          Ub   UR                  [        R                  U5        Ub   UR                  [        R                  U5        [        XU5      nUb   UR                  [        R                  U5        S nU(       a]  U(       a5  [        [!        U5      5      nUR                  [        R"                  S5        OgUR                  [        R"                  S5        OF[        U5      nUS:  a  [        [!        US   5      5      nOUS:X  a  [        [!        US   5      5      nUb   UR                  [        R$                  U5        S S S 5        UsS S S 5        $ ! , (       d  f       N= f! , (       d  f       g = f)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_call-_patch_cache_method.<locals>._instrument_call*   s   
 '11%8//-R\\2<<+KvF""$++
 #T4V4E,.&MM("?"?I#MM("<"<dC#Kv>?MM("4"4c: 	#$'E
O	h&8&8$?h&8&8%@ #D	I A~$'DG$5	"a$'DG$5	(MM(":":IF9 /< K
 
 /.
 
s%   -G) EG	G)
G&	"G))
G7c            	         > T" TTTXTT5      $ r    )r   r   r>   r4   r2   r   r3   r5   s     r   sentry_method*_patch_cache_method.<locals>.sentry_method\   s      ;w
 	
r   )sentry_sdk.integrations.djangor   getattrr   	functoolswrapssetattr)r2   r   r4   r5   rB   r   r>   r3   s   ```` @@@r   _patch_cache_methodrI   $   s^    @e[1O 1?C/ D/b ___%
 
 &
 E;.r   c                 h    [        U S5      (       d!  [         H  n[        XX5        M     SU l        g g )N_sentry_patchedT)hasattrMETHODS_TO_INSTRUMENTrI   rK   )r2   r4   r5   r   s       r   _patch_cacherN   f   s1    5+,,0KGB 1 $ -r   c                 P   U R                  S5      n[        U[        5      (       d  gSU;   ad  [        U5      nSR	                  UR
                  =(       d    SUR                  =(       d    SUR                  =(       d    S5      nUR                  nOUnS nX4b  [        U5      4$ S 4$ )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OO!r

 !1CI;;t;;r   c                      SSK Jn   [        R                  " 5       nUR	                  U 5      nSSKJn  US L=(       a8    UR                  S L=(       a    UR                  SL =(       d    UR                  SL $ )Nr   r   rZ   T)
rD   r   r(   
get_clientget_integrationdjango.confrZ   	spotlightDEBUGcache_spans)r   clientintegrationrZ   s       r   should_enable_cache_spansrh      sh    @""$F(():;K$d" 				%	@(..D*@ 	+""d*r   c                  ^  ^^ [        [        S5      (       d  [        S:  aF  [        R                  m[        R
                  " T5      U4S j5       n U [        l        S[        l        g [        R                  m[        R
                  " T5      U4S j5       nU[        l        S[        l        g g )NrK   )   r#   c                    > T" X5      n[        5       (       a5  SSKJn  [        UR                  U=(       d    S   5      u  pE[        X$U5        U$ )Nr   r_   default)rh   rb   rZ   r]   CACHESrN   )selfaliasr2   rZ   r4   r5   original_get_items         r   sentry_get_item&patch_caching.<locals>.sentry_get_item   sI     *$6,..4$5 (:;%MG !6r   Tc                    > T" X5      n[        5       (       a/  [        U R                  U=(       d    S   5      u  p4[        X#U5        U$ )Nrl   )rh   r]   rZ   rN   )rn   ro   r2   r4   r5   original_create_connections        r   sentry_create_connection/patch_caching.<locals>.sentry_create_connection   sA     34?,..$5dmmEDVY6W$XMG 6r   )rL   r   DJANGO_VERSION__getitem__rF   rG   rK   create_connection)rq   ru   rt   rp   s     @@r   patch_cachingrz      s    <!233F" , 8 8__./ 0 (7L$+/L( *6)G)G&__78	 9	 .FL*+/L(O 4r   rQ   )rF   typingr   #sentry_sdk.integrations.redis.utilsr   r   urllib3.utilr   rT   djangor   rw   django.core.cacher   r(   sentry_sdk.constsr	   r
   sentry_sdk.utilsr   r   r   r   r   rM   r   rI   rN   r]   rh   rz   rA   r   r   <module>r      sX       M . , *  *  D
?/D%<4)0r   