
    1yi.                         d dl mZmZmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZ d dlmZ  ed      Z G d d	      Zy)
    )AnyListUnionDictN)_msgs)commandDbIndexInt)SimpleErrorOKSimpleStringDatabase	casematch)
ClientInfos   PONGc                   *    e Zd Zdededdf fdZ eef      dedefd       Z edef      dedee	e   ee
f   fd	       Z ed
ef      dede
fd       Z edeefd      dedede
fd       Z edefd      dede
fd       Z eddd      defd       Z eddd      defd       Z eddd      defd       Z eddef      dedefd       Z eddef      dedeeef   fd       Z eddef      dede
fd        Z xZS )!ConnectionCommandsMixinargskwargsreturnNc                 @    t        t        | 
  |i | |  |  |  |  |  y N)superr   __init__)selfr   r   	__class__s      l/var/www/html/content_weaver/venv/lib/python3.12/site-packages/fakeredis/commands_mixins/connection_mixin.pyr   z ConnectionCommandsMixin.__init__   s'    %t5tFvF    messagec                     |S r    )r   r   s     r   echozConnectionCommandsMixin.echo   s    r   r    c                     t        |      dkD  r*t        j                  j                  d      }t	        |      | j
                  r%| j                  j                  dk(  rd|r|d   gS dgS |r|d   S t        S )N   ping   s   pongr   r   )	lenmsgsWRONG_ARGS_MSG6formatr   _pubsub_client_infoprotocol_versionPONG)r   r   msgs      r   r$   zConnectionCommandsMixin.ping   sr    t9q=&&--f5Cc""<<D-->>!CT!W66#66"47,,r   SELECT)namefixedindexc                 X    | j                   j                  |   | _        || _        t        S r   )_serverdbs_db_db_numr   )r   r2   s     r   selectzConnectionCommandsMixin.select#   s$    <<##E*	r   zCLIENT SETINFO)r0   r1   repeatlib_datavaluec                     t        |d      r$|j                  d      | j                  d<   t        S t        |d      r$|j                  d      | j                  d<   t        S t	        t
        j                        )Ns   LIB-NAMEutf-8zlib-names   LIB-VERzlib-ver)r   decoder+   r   r   r'   SYNTAX_ERROR_MSG)r   r:   r;   s      r   client_setinfoz&ConnectionCommandsMixin.client_setinfo)   sc    X{+,1LL,ADj)IXz*+0<<+@Di(I$//00r   zCLIENT SETNAMEc                 J    |j                  d      | j                  d<   t        S )Nr=   r0   )r>   r+   r   )r   r;   s     r   client_setnamez&ConnectionCommandsMixin.client_setname3   s     $)LL$9&!	r   zCLIENT GETNAMEc                 X    | j                   j                  dd      j                  d      S )Nr0    r=   )r+   getencoder   s    r   client_getnamez&ConnectionCommandsMixin.client_getname8   s&      $$VR077@@r   z	CLIENT IDc                 :    | j                   j                  dd      S )Nidr#   )r+   rE   rG   s    r   client_getidz$ConnectionCommandsMixin.client_getid<   s      $$T1--r   zCLIENT INFOc                 6    | j                   j                         S r   )r+   as_bytesrG   s    r   client_info_cmdz'ConnectionCommandsMixin.client_info_cmd@   s      ))++r   zCLIENT LISTc                    | j                   j                  j                         }d}t               }|t	        |      k  rt        ||   d      r|dz   t	        |      k  r|dz  }t        ||   d      r`|dz   t	        |      k  rO|dz  }|t	        |      k  rU|j                  t        j                  ||                |dz  }|t	        |      k  r;nt        t        j                        |t	        |      k  rt	        |      dkD  r!|D cg c]  }|j                  d   |v s| }}|D cg c]  }|j                  j                          }}dj                  |      S c c}w c c}w )Nr   s   TYPEr#   r%   s   IDrJ      
)r4   socketscopysetr&   r   addr
   r>   r   r'   r?   r+   rM   join)r   r   rQ   i
filter_idssockitemress           r   client_list_cmdz'ConnectionCommandsMixin.client_list_cmdD   sC   ,,&&++-U
#d)ma'*q1us4y/@Qa%(QUSY->Q#d)mNN3::d1g#67FA #d)m "$"7"788 #d)m z?Q(/Y43D3DT3Jj3XtYGY8?@t  ))+@@zz# Z@s   E"$E".!E'HELLOc                    t        |      dk(  rdnt        j                  |d         | j                  d<   d}|t        |      k  r||   dk(  r;|dz   t        |      k  r*||dz      j                  d      | j                  d<   |dz  }n|||   dk(  r[|dz   t        |      k  rJ||dz      }||dz      }| j                  j
                  j                  |      j                  |       |d	z  }nt        t        j                        |t        |      k  rd
t        j                  | j                  d   | j                  j                  dd      ddg d}|S )Nr   r%   respr#   s   SETNAMEr=   r0   s   AUTH   	fakeredisrJ   
standalonemaster)serverversionprotorJ   moderolemodules)r&   r
   r>   r+   r4   _aclget_user_aclcheck_passwordr   r'   r?   r`   __version__rE   )r   r   rV   userpassworddatas         r   hellozConnectionCommandsMixin.helloX   sJ   ),TaASZZQ=P&!#d)mAw*$QT):,0QK,>,>w,G!!&)QaG#AD	(9AE{A;!!..t4CCHMQ!$"7"788 #d)m " ,,&&v.##''a0 
 r   zCLIENT MAINT_NOTIFICATIONSc                      y r   r    )r   r   s     r   client_maint_notificationsz2ConnectionCommandsMixin.client_maint_notificationsr   s    r   )__name__
__module____qualname__r   r   r   bytesr!   r   r   r   r$   r	   r8   r@   rB   rH   intrK   rN   r[   r   strrp   rr   __classcell__)r   s   @r   r   r      s   c S T  eXE e   R%-% -E$u+ul*J$K - - (7*-G   .
 "5%.D1u 1U 1| 1 E1 "5(2>E l  ? ""R8A A 9A +R3.c . 4. -r"5, , 6, -r5(;U u  <& 'UH55 T#s(^  62 .b%J ,  Kr   r   )typingr   r   r   r   r`   r   r'   fakeredis._commandsr   r	   r
   fakeredis._helpersr   r   r   r   r   fakeredis.modelr   r-   r   r    r   r   <module>r~      s6    ) )  # 5 5 Q Q &Gh hr   