
    tniD              
          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 dS )%    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      c/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/django/caching.py_get_span_descriptionr      s     -T6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                 L   |                     d          }|dk    }|dk    }	|rt          j        nt          j        }
t	          |||          }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|rd }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   )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8#u,(J6-?R\\2<+KvFF"$+
 
 
 1	 #OT4V44E,.. (G (G&MM("?III#MM("<dCCC#Kv>>?MM("4c::: 	% 6{{$'E

OO	h&8$????h&8%@@@@" 6$(M4yyA~~(,Q"f,,(.y(9--$'E

OO	h&8$????h&8%@@@@ #D		I A~~$'DG$5$5		"a$'DG$5$5	(MM(":IFFFQ(G (G (G (G (G (G (G (G (G (G (G (G (G (G (GT c1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	s7   *JG3J 4J J	JJ	JJ J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[11O 1?CCAAA .A  	A
 !A !A A 
A A A A A DCAF __%%
 
 
 
 
 
 
 
 
 
 &%

 E;.....r   c                 p    t          | d          s%t          D ]}t          | |||           d| _        d S d S )N_sentry_patchedT)hasattrMETHODS_TO_INSTRUMENTrN   rP   )r   r   r!   r   s       r   _patch_cacherS   |   sW     5+,, %0 	C 	CK{GT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   
isinstancer8   urlparseformatschemehostnamepathr!   int)rT   location
parsed_urlr   r!   s        r   _get_address_portrc      s     ||J''H
 h$$ zh''
$$#%2O!r
 

 !1CIIIt;;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$   rT   T)
rI   r%   r1   
get_clientget_integrationdjango.confrT   	spotlightDEBUGcache_spans)r%   clientintegrationrT   s       r   should_enable_cache_spansrn      s    @@@@@@"$$F(():;;K$$$$$$d" 			%	@(.D*@ 	+"d*r   c                     t          t          d          st          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 )NrP   )   r+   selfr   aliasr   r   c                      | |          }t                      r6ddlm} t          |j        |pd                   \  }}t          |||           |S )Nr   re   r-   )rn   rh   rT   rc   CACHESrS   )rq   rr   r   rT   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 (:;% %MGT !666r   Tc                      | |          }t                      r0t          | j        |pd                   \  }}t          |||           |S )Nr-   )rn   rc   rT   rS   )rq   rr   r   r   r!   original_create_connections        r   sentry_create_connectionz/patch_caching.<locals>.sentry_create_connection   sW    224??,.. 7$5dmEDVY6W$X$XMGT 666r   )	rQ   r   DJANGO_VERSION__getitem__rK   rL   r8   rP   create_connection)rv   ry   rx   ru   s     @@r   patch_cachingr}      s   <!233 %0F"" , 8_.//n S U      0/ (7L$+/L((( *6)G&_788~ c e      98 .FL*+/L(((K%0 %0r   rX   )r   r   r   r    r!   r"   r   N)rT   r   r   rU   )r   N)!rK   typingr   #sentry_sdk.integrations.redis.utilsr   r   urllib3.utilr   r[   djangor   rz   django.core.cacher   r1   sentry_sdk.constsr	   r
   sentry_sdk.utilsr   r   r   r   r   rR   r8   r   rN   rS   rc   boolrn   r}   rG   r   r   <module>r      s/                   M M M M M M M M . . . . . . , , , , , , * * * * * *     * * * * * * * *             DD(D2BDD D D DT/T/T/ T/ 	T/
 
T/ T/ T/ T/p UY%%$3%BQ%	% % % %<<*< < < <6
4 
 
 
 
&0 &0 &0 &0 &0 &0r   