
    j,g                     ^   d dl Z d dlZd dlZd dlmZ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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 y)    N)CallableListOptional	TypedDictUnion      )timeout   )ConnectionErrorInvalidResponse
RedisError)
EncodableT)HIREDIS_AVAILABLE   )AsyncBaseParser
BaseParser)#NONBLOCKING_EXCEPTION_ERROR_NUMBERSNONBLOCKING_EXCEPTIONSSENTINELSERVER_CLOSED_CONNECTION_ERRORc                   Z    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<   y)_HiredisReaderArgsprotocolError
replyErrorencodingerrorsN)__name__
__module____qualname__r   str	Exception__annotations__r        p/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/redis/_parsers/hiredis.pyr   r      s:    SE9,--#	)**smSMr%   r   F)totalc                   B    e Zd ZdZd Zd Zd Zd Zd Ze	dfdZ
dd	Zy
)_HiredisParserz*Parser class for connections using Hiredisc                 T    t         st        d      || _        t        |      | _        y )NzHiredis is not installed)r   r   socket_read_size	bytearray_buffer)selfr+   s     r&   __init__z_HiredisParser.__init__&   s&     788 0 !12r%   c                 D    	 | j                          y # t        $ r Y y w xY wN)on_disconnectr"   r.   s    r&   __del__z_HiredisParser.__del__,   s%    	  		s    	c                 L   dd l }|j                  | _        |j                  | _        t        | j
                  |j                  j                  t        d}|j                  j                  r|j                  j                  |d<    |j                  di || _        t        | _        y )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_connect2   s    %%
)88,** ((88,	
 ..!+!3!3!<!<F:%w~~//-r%   c                 6    d | _         d | _        t        | _        y r1   )r8   rA   r>   rB   r3   s    r&   r2   z_HiredisParser.on_disconnectC   s    
-r%   c                     | j                   st        t              | j                  t        u rD| j                   j                         | _        | j                  t        u r| j                  |d      S y)NF)r
   raise_on_timeoutT)rA   r   r   rB   r>   getsread_from_socket)r.   r
   s     r&   can_readz_HiredisParser.can_readH   s_    ||!"@AA/1"&,,"3"3"5D""o5,,Wu,UUr%   Tc                    | j                   }|t        u}	 |r|j                  |       | j                   j                  | j                        }|dk(  rt        t              | j                  j                  | j                  d|       	 |r|j                  | j                         yy# t        j                  $ r. |rt        d      Y |r|j                  | j                         yyt        $ rq}t        j                  |j                   d      }|s2|j"                  |k(  r#Y d }~|r|j                  | j                         yyt        d|j$                         d }~ww xY w# |r|j                  | 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_socketR   sZ   zz 0	6(jj**4<<8G!|%&DEELLdllAw7   4 45  ~~ 	"#@AA  4 45  & 	Q
 :==bllBOG#G(;  4 45  "$EbggY"OPP	Q  4 45 s<   A3B) ) E"	E% )E"11E"E% EE""E% % Fc                 ,   | j                   st        t              | j                  t        ur| j                  }t        | _        |S |r| j                   j                  d      }n| j                   j                         }|t        u rQ| j                          |r| j                   j                  d      }n| j                   j                         }|t        u rQt        |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_responsep   s    ||!"@AA o5**H"1DO||((/H||((*H/)!!#<<,,U3<<,,. /) h0Nx&8A;81+r%   NF)r   r   r    __doc__r/   r4   rE   r2   rK   r   rJ   rc   r$   r%   r&   r)   r)   #   s/    03.".
 (0$ 6< r%   r)   c                   h     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                 V    t         st        d      t        |   |       d | _        y )NzHiredis is not available.)r+   )r   r   superr/   rA   )r.   r+   rT   s     r&   r/   z_AsyncHiredisParser.__init__   s*     899*:;r%   c                 *   dd l }|j                  | _        t        | j                  t
        d}|j                  j                  r2|j                  j                  |d<   |j                  j                  |d<    |j                  di || _        d| _        y )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    !)),**,&

 ..!+!3!3!<!<F:)11AAF8%w~~//r%   c                     d| _         y )NF)rl   r3   s    r&   r2   z!_AsyncHiredisParser.on_disconnect   s	    r%   c                 f  K   | j                   st        t              | j                  j	                         t
        ury	 t        d      4 d {    | j                          d {   cd d d       d {    S 7 -7 7 	# 1 d {  7  sw Y   y xY w# t        j                  $ r Y yw xY ww)NTr   F)
rl   r   r   rA   rI   r>   async_timeoutrJ   asynciorR   r3   s    r&   can_read_destructivez(_AsyncHiredisParser.can_read_destructive   s     !"@AA<<o5	$Q' 5 5!22445 5 545 5 5 5## 		s   =B1 B A=B B'A?(B+B 7B8B <B1=B ?BB B	B
BB B1B B.+B1-B..B1c                    K   | j                   j                  | j                         d {   }|rt        |t              st        t              d | j                  j                  |       y7 Bw)NT)	rk   read
_read_sizer^   bytesr   r   rA   rP   )r.   buffers     r&   rJ   z$_AsyncHiredisParser.read_from_socket   sW     ||((99Z6!"@AtK&!  :s   )A0A.AA0ra   returnc                   K   | j                   st        t              d |r| j                  j	                  d      }n| j                  j	                         }|t
        u rY| j                          d {    |r| j                  j	                  d      }n| j                  j	                         }|t
        u rYt        |t              r|t        |t              r|rt        |d   t              r|d   |S 7 wr]   )	rl   r   r   rA   rI   r>   rJ   r^   r_   r`   s      r&   rc   z!_AsyncHiredisParser.read_response   s      !"@AtK||((/H||((*H/)'')))<<,,U3<<,,. /) h0Nx&8A;81+# *s   A0C82C63AC88?C8rd   )r   r   r    re   	__slots__intr/   rE   r2   rq   rJ   boolr   r   r   rc   __classcell__)rT   s   @r&   rg   rg      sT    LI   	 (- $	z4
++	,r%   rg   )!rp   rQ   systypingr   r   r   r   r   version_infomajorminorr
   ro   
exceptionsr   r   r   r   utilsr   baser   r   r   r   r   r   objectr>   r   r)   rg   r$   r%   r&   <module>r      s      
 = =Q3#3#3#9#9R#?06 E E  % -  (% mZ m`Q/ Qr%   