o
    i,                     @   s  U d dl mZmZ d dlmZ d dlmZmZmZm	Z	m
Z
 i dee	je
jddee	je
jddee	je
jddee	je
jdd	ee	je
jdd
ee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jddee	je
jdee	je
jdee	je
jdee	je
jdee	je
jdee	je
jdee	je
jdee	je
jdee	je
jdddee	je
jdidZeed< G dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZd*S )+    )ABCabstractmethod)Optional)CommandPoliciesCommandsParserPolicyRecordsRequestPolicyResponsePolicyZ
explaincli)Zrequest_policyZresponse_policyZsuglenZprofileZ	dropindexZaliasupdateZalterZ	aggregateZsyndumpcreateexplainZsuggetZdictdelZaliasaddZdictaddZ	synupdateZdropinfo)ZsugaddZdictdumpcursorsearchZtagvalsZaliasdelZsugdelZ
spellcheckcommand)ftcoreSTATIC_POLICIESc                   @   4   e Zd Zededee fddZed	ddZdS )
PolicyResolvercommand_namereturnc                 C      dS a  
        Resolves the command name and determines the associated command policies.

        Args:
            command_name: The name of the command to resolve.

        Returns:
            CommandPolicies: The policies associated with the specified command.
        N selfr   r   r   N/home/app/Keep/.python/lib/python3.10/site-packages/redis/commands/policies.pyresolve}      zPolicyResolver.resolvefallbackc                 C   r   )a  
        Factory method to instantiate a policy resolver with a fallback resolver.

        Args:
            fallback: Fallback resolver

        Returns:
            PolicyResolver: Returns a new policy resolver with the specified fallback resolver.
        Nr   r   r   r   r   r   with_fallback   r   zPolicyResolver.with_fallbackNr   r   r   r   	__name__
__module____qualname__r   strr   r   r   r!   r   r   r   r   r   |   
    r   c                   @   r   )
AsyncPolicyResolverr   r   c                    s   dS r   r   r   r   r   r   r      s   zAsyncPolicyResolver.resolver   c                 C   r   )a  
        Factory method to instantiate an async policy resolver with a fallback resolver.

        Args:
            fallback: Fallback resolver

        Returns:
            AsyncPolicyResolver: Returns a new policy resolver with the specified fallback resolver.
        Nr   r    r   r   r   r!      r   z!AsyncPolicyResolver.with_fallbackNr   r)   r   r)   r#   r   r   r   r   r)      r(   r)   c                   @   R   e Zd ZdZ	ddedee ddfddZdedee	 fd	d
Z
edddZdS )BasePolicyResolverz*
    Base class for policy resolvers.
    Npoliciesr   r   c                 C      || _ || _d S N	_policies	_fallbackr   r-   r   r   r   r   __init__      
zBasePolicyResolver.__init__r   c                 C   s   | d}t|dkrtd| t|dkr|nd|d f\}}| j|d d u r8| jd ur6| j|S d S | j||d d u rQ| jd urO| j|S d S | j||S N.   zWrong command or module name: r   r   splitlen
ValueErrorr1   getr2   r   r   r   partsmoduler   r   r   r   r      s   
 

zBasePolicyResolver.resolver   c                 C      d S r/   r   r    r   r   r   r!         z BasePolicyResolver.with_fallbackr/   r"   )r$   r%   r&   __doc__r   r   r   r4   r'   r   r   r   r!   r   r   r   r   r,          
r,   c                   @   r+   )AsyncBasePolicyResolverz0
    Async base class for policy resolvers.
    Nr-   r   r   c                 C   r.   r/   r0   r3   r   r   r   r4      r5   z AsyncBasePolicyResolver.__init__r   c                    s   | d}t|dkrtd| t|dkr|nd|d f\}}| j|d d u r<| jd ur:| j|I d H S d S | j||d d u rX| jd urV| j|I d H S d S | j||S r6   r9   r>   r   r   r   r      s   
 

zAsyncBasePolicyResolver.resolver)   c                 C   rA   r/   r   r    r   r   r   r!      rB   z%AsyncBasePolicyResolver.with_fallbackr/   r*   )r$   r%   r&   rC   r   r   r)   r4   r'   r   r   r   r!   r   r   r   r   rE      rD   rE   c                       @   e Zd ZdZ	ddedee ddf fddZdd	d
Z  Z	S )DynamicPolicyResolverzB
    Resolves policy dynamically based on the COMMAND output.
    Ncommands_parserr   r   c                    s   || _ t | | dS )z
        Parameters:
            commands_parser (CommandsParser): COMMAND output parser.
            fallback (Optional[PolicyResolver]): An optional resolver to be used when the
                primary policies cannot handle a specific request.
        N)_commands_parsersuperr4   Zget_command_policies)r   rH   r   	__class__r   r   r4     s   	zDynamicPolicyResolver.__init__r   c                 C      t | j|S r/   )rG   rI   r    r   r   r   r!        z#DynamicPolicyResolver.with_fallbackr/   r"   )
r$   r%   r&   rC   r   r   r   r4   r!   __classcell__r   r   rK   r   rG      s    rG   c                       :   e Zd ZdZd
dee ddf fddZddd	Z  ZS )StaticPolicyResolverz?
    Resolves policy from a static list of policy records.
    Nr   r   c                       t  t| dS )z
        Parameters:
            fallback (Optional[PolicyResolver]): An optional fallback policy resolver
            used for resolving policies if static policies are inadequate.
        NrJ   r4   r   r    rK   r   r   r4        zStaticPolicyResolver.__init__r   c                 C      t |S r/   )rQ   r    r   r   r   r!   "     z"StaticPolicyResolver.with_fallbackr/   r"   )	r$   r%   r&   rC   r   r   r4   r!   rO   r   r   rK   r   rQ         rQ   c                       rF   )AsyncDynamicPolicyResolverz1
    Async version of DynamicPolicyResolver.
    Npolicy_recordsr   r   c                    s   t  || dS )z
        Parameters:
            policy_records (PolicyRecords): Policy records.
            fallback (Optional[AsyncPolicyResolver]): An optional resolver to be used when the
                primary policies cannot handle a specific request.
        N)rJ   r4   )r   rY   r   rK   r   r   r4   +  s   z#AsyncDynamicPolicyResolver.__init__r)   c                 C   rM   r/   )rX   r1   r    r   r   r   r!   8  rN   z(AsyncDynamicPolicyResolver.with_fallbackr/   r*   )
r$   r%   r&   rC   r   r   r)   r4   r!   rO   r   r   rK   r   rX   &  s    rX   c                       rP   )AsyncStaticPolicyResolverz0
    Async version of StaticPolicyResolver.
    Nr   r   c                    rR   )z
        Parameters:
            fallback (Optional[AsyncPolicyResolver]): An optional fallback policy resolver
            used for resolving policies if static policies are inadequate.
        NrS   r    rK   r   r   r4   A  rT   z"AsyncStaticPolicyResolver.__init__r)   c                 C   rU   r/   )rZ   r    r   r   r   r!   I  rV   z'AsyncStaticPolicyResolver.with_fallbackr/   r*   )	r$   r%   r&   rC   r   r)   r4   r!   rO   r   r   rK   r   rZ   <  rW   rZ   N)abcr   r   typingr   Zredis._parsers.commandsr   r   r   r   r	   ZDEFAULT_KEYLESSZDEFAULT_KEYEDZSPECIALr   __annotations__r   r)   r,   rE   rG   rQ   rX   rZ   r   r   r   r   <module>   s   		!%)-159=AEgp&&