
    keJi,                        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 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 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                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                   ee	j        e
j                  dd ee	j        e
j                  idZeed<    G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G 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                   R    e Zd Zededee         fd            Zedd            ZdS )PolicyResolvercommand_namereturnc                     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,   s     ]/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/redis/commands/policies.pyresolvezPolicyResolver.resolve}   	     	    fallbackc                     dS )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   r7   s     r3   with_fallbackzPolicyResolver.with_fallback   r5   r6   Nr7   r+   r-   r+   	__name__
__module____qualname__r   strr   r   r4   r:   r0   r6   r3   r+   r+   |   se        
C 
H_,E 
 
 
 ^
 
 
 
 ^
 
 
r6   r+   c                   R    e Zd Zededee         fd            Zedd            ZdS )AsyncPolicyResolverr,   r-   c                 
   K   dS r/   r0   r1   s     r3   r4   zAsyncPolicyResolver.resolve   s       	r6   r7   c                     dS )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   r9   s     r3   r:   z!AsyncPolicyResolver.with_fallback   r5   r6   Nr7   rB   r-   rB   r<   r0   r6   r3   rB   rB      se        
# 
(?2K 
 
 
 ^
 
 
 
 ^
 
 
r6   rB   c                   j    e Zd ZdZ	 ddedee         ddfdZdedee	         fdZ
edd
            ZdS )BasePolicyResolverz*
    Base class for policy resolvers.
    Npoliciesr7   r-   c                 "    || _         || _        d S N	_policies	_fallbackr2   rH   r7   s      r3   __init__zBasePolicyResolver.__init__        "!r6   r,   c                 2   |                     d          }t          |          dk    rt          d|           t          |          dk    r|n	d|d         f\  }}| j                            |d           #| j        | j                            |          S d S | j                            |                              |d           #| j        | j                            |          S d S | j                            |                              |          S N.   zWrong command or module name: r(   r   splitlen
ValueErrorrL   getrM   r4   r2   r,   partsmoduler&   s        r3   r4   zBasePolicyResolver.resolve   s   ""3''u::>>LlLLMMM#&u::??%%q8J>fd++3~)~--l;;;t>f%%))'488@~)~--l;;;t~!!&))--g666r6   r+   c                     d S rJ   r0   r9   s     r3   r:   z BasePolicyResolver.with_fallback       r6   rJ   r;   )r=   r>   r?   __doc__r   r   r+   rO   r@   r   r4   r   r:   r0   r6   r3   rG   rG      s         
 MQ" "%"19.1I"	" " " "7C 7H_,E 7 7 7 7,    ^  r6   rG   c                   j    e Zd ZdZ	 ddedee         ddfdZdedee	         fdZ
edd
            ZdS )AsyncBasePolicyResolverz0
    Async base class for policy resolvers.
    NrH   r7   r-   c                 "    || _         || _        d S rJ   rK   rN   s      r3   rO   z AsyncBasePolicyResolver.__init__   rP   r6   r,   c                 N  K   |                     d          }t          |          dk    rt          d|           t          |          dk    r|n	d|d         f\  }}| j                            |d           )| j         | j                            |           d {V S d S | j                            |                              |d           )| j         | j                            |           d {V S d S | j                            |                              |          S rR   rU   rZ   s        r3   r4   zAsyncBasePolicyResolver.resolve   s/     ""3''u::>>LlLLMMM#&u::??%%q8J>fd++3~)!^33LAAAAAAAAAt>f%%))'488@~)!^33LAAAAAAAAAt~!!&))--g666r6   rB   c                     d S rJ   r0   r9   s     r3   r:   z%AsyncBasePolicyResolver.with_fallback   r^   r6   rJ   rE   )r=   r>   r?   r_   r   r   rB   rO   r@   r   r4   r   r:   r0   r6   r3   ra   ra      s         
 RV" "%"19:M1N"	" " " "7# 7(?2K 7 7 7 7,    ^  r6   ra   c                   H     e Zd ZdZ	 d	dedee         ddf fdZd
dZ xZ	S )DynamicPolicyResolverzB
    Resolves policy dynamically based on the COMMAND output.
    Ncommands_parserr7   r-   c                 ~    || _         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superrO   get_command_policies)r2   rg   r7   	__class__s      r3   rO   zDynamicPolicyResolver.__init__  s9     !0==??JJJJJr6   r+   c                 ,    t          | j        |          S rJ   )rf   ri   r9   s     r3   r:   z#DynamicPolicyResolver.with_fallback  s    $T%:HEEEr6   rJ   r;   )
r=   r>   r?   r_   r   r   r+   rO   r:   __classcell__rl   s   @r3   rf   rf      s         
 UY
K 
K-
K9A.9Q
K	
K 
K 
K 
K 
K 
KF F F F F F F Fr6   rf   c                   B     e Zd ZdZddee         ddf fdZd	dZ xZS )
StaticPolicyResolverz?
    Resolves policy from a static list of policy records.
    Nr7   r-   c                 V    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   rO   r)   r2   r7   rl   s     r3   rO   zStaticPolicyResolver.__init__  %     	(33333r6   r+   c                      t          |          S rJ   )rq   r9   s     r3   r:   z"StaticPolicyResolver.with_fallback"  s    #H---r6   rJ   r;   )	r=   r>   r?   r_   r   r+   rO   r:   rn   ro   s   @r3   rq   rq     ss         4 4.!9 4T 4 4 4 4 4 4. . . . . . . .r6   rq   c                   H     e Zd ZdZ	 d	dedee         ddf fdZd
dZ xZ	S )AsyncDynamicPolicyResolverz1
    Async version of DynamicPolicyResolver.
    Npolicy_recordsr7   r-   c                 L    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   rO   )r2   ry   r7   rl   s      r3   rO   z#AsyncDynamicPolicyResolver.__init__+  s%     	22222r6   rB   c                 ,    t          | j        |          S rJ   )rx   rL   r9   s     r3   r:   z(AsyncDynamicPolicyResolver.with_fallback8  s    )$.(CCCr6   rJ   rE   )
r=   r>   r?   r_   r   r   rB   rO   r:   rn   ro   s   @r3   rx   rx   &  s          373 3%3 ./3 
	3 3 3 3 3 3D D D D D D D Dr6   rx   c                   B     e Zd ZdZddee         ddf fdZd	dZ xZS )
AsyncStaticPolicyResolverz0
    Async version of StaticPolicyResolver.
    Nr7   r-   c                 V    t                                          t          |           dS )z
        Parameters:
            fallback (Optional[AsyncPolicyResolver]): An optional fallback policy resolver
            used for resolving policies if static policies are inadequate.
        Nrs   rt   s     r3   rO   z"AsyncStaticPolicyResolver.__init__A  ru   r6   rB   c                      t          |          S rJ   )r}   r9   s     r3   r:   z'AsyncStaticPolicyResolver.with_fallbackI  s    (222r6   rJ   rE   )	r=   r>   r?   r_   r   rB   rO   r:   rn   ro   s   @r3   r}   r}   <  st         4 4*=!> 4$ 4 4 4 4 4 43 3 3 3 3 3 3 3r6   r}   N)abcr   r   typingr   redis._parsers.commandsr   r   r   r	   r
   DEFAULT_KEYLESSDEFAULT_KEYEDSPECIALr)   __annotations__r+   rB   rG   ra   rf   rq   rx   r}   r0   r6   r3   <module>r      s;   # # # # # # # # #                   eoo(8*:
 
 
e
 	//(6*8
 
 
e 	??(8*:
 
 
e 	__(8*:
 
 
e" 	(8*:
 
 
#e* 	(8*:
 
 
+e2 	__(8*:
 
 
3e: 	??(8*:
 
 
;eB 	//(8*:
 
 
CeJ 	??(8*:
 
 
KeR 	//(6*8
 
 
SeZ 	??(8*:
 
 
[eb 	OO(8*:
 
 
cej 	??(8*:
 
 
ker 	__(8*:
 
 
sez 	(8*:
 
 
{eB 	(8*:
 
 
CeJ "/(6*8
 
 
 $O(8*:
 
 
 "/(0*:
 
 
 "/(8*:
 
 
 #?(8*:
 
 
 $O(8*:
 
 
 "/(6*8
 
 
 &o(8*:
 
 
Ce e eN 	??(8*:
 
 
Om" m" m m m`    S   8    #   8# # # # # # # #L# # # # #1 # # #LF F F F F. F F F*. . . . .- . . ."D D D D D!8 D D D,3 3 3 3 3 7 3 3 3 3 3r6   