
    ng\j/                        S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
  SSKJrJrJrJr  SSKJr  SSKJrJrJr  SS	KJrJrJrJr  SS
KJrJrJr  \" 5       r\" \ S5      r S\!S\"4S jr# " S S\	SS9r$ " S S\\5      r% " S S\\5      r&g)    N)	getLogger)CallableListOptional	TypedDictUnion   )ConnectionErrorInvalidResponse
RedisErrorTimeoutError)
EncodableT)HIREDIS_AVAILABLESENTINELdeprecated_function   )AsyncBaseParserAsyncPushNotificationsParser
BaseParserPushNotificationsParser)#NONBLOCKING_EXCEPTION_ERROR_NUMBERSNONBLOCKING_EXCEPTIONSSERVER_CLOSED_CONNECTION_ERRORpolltimeoutreturnc                    [        U S5      (       a  U R                  5       (       a  g[        (       aY  [        R                  " 5       nUR                  U [        R                  5        Uc  S OUS-  n[        UR	                  U5      5      $ [        R                  " 5        nUR                  U [        R                  5        [        UR                  U5      5      sS S S 5        $ ! , (       d  f       g = f)NpendingTi  )hasattrr   	_HAS_POLLselectr   registerPOLLINbool	selectorsDefaultSelector
EVENT_READ)sockr   pollerpoll_timeoutselectors        Q/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/redis/_parsers/hiredis.py_socket_can_readr-      s    tYDLLNN y
 fmm,  'tGdNFKK-..		"	"	$$	 4 45HOOG,- 
%	$	$s   !:C%%
C3c                   b    \ rS rSr% \\/\4   \S'   \\/\4   \S'   \\   \S'   \\   \S'   Sr	g)_HiredisReaderArgs7   protocolError
replyErrorencodingerrors N)
__name__
__module____qualname____firstlineno__r   str	Exception__annotations__r   __static_attributes__r5       r,   r/   r/   7   s:    SE9,--#	)**smSMr>   r/   F)totalc                   |    \ rS rSrSrS rS rS rS rS r	SS\
S	\4S
 jjr\S4S jrSS\4S\\
\4   4S jjrSrg)_HiredisParser>   z*Parser class for connections using Hiredisc                     [         (       d  [        S5      eXl        [        U5      U l        U R
                  U l        S U l        S U l        S U l	        S U l
        S U l        g )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)selfrD   s     r,   __init___HiredisParser.__init__A   s]      788 0 !12(,(H(H%-1*-1*370.2+-1*r>   c                 F     U R                  5         g ! [         a     g f = fN)on_disconnectr;   rN   s    r,   __del___HiredisParser.__del__M   s%    	  		s    
  c                 V    [        S5      nUR                  S[        U5      -   5        U$ Npush_responsezPush response: r   debugr:   rN   responseloggers      r,   rG   *_HiredisParser.handle_pubsub_push_responseS   s'    ?+&X67r>   c                    SS K nUR                  U l        UR                  U l        [        U R
                  UR                  R                  [        S.nUR                  R                  (       a  UR                  R                  US'   UR                  " S0 UD6U l         UR                  U l        g ! [         a
    S U l         g f = f)Nr   )r1   r2   r4   notEnoughDatar3   r5   )hiredis_socksocket_timeout_socket_timeoutr   parse_errorencoderencoding_errorsNOT_ENOUGH_DATAdecode_responsesr3   Reader_readerPushNotificationrM   AttributeError)rN   
connectionkwargsrb   s       r,   
on_connect_HiredisParser.on_connectX   s    %%
)88,** ((88,	
 ..!+!3!3!<!<F:~~//	6181I1ID. 	615D.	6s    B2 2CCc                      S U l         S U l        g rR   )rc   rl   rT   s    r,   rS   _HiredisParser.on_disconnectn   s    
r>   r   r   c                     U R                   (       d  [        [        5      eU R                   R                  5       (       a  g[	        U R
                  U5      $ NT)rl   r
   r   has_datar-   rc   )rN   r   s     r,   can_read_HiredisParser.can_readr   s>     ||!"@AA<<  ""

G44r>   Tc                    U R                   nU[        Ln U(       a  UR                  U5        U R                   R                  U R                  5      nUS:X  a  [        [        5      eU R                  R                  U R                  SU5         U(       a  UR                  U R                  5        gg! [        R                   a8    U(       a  [        S5      e U(       a  UR                  U R                  5        gg[         a  n[        R                  " UR                   S5      nUR"                  U:X  a@  U(       d(   S nAU(       a  UR                  U R                  5        ggUS:X  a  [        S5      e[        SUR$                   35      eS nAff = f! U(       a  UR                  U R                  5        f f = f)Nr   TzTimeout reading from socketFz!Error while reading from socket: )rc   r   
settimeout	recv_intorF   r
   r   rl   feedre   socketr   r   r   r   get	__class__errnoargs)rN   r   raise_on_timeoutr(   custom_timeoutbufflenexalloweds           r,   read_from_socket_HiredisParser.read_from_socket|   sn   zz 0	6(jj**4<<8G!|%&DEELLdllAw7 $  4 45 # ~~ 	"#@AA  4 45  & 	Q
 :==bllBOGxx7"' 
  4 45 	 a<&'DEE!$EbggY"OPP	Q  4 45 s<   A9B4 4&FF ?	F8F F ()FFF %F>Fc                    U R                   (       d  [        [        5      eU(       a  U R                   R                  S5      nOU R                   R                  5       nU[        L aW  U R                  US9  U(       a  U R                   R                  S5      nOU R                   R                  5       nU[        L a  MW  [        U[        5      (       a  UeU R                  bE  [        X@R                  5      (       a+  U R                  U5      nU(       a  U$ U R                  UUUS9$ [        U[        5      (       a$  U(       a  [        US   [        5      (       a  US   eU$ )NF)r   )disable_decodingpush_requestr   r   )rl   r
   r   getsri   r   
isinstancerM   handle_push_responseread_responselist)rN   r   r   r   r]   s        r,   r   _HiredisParser.read_response   s0    ||!"@AA||((/H||((*H/)!!'!2<<,,U3<<,,. /) h00N//;
88A
 A
 00:H%%!1) &   x&&8A;881+r>   )rF   rM   rl   rc   re   rL   rJ   rI   rK   rH   rD   N)r   )r6   r7   r8   r9   __doc__rO   rU   rG   rq   rS   floatr$   rx   r   r   r   objectr   r=   r5   r>   r,   rA   rA   >   sf    0
2
6,5 5d 5 (0$ 6F (0	+ uf}%	+ +r>   rA   c            
          ^  \ rS rSrSrSrS\4U 4S jjrS rS r	S r
\" S	S
SS9S\4S j5       rS\4S jrS r SS\S\S\\\\   4   4S jjrSrU =r$ )_AsyncHiredisParser   zBAsync implementation of parser class for connections using Hiredis)rl   rD   c                    > [         (       d  [        S5      e[        TU ]  US9  S U l        U R
                  U l        S U l        S U l        g )NzHiredis is not available.)rD   )	r   r   superrO   rl   rG   rH   rL   rM   )rN   rD   r   s     r,   rO   _AsyncHiredisParser.__init__   sK      899*:;(,(H(H%.2+-1*r>   c                 ^   #    [        S5      nUR                  S[        U5      -   5        U$ 7frX   rZ   r\   s      r,   rG   /_AsyncHiredisParser.handle_pubsub_push_response   s*     ?+&X67s   +-c                    SS K nUR                  U l        [        U R                  [
        S.nUR                  R                  (       a2  UR                  R                  US'   UR                  R                  US'   UR                  " S0 UD6U l        SU l         [        USS 5      U l        g ! [         a
    S U l         g f = f)Nr   )r1   r2   ra   r3   r4   Trm   r5   )rb   rl   _streamr   rf   ri   rg   rj   r3   rh   rk   
_connectedgetattrrM   rn   )rN   ro   rb   rp   s       r,   rq   _AsyncHiredisParser.on_connect   s    !)),**,&

 ..!+!3!3!<!<F:)11AAF8~~//	618+T2D.  	615D.	6s   B- -C Cc                     SU l         g )NF)r   rT   s    r,   rS   !_AsyncHiredisParser.on_disconnect   s	    r>   z8.0.0zUse can_read() insteadcan_read_destructive)versionreasonnamer   c                 >   #    U R                  5       I S h  vN $  N7frR   )rx   rT   s    r,   r   (_AsyncHiredisParser.can_read_destructive   s      ]]_$$$s   c                    #    U R                   (       d  [        S5      eU R                  R                  5       (       d  U R                  R                  5       (       a  g[        U R                  R                  5      $ 7f)NzBuffer is closed.T)r   OSErrorrl   rw   r   at_eofr$   rF   rT   s    r,   rx   _AsyncHiredisParser.can_read   sY      -..<<  ""dll&9&9&;&; DLL(())s   A;A=c                    #    U R                   R                  U R                  5      I S h  vN nU(       a  [        U[        5      (       d  [        [        5      S eU R                  R                  U5        g NL7frv   )	r   read
_read_sizer   bytesr
   r   rl   r~   )rN   buffers     r,   r   $_AsyncHiredisParser.read_from_socket  sY     ||((99Z66!"@AtK&!  :s   )A:A8AA:r   r   c                   #    U R                   (       d  [        [        5      S eU(       a  U R                  R	                  S5      nOU R                  R	                  5       nU[
        L a`  U R                  5       I S h  vN   U(       a  U R                  R	                  S5      nOU R                  R	                  5       nU[
        L a  M`  [        U[        5      (       a  UeU R                  bS  [        X0R                  5      (       a9  U R                  U5      I S h  vN nU(       d  U R                  XS9I S h  vN $ U$ [        U[        5      (       a$  U(       a  [        US   [        5      (       a  US   eU$  N Na NE7f)NF)r   r   r   )r   r
   r   rl   r   ri   r   r   rM   r   r   r   )rN   r   r   r]   s       r,   r   !_AsyncHiredisParser.read_response  sH     !"@AtK||((/H||((*H/)'')))<<,,U3<<,,. /) h00N//;
88A
 A
 "66x@@H!//%5 0     x&&8A;881+7 * As?   A;F=E<>A
F
AFE>F:F ;AF>F F)r   rM   rl   r   rL   rH   )FF)r6   r7   r8   r9   r   	__slots__intrO   rG   rq   rS   r   r$   r   rx   r   r   r   r   r   r=   __classcell__)r   s   @r,   r   r      s    LI2 2
60   8?U%D %%* * DI* $*<@*	z4
++	,* *r>   r   )'r!   r%   r   loggingr   typingr   r   r   r   r   
exceptionsr
   r   r   r   r   utilsr   r   r   baser   r   r   r   r   r   r   r   ri   r   r    r   r$   r-   r/   rA   r   r5   r>   r,   <module>r      s        = = S S  D D   ( FF#	.E .d .0% JZ!8 JZt/+G tr>   