
    Pf                      \   d dl Z d dlZd dlZd dlmZmZmZmZ ej        j	        dk    rej        j
        dk    rd dl mZ nd dlmZ d dl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mZmZmZ  e            Z G d ded          Z G d de          Z  G d de          Z!dS )    N)CallableListOptionalUnion      )timeout)	TypedDict   )ConnectionErrorInvalidResponse
RedisError)
EncodableT)HIREDIS_AVAILABLE   )AsyncBaseParser
BaseParser)#NONBLOCKING_EXCEPTION_ERROR_NUMBERSNONBLOCKING_EXCEPTIONSSENTINELSERVER_CLOSED_CONNECTION_ERRORc                   t    e Zd ZU eegef         ed<   eegef         ed<   ee         ed<   ee         ed<   dS )_HiredisReaderArgsprotocolError
replyErrorencodingerrorsN)__name__
__module____qualname__r   str	Exception__annotations__r        H/var/www/html/env/lib/python3.11/site-packages/redis/_parsers/hiredis.pyr   r      sb         SE9,----#	)****smSMr%   r   F)totalc                   D    e Zd ZdZd Zd Zd Zd Zd Ze	dfdZ
dd
ZdS )_HiredisParserz*Parser class for connections using Hiredisc                 h    t           st          d          || _        t          |          | _        d S )NzHiredis is not installed)r   r   socket_read_size	bytearray_buffer)selfr+   s     r&   __init__z_HiredisParser.__init__(   s5      	97888 0 !122r%   c                 R    	 |                                   d S # t          $ r Y d S w xY wN)on_disconnectr"   r.   s    r&   __del__z_HiredisParser.__del__.   sA    	      	 	 	DD	s    
&&c                     dd l }|j        | _        |j        | _        t          | j        |j        j        t          d}|j        j	        r|j        j
        |d<    |j        di || _        t          | _        d S )Nr   )r   r   r   notEnoughDatar   r$   )hiredis_socksocket_timeout_socket_timeoutr   parse_errorencoderencoding_errorsNOT_ENOUGH_DATAdecode_responsesr   Reader_reader_next_response)r.   
connectionkwargsr7   s       r&   
on_connectz_HiredisParser.on_connect4   s    %
)8,* (8,	
 
 . 	=!+!3!<F:%w~////-r%   c                 :    d | _         d | _        t          | _        d S r1   )r8   rA   r>   rB   r3   s    r&   r2   z_HiredisParser.on_disconnectE   s    
-r%   c                     | j         st          t                    | j        t          u rC| j                                         | _        | j        t          u r|                     |d          S dS )NF)r	   raise_on_timeoutT)rA   r   r   rB   r>   getsread_from_socket)r.   r	   s     r&   can_readz_HiredisParser.can_readJ   sl    | 	B!"@AAA/11"&,"3"3"5"5D"o55,,Wu,UUUtr%   Tc                    | j         }|t          u}	 |r|                    |           | j                             | j                  }|dk    rt          t                    | j                            | j        d|           	 |r|                    | j	                   dS dS # t          j        $ r3 |rt          d          Y |r|                    | j	                   dS dS t          $ rg}t          j        |j        d          }|s/|j        |k    r$Y d }~|r|                    | j	                   dS dS t          d|j                   d }~ww xY w# |r|                    | j	                   w w xY w)Nr   TzTimeout reading from socketFz!Error while reading from socket: )r8   r   
settimeout	recv_intor-   r   r   rA   feedr:   socketr	   TimeoutErrorr   r   get	__class__errnoargs)r.   r	   rH   sockcustom_timeoutbufflenexalloweds           r&   rJ   z_HiredisParser.read_from_socketT   s   z 0	6 )(((j**4<88G!||%&DEEELdlAw777   6 4555556 6 ~ 	 	 	 B"#@AAA  6 4555556 6 & 	Q 	Q 	Q
 :=blBOOG# G(;(;uuu  6 4555556 6 ""Obg"O"OPPP	Q  6 455556s<   A1B$ $ EE %	E.'EE 9EEE E7Fc                 H   | j         st          t                    | j        t          ur| j        }t          | _        |S |r| j                             d          }n| j                                         }|t          u rS|                                  |r| j                             d          }n| j                                         }|t          u St          |t                    r|t          |t                    r%|r#t          |d         t                    r|d         |S NFr   )	rA   r   r   rB   r>   rI   rJ   
isinstancelistr.   disable_decodingresponses      r&   read_responsez_HiredisParser.read_responser   s+   | 	B!"@AAA o55*H"1DO 	+|((//HH|((**H/))!!### /<,,U33<,,.. /)) h00 	Nx&&		 8A;88	
 1+r%   NF)r   r   r    __doc__r/   r4   rE   r2   rK   r   rJ   rc   r$   r%   r&   r)   r)   %   s        003 3 3  . . .". . .
   (0$ 6 6 6 6<           r%   r)   c                   t     e Zd ZdZdZdef fdZd Zd Zd Z	d Z
	 dd
edeeee         f         fdZ xZS )_AsyncHiredisParserzBAsync implementation of parser class for connections using Hiredis)rA   r+   c                     t           st          d          t                                          |           d | _        d S )NzHiredis is not available.)r+   )r   r   superr/   rA   )r.   r+   rT   s     r&   r/   z_AsyncHiredisParser.__init__   sA      	:8999*:;;;r%   c                     dd l }|j        | _        t          | j        t
          d}|j        j        r|j        j        |d<   |j        j	        |d<    |j
        di || _        d| _        d S )Nr   )r   r   r6   r   r   Tr$   )r7   rA   _streamr   r;   r>   r<   r?   r   r=   r@   
_connected)r.   rC   r7   rD   s       r&   rE   z_AsyncHiredisParser.on_connect   s    !),*,&
 &

 . 	B!+!3!<F:)1AF8%w~////r%   c                     d| _         d S )NF)rl   r3   s    r&   r2   z!_AsyncHiredisParser.on_disconnect   s    r%   c                 X  K   | j         st          t                    | j                                        t
          urdS 	 t          d          4 d {V  |                                  d {V cd d d           d {V  S # 1 d {V swxY w Y   d S # t          j	        $ r Y dS w xY w)NTr   F)
rl   r   r   rA   rI   r>   async_timeoutrJ   asynciorR   r3   s    r&   can_read_destructivez(_AsyncHiredisParser.can_read_destructive   sU      	B!"@AAA<o554	$Q'' 5 5 5 5 5 5 5 5!22444444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5# 	 	 	55	s6   B B0B 
BB BB B)(B)c                    K   | j                             | j                   d {V }|rt          |t                    st          t                    d | j                            |           dS )NT)	rk   read
_read_sizer^   bytesr   r   rA   rP   )r.   buffers     r&   rJ   z$_AsyncHiredisParser.read_from_socket   sx      |((99999999 	LZ66 	L!"@AAtK&!!! tr%   Fra   returnc                   K   | j         st          t                    d |r| j                            d          }n| j                                        }|t
          u rY|                                  d {V  |r| j                            d          }n| j                                        }|t
          u Yt          |t                    r|t          |t                    r%|r#t          |d         t                    r|d         |S r]   )	rl   r   r   rA   rI   r>   rJ   r^   r_   r`   s      r&   rc   z!_AsyncHiredisParser.read_response   s        	L!"@AAtK 	+|((//HH|((**H/))''))))))))) /<,,U33<,,.. /)) h00 	Nx&&		 8A;88	
 1+r%   rd   )r   r   r    re   	__slots__intr/   rE   r2   rq   rJ   boolr   r   r   rc   __classcell__)rT   s   @r&   rg   rg      s        LLI              	 	 	   (-  $	z4
++	,       r%   rg   )"rp   rQ   systypingr   r   r   r   version_infomajorminorr	   ro   redis.compatr
   
exceptionsr   r   r   r   utilsr   baser   r   r   r   r   r   objectr>   r   r)   rg   r$   r%   r&   <module>r      s     



 2 2 2 2 2 2 2 2 2 2 2 2Q3#3#9R#?#?0000000666666 " " " " " " E E E E E E E E E E       % % % % % % - - - - - - - -            &((    %    m m m m mZ m m m`Q Q Q Q Q/ Q Q Q Q Qr%   