
    <i.                         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dS )
    )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          |           j        |i | |  |  |  |  |  d S N)superr   __init__)selfr   r   	__class__s      /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fakeredis/commands_mixins/connection_mixin.pyr   z ConnectionCommandsMixin.__init__   sJ    5%t,,5tFvFFF%    messagec                     |S r    )r   r   s     r   echozConnectionCommandsMixin.echo   s    r   r    c                     t          |          dk    r.t          j                            d          }t	          |          | j        r| j        j        dk    rd|r|d         ndgS |r|d         n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   sz    t99q==&--f55Cc"""< 	-D->!CC5T!WW#66",477,r   SELECT)namefixedindexc                 L    | 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$|                    d          | j        d<   t          S t          |d          r$|                    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)   ss    X{++ 	,1LL,A,ADj)IXz** 	+0<<+@+@Di(I$/000r   zCLIENT SETNAMEc                 J    |                     d          | j        d<   t          S )Nr=   r0   )r>   r+   r   )r   r;   s     r   client_setnamez&ConnectionCommandsMixin.client_setname3   s     $)LL$9$9&!	r   zCLIENT GETNAMEc                 ^    | j                             dd                              d          S )Nr0    r=   )r+   getencoder   s    r   client_getnamez&ConnectionCommandsMixin.client_getname8   s)     $$VR0077@@@r   z	CLIENT IDc                 8    | j                             dd          S )Nidr#   )r+   rE   rG   s    r   client_getidz$ConnectionCommandsMixin.client_getid<   s     $$T1---r   zCLIENT INFOc                 4    | j                                         S r   r+   as_bytesrG   s    r   client_info_cmdz'ConnectionCommandsMixin.client_info_cmd@   s     ))+++r   zCLIENT LISTc                    | j         j                                        }d}t                      |t	          |          k     rt          ||         d          r|dz   t	          |          k     r|dz  }t          ||         d          rt|dz   t	          |          k     r^|dz  }|t	          |          k     rE                    t          j        ||                              |dz  }|t	          |          k     Ent          t          j                  |t	          |          k     t	                    dk    rfd|D             }d |D             }d                    |          S )	Nr   s   TYPEr#   r%   s   IDc                 2    g | ]}|j         d          v |S )rJ   )r+   ).0sock
filter_idss     r   
<listcomp>z;ConnectionCommandsMixin.client_list_cmd.<locals>.<listcomp>T   s+    YYY43DT3Jj3X3Xt3X3X3Xr   c                 @    g | ]}|j                                         S r    rM   )rR   items     r   rU   z;ConnectionCommandsMixin.client_list_cmd.<locals>.<listcomp>U   s'    @@@t ))++@@@r      
)r4   socketscopysetr&   r   addr
   r>   r   r'   r?   join)r   r   rY   iresrT   s        @r   client_list_cmdz'ConnectionCommandsMixin.client_list_cmdD   sY   ,&++--UU
#d))mma'** q1us4yy/@/@Qa%(( 9QUSYY->->Q#d))mmNN3:d1g#6#6777FA #d))mm "$"7888 #d))mm z??QYYYYYYYG@@@@@zz#r   HELLOc                    t          |          dk    rdnt          j        |d                   | j        d<   d}|t          |          k     r||         dk    rB|dz   t          |          k     r,||dz                                d          | j        d<   |dz  }n||         dk    rd|dz   t          |          k     rN||dz            }||dz            }| j        j                            |                              |           |d	z  }nt          t          j
                  |t          |          k     d
t          j        | j        d         | 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?   re   __version__rE   )r   r   r^   userpassworddatas         r   hellozConnectionCommandsMixin.helloX   sm   ),TaAASZQ=P=P&!#d))mmAw*$$QT):):,0QK,>,>w,G,G!&)QaG##AD		(9(9AE{A;!..t44CCHMMMQ!$"7888 #d))mm " ,&v.#''a00 
 
 r   zCLIENT MAINT_NOTIFICATIONSc                     d S 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   rO   r`   r   strru   rw   __classcell__)r   s   @r   r   r      s+       c S T       WeXE e     WR%-% -E$u+ul*J$K - - - - W(7*---G     .-
 W"5%.DDD1u 1U 1| 1 1 1 ED1 W"5(2>>>E l    ?> W""R888A A A A 98A W+R333.c . . . 43. W-r"555, , , , 65, W-r5(;;;U u    <;& W'UH5555 T#s(^    652 W.b%JJJ ,    KJ    r   r   )typingr   r   r   r   re   r   r'   fakeredis._commandsr   r	   r
   fakeredis._helpersr   r   r   r   r   fakeredis.modelr   r-   r   r    r   r   <module>r      s    ) ) ) ) ) ) ) ) ) ) ) )     # # # # # # 5 5 5 5 5 5 5 5 5 5 Q Q Q Q Q Q Q Q Q Q Q Q Q Q & & & & & &|Gh h h h h h h h h hr   