
    j,g                        d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 	 d dl
Z
 ee
j                  j                  d      d          dk\  Zes ed      	 	 d dlZd	Z	 d dlZd	Zd d
lmZ d Zed        Zde	eef   defdZd Zdeeef   deeef   fdZd Zd Zd dZd!dZ d Z!d Z"dede#defdZ$dededefdZ%d Z&y# e$ r dZY vw xY w# e$ r dZY |w xY w# e$ r dZY w xY w)"    N)contextmanagerwraps)AnyDictMappingUnion.   z"hiredis package should be >= 3.0.0FT)metadatac                 4    ddl m}  |j                  | fi |S )z
    Returns an active Redis client generated from the given database URL.

    Will attempt to extract the database id from the path url fragment, if
    none is provided.
    r   )Redis)redis.clientr   from_url)urlkwargsr   s      e/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/redis/utils.pyr   r   !   s     #5>>#(((    c              #   T   K   | j                         }| |j                          y wN)pipelineexecute)	redis_objps     r   r   r   -   s"     A
GIIKs   &(valuereturnc                 L    t        | t              r| j                  dd      S | S )Nutf-8replace)errors)
isinstancebytesdecoder   s    r   str_if_bytesr%   4   s(    3=eU3KWY/QVr   c                 *    t        t        |             S r   )strr%   r$   s    r   safe_strr(   :   s    |E"##r   dictsc                  :    i }| D ]  }|j                  |        |S )za
    Merge all provided dicts into 1 dict.
    *dicts : `dict`
        dictionaries to merge
    )update)r)   mergedds      r   
dict_merger.   >   s+     F a Mr   c                 .    t         j                  | |      S r   )dictfromkeys)key_listcallbacks     r   list_keys_to_dictr4   L   s    ==8,,r   c                     t               }|j                         D ]  }|D ]  }|j                  |         t        |      S )z
    Merge all items in `res` into a list.

    This command is used when sending a command to multiple nodes
    and the result from each node should be merged into a single list.

    res : 'dict'
    )setvaluesaddlist)commandresresultvr   s        r   merge_resultr>   P   sG     UFZZ\  	EJJu	 <r   c                 t    dd l }d|  d}|r	|d| dz  }|r	|d| dz  }|j                  |t        |       y )Nr   zCall to deprecated r
   z ()z -- Deprecated since version )category
stacklevel)warningswarnDeprecationWarning)namereasonversionrB   rC   msgs         r   warn_deprecatedrJ   b   sR    vQ
'CF81~.wiq99MM# 2zMJr   c                       fd}|S )z5
    Decorator to mark a function as deprecated.
    c                 6     t                fd       }|S )Nc                  N    t        xs j                  d        | i |S )Nr   )rB   )rJ   __name__)argsr   funcrF   rG   rH   s     r   wrapperz7deprecated_function.<locals>.decorator.<locals>.wrappers   s*    D1DMM67qQ(((r   r   )rP   rQ   rF   rG   rH   s   ` r   	decoratorz&deprecated_function.<locals>.decoratorr   s     	t	) 
	) r    )rG   rH   rF   rR   s   ``` r   deprecated_functionrT   m   s    
 r   c                  ^   dt         j                  j                  j                  j	                         vryt        j
                  d      } | j                  t         j                         t        j                         }|j                  t         j                         | j                  |       yy)zo
    Set up a logger that log info logs to stdout.
    (This is used by the default push response handler)
    push_responseN)
loggingrootmanager
loggerDictkeys	getLoggersetLevelINFOStreamHandler
addHandler)loggerhandlers     r   _set_info_loggerrc   }   sy    
 gll22==BBDD""?3%'')&'" Er   c                  j    	 t        j                  d      } | S # t         j                  $ r d} Y | S w xY w)Nredisz99.99.99)r   rH   PackageNotFoundError)libvers    r   get_lib_versionrh      s?    !!'* M (( Ms    22
host_error	exceptionc                     |j                   sd|  dS t        |j                         dk(  rd|j                   d    d|  dS d|j                   d    d|  d|j                   d    dS )NzError connecting to r
      zError r   z connecting to z. )rO   len)ri   rj   s     r   format_error_messagern      s~    >>%j\33	Y^^		!	q)*/*QGG Y^^A&'zl"~~a !$	
r   version1version2c                 <   t        t        t        | j                  d                  }t        t        t        |j                  d                  }t	        |      t	        |      kD  r9t	        |      t	        |      z
  }t        |      D ]  }|j                  d        nOt	        |      t	        |      k  r8t	        |      t	        |      z
  }t        |      D ]  }|j                  d        t        |      D ]  \  }}||   ||   kD  r y||   ||   k  s y y)z
    Compare two versions.

    :return: -1 if version1 > version2
             0 if both versions are equal
             1 if version1 < version2
    r
   r   rl   )r9   mapintsplitrm   rangeappend	enumerate)ro   rp   num_versions1num_versions2diff_ivers           r   compare_versionsr      s    S(.."567MS(.."567M
=C..=!C$66t 	$A  #	$	]	c-0	0=!C$66t 	$A  #	$ M* 3mA..1a 00	 r   c                 ~    t        | t              r| j                  d      S t        | t              r| S t	        d      )Nr   z$Key must be either a string or bytes)r!   r"   r#   r'   	TypeError)keys    r   ensure_stringr      s6    #uzz'""	C	
>??r   ) r      )r   r   N)'rW   
contextlibr   	functoolsr   typingr   r   r   r	   hiredisrt   __version__ru   HIREDIS_AVAILABLEImportErrorsslSSL_AVAILABLEcryptographyCRYPTOGRAPHY_AVAILABLE	importlibr   r   r   r'   r"   r%   r(   r.   r4   r>   rJ   rT   rc   rh   BaseExceptionrn   r   r   rS   r   r   <module>r      sr    %  , , G//55c:1=>!C>?? 
M#! 	)  c5j) c $wsCx( T#s(^ -$K 
#	
S 	
] 	
s 	
s c c <@_    M  #"#s5   5C C C C
CCCC%$C%