o
    h                     @   s   d Z ddlmZmZ ddlmZmZ ddlmZ dZ	dZ
ddlmZ er8ddlmZ dd	lmZ dd
lmZmZ dd Zdd Zdd Zdd ZdS )z+
Code used for the Caches module in Sentry
    )OPSPANDATA)_get_safe_key_key_as_string)capture_internal_exceptions)getmget)setsetex)TYPE_CHECKING)RedisIntegration)Span)AnyOptionalc                 C   s0   d }|   tv rtj}|S |   tv rtj}|S )N)lowerGET_COMMANDSr   	CACHE_GETSET_COMMANDS	CACHE_PUT)nameop r   n/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/sentry_sdk/integrations/redis/modules/caches.py_get_op   s   r   c                 C   s   t | ||}t|}|d}d}|jD ]}|D ]}	|	|r#d} nq|r( nqd }
|  tv r5|d }
t| t| ||||||  ||
d}|S )Nz, FT)r   descriptionkeykey_as_stringredis_commandis_cache_keyvalue)	r   r   splitcache_prefixes
startswithr   r   r   _get_cache_span_description)r   argskwargsintegrationr   r   keys_as_stringr   prefixkeer    
propertiesr   r   r   _compile_cache_span_properties   s6   


r,   c                 C   sF   t t| ||}|jot||jk}|r!|d |jtd  d }|S )Nz...)r   r   max_data_sizelen)r   r%   r&   r'   r   data_should_be_truncatedr   r   r   r$   A   s   r$   c           	   	   C   s|  t   | tj|d  |d tv r@|d ur8| tjd t|ts,tt	|
dnt|}| tj| n1| tjd n)|d tv ri|d d urit|d ts\t|d 
dnt|d }| tj| z|jj}W n ty   | }|j|jd}Y nw |d}|d ur| tj| |d	}|d ur| tj| W d    d S W d    d S 1 sw   Y  d S )
Nr   r   Tzutf-8Fr    )hostportr0   r1   )r   set_datar   	CACHE_KEYr   	CACHE_HIT
isinstancebytesr.   strencodeCACHE_ITEM_SIZEr   connection_poolconnection_kwargsAttributeErrorget_default_noder0   r1   r   NETWORK_PEER_ADDRESSNETWORK_PEER_PORT)	spanredis_clientr+   return_valuesizeconnection_paramsdefault_noder0   r1   r   r   r   _set_cache_dataN   sF   


	
("rF   N)__doc__sentry_sdk.constsr   r   #sentry_sdk.integrations.redis.utilsr   r   sentry_sdk.utilsr   r   r   typingr   sentry_sdk.integrations.redisr   sentry_sdk.tracingr   r   r   r   r,   r$   rF   r   r   r   r   <module>   s    "