
    ng\j*                         S SK Jr  S SKJrJr  SSKJrJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJr  SS	KJr   " S
 S\\5      r " S S\\5      rg)    )	getLogger)AnyUnion   )ConnectionErrorInvalidResponseResponseError)
EncodableT)SENTINEL   )AsyncPushNotificationsParserPushNotificationsParser_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORc                   v   ^  \ rS rSrSrU 4S jrS rSS\4S\\	\
4   4S jjrSS\4S\\	\
4   4S jjrS	rU =r$ )
_RESP3Parser   zRESP3 protocol implementationc                 ~   > [         TU ]  U5        U R                  U l        S U l        S U l        S U l        S U l        g N)super__init__handle_pubsub_push_responsepubsub_push_handler_funcnode_moving_push_handler_funcmaintenance_push_handler_func#oss_cluster_maint_push_handler_funcinvalidation_push_handler_funcselfsocket_read_size	__class__s     O/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/redis/_parsers/resp3.pyr   _RESP3Parser.__init__   s?    )*(,(H(H%-1*-1*370.2+    c                 V    [        S5      nUR                  S[        U5      -   5        U$ Npush_responsezPush response: r   debugstrr    responseloggers      r#   r   (_RESP3Parser.handle_pubsub_push_response   s'    ?+&X67r%   Ftimeoutc                 `   U R                   b  U R                   R                  5       OS n U R                  UUUS9nU R                   b   U R                   R                  5         U$ U$ ! [         a     U$ f = f! [
         a*    U R                   b  U R                   R                  U5        e f = f)Ndisable_decodingpush_requestr0   )_bufferget_pos_read_responsepurgeAttributeErrorBaseExceptionrewind)r    r3   r4   r0   posresults         r#   read_response_RESP3Parser.read_response    s     )-(@dll""$d	((!1) ) F ||'LL&&(
 M6M	 &  M	  	||'##C(	s   A9 
A( (
A65A694B-c           	      N   U R                   R                  US9nU(       d  [        [        5      eUS S USS  peUS;   ac  US:X  a#  U R                   R	                  [        U5      US9nUR                  SSS9nU R                  U5      n[        U[        5      (       a  UeU$ US:X  a  GOUS	:X  a  g US
;   a  [        U5      $ US:X  a  [        U5      $ US:X  a  US:H  $ US:X  a%  U R                   R	                  [        U5      US9nGOXUS:X  a(  U R                   R	                  [        U5      US9SS  nGO*US:X  a2  [        [        U5      5       Vs/ s H  nU R                  XS9PM     nnOUS:X  a2  [        [        U5      5       Vs/ s H  nU R                  XS9PM     nnOUS:X  aB  0 n	[        [        U5      5       H%  nU R                  XS9n
U R                  UUUS9X'   M'     U	nOrUS:X  a]  [        [        U5      5       Vs/ s H  nU R                  UUUS9PM     nnU R                  U5      nU(       a  U$ U R                  UUS9$ [        SU< 35      e[        U[        5      (       a   USL a  U R                  R                  U5      nU$ s  snf s  snf s  snf )N)r0   r      -   !rC   utf-8replaceerrors   +   _   :   (   ,   #   t   $   =      *)r3   r0      ~   %r2      >r3   r4   Protocol Error: F)r5   readliner   r   readintdecodeparse_error
isinstancefloatranger7   handle_push_responser   bytesencoder)r    r3   r4   r0   rawbyter-   error_	resp_dictkeys              r#   r7   _RESP3Parser._read_response;   s    ll##G#4!"@AARa#ab'h <t|<<,,S]G,LwyAH$$X.E %11
 LT\T\\!x= T\?"T\t##T\||((X(HHT\||((X(HLHT\ s8}--A ##5E#W-  H
 T\
 s8}--A ##5E#W-  H
 T\ I3x=)))%5 *  "&!4!4%5!-# "5 "		 * !HT\ s8}- .A ##%5!-# $ 
 .   00:H &&!1) '  
 "$4SG"<==h&&+;u+D||**84Hm,s   JJJ")r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r_   objectr>   r7   __static_attributes____classcell__r"   s   @r#   r   r      s^    '3 (0	 uf}%	: (0	h uf}%	h hr%   r   c            
       n   ^  \ rS rSrU 4S jrS r SS\S\4S jjr SS\S\S\\	\
S4   4S	 jjrS
rU =r$ )_AsyncRESP3Parser   c                 T   > [         TU ]  U5        U R                  U l        S U l        g r   )r   r   r   r   r   r   s     r#   r   _AsyncRESP3Parser.__init__   s'    )*(,(H(H%.2+r%   c                 ^   #    [        S5      nUR                  S[        U5      -   5        U$ 7fr'   r)   r,   s      r#   r   -_AsyncRESP3Parser.handle_pubsub_push_response   s*     ?+&X67s   +-r3   r4   c                    #    U R                   (       aH  U =R                  SR                  U R                   5      -  sl        U R                   R                  5         SU l        U R                  XS9I S h  vN nU R                  5         U$  N7f)Nr%   r   rW   )_chunksr5   joinclear_posr7   _clear)r    r3   r4   r-   s       r#   r>   _AsyncRESP3Parser.read_response   sr      <<LLCHHT\\22LLL 	,,- - 
 
 	
s   A3B5B6BreturnNc                 D  #    U R                   (       a  U R                  (       d  [        [        5      eU R	                  5       I S h  vN nUS S USS  pTUS;   ar  US:X  a"  U R                  [        U5      5      I S h  vN nUR                  SSS9nU R                  U5      n[        U[        5      (       a  U R                  5         UeU$ US:X  a  GOUS:X  a  g US	;   a  [        U5      $ US
:X  a  [        U5      $ US:X  a  US:H  $ US:X  a$  U R                  [        U5      5      I S h  vN nGOUS:X  a'  U R                  [        U5      5      I S h  vN SS  nGO^US:X  a;  [        [        U5      5       Vs/ s H  nU R                  US9I S h  vN PM     nnGOUS:X  a:  [        [        U5      5       Vs/ s H  nU R                  US9I S h  vN PM     nnOUS:X  aP  0 n[        [        U5      5       H3  nU R                  US9I S h  vN n	U R                  XS9I S h  vN X'   M5     UnOUS:X  ar  [        [        U5      5       Vs/ s H  nU R                  XS9I S h  vN PM     nnU R                  U5      I S h  vN nU(       d  U R                  XS9I S h  vN $ U$ [        SU< 35      e[        U[         5      (       a   USL a  U R                  R                  U5      nU$  GN GNz GN GN GNms  snf  GN4s  snf  N N Ns  snf  N Nu7f)Nr   rA   rC   rD   rE   rF   rH   rI   rJ   rM   rN   rO   rP   rQ   rR   rS   )r3   rT   rU   rW   rV   rX   F)_streamrc   r   r   	_readline_readr[   r\   r]   r^   r   r_   r`   r7   ra   r   rb   )
r    r3   r4   rd   re   r-   rf   rg   rh   ri   s
             r#   r7    _AsyncRESP3Parser._read_response   sH     ||4<<!"@AANN$$Ra#ab'h <t|!%CM!::wyAH$$X.E %1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-  H
 T\
 s8}--A **<L*MMM-  H
 T\ I3x=) //AQ/RR'+':':%5 (; ( "	 *
 !HT\ s8}- .A	 --)9 .    .   "66x@@H!00%5 1     !$4SG"<==h&&+;u+D||**84Hy % ;< 7 8 N N S" As   AL K56L >K8?B-L ,K;-)L K>%L <LL
L L =LL	
L4L LL )L*)L L+L
,L4L 
LL (L)AL 8L ;L >L LL 	LL L LL L )r   r   r   )FF)rk   rl   rm   rn   r   r   boolr>   r   r
   r	   r7   rq   rr   rs   s   @r#   ru   ru      sc    3
 DI $<@  DIa $a<@a	z=$.	/a ar%   ru   N)loggingr   typingr   r   
exceptionsr   r   r	   r
   utilsr   baser   r   r   r   socketr   r   ru    r%   r#   <module>r      sI      H H    3S95 Sl{(D {r%   