U 췀g@sdZddlmZmZddlmZmZddlmZdZ dZ ddl m Z e rpddl mZdd lmZdd l mZmZd d Zd dZddZddZdS)z+ Code used for the Caches module in Sentry )OPSPANDATA) _get_safe_key_key_as_string)capture_internal_exceptions)getZmget)setsetex) TYPE_CHECKING)RedisIntegration)Span)AnyOptionalcCs.d}|tkrtj}n|tkr*tj}|S)N)lower GET_COMMANDSrZ CACHE_GET SET_COMMANDSZ CACHE_PUT)nameoprZ/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/redis/modules/caches.py_get_ops   rc Cst|||}t|}|d}d}|jD](}|D]} | |r0d}qHq0|r(qRq(d} |tkrj|d} t|t||||||||| d} | S)Nz, FT)r descriptionkey key_as_string redis_command is_cache_keyvalue) rrsplitZcache_prefixes startswithrrr_get_cache_span_description) rargskwargs integrationrrZkeys_as_stringrprefixZkeer propertiesrrr_compile_cache_span_propertiess8      r&cCsFtt|||}|jo"t||jk}|rB|d|jtdd}|S)Nz...)rrZ max_data_sizelen)rr!r"r#rZdata_should_be_truncatedrrrr As r c Cs`tN|tj|d|dtkr|dk rr|tjdt|tsZtt | dnt|}|tj |q|tjdnR|dt kr|ddk rt|dtst|d dn t|d}|tj |z |j j}Wn,tk r |}|j|jd}YnX|d}|dk r0|tj||d }|dk rR|tj|W5QRXdS) NrrTzutf-8Fr)hostportr(r))rset_datarZ CACHE_KEYrZ CACHE_HIT isinstancebytesr'strencodeZCACHE_ITEM_SIZErZconnection_poolZconnection_kwargsAttributeErrorZget_default_noder(r)rZNETWORK_PEER_ADDRESSZNETWORK_PEER_PORT) spanZ redis_clientr%Z return_valuesizeZconnection_params default_noder(r)rrr_set_cache_dataNs>            r3N)__doc__Zsentry_sdk.constsrrZ#sentry_sdk.integrations.redis.utilsrrZsentry_sdk.utilsrrrtypingr Zsentry_sdk.integrations.redisr Zsentry_sdk.tracingr r rrr&r r3rrrrs     "