
    j,g                         d dl Z d dlZd dlZd dlmZmZ d dlZd dlmZm	Z	 dedee	df   dee	   fdZ
d	 Zd
 Zd Zd Zd ZddZd Zd Zd Zd Zy)    N)ListTuple)KeysTKeyTkeysargs.returnc                     	 t        |        t        | t        t        f      r| g} nt	        |       } |r| j                  |       | S # t
        $ r | g} Y #w xY wN)iter
isinstancebytesstrlist	TypeErrorextend)r   r   s     p/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/redis/commands/helpers.pylist_or_argsr   
   s\    	T
 dUCL)6D:D DK	  vs   0A AAc                 Z    t        | t              r| j                  dd      n| }|dk(  ry|S )zAReturn the decoded binary string, or a string, depending on type.utf-8replacenullN)r   r   decode)xrs     r   	nativestrr      s,    (21e(<)$!AF{H    c                 F    | | S | D cg c]  }t        |       c}S c c}w )z9Given a list of binaries, return the stringified version.)r   )r   objs     r   delistr    #   s$    y&'(sIcN(((s   c                 4   g }| |S | D ]  }	 |j                  t        |              |S # t        $ rH 	 |j                  t        |             n)# t        $ r |j                  t	        |             Y nw xY wY rt
        $ r |j                  d       Y w xY w)z,Optimistically parse the response to a list.N)appendint
ValueErrorfloatr   r   )responseresitems      r   parse_to_listr)   *   s    
C
 		JJs4y!	 J  	,,

5;' ,

9T?+, 	JJt	s8   +	BAB#A63B5A66B;BBc                    i }t        dt        |       d      D ]  }t        | |   t              r[|d   j	                  t        | |                	 t        | |dz      t              r#|d   j	                  t        | |dz                   qt        | |dz      t              rt        | |dz            g|d<   	 t        | |dz            || |   <    |S # t        $ r Y w xY w# t        t        f$ r | |dz      || |   <   Y w xY w)Nr      zChild iterators   )
rangelenr   r   r"   parse_list_to_dict
IndexErrorr%   r   r$   )r&   r'   is      r   r/   r/   >   s   
C1c(mQ' 3hqk4(!"))*<Xa[*IJhq1uot4)*112DXaRSe_2UV Q.&8!a%&I%JC!"3#(!a%#9HQK 3 J   z* 3#+AE?HQK 3s$   9C7C!	CC!D Dc                 N   | i S i }| D ]j  }t        |t              r|st        |      dk(  r	d||d   <   -t        |d   t              rt        |d         ||d   <   U	 	 t	        |d         ||d   <   l |S # t
        t        f$ r |d   ||d   <   Y  w xY w# t        $ r Y w xY w)Nr,   Tr   )r   r   r.   r/   r%   r   r$   r0   )r&   r'   dets      r   parse_to_dictr4   R   s    	
C #t$Cs8q=CAKA%,SV4CAK)"'A-CAK J	 ":. )"%a&CAK) s*    A88BBBB	B$#B$c                 D    dj                  d t        |       D              S )z3
    Returns a random N character long string.
     c              3   b   K   | ]'  }t        j                  t        j                         ) y wr   )randomchoicestringascii_lowercase).0r   s     r   	<genexpr>z random_string.<locals>.<genexpr>m   s$      23f,,-s   -/)joinr-   )lengths    r   random_stringr@   i   s&     77 7<V}  r   c                     t        | t              r| j                         } nt        | t              s| S t	        |       dk(  ry| j                  dd      } | j                  dd      } d|  dS )zq
    RedisGraph strings must be quoted,
    quote_string wraps given v with quotes incase
    v is a string.
    r   z""\z\\"z\")r   r   r   r   r.   r   )vs    r   quote_stringrE   r   sc     !UHHJ3
1v{			$A			#uAqc8Or   c                     t        j                   |       }| j                         D ];  }t        |t              s||   ||j	                  d      <   |j                  |       = |S )z3Decode the keys of the given dictionary with utf-8.r   )copyr   r   r   r   pop)r   newobjks      r   decode_dict_keysrK      sW    YYs^FXXZ a(.q	F188G$%JJqM Mr   c                 :   t        | t              rt        |       S | yt        | t        t        f      r#ddj                  t        t        |              dS t        | t              r*ddj                  d | j                         D               dS t        |       S )a  
    Turn a parameter value into a string suitable for the params header of
    a Cypher command.
    You may pass any value that would be accepted by `json.dumps()`.

    Ways in which output differs from that of `str()`:
        * Strings are quoted.
        * None --> "null".
        * In dictionaries, keys are _not_ quoted.

    :param value: The parameter value to be turned into a string.
    :return: string
    r   [,]{c              3   B   K   | ]  \  }}| d t        |         yw):N)stringify_param_value)r<   rJ   rD   s      r   r=   z(stringify_param_value.<locals>.<genexpr>   s&     Y41as!$9!$<#=>Ys   })
r   r   rE   r   tupler>   maprS   dictitems)values    r   rS   rS      s     %E""		ED%=	)388C 5u=>?qAA	E4	 CHHY5;;=YYZZ\]]5zr   c                 \   t        | t        j                        s$t        | t        j                  j                        r%| j                  j
                  j                  d      S t        | t        j                  j                        r%| j                  j
                  j                  d      S y )Nprotocol)
r   redisRedisasyncioconnection_poolconnection_kwargsgetclusterAbstractRedisClusternodes_manager)clients    r   get_protocol_versionrf      sw    &%++&*VU]]=P=P*Q%%77;;JGG	FEMM>>	?##5599*EE 
@r   )
   )rG   r8   r:   typingr   r   r\   redis.typingr   r   r   r   r    r)   r/   r4   r@   rE   rK   rS   rf    r   r   <module>rk      sq         $u E$)$4 d ")((.(6Fr   