
    \jD              
          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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 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_manymethod_nameargsz
tuple[Any]kwargsdict[str, Any]returnc                 .    t        t        | ||            S N)r   r   )r   r   r   s      P/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/django/caching.py_get_span_descriptionr      s     -T6B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         |       y )Nr   DjangoIntegrationr   r   r   original_methodzCallable[..., Any]r   ztuple[Any, ...]r   r   r   r    r!   r"   r   r   c                    |j                  d      }|dk(  }|dk(  }	|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 }|	r[|i k7  r5t        t!        |            }|j                  t        j"                  d       n|j                  t        j"                  d       n|rzd }t        |      dk\  r|d   }n	d	|v r|d	   }||k7  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   r   r   )opnameoriginTF      defaultr   )
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)r   r   r&   r   r   r   r!   is_set_operationis_get_methodis_get_many_methodr(   descriptionspanvaluekey	item_sizedefault_value	arg_countr%   s                     r   _instrument_callz-_patch_cache_method.<locals>._instrument_call/   s    '11%8#u,(J6-R\\2<<+KvF""$++
 1	 #T4V4E,. (G&MM("?"?I#MM("<"<dC#Kv>?MM("4"4c: 	%{$'E
O	h&8&8$?h&8&8%@"$(M4yA~(,Q"f,(.y(9-$'E
O	h&8&8$?h&8&8%@ #D	I A~$'DG$5	"a$'DG$5	(MM(":":IFQ(GT c1	 1	(G (G1	 1	s%   .IF5I	6	I	I	IIc            	            | |      S r    )r   r   rE   r   r   r   r&   r!   s     r   sentry_methodz*_patch_cache_method.<locals>.sentry_methods   s    ;vw
 	
r   )r   r   r   r   r   r   )sentry_sdk.integrations.djangor%   getattrr   r8   	functoolswrapssetattr)r   r   r   r!   rH   r%   rE   r&   s   ```` @@@r   _patch_cache_methodrN   %   s     Ae[1O 1?CAAA .A  	A
 !A !A A 
A DAF ___%
 
 &

 E;.r   c                 ^    t        | d      s!t        D ]  }t        | |||        d| _        y y )N_sentry_patchedT)hasattrMETHODS_TO_INSTRUMENTrN   rP   )r   r   r!   r   s       r   _patch_cacherS   |   s;     5+,0 	CK{GT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   
isinstancer8   urlparseformatschemehostnamepathr!   int)settingslocation
parsed_urlr   r!   s        r   _get_address_portrb      s     ||J'H
 h$h'
$$#%2OO!r

 !1C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$   r_   T)
rI   r%   r1   
get_clientget_integrationdjango.confr_   	spotlightDEBUGcache_spans)r%   clientintegrationr_   s       r   should_enable_cache_spansrm      sh    @""$F(():;K$d" 				%	@(..D*@ 	+""d*r   c                  v   t        t        d      st        dk  rOt        j                  t	        j
                        dddt        ddffd       } | t        _        d	t        _        y t        j                  t	        j
                        dddt        ddffd
       }|t        _        d	t        _        y y )NrP   )   r+   selfr   aliasr   r   c                      | |      }t               r2ddlm} t        |j                  |xs d         \  }}t        |||       |S )Nr   rd   r-   )rm   rg   r_   rb   CACHESrS   )rp   rq   r   r_   r   r!   original_get_items         r   sentry_get_itemz&patch_caching.<locals>.sentry_get_item   sJ    )$6,.4$5 (:;%MGT !6r   Tc                      | |      }t               r,t        | j                  |xs d         \  }}t        |||       |S )Nr-   )rm   rb   r_   rS   )rp   rq   r   r   r!   original_create_connections        r   sentry_create_connectionz/patch_caching.<locals>.sentry_create_connection   sB    24?,.$5dmmEDVY6W$XMGT 6r   )	rQ   r   DJANGO_VERSION__getitem__rK   rL   r8   rP   create_connection)ru   rx   rw   rt   s     @@r   patch_cachingr|      s    <!23F" , 8 8__./n S U  0 (7L$+/L( *6)G)G&__78~ c e  9 .FL*+/L(K 4r   rV   )r   r   r   r    r!   r"   r   N)r_   r   r   z#tuple[Optional[str], Optional[int]])r   N)!rK   typingr   #sentry_sdk.integrations.redis.utilsr   r   urllib3.utilr   rY   djangor   ry   django.core.cacher   r1   sentry_sdk.constsr	   r
   sentry_sdk.utilsr   r   r   r   r   rR   r8   r   rN   rS   rb   boolrm   r|   rG   r   r   <module>r      s       M . , *  *  DD(D2BDDT/T/T/ T/ 	T/
 
T/p UY%%$3%BQ%	%<<*<6
4 
&0r   