o
    Lj,                     @   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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ResponsePolicy
explaincli)request_policyresponse_policysuglenprofile	dropindexaliasupdatealter	aggregatesyndumpcreateexplainsuggetdictdelaliasadddictadd	synupdatedropinfo)	sugadddictdumpcursorsearchtagvalsaliasdel	aliaslistsugdel
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,   r0   r0   U/home/djax/ivt_ai_plugin/venv/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.
        Nr0   r2   r6   r0   r0   r3   with_fallback   r5   zPolicyResolver.with_fallbackNr6   r+   r-   r+   	__name__
__module____qualname__r   strr   r   r4   r8   r0   r0   r0   r3   r+      
    r+   c                   @   r*   )
AsyncPolicyResolverr,   r-   c                    s   dS r/   r0   r1   r0   r0   r3   r4      s   zAsyncPolicyResolver.resolver6   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.
        Nr0   r7   r0   r0   r3   r8      r5   z!AsyncPolicyResolver.with_fallbackNr6   r@   r-   r@   r:   r0   r0   r0   r3   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policiesr6   r-   c                 C      || _ || _d S N	_policies	_fallbackr2   rD   r6   r0   r0   r3   __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
ValueErrorrH   getrI   r4   r2   r,   partsmoduler&   r0   r0   r3   r4      s   
 

zBasePolicyResolver.resolver+   c                 C      d S rF   r0   r7   r0   r0   r3   r8         z BasePolicyResolver.with_fallbackrF   r9   )r;   r<   r=   __doc__r   r   r+   rK   r>   r   r4   r   r8   r0   r0   r0   r3   rC          
rC   c                   @   rB   )AsyncBasePolicyResolverz0
    Async base class for policy resolvers.
    NrD   r6   r-   c                 C   rE   rF   rG   rJ   r0   r0   r3   rK      rL   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 rM   rP   rU   r0   r0   r3   r4      s   
 

zAsyncBasePolicyResolver.resolver@   c                 C   rX   rF   r0   r7   r0   r0   r3   r8      rY   z%AsyncBasePolicyResolver.with_fallbackrF   rA   )r;   r<   r=   rZ   r   r   r@   rK   r>   r   r4   r   r8   r0   r0   r0   r3   r\      r[   r\   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_parserr6   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superrK   get_command_policies)r2   r_   r6   	__class__r0   r3   rK   	  s   	zDynamicPolicyResolver.__init__r+   c                 C      t | j|S rF   )r^   r`   r7   r0   r0   r3   r8        z#DynamicPolicyResolver.with_fallbackrF   r9   )
r;   r<   r=   rZ   r   r   r+   rK   r8   __classcell__r0   r0   rc   r3   r^     s    r^   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.
    Nr6   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ra   rK   r)   r7   rc   r0   r3   rK        zStaticPolicyResolver.__init__r+   c                 C      t |S rF   )ri   r7   r0   r0   r3   r8   &     z"StaticPolicyResolver.with_fallbackrF   r9   )	r;   r<   r=   rZ   r   r+   rK   r8   rg   r0   r0   rc   r3   ri         ri   c                       r]   )AsyncDynamicPolicyResolverz1
    Async version of DynamicPolicyResolver.
    Npolicy_recordsr6   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)ra   rK   )r2   rq   r6   rc   r0   r3   rK   /  s   z#AsyncDynamicPolicyResolver.__init__r@   c                 C   re   rF   )rp   rH   r7   r0   r0   r3   r8   <  rf   z(AsyncDynamicPolicyResolver.with_fallbackrF   rA   )
r;   r<   r=   rZ   r   r   r@   rK   r8   rg   r0   r0   rc   r3   rp   *  s    rp   c                       rh   )AsyncStaticPolicyResolverz0
    Async version of StaticPolicyResolver.
    Nr6   r-   c                    rj   )z
        Parameters:
            fallback (Optional[AsyncPolicyResolver]): An optional fallback policy resolver
            used for resolving policies if static policies are inadequate.
        Nrk   r7   rc   r0   r3   rK   E  rl   z"AsyncStaticPolicyResolver.__init__r@   c                 C   rm   rF   )rr   r7   r0   r0   r3   r8   M  rn   z'AsyncStaticPolicyResolver.with_fallbackrF   rA   )	r;   r<   r=   rZ   r   r@   rK   r8   rg   r0   r0   rc   r3   rr   @  ro   rr   N)abcr   r   typingr   redis._parsers.commandsr   r   r   r   r	   DEFAULT_KEYLESSDEFAULT_KEYEDSPECIALr)   __annotations__r+   r@   rC   r\   r^   ri   rp   rr   r0   r0   r0   r3   <module>   s   		!%)-159=AEkt&&