
    /
i<+                     l   d dl Z d dlZd dlZd dlm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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e          Z# G d dee          Z$dS )    N)	getLogger)CallableListOptional	TypedDictUnion      )timeout   )ConnectionErrorInvalidResponse
RedisError)
EncodableT)HIREDIS_AVAILABLE   )AsyncBaseParserAsyncPushNotificationsParser
BaseParserPushNotificationsParser)#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        C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\redis/_parsers/hiredis.pyr   r   "   sb         SE9,----#	)****smSMr(   r   F)totalc                   J    e Zd 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                     t           st          d          || _        t          |          | _        | j        | _        d | _        d | _        d | _	        d | _
        d | _        d S )NzHiredis is not installed)r   r   socket_read_size	bytearray_buffer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_hiredis_PushNotificationType)selfr.   s     r)   __init__z_HiredisParser.__init__,   sj      	97888 0 !122(,(H%-1*-1*370.2+-1***r(   c                 R    	 |                                   d S # t          $ r Y d S w xY wN)on_disconnectr%   r8   s    r)   __del__z_HiredisParser.__del__8   sA    	      	 	 	DD	s    
&&c                 n    t          d          }|                    dt          |          z              |S Npush_responsezPush response: r   debugr$   r8   responseloggers      r)   r1   z*_HiredisParser.handle_pubsub_push_response>   s2    ?++&X6777r(   c                 :   dd l }|j        | _        |j        | _        t          | j        |j        j        t          d}|j        j	        r|j        j
        |d<    |j        di || _        t          | _        	 |j        | _        d S # t           $ r d | _        Y d S w xY w)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PushNotificationr7   AttributeError)r8   
connectionkwargsrI   s       r)   
on_connectz_HiredisParser.on_connectC   s    %
)8,* (8,	
 
 . 	=!+!3!<F:%w~////-	6181ID... 	6 	6 	615D....	6s   7B BBc                 :    d | _         d | _        t          | _        d S r;   )rJ   rS   rP   rT   r=   s    r)   r<   z_HiredisParser.on_disconnectZ   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)rS   r   r   rT   rP   getsread_from_socket)r8   r   s     r)   can_readz_HiredisParser.can_read_   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: )rJ   r   
settimeout	recv_intor0   r   r   rS   feedrL   socketr   TimeoutErrorr   r   get	__class__errnoargs)r8   r   r\   sockcustom_timeoutbufflenexalloweds           r)   r^   z_HiredisParser.read_from_socketi   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                 x   | j         st          t                    | j        t          ura| j        }t          | _        | j        Et          || j                  r0|                     |          }|r|S |                     ||          S |S |r| j         	                    d          }n| j         	                                }|t          u rS| 
                                 |r| j         	                    d          }n| j         	                                }|t          u St          |t                    r|| j        Et          || j                  r0|                     |          }|r|S |                     ||          S t          |t                    r%|r#t          |d         t                    r|d         |S )Ndisable_decodingpush_requestFr   )rS   r   r   rT   rP   r7   
isinstancehandle_push_responseread_responser]   r^   listr8   rr   rs   rE   s       r)   rv   z_HiredisParser.read_response   s   | 	B!"@AAA o55*H"1D1=*$<C C=  44X>>   $#O))%5!- *    O 	+|((//HH|((**H/))!!### /<,,U33<,,.. /)) h00 	N/;
d8A
 A
; 00::H  %%!1) &    x&&		 8A;88	
 1+r(   NFF)r!   r"   r#   __doc__r9   r>   r1   rY   r<   r_   r   r^   rv   r'   r(   r)   r,   r,   )   s        00
2 
2 
2    
6 6 6.. . .
   (0$ 6 6 6 6<8 8 8 8 8 8r(   r,   c            
       ~     e Zd ZdZdZdef fdZd Zd Zd Z	d Z
d	 Z	 ddededeeee         f         fdZ xZS )_AsyncHiredisParserzBAsync implementation of parser class for connections using Hiredis)rS   r.   c                     t           st          d          t                                          |           d | _        | j        | _        d | _        d | _        d S )NzHiredis is not available.)r.   )	r   r   superr9   rS   r1   r2   r6   r7   )r8   r.   rh   s     r)   r9   z_AsyncHiredisParser.__init__   s^      	:8999*:;;;(,(H%.2+-1***r(   c                 r   K   t          d          }|                    dt          |          z              |S r@   rB   rD   s      r)   r1   z/_AsyncHiredisParser.handle_pubsub_push_response   s6      ?++&X6777r(   c                 4   dd l }|j        | _        t          | j        t
          d}|j        j        r|j        j        |d<   |j        j	        |d<    |j
        di || _        d| _        	 t          |dd           | _        d S # t          $ r d | _        Y d S w xY w)Nr   )r   r   rH   r   r    TrU   r'   )rI   rS   _streamr   rM   rP   rN   rQ   r   rO   rR   
_connectedgetattrr7   rV   )r8   rW   rI   rX   s       r)   rY   z_AsyncHiredisParser.on_connect   s    !),*,&
 &

 . 	B!+!3!<F:)1AF8%w~////	618+T2 2D...  	6 	6 	615D....	6s   *B BBc                     d| _         d S )NF)r   r=   s    r)   r<   z!_AsyncHiredisParser.on_disconnect   s    r(   c                 N  K   | j         st          d          | 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)NzBuffer is closed.Tr   F)	r   OSErrorrS   r]   rP   async_timeoutr^   asynciorf   r=   s    r)   can_read_destructivez(_AsyncHiredisParser.can_read_destructive   sT      	/-...<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	s5   B A>+B >
BB BB B$#B$c                    K   | j                             | j                   d {V }|rt          |t                    st          t                    d | j                            |           dS )NT)	r   read
_read_sizert   bytesr   r   rS   rd   )r8   buffers     r)   r^   z$_AsyncHiredisParser.read_from_socket   sx      |((99999999 	LZ66 	L!"@AAtK&!!! tr(   Frr   rs   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|| j        Qt          || j                  r<| 	                    |           d {V }|s| 
                    ||           d {V S |S t          |t                    r%|r#t          |d         t                    r|d         |S )NFrq   r   )r   r   r   rS   r]   rP   r^   rt   r7   ru   rv   rw   rx   s       r)   rv   z!_AsyncHiredisParser.read_response  s       	L!"@AAtK 	+|((//HH|((**H/))''))))))))) /<,,U33<,,.. /)) h00 	N/;
d8A
 A
; "66x@@@@@@@@H  !//%5L 0           x&&		 8A;88	
 1+r(   ry   )r!   r"   r#   rz   	__slots__intr9   r1   rY   r<   r   r^   boolr   r   r   rv   __classcell__)rh   s   @r)   r|   r|      s        LLI2 2 2 2 2 2 2  
6 6 60     	 	 	   DI* * $*<@*	z4
++	,* * * * * * * *r(   r|   )%r   re   sysloggingr   typingr   r   r   r   r   version_infomajorminorr   r   
exceptionsr   r   r   r   utilsr   baser   r   r   r   r   r   r   r   objectrP   r   r,   r|   r'   r(   r)   <module>r      s     



       = = = = = = = = = = = = = =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       % % % % % %                       &((    %    V V V V VZ!8 V V Vrl l l l l/+G l l l l lr(   