
    /
iO                     H   U d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZmZmZmZmZ d dl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"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d
dlm2Z2 ddl3m4Z4 ddl5m6Z6m7Z7 dZ8dZ9dZ:dZ;e!e!dZ<de(iZ= e j>        e?          Z@ G d de          ZA G d deA          ZB G d deA          ZC G d d          ZDdZEdZFd ZGd!ZHd"ZId#ZJd$ZKd%ZLeGeHeIeJeKfZMeGeeDjN        feHeeDjO        feIeeDjN        feJeeDjO        feFeeDjP        feKeeDjQ        feLeeDjR        fiZSeTeUeVeWe         e
f         f         eXd&<    G d' d(e          ZY G d) d*e          ZZ G d+ d,eC          Z[dS )-    N)ABC)IncompleteReadErrorStreamReaderTimeoutError)	AwaitableCallableListOptionalProtocolUnion)MaintenanceNotificationNodeFailedOverNotificationNodeFailingOverNotificationNodeMigratedNotificationNodeMigratingNotificationNodeMovingNotificationOSSNodeMigratedNotificationOSSNodeMigratingNotification)safe_str      )timeout   )AskErrorAuthenticationError$AuthenticationWrongNumberOfArgsErrorBusyLoadingErrorClusterCrossSlotErrorClusterDownErrorConnectionErrorExecAbortErrorExternalAuthProviderErrorMasterDownErrorModuleError
MovedErrorNoPermissionErrorNoScriptErrorOutOfMemoryErrorReadOnlyErrorResponseErrorTryAgainError)
EncodableT   )Encoder)SERVER_CLOSED_CONNECTION_ERRORSocketBufferz:Error loading the extension. Please check the server logs.z5Error unloading module: no such module with that namez/Error unloading module: operation not possible.z[Error unloading module: the module exports one or more module-side data types, can't unload)zxAUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?z(Client sent AUTH, but no password is setzproblem with LDAP servicec                   |    e Zd Zdedededeeeeee	ee
eieeeeeeeeeeeeeeeedZed             Zd Zd Zd	S )

BaseParserzmax number of clients reachedzinvalid passwordz,wrong number of arguments for 'auth' commandz,wrong number of arguments for 'AUTH' command)ERROOM	WRONGPASS	EXECABORTLOADINGNOSCRIPTREADONLYNOAUTHNOPERMASKTRYAGAINMOVEDCLUSTERDOWN	CROSSSLOT
MASTERDOWNc                 0   |                     d          d         }|| j        v rd|t          |          dz   d         }| j        |         }t          |t                    r|                    |t                    } |||          S t          |          S )zParse an error response r   r-   N)status_code)splitEXCEPTION_CLASSESlen
isinstancedictgetr*   )clsresponse
error_codeexception_classs       C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\redis/_parsers/base.pyparse_errorzBaseParser.parse_errorm   s     ^^C((+
...J! 3 5 56H!3J?O/400 O"1"5"5h"N"N"?8DDDDX&&&    c                     t                      NNotImplementedErrorselfs    rO   on_disconnectzBaseParser.on_disconnecty       !###rQ   c                     t                      rS   rT   rW   
connections     rO   
on_connectzBaseParser.on_connect|   rY   rQ   N)__name__
__module____qualname__r    r   r   MODULE_LOAD_ERRORr$   MODULE_EXPORTS_DATA_TYPES_ERRORNO_SUCH_MODULE_ERROR MODULE_UNLOAD_NOT_POSSIBLE_ERRORNO_AUTH_SET_ERROREXTERNAL_AUTH_PROVIDER_ERRORr(   r!   r   r'   r)   r&   r   r+   r%   r   r   r#   rF   classmethodrP   rX   r]    rQ   rO   r2   r2   I   s         ,_ 3!"F!"F{+[ +,k
  
  +!
$  (##!!%#!'*%A! !F 	' 	' [	'$ $ $$ $ $ $ $rQ   r2   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )	_RESPBasez&Base class for sync-based resp parsingc                 >    || _         d | _        d | _        d | _        d S rS   )socket_read_sizeencoder_sock_bufferrW   rl   s     rO   __init__z_RESPBase.__init__   s#     0
rQ   c                 R    	 |                                   d S # t          $ r Y d S w xY wrS   )rX   	ExceptionrV   s    rO   __del__z_RESPBase.__del__   sA    	      	 	 	DD	s    
&&c                     |j         | _         t          | j         | j        |j                  | _        |j        | _        dS )zCalled when the socket connectsN)rn   r0   rl   socket_timeoutro   rm   r[   s     rO   r]   z_RESPBase.on_connect   s<    %
#J-z/H
 
 ")rQ   c                 p    d| _         | j         | j                                         d| _        d| _        dS )z"Called when the socket disconnectsN)rn   ro   closerm   rV   s    rO   rX   z_RESPBase.on_disconnect   s7    
<#L   DLrQ   c                 D    | j         o| j                             |          S rS   )ro   can_read)rW   r   s     rO   rz   z_RESPBase.can_read   s    |> 5 5g > >>rQ   N)	r^   r_   r`   __doc__rq   rt   r]   rX   rz   rh   rQ   rO   rj   rj      se        00    * * *  ? ? ? ? ?rQ   rj   c            
       b    e Zd ZdZdZdefdZdefdZ	 ddede	e
ed	ee
         f         fd
Zd	S )AsyncBaseParserz5Base parsing class for the python-backed async parser_stream
_read_sizerl   c                 "    d | _         || _        d S rS   r~   rp   s     rO   rq   zAsyncBaseParser.__init__   s    /3*rQ   returnc                 "   K   t                      rS   rT   rV   s    rO   can_read_destructivez$AsyncBaseParser.can_read_destructive   s      !###rQ   Fdisable_decodingNc                 "   K   t                      rS   rT   )rW   r   s     rO   read_responsezAsyncBaseParser.read_response   s       "###rQ   )F)r^   r_   r`   r{   	__slots__intrq   boolr   r   r,   r*   r	   r   rh   rQ   rO   r}   r}      s        ??'I+ + + + +$D $ $ $ $ (-$ $ $$	z=$Z0@@	A$ $ $ $ $ $rQ   r}   c                       e Zd ZdZed             Zed             Zed             Zed             Zed             Z	dS )MaintenanceNotificationsParserzEProtocol defining maintenance push notification parsing functionalityc                 \    | d         }t          | d                   }t          ||          S Nr-   r   )r   r   )rL   idslotss      rO   parse_oss_maintenance_start_msgz>MaintenanceNotificationsParser.parse_oss_maintenance_start_msg   s.     a[!%%+B666rQ   c                     | d         }| d         }i }|D ]Y\  }}}t          |          }t          |          }t          |          }	||vrg ||<   ||                             ||	i           Zt          ||          S r   )r   appendr   )
rL   r   nodes_to_slots_mapping_datanodes_to_slots_mappingsrc_node	dest_noder   src_node_strdest_node_str	slots_strs
             rO   #parse_oss_maintenance_completed_msgzBMaintenanceNotificationsParser.parse_oss_maintenance_completed_msg   s     a[&.qk# "$*E 	T 	T&Hi#H--L$Y//M I#99979&|4"<077	8RSSSS*2/EFFFrQ   c                 :    | d         }| d         } |||          S r   rh   )rL   notification_typer   ttls       rO   parse_maintenance_start_msgz:MaintenanceNotificationsParser.parse_maintenance_start_msg   s)     a[qk  S)))rQ   c                 (    | d         } ||          S )Nr-   rh   )rL   r   r   s      rO   parse_maintenance_completed_msgz>MaintenanceNotificationsParser.parse_maintenance_completed_msg   s     a[  $$$rQ   c                     | d         }| d         }| d         d\  }}n@t          | d                   }|                    d          \  }}|t          |          nd }t          ||||          S )Nr-   r   r   )NN:)r   rE   r   r   )rL   r   r   hostportvalues         rO   parse_moving_msgz/MaintenanceNotificationsParser.parse_moving_msg   sy     a[qkA;#JD$$Xa[))ES))JD$ $ 03t999dD%b$c:::rQ   N)
r^   r_   r`   r{   staticmethodr   r   r   r   r   rh   rQ   rO   r   r      s        OO7 7 \7 G G \G2 * * \* % % \% ; ; \; ; ;rQ   r   
invalidateMOVING	MIGRATINGMIGRATEDFAILING_OVERFAILED_OVER
SMIGRATING	SMIGRATED-MSG_TYPE_TO_MAINT_NOTIFICATION_PARSER_MAPPINGc                       e Zd ZU dZeed<   dZee         ed<   dZee         ed<   dZ	ee         ed<   dZ
ee         ed<   d Zd	 Zd
 Zd Zd Zd Zd ZdS )PushNotificationsParserz6Protocol defining RESP3-specific parsing functionalitypubsub_push_handler_funcNinvalidation_push_handler_funcnode_moving_push_handler_funcmaintenance_push_handler_func#oss_cluster_maint_push_handler_funcc                     t                      )zHandle pubsub push responsesrT   rW   rL   s     rO   handle_pubsub_push_responsez3PushNotificationsParser.handle_pubsub_push_response8  s    !###rQ   c                    |d         }t          |t                    r|                                }|t          gt          t
          t          R vr|                     |          S 	 |t          k    r| j        r|                     |          S |t
          k    r:| j	        r3t          |         d         } ||          }| 	                    |          S |t          v rg| j        r`t          |         d         }|t          k    r ||          }nt          |         d         } |||          }||                     |          S |t          k    rf| j        s| j        rXt          |         d         } ||          }|8| j        r|                     |           | j        r|                     |           nF# t          $ r9}t                              d                    |||                     Y d }~nd }~ww xY wd S )Nr   r-   "Error handling {} message ({}): {}rH   bytesdecode_INVALIDATION_MESSAGE_MAINTENANCE_MESSAGES_MOVING_MESSAGE_SMIGRATED_MESSAGEr   r   r   r   r   _SMIGRATING_MESSAGEr   rs   loggererrorformatrW   rL   kwargsmsg_typeparser_functionnotificationr   es           rO   handle_push_responsez,PushNotificationsParser.handle_push_response<  s   A;h&& 	)((H!
"
 
 	
 
 
 
 00:::.	1117 2 ::8DDD?**t/Q*"O##  /x8899,GGG000T5W0"O## 222#2?8#<#<LL(U ))% $3?8=N#O#OL+==lKKK---8 .5 . #P##  /x88+9 I::<HHH? O@@NNN 	 	 	LL4;;HhPQRR       	
 ts-   (&F6 AF6 A/F6 A1F6 6
G9 /G44G9c                     || _         d S rS   r   rW   r   s     rO   set_pubsub_push_handlerz/PushNotificationsParser.set_pubsub_push_handler{  s    (@%%%rQ   c                     || _         d S rS   r   rW   r   s     rO   set_invalidation_push_handlerz5PushNotificationsParser.set_invalidation_push_handler~  s    .L+++rQ   c                     || _         d S rS   r   rW   r   s     rO   set_node_moving_push_handlerz4PushNotificationsParser.set_node_moving_push_handler      -J***rQ   c                     || _         d S rS   r   rW   r   s     rO   set_maintenance_push_handlerz4PushNotificationsParser.set_maintenance_push_handler  r   rQ   c                     || _         d S rS   r   rW   r   s     rO   "set_oss_cluster_maint_push_handlerz:PushNotificationsParser.set_oss_cluster_maint_push_handler      3V000rQ   )r^   r_   r`   r{   r   __annotations__r   r
   r   r   r   r   r   r   r   r   r   r   rh   rQ   rO   r   r   /  s         @@&&&&9="HX$6===8<!8H#5<<<8<!8H#5<<<>B'();BBB$ $ $= = =~A A AM M MK K KK K KW W W W WrQ   r   c                      e Zd ZU dZeed<   dZee         ed<   dZeede	d         f                  ed<   dZ
eede	d         f                  ed<   dZeede	d         f                  ed<   d	 Zd
 Zd Zd Zd Zd Zd ZdS )AsyncPushNotificationsParserz<Protocol defining async RESP3-specific parsing functionalityr   Nr   .r   r   r   c                 "   K   t                      )z+Handle pubsub push responses asynchronouslyrT   r   s     rO   r   z8AsyncPushNotificationsParser.handle_pubsub_push_response  s      !###rQ   c                 :  K   |d         }t          |t                    r|                                }|t          gt          t
          t          R vr|                     |           d{V S 	 |t          k    r"| j        r|                     |           d{V S t          |t                    r|                                }|t
          k    r@| j	        r9t          |         d         } ||          }| 	                    |           d{V S |t          v rm| j        rft          |         d         }|t          k    r ||          }nt          |         d         } |||          }||                     |           d{V S |t          k    rB| j        r;t          |         d         } ||          }||                     |           d{V S nF# t          $ r9}t                              d                    |||                     Y d}~nd}~ww xY wdS )z$Handle push responses asynchronouslyr   Nr-   r   r   r   s           rO   r   z1AsyncPushNotificationsParser.handle_push_response  s      A;h&& 	)((H!
"
 
 	
 
 
 
 66x@@@@@@@@@,	1117 2 "@@JJJJJJJJJ(E** -#??,,?**t/Q*"O##  /x88!??MMMMMMMMM000T5W0"O## 222#2?8#<#<LL(U ))% $3?8=N#O#OL+!%!C!CL!Q!QQQQQQQQ...< / #P##  /x88+!%!I!I,!W!WWWWWWWW 	 	 	LL4;;HhPQRR       	
 ts-   0,G A3G A5G AG 
H/HHc                     || _         dS )z$Set the pubsub push handler functionNr   r   s     rO   r   z4AsyncPushNotificationsParser.set_pubsub_push_handler  s    (@%%%rQ   c                     || _         dS )z*Set the invalidation push handler functionNr   r   s     rO   r   z:AsyncPushNotificationsParser.set_invalidation_push_handler  s    .L+++rQ   c                     || _         d S rS   r   r   s     rO   r   z9AsyncPushNotificationsParser.set_node_moving_push_handler  r   rQ   c                     || _         d S rS   r   r   s     rO   r   z9AsyncPushNotificationsParser.set_maintenance_push_handler  r   rQ   c                     || _         d S rS   r   r   s     rO   r   z?AsyncPushNotificationsParser.set_oss_cluster_maint_push_handler  r   rQ   )r^   r_   r`   r{   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   rh   rQ   rO   r   r     s%        FF&&&&9="HX$6===NR!8HS)D/5I,J#KRRRNR!8HS)D/5I,J#KRRRTX'(3	$;O2P)QXXX$ $ $= = =~A A AM M MK K KK K KW W W W WrQ   r   c                   v     e Zd ZdZej        dz   Zdef fdZd Zd Z	d Z
defd	Zd
edefdZdefdZ xZS )_AsyncRESPBasez!Base class for async resp parsing)rm   ro   _pos_chunksrl   c                     t                                          |           d | _        d| _        g | _        d| _        d S )NrQ   r   )superrq   rm   ro   r   r   )rW   rl   	__class__s     rO   rq   z_AsyncRESPBase.__init__  s<    )****.			rQ   c                 F    d| _         | j                                         d S )NrQ   )ro   r   clearrV   s    rO   _clearz_AsyncRESPBase._clear  s#    rQ   c                     |j         | _        | j        t          t                    |j        | _        |                                  d| _        dS )zCalled when the stream connectsNT)_readerr   r    r/   rm   r   
_connectedr[   s     rO   r]   z_AsyncRESPBase.on_connect  sE    !)<!"@AAA!)rQ   c                     d| _         dS )z"Called when the stream disconnectsFN)r   rV   s    rO   rX   z_AsyncRESPBase.on_disconnect  s    rQ   r   c                   K   | j         st          d          | j        rdS 	 t          d          4 d {V  | j                                        cd d d           d {V  S # 1 d {V swxY w Y   d S # t          $ r Y dS w xY w)NzBuffer is closed.Tr   F)r   OSErrorro   async_timeoutr   at_eofr   rV   s    rO   r   z#_AsyncRESPBase.can_read_destructive  s2      	/-...< 	4	$Q'' - - - - - - - -|**,,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 	 	 	55	s4   A7 A$A7 $
A..A7 1A.2A7 7
BBlengthc                   K   |dz   }| j         |z   }t          | j                  |k    r| j        | j         |dz
           }n| j        | j         d         }	 | j                            |t          |          z
             d{V }n'# t
          $ r}t          t                    |d}~ww xY w||z   dd         }| j        	                    |           | xj         |z  c_         |S )z
        Read `length` bytes of data.  These are assumed to be followed
        by a '
' terminator which is subsequently discarded.
        r   N)
r   rG   ro   r   readexactlyr   r    r/   r   r   )rW   r  wantendresulttaildatar   s           rO   _readz_AsyncRESPBase._read  s     
 zi$t|##\$)cAg"56FF<	,DQ!\55dSYY6FGGGGGGGG& Q Q Q%&DEE5PQTk3B3'FL%%%		T		s   0B 
B,B''B,c                   K   | j                             d| j                  }|dk    r| j         | j        |         }n| j         | j        d         }| j                                         d{V }|                    d          st          t                    ||z   dd         }| j        	                    |           | xj        t          |          dz   z  c_        |S )zq
        read an unknown number of bytes up to the next '
'
        line separator, which is discarded.
        s   
r   Nr  r   )ro   findr   r   readlineendswithr    r/   r   r   rG   )rW   foundr  r	  r
  s        rO   	_readlinez_AsyncRESPBase._readline%  s      
 !!'4955A::\$)e"34FF<	,D..00000000D==)) F%&DEEETk3B3'FL%%%		S[[1_$		rQ   )r^   r_   r`   r{   r}   r   r   rq   r   r]   rX   r   r   r   r  r  __classcell__)r   s   @rO   r   r     s        ++),UUI               	D 	 	 	 	# %    (        rQ   r   )\loggingsysabcr   asyncior   r   r   typingr   r   r	   r
   r   r   redis.maint_notificationsr   r   r   r   r   r   r   r   redis.utilsr   version_infomajorminorr   r   
exceptionsr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   encodersr.   socketr/   r0   ra   rc   rd   rb   re   rf   	getLoggerr^   r   r2   rj   r}   r   r   r   _MIGRATING_MESSAGE_MIGRATED_MESSAGE_FAILING_OVER_MESSAGE_FAILED_OVER_MESSAGEr   r   r   r   r   r   r   r   r   rI   strtupletyper   r   r   r   rh   rQ   rO   <module>r(     s    



       C C C C C C C C C C G G G G G G G G G G G G G G G G	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !          Q3#3#9R#?#?0000000666666                                       (              @ @ @ @ @ @ @ @P N #T     ':0C    !:   
	8	$	$4$ 4$ 4$ 4$ 4$ 4$ 4$ 4$n ?  ?  ?  ?  ?
  ?  ?  ?F$ $ $ $ $j $ $ $$D; D; D; D; D; D; D; D;N %    & $ "      !&B  &F #&B "&F &7 $&F #&J3 .tt+,h6	770   DYW YW YW YW YWh YW YW YWx[W [W [W [W [W8 [W [W [W|L L L L L_ L L L L LrQ   