o
    Zhl                     @   s   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
mZmZ d dlmZ er8d dlmZ d d	lmZ d
dgZdd Zdd Zdd Zdd ZdS )    N)TYPE_CHECKING)VERSION)CacheHandler)Hub)OPSPANDATA)	text_type)Any)CallablegetZget_manyc                 C   sV   d | }|d urt|dkr|t|d 7 }|S |d ur)d|v r)|t|d 7 }|S )Nz{}    r   key)formatlenr   )method_nameargskwargsdescription r   ]/var/www/html/lang_env/lib/python3.10/site-packages/sentry_sdk/integrations/django/caching.py_get_span_description   s   
r   c                    sN   ddl m   fddttfdd}t| d S )Nr   DjangoIntegrationc                    s   t j}| }|d u s|js||i |S t|||}|jtj|d/}||i |}	|	rC|t	j
d tt|	}
|t	j|
 n|t	j
d |	W  d    S 1 sVw   Y  d S )N)opr   TF)r   currentget_integrationcache_spansr   Z
start_spanr   ZCACHE_GET_ITEMset_datar   Z	CACHE_HITr   r   ZCACHE_ITEM_SIZE)cacher   original_methodr   r   Zhubintegrationr   spanvaluesizer   r   r   _instrument_call'   s   
$z-_patch_cache_method.<locals>._instrument_callc                     s    | |S Nr   )r   r   )r$   r   r   r   r   r   sentry_method@   s   z*_patch_cache_method.<locals>.sentry_method)sentry_sdk.integrations.djangor   getattr	functoolswrapssetattr)r   r   r&   r   )r   r$   r   r   r   r   _patch_cache_method#   s   
r,   c                 C   s,   t | dstD ]}t| | qd| _d S d S )N_sentry_patchedT)hasattrMETHODS_TO_INSTRUMENTr,   r-   )r   r   r   r   r   _patch_cacheH   s
   

r0   c                     s~   ddl m  ttds=tdk r&tjt fdd} | t_dt_d S tj	t fdd	}|t_	dt_d S d S )
Nr   r   r-   )      c                    ,   | |}t j }|r|jrt| |S r%   r   r   r   r   r0   selfaliasr   r    )r   original_get_itemr   r   sentry_get_itemX   
   

z&patch_caching.<locals>.sentry_get_itemTc                    r3   r%   r4   r5   )r   original_create_connectionr   r   sentry_create_connectioni   r:   z/patch_caching.<locals>.sentry_create_connection)
r'   r   r.   r   DJANGO_VERSION__getitem__r)   r*   r-   create_connection)r9   r<   r   )r   r;   r8   r   patch_cachingP   s   




r@   )r)   typingr   djangor   r=   Zdjango.core.cacher   Z
sentry_sdkr   Zsentry_sdk.constsr   r   Zsentry_sdk._compatr   r	   r
   r/   r   r,   r0   r@   r   r   r   r   <module>   s"    %