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Ú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Ú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+   r/   r/   úV/root/parts/websockify/install/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/   ©r1   r5   r/   r/   r2   Úwith_fallbackŠ   r4   zPolicyResolver.with_fallbackN©r5   r*   r,   r*   ©	Ú__name__Ú
__module__Ú__qualname__r   Ústrr   r   r3   r7   r/   r/   r/   r2   r*   |   ó
    r*   c                   @   r)   )
ÚAsyncPolicyResolverr+   r,   c                 Ã   s   �dS r.   r/   r0   r/   r/   r2   r3   ™   s   €zAsyncPolicyResolver.resolver5   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/   r6   r/   r/   r2   r7   ¦   r4   z!AsyncPolicyResolver.with_fallbackN©r5   r?   r,   r?   r9   r/   r/   r/   r2   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Úpoliciesr5   r,   c                 C   ó   || _ || _d S ©N©Ú	_policiesÚ	_fallback©r1   rC   r5   r/   r/   r2   Ú__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Ú
ValueErrorrG   ÚgetrH   r3   ©r1   r+   ÚpartsÚmoduler%   r/   r/   r2   r3   ¿   s   
 

zBasePolicyResolver.resolver*   c                 C   ó   d S rE   r/   r6   r/   r/   r2   r7   Õ   ó   z BasePolicyResolver.with_fallbackrE   r8   )r:   r;   r<   Ú__doc__r   r   r*   rJ   r=   r   r3   r   r7   r/   r/   r/   r2   rB   ´   ó    ÿÿÿ
þrB   c                   @   rA   )ÚAsyncBasePolicyResolverz0
    Async base class for policy resolvers.
    NrC   r5   r,   c                 C   rD   rE   rF   rI   r/   r/   r2   rJ   ß   rK   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 rL   rO   rT   r/   r/   r2   r3   å   s   €
 

zAsyncBasePolicyResolver.resolver?   c                 C   rW   rE   r/   r6   r/   r/   r2   r7   û   rX   z%AsyncBasePolicyResolver.with_fallbackrE   r@   )r:   r;   r<   rY   r   r   r?   rJ   r=   r   r3   r   r7   r/   r/   r/   r2   r[   Ú   rZ   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_parserr5   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ÚsuperrJ   Úget_command_policies)r1   r^   r5   ©Ú	__class__r/   r2   rJ     s   	zDynamicPolicyResolver.__init__r*   c                 C   ó   t | j|ƒS rE   )r]   r_   r6   r/   r/   r2   r7     ó   z#DynamicPolicyResolver.with_fallbackrE   r8   )
r:   r;   r<   rY   r   r   r*   rJ   r7   Ú__classcell__r/   r/   rb   r2   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.
    Nr5   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©r`   rJ   r(   r6   rb   r/   r2   rJ     ó   zStaticPolicyResolver.__init__r*   c                 C   ó   t |ƒS rE   )rh   r6   r/   r/   r2   r7   "  ó   z"StaticPolicyResolver.with_fallbackrE   r8   )	r:   r;   r<   rY   r   r*   rJ   r7   rf   r/   r/   rb   r2   rh     ó    rh   c                       r\   )ÚAsyncDynamicPolicyResolverz1
    Async version of DynamicPolicyResolver.
    NÚpolicy_recordsr5   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)r`   rJ   )r1   rp   r5   rb   r/   r2   rJ   +  s   z#AsyncDynamicPolicyResolver.__init__r?   c                 C   rd   rE   )ro   rG   r6   r/   r/   r2   r7   8  re   z(AsyncDynamicPolicyResolver.with_fallbackrE   r@   )
r:   r;   r<   rY   r   r   r?   rJ   r7   rf   r/   r/   rb   r2   ro   &  s    ýþýüro   c                       rg   )ÚAsyncStaticPolicyResolverz0
    Async version of StaticPolicyResolver.
    Nr5   r,   c                    ri   )zÃ
        Parameters:
            fallback (Optional[AsyncPolicyResolver]): An optional fallback policy resolver
            used for resolving policies if static policies are inadequate.
        Nrj   r6   rb   r/   r2   rJ   A  rk   z"AsyncStaticPolicyResolver.__init__r?   c                 C   rl   rE   )rq   r6   r/   r/   r2   r7   I  rm   z'AsyncStaticPolicyResolver.with_fallbackrE   r@   )	r:   r;   r<   rY   r   r?   rJ   r7   rf   r/   r/   rb   r2   rq   <  rn   rq   N)Úabcr   r   Útypingr   Úredis._parsers.commandsr   r   r   r   r	   ÚDEFAULT_KEYLESSÚDEFAULT_KEYEDÚSPECIALr(   Ú__annotations__r*   r?   rB   r[   r]   rh   ro   rq   r/   r/   r/   r2   Ú<module>   s   	þÿþû	þ÷þóþïþëþçþã!þß%þÛ)þ×-þÓ1þÏ5þË9þÇ=þÃAþ¿EþþþþþþþþŸgþÿ™p&&