
    <i                        U d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ  e j        d          Ze                    e j                   	 d dlZdZn# e$ r dZY nw xY wdede fdZ!e G d d                      Z"e G d d                      Z#d ej$        %                                D             Z&ee'e(f         e)d<   de'de(fdZ*e G d d                      Z+ G d de	          Z, G d de          Z-e.d k    rI e-d!          Z/e/0                                 e/1                                 e/2                                 dS dS )"    N)	dataclass)BufferedIOBase)count)ThreadingTCPServerStreamRequestHandler)DictTupleAnyUnion)DefaultParser)Lock)	FakeRedis)
FakeServer)VersionType
ServerType	fakeredisTFvaluereturnc                 r    t          | t                    r| S t          |                                           S N)
isinstancebytesstrencode)r   s    /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fakeredis/_tcp_server.pyto_bytesr      s1    % u::    c                   $    e Zd ZU eed<   eed<   dS )Client
connectionclient_addressN)__name__
__module____qualname__r   __annotations__int r   r   r   r   #   s*         r   r   c                   &    e Zd ZU eed<   defdZdS )Readerreaderr   c                 X   | j                                                                         }|dd         |dd          }}|dk    r@t          |          }d g|z  }t	          |          D ]}|                                 ||<   |S |dk    rl| j                             t          |          dz                                             }t          |          t          |          k    rt                      |S |dk    rt          |          S |dk    r|S |dk    rt          |          S d S )	Nr         *   $      :   +   -)
r*   readlinestripr&   rangeloadreadlen
ValueError	Exception)selflineprefixrestlengtharrayibulk_strings           r   r6   zReader.load-   s    {##%%++--AaCy$qrr(T>>YYFFVOE6]] ' '99;;aLT>>+**3t99q=99??AAK;3t99,, ll"T>>t99T>>KT>>T??"tr   N)r"   r#   r$   r   r%   r
   r6   r'   r   r   r)   r)   )   s=         c      r   r)   c                 F    i | ]\  }}t          |          t          u||S r'   )typedict).0kvs      r   
<dictcomp>rI   D   s5     / / /QQt@S@SAq@S@S@Sr   _EXCEPTION_PREFIX_MAPec                 l    t                                           D ]\  }}t          | |          r|c S dS )NERR)rJ   itemsr   )rK   rG   rH   s      r   _get_exception_prefixrO   I   sF    %++--  1a 	HHH	5r   c                   0    e Zd ZU eed<   ddededdfdZdS )	WriterwriterFr   	dump_bulkr   Nc                     t          |t                    r2| j                            d| d                                           d S t          |t
          t          f          rt          |          }|sd|v sd|v rT| j                            dt          t          |                                                    z   dz   |z   dz              d S | j                            d|z   dz              d S t          |t          t          f          r[| j                            dt          |           d                                           |D ]}|                     |d	
           d S |.| j                            d                                           d S t          |t                    rOt          |          }| j                            d| d|j        d          d                                           d S d S )N:z
      
r.   s   
r1   *T)rS   z$-1
- r   )r   r&   rR   writer   r   r   r   r8   listsetdumpr:   rO   args)r;   r   rS   itemr=   s        r   r^   zWriter.dumpT   s   eS!! 	IKo%ooo446677777U|,, 	IUOOE :EUNNeunn!!$SZZ)?)?)A)A"AG"Ke"SV]"]^^^^^!!$,"899999c{++ 	IK2#e**22299;;<<< 0 0		$$	////0 0]Ki..0011111y)) 	I*511FK>&>>5:a=>>>EEGGHHHHH	I 	Ir   )F)r"   r#   r$   r   r%   r
   boolr^   r'   r   r   rQ   rQ   P   sZ         I I# I$ I4 I I I I I Ir   rQ   c                   @     e Zd ZU ded<   d fdZddZd fdZ xZS )	TCPFakeRequestHandlerTcpFakeServerserverr   Nc                    t                                                       | j        | j        j        v r| j        j        | j                 | _        d S t          t          | j        j                  | j                  | _        t          r{| j        j
                            t          j                   | j        j
                            t          j                   | j        j
                            t          j                   t!          | j                  | _        t'          | j                  | _        | j        | j        j        | j        <   d S )N)re   )r    r!   )supersetupr!   re   clientscurrent_clientr   r   fake_serverlua_scripts_supportedr    script_loadr   LUA_RELEASE_SCRIPTLUA_EXTEND_SCRIPTLUA_REACQUIRE_SCRIPTr)   rfiler*   rQ   wfilerR   r;   	__class__s    r   rh   zTCPFakeRequestHandler.setupk   s   $+"555"&+"5d6I"JD"($DK,CDDD#2# # #D % V#.::4;RSSS#.::4;QRRR#.::4;TUUU ,,DK ,,DK7;7JDK 3444r   c                 <   t                               d| j        d          d           	 	 | j                                        | _        t                               d| j        d          d| j                    t          | j                  dk    rN| j        d                                         dk    r+t                               d	| j        d          d
           d S  | j        j	        j
        | j         }t                               d| j        d          d|            | j                            |           n]# t          $ rP}t                               d| j        d          d|            | j                            |           Y d }~d S d }~ww xY ws)Nz+++ r   z
 connectedTz>>> z: r,   s   SHUTDOWNz*** z requested shutdownz<<< z!!! )LOGGERdebugr!   r*   r6   datar8   upperrj   r    execute_commandrR   r^   r:   )r;   resrK   s      r   handlezTCPFakeRequestHandler.handle|   s   >D/2>>>???	 K,,..	ID$7$:IIdiIIJJJty>>Q&&49Q<+=+=+?+?;+N+NLL!S(;A(>!S!S!STTTEDd)4DdiPCD$7$:CCcCCDDD  %%%%   AD$7$:AAaAABBB  ###	s    B2D?  AD? ?
F	AFFc                     | j         j        | j        j                 j                                         | j         j        | j        j        = t                                                       d S r   )re   ri   rj   r!   r    closerg   finishrs   s    r   r   zTCPFakeRequestHandler.finish   sU    D/>?JPPRRRK 3 BCr   )r   N)r"   r#   r$   r%   rh   r|   r   __classcell__rt   s   @r   rc   rc   h   s         K K K K K K"   "         r   rc   c            	       Z     e Zd Z	 	 	 d	deeeeef         ef         de	de
def fdZ xZS )
rd   Tredis   r   server_addressbind_and_activateserver_typeserver_versionc                     d| _         t                                          |t          |           d| _         d| _        t          ||          | _        t          d          | _        i | _	        d S )NT)r   versionr   )
daemon_threadsrg   __init__rc   allow_reuse_addressr   rk   r   
client_idsri   )r;   r   r   r   r   rt   s        r   r   zTcpFakeServer.__init__   sh     #)>@QRRR"#' %+~VVV((*,r   )Tr   r   )r"   r#   r$   r	   r   r   r   	bytearrayr&   ra   r   r   r   r   r   s   @r   rd   rd      s         #'")&,- -eC	$9:C?@-  -  	-
 $- - - - - - - - - -r   rd   __main__)	localhosti8J  )3loggingdataclassesr   ior   	itertoolsr   socketserverr   r   typingr   r	   r
   r   redis.connectionr   
redis.lockr   r   r   r   fakeredis._typingr   r   	getLoggerrv   setLevelDEBUGluparl   ImportErrorr   r   r   r)   EXCEPTION_CLASSESrN   rJ   r:   r   r%   rO   rQ   rc   rd   r"   re   serve_foreverserver_closeshutdownr'   r   r   <module>r      s,    ! ! ! ! ! !             A A A A A A A A * * * * * * * * * * * * * * * * * *                         5 5 5 5 5 5 5 5		;	'	'    
"KKK  " " "!"C E            
        4/ /"4::<</ / / tIsN+   
Y 3     I I I I I I I I.( ( ( ( (0 ( ( (V- - - - -& - - -" z]/00F


OO	 s   7A> >BB