
    \j
                         d 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
mZ erddlmZ ddlmZ dd	lmZ dd
l
mZmZ dddeddddfdZdddedddefdZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)z,
Code used for the Queries module in Sentry
    )OPSPANDATA)_get_safe_command)StreamedSpan)capture_internal_exceptions)TYPE_CHECKING)Redis)RedisIntegration)Span)AnyUnionintegrationr
   redis_commandargsztuple[Any, ...]returndict[str, Any]c                 F    t        | ||      }t        j                  |d}|S )N)opdescription)_get_db_span_descriptionr   DB_REDIS)r   r   r   r   
propertiess        W/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/redis/modules/queries.py_compile_db_span_propertiesr      s-     +;tLK kk"J
     command_namec                     |}t               5  t        ||      }d d d        | j                  r6t        |      | j                  kD  r|d | j                  t        d      z
   dz   }|S # 1 sw Y   MxY w)Nz...)r   r   max_data_sizelen)r   r   r   r   s       r   r   r       st     K	$	& <'d;<   S%58Q8Q%Q!"JK$=$=E
$JKeS< <s   A&&A/Nc                 L   |j                  d      }|j                  d      }|j                  d      }t        | t              r| j                  t        j
                  d       | j                  t        j                  d       |)| j                  t        j                  t        |             | | j                  t        j                  |       |!| j                  t        j                  |       y y | j                  t        j                  d       | j                  t        j                  d       |)| j                  t        j                  t        |             | | j                  t        j                  |       |!| j                  t        j                  |       y y )Ndbhostportrediszredis-py)get
isinstancer   set_attributer   DB_SYSTEM_NAMEDB_DRIVER_NAMEDB_NAMESPACEstrSERVER_ADDRESSSERVER_PORTset_data	DB_SYSTEMDB_NAME)spanconnection_paramsr!   r"   r#   s        r   _set_db_data_on_spanr3   .   sF    
		t	$B  (D  (D$%822G<822J?>x44c"g>x66=x33T:  	h(('2h--z:>MM(**CG4MM(1148MM(..5 r   c                 d    	 t        | |j                  j                         y # t        $ r Y y w xY w)N)r3   connection_poolconnection_kwargsAttributeError)r1   redis_instances     r   _set_db_datar9   P   s/    T>#A#A#S#ST s    # 	//)r1   Union[Span, StreamedSpan]r2   r   r   N)r1   r:   r8   z
Redis[Any]r   N)__doc__sentry_sdk.constsr   r   #sentry_sdk.integrations.redis.utilsr   sentry_sdk.tracesr   sentry_sdk.utilsr   typingr   r$   r	   sentry_sdk.integrations.redisr
   sentry_sdk.tracingr   r   r   r+   r   r   r3   r9    r   r   <module>rD      s    + A * 8  >'!
#
47
?P

#36>O6
%6:J6	6D
%7C	r   