
    ph2'                         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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   )AsyncPushNotificationsParserPushNotificationsParser_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORc                   F   ^  \ rS rSrSrU 4S jrS rSS jrSS jrSr	U =r
$ )	_RESP3Parser   zRESP3 protocol implementationc                 p   > [         TU ]  U5        U R                  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invalidation_push_handler_funcselfsocket_read_size	__class__s     N/home/james-whalen/.local/lib/python3.13/site-packages/redis/_parsers/resp3.pyr   _RESP3Parser.__init__   s7    )*(,(H(H%-1*-1*.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#   c                 *   U R                   (       a  U R                   R                  5       OS n U R                  XS9nU R                   R                  5         U$ ! [         a.    U R                   (       a  U R                   R                  U5        e f = f)Ndisable_decodingpush_request)_bufferget_pos_read_responsepurgeBaseExceptionrewind)r   r0   r1   posresults        r!   read_response_RESP3Parser.read_response   s}    (,dll""$$
	((!1 ) F LL M  	||##C(	s   A 8Bc                 N   U R                   R                  5       nU(       d  [        [        5      eUS S USS  pTUS;   ad  US:X  a$  U R                   R	                  [        U5      5      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      5      nGOUUS:X  a)  U R                   R	                  [        U5      5      SS  nGO&US:X  a2  [        [        U5      5       Vs/ s H  nU R                  US9PM     nnOUS:X  a2  [        [        U5      5       Vs/ s H  nU R                  US9PM     nnOUS:X  a@  0 n[        [        U5      5       H#  nU R                  US9n	U R                  XS9X'   M%     UnOpUS:X  a[  [        [        U5      5       Vs/ s H  nU R                  X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 Nr   )   -   !r?   zutf-8replace)errors   +   _)   :   (   ,   #   t   $   =      *)r0      ~   %r/      >zProtocol Error: F)r2   readliner   r   readintdecodeparse_error
isinstancefloatranger4   handle_push_responser   bytesencoder
r   r0   r1   rawbyter+   error_	resp_dictkeys
             r!   r4   _RESP3Parser._read_response,   s   ll##%!"@AARa#ab'h <t|<<,,S];wyAH$$X.E %11
 LT\T\\!x= T\?"T\t##T\||((X7HT\||((X7;HT\ s8}--A ##5E#F-  H
 T\
 s8}--A ##5E#F-  H
 T\ I3x=)));K)L!%!4!4%5 "5 "	 *
 !HT\
 s8}-	 .A ##%5 $  .	   00:H &&!1) '  
 "$4SG"<==h&&+;u+D||**84Ha$s   JJJ")r   r   r   r   FF)__name__
__module____qualname____firstlineno____doc__r   r   r:   r4   __static_attributes____classcell__r    s   @r!   r   r      s!    '3
] ]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   +-r0   r1   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   r/   )_chunksr2   joinclear_posr4   _clear)r   r0   r1   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r=   )_streamrZ   r   r   	_readline_readrR   rS   rT   rU   rx   rV   rW   r4   rX   r   rY   r[   s
             r!   r4    _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 )rw   r   r   rc   )rd   re   rf   rg   r   r   boolr:   r   r
   r	   r4   ri   rj   rk   s   @r!   rm   rm      sc    3
 DI $<@  DIa $a<@a	z=$.	/a ar#   rm   N)loggingr   typingr   r   
exceptionsr   r   r	   r
   baser   r   r   r   socketr   r   rm    r#   r!   <module>r      sF      H H   3z95 zz{(D {r#   