o
    hl                     @   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get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   i/var/www/html/aiguide_backend/venv/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   
start_spanr   CACHE_GET_ITEMset_datar   	CACHE_HITr   r   CACHE_ITEM_SIZE)cacher   original_methodr   r   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   
r2   c                 C   s,   t | dstD ]}t| | qd| _d S d S )N_sentry_patchedT)hasattrMETHODS_TO_INSTRUMENTr2   r3   )r#   r   r   r   r   _patch_cacheH   s
   

r6   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   r3   )      c                    ,   | |}t j }|r|jrt| |S r+   r   r   r   r   r6   selfaliasr#   r&   )r   original_get_itemr   r   sentry_get_itemX   
   

z&patch_caching.<locals>.sentry_get_itemTc                    r9   r+   r:   r;   )r   original_create_connectionr   r   sentry_create_connectioni   r@   z/patch_caching.<locals>.sentry_create_connection)
r-   r   r4   r   DJANGO_VERSION__getitem__r/   r0   r3   create_connection)r?   rB   r   )r   rA   r>   r   patch_cachingP   s   




rF   )r/   typingr   djangor   rC   django.core.cacher   
sentry_sdkr   sentry_sdk.constsr   r   sentry_sdk._compatr   r	   r
   r5   r   r2   r6   rF   r   r   r   r   <module>   s"    %