
    h+                         d dl mZ d dlmZmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZ d	d
gZ G d de      Z G d de      Zy)    )	getLogger)AnyUnion   )ConnectionErrorInvalidResponseResponseError)
EncodableT   )_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORs
   invalidate
invalidatec                   J     e Zd ZdZ fdZd Zd	dZd	dZd Zd Z	d Z
 xZS )
_RESP3ParserzRESP3 protocol implementationc                 T    t         |   |       | j                  | _        d | _        y Nsuper__init__handle_pubsub_push_responsepubsub_push_handler_funcinvalidations_push_handler_funcselfsocket_read_size	__class__s     _/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/redis/_parsers/resp3.pyr   z_RESP3Parser.__init__   '    )*(,(H(H%/3,    c                 V    t        d      }|j                  dt        |      z          |S Npush_responsezPush response: r   infostrr   responseloggers      r   r   z(_RESP3Parser.handle_pubsub_push_response   '    ?+%H56r    c                    | j                   r| j                   j                         nd }	 | j                  ||      }| j                   j                          |S # t        $ r) | j                   r| j                   j                  |        w xY w)Ndisable_decodingpush_request)_bufferget_pos_read_responsepurgeBaseExceptionrewind)r   r-   r.   posresults        r   read_responsez_RESP3Parser.read_response   s    (,dll""$$
	((!1 ) F LL M  	||##C(	s   A 2Bc                 .   | j                   j                         }|st        t              |d d |dd  }}|dv ra|dk(  r$| j                   j	                  t        |            }|j                  dd      }| j                  |      }t        |t              r||S |dk(  rn|dk(  ry |d	v rt        |      S |d
k(  rt        |      S |dk(  r|dk(  S |dk(  r&| j                   j	                  t        |            }nL|dk(  r)| j                   j	                  t        |            dd  }n|dk(  r2t        t        |            D cg c]  }| j                  |       }}n|dk(  r>t        t        |            D cg c]  }| j                  |       }}	 t        |      }n|dk(  rFi }t        t        |            D ]*  }| j                  |      }	| j                  ||      ||	<   , |}nY|dk(  rFt        t        |            D cg c]  }| j                  ||       }}| j                  |||      }nt        d|      t        |t               r|du r| j"                  j                  |      }|S c c}w c c}w # t        $ r Y Fw xY wc c}w Nr   )   -   !r;   zutf-8replace)errors   +   _)   :   (   ,   #   t   $   =      *)r-      ~   %r,      >zProtocol Error: F)r/   readliner   r   readintdecodeparse_error
isinstancefloatranger1   set	TypeErrorhandle_push_responser   bytesencoder
r   r-   r.   rawbyter(   error_	resp_dictkeys
             r   r1   z_RESP3Parser._read_response'   s   ll##%!"@AARa#ab'h <t|<<,,S];wyAH$$X.E %1
 LT\T\\!x= T\?"T\t##T\||((X7HT\||((X7;HT\ s8}--A ##5E#F-  
 T\
 s8}--A ##5E#F-  x= T\ I3x=)));K)L!%!4!4%5L "5 "	# *
 !HT\
 s8}-	 .A ##%5L $  .	   00*LH "$4SG"<==h&+;u+D||**84HY   s$   I9<I>J 
J	JJc                     |d   t         v r| j                  |      }n| j                  |      }|s| j                  ||      S |S Nr   r,   _INVALIDATION_MESSAGEinvalidation_push_handler_funcr   r1   r   r(   r-   r.   ress        r   rV   z!_RESP3Parser.handle_push_response   sV    A;//55h?C//9C&&!1 '   Jr    c                     || _         y r   r   r   r   s     r   set_pubsub_push_handlerz$_RESP3Parser.set_pubsub_push_handler   
    (@%r    c                     || _         y r   rd   r   r   s     r   set_invalidation_push_handlerz*_RESP3Parser.set_invalidation_push_handler   
    .M+r    FF)__name__
__module____qualname____doc__r   r   r7   r1   rV   rj   ro   __classcell__r   s   @r   r   r      s-    '4

Yv
ANr    r   c            
       n     e Zd Z fdZd Z	 ddedefdZ	 ddededeee	df   fdZ
d	 Zd
 Zd Z xZS )_AsyncRESP3Parserc                 T    t         |   |       | j                  | _        d | _        y r   r   r   s     r   r   z_AsyncRESP3Parser.__init__   r   r    c                 V    t        d      }|j                  dt        |      z          |S r"   r$   r'   s      r   r   z-_AsyncRESP3Parser.handle_pubsub_push_response   r*   r    r-   r.   c                   K   | j                   rH| xj                  dj                  | j                         z  c_        | j                   j                          d| _        | j                  ||       d {   }| j                          |S 7 w)Nr    r   r,   )_chunksr/   joinclear_posr1   _clear)r   r-   r.   r(   s       r   r7   z_AsyncRESP3Parser.read_response   su      <<LLCHHT\\22LLL 	,,-L - 
 
 	
s   A2B4B5BreturnNc                   K   | j                   r| j                  st        t              | j	                          d {   }|d d |dd  }}|dv ro|dk(  r"| j                  t        |             d {   }|j                  dd      }| j                  |      }t        |t              r| j                          ||S |dk(  rn|dk(  ry |d	v rt        |      S |d
k(  rt        |      S |dk(  r|dk(  S |dk(  r$| j                  t        |             d {   }n{|dk(  r'| j                  t        |             d {   dd  }nO|dk(  r;t        t        |            D cg c]  }| j                  |       d {    }}n|dk(  rFt        t        |            D cg c]  }| j                  |       d {    }}	 t        |      }n|dk(  rVi }t        t        |            D ]:  }| j                  |       d {   }	| j                  ||       d {   ||	<   < |}ni|dk(  rVt        t        |            D cg c]  }| j                  ||       d {    }}| j!                  |||       d {   }nt#        d|      t        |t$              r|du r| j                  j                  |      }|S 7 7 [7 7 7 Wc c}w 7 c c}w # t        $ r Y Xw xY w7 7 7 c c}w 7 zwr9   )_streamrX   r   r   	_readline_readrN   rO   rP   rQ   r   rR   rS   r1   rT   rU   rV   r   rW   rY   s
             r   r1   z _AsyncRESP3Parser._read_response   sK     ||4<<!"@AANN$$Ra#ab'h <t|!%CM!::wyAH$$X.E %1
 LT\T\\!x= T\?"T\t##T\!ZZH66HT\"jjX77<HT\ s8}--A **<L*MMM-  
 T\
 s8}--A **<L*MMM-  x= T\ I3x=) //AQ/RR'+':':%5L (; ( "	# *
 !HT\ s8}- .A	 --)9 .    .   "66*L H "$4SG"<==h&+;u+D||**84Hy % ;< 7 8 N N   S"s  ;LK
4L2K3B$LK(L K$L%K?K
 KL%K!?K
 K!L	K& 4LK5	L#K7$'LK;&K9
'K;-LL ALLLLKLK!!L&	K2/L1K22L7L9K;;Lc                    K   |d   t         v r| j                  |      }n| j                  |      }|s| j                  ||       d {   S |S 7 wra   rb   re   s        r   rV   z&_AsyncRESP3Parser.handle_push_response  sd     A;//55h?C//9C,,!1 -    J	s   AA	A
Ac                     || _         y r   rh   ri   s     r   rj   z)_AsyncRESP3Parser.set_pubsub_push_handler  rk   r    c                     || _         y r   rm   rn   s     r   ro   z/_AsyncRESP3Parser.set_invalidation_push_handler!  rp   r    rq   )rr   rs   rt   r   r   boolr7   r   r
   r	   r1   rV   rj   ro   rv   rw   s   @r   ry   ry      so    4
 DI $<@  DIa $a<@a	z=$.	/aF
ANr    ry   N)loggingr   typingr   r   
exceptionsr   r   r	   r
   baser   r   socketr   rc   r   ry    r    r   <module>r      sF      H H  + 2&5 FN9 FNRMN MNr    