
    AHj                         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	 ddl
mZmZ ddlmZ  G d	 d
e      Z G d de      Zy)    )AnyUnion   )ConnectionErrorInvalidResponseResponseError)
EncodableT)SENTINEL   )_AsyncRESPBase	_RESPBase)SERVER_CLOSED_CONNECTION_ERRORc                   H    e Zd ZdZdefdeeef   fdZdefdeeef   fdZ	y)_RESP2ParserzRESP2 protocol implementationFtimeoutc                    | j                   r| j                   j                         nd }	 | j                  ||      }| j                   j                          |S # t        $ r) | j                   r| j                   j                  |        w xY w)Ndisable_decodingr   )_bufferget_pos_read_responsepurgeBaseExceptionrewind)selfr   r   posresults        L/root/tools/cai/cai_env/lib/python3.12/site-packages/redis/_parsers/resp2.pyread_responsez_RESP2Parser.read_response   s     )-dll""$$
	((!17 ) F LL M  	||##C(	s   A 2Bc                 r   | j                   j                  |      }|st        t              |d d |dd  }}|dk(  r8|j	                  dd      }| j                  |      }t        |t              r||S |dk(  rn|dk(  rt        |      S |d	k(  r|d
k(  ry |d	k(  r'| j                   j                  t        |      |      }nQ|dk(  r|d
k(  ry |dk(  r3t        t        |            D cg c]  }| j                  ||       }}nt        d|      |du r| j                  j	                  |      }|S c c}w )N)r   r      -utf-8replaceerrors   +   :   $   -1   *r   Protocol Error: F)r   readliner   r   decodeparse_error
isinstanceintreadranger   r   encoder)r   r   r   rawbyteresponseerroris           r   r   z_RESP2Parser._read_response   s^    ll##G#4!"@AARa#ab'h 4<wyAH$$X.E %1
 LT\T\x= T\h%/T\||((X(HHT\h%/T\ s8}- ##5Ew#WH 
 "$4SG"<==u$||**84Hs   (D4N)
__name__
__module____qualname____doc__r
   r   floatobjectr   r        r   r   r   
   s?    '  %h/4UF]/C"  %h./4UF]/C.r@   r   c                   >    e Zd ZdZddefdZ	 ddedeeedf   fdZ	y)_AsyncRESP2Parserz"Async class for the RESP2 protocolr   c                 R  K   | j                   st        t              | j                  rH| xj                  dj                  | j                        z  c_        | j                  j                          d| _        | j                  |       d {   }| j                          |S 7 w)Nr@   r   )r   )

_connectedr   r   _chunksr   joinclear_posr   _clear)r   r   r6   s      r   r   z_AsyncRESP2Parser.read_responseQ   s}     !"@AA<<LLCHHT\\22LLL 	,,>N,OO Ps   BB'B%B'returnNc                   K   | j                          d {   }|d d |dd  }}|dk(  rH|j                  dd      }| j                  |      }t        |t              r| j                          ||S |dk(  rn|dk(  rt        |      S |dk(  r|d	k(  ry |dk(  r#| j                  t        |             d {   }nW|d
k(  r|d	k(  ry |d
k(  r9t        t        |            D cg c]  }| j                  |       d {    }}nt        d|      |du r| j                  j                  |      }|S 7 7 7 =c c}w w)Nr   r!   r"   r#   r$   r&   r'   r(   r)   r*   r+   F)	_readliner-   r.   r/   r   rI   r0   _readr2   r   r   r3   )r   r   r4   r5   r6   r7   _s          r   r   z _AsyncRESP2Parser._read_response^   s_     NN$$Ra#ab'h 4<wyAH$$X.E %1
 LT\T\x= T\h%/T\!ZZH66HT\h%/T\ s8}- **+;<<<H 
 "$4SG"<==u$||**84HU %8 7 =sF   D?D3BD?5D66+D?!D::D8
;D:3D?6D?8D::D?)F)
r9   r:   r;   r<   boolr   r   r	   r   r   r?   r@   r   rB   rB   N   s7    ,D  (-- $-	z=$.	/-r@   rB   N)typingr   r   
exceptionsr   r   r   r	   utilsr
   baser   r   socketr   r   rB   r?   r@   r   <module>rU      s5     H H   + 2A9 AH= =r@   