
    h+                     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        V/var/www/html/auto_sub_bot/venv/lib/python3.11/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 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invalidation_push_handler_func_hiredis_PushNotificationType)selfr.   s     r)   __init__z_HiredisParser.__init__,   sb      	97888 0 !122(,(H%-1*-1*.2+-1***r(   c                 R    	 |                                   d S # t          $ r Y d S w xY wN)on_disconnectr%   r7   s    r)   __del__z_HiredisParser.__del__7   sA    	      	 	 	DD	s    
&&c                 n    t          d          }|                    dt          |          z              |S Npush_responsezPush response: r   debugr$   r7   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PushNotificationr6   AttributeError)r7   
connectionkwargsrH   s       r)   
on_connectz_HiredisParser.on_connectB   s    %
)8,* (8,	
 
 . 	=!+!3!<F:%w~////-	6181ID... 	6 	6 	615D....	6s   7B BBc                 :    d | _         d | _        t          | _        d S r:   )rI   rR   rO   rS   r<   s    r)   r;   z_HiredisParser.on_disconnectY   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)rR   r   r   rS   rO   getsread_from_socket)r7   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: )rI   r   
settimeout	recv_intor0   r   r   rR   feedrK   socketr   TimeoutErrorr   r   get	__class__errnoargs)r7   r   r[   sockcustom_timeoutbufflenexalloweds           r)   r]   z_HiredisParser.read_from_socketh   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   )rR   r   r   rS   rO   r6   
isinstancehandle_push_responseread_responser\   r]   listr7   rq   rr   rD   s       r)   ru   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__r8   r=   r1   rX   r;   r^   r   r]   ru   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)rR   r.   c                     t           st          d          t                                          |           d | _        | j        | _        d | _        d | _        d S )NzHiredis is not available.)r.   )	r   r   superr8   rR   r1   r2   r5   r6   )r7   r.   rg   s     r)   r8   z_AsyncHiredisParser.__init__   s^      	:8999*:;;;(,(H%.2+-1***r(   c                 r   K   t          d          }|                    dt          |          z              |S r?   rA   rC   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   rG   r   r    TrT   r'   )rH   rR   _streamr   rL   rO   rM   rP   r   rN   rQ   
_connectedgetattrr6   rU   )r7   rV   rH   rW   s       r)   rX   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                 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)
r   r   r   rR   r\   rO   async_timeoutr]   asynciore   r<   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)	r   read
_read_sizers   bytesr   r   rR   rc   )r7   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(   Frq   rr   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 )NFrp   r   )r   r   r   rR   r\   rO   r]   rs   r6   rt   ru   rv   rw   s       r)   ru   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(   rx   )r!   r"   r#   ry   	__slots__intr8   r1   rX   r;   r   r]   boolr   r   r   ru   __classcell__)rg   s   @r)   r{   r{      s        LLI2 2 2 2 2 2 2  
6 6 60     	 	 	   DI* * $*<@*	z4
++	,* * * * * * * *r(   r{   )%r   rd   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   objectrO   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       % % % % % %                       &((    %    U U U U UZ!8 U U Upl l l l l/+G l l l l lr(   