
    ph                     |    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
  SSKJr   " S S	\
5      r " S
 S\	5      rg)    )AnyUnion   )ConnectionErrorInvalidResponseResponseError)
EncodableT   )_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORc                   ,    \ rS rSrSrSS jrSS jrSrg)_RESP2Parser	   zRESP2 protocol implementationc                 *   U R                   (       a  U R                   R                  5       OS n U R                  US9nU R                   R                  5         U$ ! [         a.    U R                   (       a  U R                   R                  U5        e f = f)Ndisable_decoding)_bufferget_pos_read_responsepurgeBaseExceptionrewind)selfr   posresults       N/home/james-whalen/.local/lib/python3.13/site-packages/redis/_parsers/resp2.pyread_response_RESP2Parser.read_response   sy    (,dll""$$	((:J(KF LL M  	||##C(	s   A 8Bc                    U R                   R                  5       nU(       d  [        [        5      eUS S USS  pCUS:X  a:  UR	                  SSS9nU R                  U5      n[        U[        5      (       a  UeU$ US:X  a  OUS:X  a  [        U5      $ US:X  a  US	:X  a  g US:X  a%  U R                   R                  [        U5      5      nOTUS
:X  a  US	:X  a  g US
:X  a2  [        [        U5      5       Vs/ s H  nU R                  US9PM     nnO[        SU< 35      eUSL a  U R                  R	                  U5      nU$ s  snf )Nr
      -utf-8replaceerrors   +   :   $   -1   *r   Protocol Error: F)r   readliner   r   decodeparse_error
isinstanceintreadranger   r   encoder)r   r   rawbyteresponseerroris          r   r   _RESP2Parser._read_response   sV   ll##%!"@AARa#ab'h 4<wyAH$$X.E %11
 LT\T\x= T\h%/T\||((X7HT\h%/T\ s8}--A ##5E#F-  H
 "$4SG"<==u$||**84Hs   3E  NF)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__r:       r   r   r   	   s    '
,rB   r   c                   N    \ rS rSrSrS	S\4S jjr S	S\S\\\	S4   4S jjr
Srg)
_AsyncRESP2ParserG   z"Async class for the RESP2 protocolr   c                 `  #    U R                   (       d  [        [        5      eU R                  (       aH  U =R                  SR                  U R                  5      -  sl        U R                  R                  5         SU l        U R                  US9I S h  vN nU R                  5         U$  N7f)NrB   r   r   )

_connectedr   r   _chunksr   joinclear_posr   _clear)r   r   r6   s      r   r   _AsyncRESP2Parser.read_responseJ   s|     !"@AA<<LLCHHT\\22LLL 	,,>N,OO Ps   BB.B,B.returnNc                   #    U R                  5       I S h  vN nUS S USS  pCUS:X  aJ  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  OUS:X  a  [        U5      $ US:X  a  US	:X  a  g US:X  a#  U R                  [        U5      5      I S h  vN nO^US
:X  a  US	:X  a  g US
:X  a<  [        [        U5      5       Vs/ s H  nU R                  U5      I S h  vN PM     nnO[        SU< 35      eUSL a  U R                  R                  U5      nU$  GN, N NAs  snf 7f)Nr
   r!   r"   r#   r$   r&   r'   r(   r)   r*   r+   F)	_readliner-   r.   r/   r   rL   r0   _readr2   r   r   r3   )r   r   r4   r5   r6   r7   _s          r   r    _AsyncRESP2Parser._read_responseW   sb     NN$$Ra#ab'h 4<wyAH$$X.E %11
 LT\T\x= T\h%/T\!ZZH66HT\h%/T\ s8}--A **+;<<<-  H
 "$4SG"<==u$||**84HU %8 7 =sF   EEB%E<E=.E+E	E
E	5EEE		E)rK   r;   )r<   r=   r>   r?   r@   boolr   r   r	   r   r   rA   r:   rB   r   rD   rD   G   s<    ,D  (-- $-	z=$.	/- -rB   rD   N)typingr   r   
exceptionsr   r   r   r	   baser   r   socketr   r   rD   r:   rB   r   <module>rY      s0     H H  + 2;9 ;|= =rB   