
    Oǻi(                         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mZmZ ddlmZ  G d	 d
ee      Z G d dee      Zy)    )	getLogger)AnyUnion   )ConnectionErrorInvalidResponseResponseError)
EncodableT   )AsyncPushNotificationsParserPushNotificationsParser_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORc                   8     e Zd ZdZ fdZd ZddZddZ xZS )_RESP3ParserzRESP3 protocol implementationc                 ~    t         |   |       | j                  | _        d | _        d | _        d | _        d | _        y 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     R/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/redis/_parsers/resp3.pyr   z_RESP3Parser.__init__   s?    )*(,(H(H%-1*-1*370.2+    c                 V    t        d      }|j                  dt        |      z          |S Npush_responsezPush response: r   debugstrr   responseloggers      r!   r   z(_RESP3Parser.handle_pubsub_push_response   s'    ?+&X67r"   c                 Z   | j                   | j                   j                         nd }	 | j                  ||      }| j                   	 | j                   j                          |S |S # t        $ r Y |S w xY w# t
        $ r) | j                   | j                   j                  |        w xY w)Ndisable_decodingpush_request)_bufferget_pos_read_responsepurgeAttributeErrorBaseExceptionrewind)r   r.   r/   posresults        r!   read_responsez_RESP3Parser.read_response   s    (,(@dll""$d	((!1 ) F ||'LL&&(
 M6M	 &  M	  	||'##C(	s   A8 
A( (	A54A582B*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        |            }nT|dk(  r)| j                   j	                  t        |            dd  }n&|dk(  r2t        t        |            D cg c]  }| j                  |       }}n|dk(  r2t        t        |            D cg c]  }| j                  |       }}n|dk(  rFi }t        t        |            D ]*  }| j                  |      }	| j                  ||      ||	<   , |}nm|dk(  rZt        t        |            D cg c]  }| j                  ||       }}| j                  |      }|r|S | j                  ||      S t        d|      t        |t              r|du r| j                  j                  |      }|S c c}w c c}w c c}w Nr   )   -   !r=   zutf-8replace)errors   +   _)   :   (   ,   #   t   $   =      *)r.      ~   %r-      >zProtocol Error: F)r0   readliner   r   readintdecodeparse_error
isinstancefloatranger2   handle_push_responser   bytesencoder
r   r.   r/   rawbyter*   error_	resp_dictkeys
             r!   r2   z_RESP3Parser._read_response3   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}- ##5E#FH 
 T\
 s8}- ##5E#FH 
 T\ I3x=) ));K)L!%!4!4%5L "5 "	#
 !HT\
 s8}-	  ##%5L $ H  00:H &&!1) '  
 "$4SG"<==h&+;u+D||**84Ha$s   J<J>JFF)	__name__
__module____qualname____doc__r   r   r9   r2   __classcell__r    s   @r!   r   r      s    '3
(]r"   r   c            
       \     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
 xZS )
_AsyncRESP3Parserc                 T    t         |   |       | j                  | _        d | _        y r   )r   r   r   r   r   r   s     r!   r   z_AsyncRESP3Parser.__init__   s'    )*(,(H(H%.2+r"   c                 ^   K   t        d      }|j                  dt        |      z          |S wr$   r&   r)   s      r!   r   z-_AsyncRESP3Parser.handle_pubsub_push_response   s+     ?+&X67s   +-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-   )_chunksr0   joinclear_posr2   _clear)r   r.   r/   r*   s       r!   r9   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  }n_|dk(  r;t        t        |            D cg c]  }| j                  |       d {    }}n|dk(  r:t        t        |            D cg c]  }| j                  |       d {    }}n|dk(  rVi }t        t        |            D ]:  }| j                  |       d {   }	| j                  ||       d {   ||	<   < |}n|dk(  rrt        t        |            D cg c]  }| j                  ||       d {    }}| j                  |       d {   }|s| j                  ||       d {   S |S t        d|      t        |t               r|du r| j                  j                  |      }|S 7 7 k7 7 7 gc c}w 7 /c c}w 7 7 7 c c}w 7 7 nwr;   )_streamrX   r   r   	_readline_readrP   rQ   rR   rS   rp   rT   rU   r2   rV   r   rW   rY   s
             r!   r2   z _AsyncRESP3Parser._read_response   sJ     ||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}- **<L*MMMH 
 T\
 s8}- **<L*MMMH 
 T\ I3x=)  //AQ/RR'+':':%5L (; ( "	#
 !HT\ s8}- 	 --)9 .   H  "66x@@H!00%5L 1     !$4SG"<==h&+;u+D||**84Hy % ;< 7 8 N N S" As   ;LK4L2K3B$LK (L K#$L%K)?K&
 K)L%K1?K.
 K16L<K6=LK8'L?K<K:
K<!L7L8LLALL L#L&K))L.K11L8L:K<<LLr`   )ra   rb   rc   r   r   boolr9   r   r
   r	   r2   re   rf   s   @r!   rh   rh      s]    3
 DI $<@  DIa $a<@a	z=$.	/ar"   rh   N)loggingr   typingr   r   
exceptionsr   r   r	   r
   baser   r   r   r   socketr   r   rh    r"   r!   <module>r}      sF      H H   3A95 AH{(D {r"   