
    ZeIi                    v    d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 ddl
mZ erd dlZ G d d	e          ZdS )
    )annotationsN)ceil)
ModuleType)TYPE_CHECKINGIterable   )MemcachedBridgec                  ~     e Zd Zd# fd	Zed$d            Zd%dZd&dZd'dZd(dZ	d)d*dZ
	 d+d,d Zd-d!Zd.d"Z xZS )/MemcachioBridgeuristr
dependencyr   optionsfloat | str | boolreturnNonec                L     t                      j        ||fi | d | _        d S N)super__init___storage)selfr   r   r   	__class__s       k/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/limits/aio/storage/memcached/memcachio.pyr   zMemcachioBridge.__init__   s1     	j44G4448<    -type[Exception] | tuple[type[Exception], ...]c                F    | j         j        j        | j         j        j        fS r   )r   errorsNoAvailableNodesMemcachioConnectionErrorr   s    r   base_exceptionszMemcachioBridge.base_exceptions   s$    
 O"3O";
 	
r   memcachio.Client[bytes]c                   K   | j         s, | j        j        d | j        D             fi | j        | _         | j         sJ | j         S )Nc                    g | ]	\  }}||f
S  r&   ).0hps      r   
<listcomp>z/MemcachioBridge.get_storage.<locals>.<listcomp>$   s     ///DAq!Q///r   )r   r   Clienthostsr   r!   s    r   get_storagezMemcachioBridge.get_storage!   sb      } 	2DO2//DJ/// , DM }}r   keyintc                   K   |                      |g           d {V                     |                    d          d          S )Nutf-8r   )get_manygetencoder   r.   s     r   r3   zMemcachioBridge.get*   sH      mmSE********//

70C0CQGGGr   keysIterable[str]dict[bytes, int]c                   K    |                                   d{V j        d |D               d{V }d |                                D             S )zo
        Return multiple counters at once

        :param keys: the keys to get the counter values for
        Nc                8    g | ]}|                     d           S )r1   )r4   )r'   ks     r   r*   z,MemcachioBridge.get_many.<locals>.<listcomp>4   s$    ...Aahhw...r   c                >    i | ]\  }}|t          |j                  S r&   )r/   value)r'   r;   vs      r   
<dictcomp>z,MemcachioBridge.get_many.<locals>.<dictcomp>6   s&    <<<DAq3qw<<<<<r   )r-   r3   items)r   r6   resultss      r   r2   zMemcachioBridge.get_many-   s       7t//111111116.....
 
 
 
 
 
 
 =<GMMOO<<<<r   c                   K   |                                   d {V                     |                    d                     d {V  d S Nr1   )r-   deleter4   r5   s     r   clearzMemcachioBridge.clear8   s\      %%''''''''//

70C0CDDDDDDDDDDDr   r   Famountnoreplyboolc                   K   |                                   d {V }|                    d          }|                    |||           d {V pdS )Nr1   )rG   r   )r-   r4   decr)r   r.   rF   rG   storage	limit_keys         r   rJ   zMemcachioBridge.decr;   si      ((********JJw''	\\)VW\EEEEEEEEJJr   Texpiryfloatset_expiration_keyc                  K   |                                   d {V }|                    d          }|                     |                                          }|                    ||           d {V x}|                                   d {V }|                    ||                                 t          |                     d {V rd|r`|                    |t          |t          j                    z                                 d          t          |          d           d {V  |S |                                   d {V }|                    ||           d {V p|S |S )Nr1   )rM   F)rM   rG   )	r-   r4   _expiration_keyincraddr   setr   time)	r   r.   rM   rF   rO   rK   rL   
expire_keyr=   s	            r   rR   zMemcachioBridge.incr@   s      ((********JJw''	))#..5577
#LLF;;;;;;;;<EE ,,........G[[vK,>,>,@,@f[VVVVVVVV G% !++"FTY[[01188AA#F|| %	 &           $ 0 0 2 2222222$\\)V<<<<<<<<FFr   c                :  K   |                                   d {V }|                     |                              d          }|                    |           d {V                     |d           }|rt	          |j                  pt          j                    S rC   )r-   rQ   r4   r3   rN   r=   rU   )r   r.   rK   expiration_keyitems        r   
get_expiryzMemcachioBridge.get_expiryV   s      ((********--c2299'BBkk.1111111166~tLL)dj))8TY[[8r   c                   K   	 |                                   d{V }|                    d           d{V  dS #  Y dS xY w)zq
        Check if storage is healthy by calling the ``get`` command
        on the key ``limiter-check``
        Ns   limiter-checkTF)r-   r3   )r   rK   s     r   checkzMemcachioBridge.check]   sh      
	 ,,........G++./////////4	55s	   5; A )r   r   r   r   r   r   r   r   )r   r   )r   r#   )r.   r   r   r/   )r6   r7   r   r8   )r.   r   r   r   )r   F)r.   r   rF   r/   rG   rH   r   r/   )r   T)
r.   r   rM   rN   rF   r/   rO   rH   r   r/   )r.   r   r   rN   )r   rH   )__name__
__module____qualname__r   propertyr"   r-   r3   r2   rE   rJ   rR   rZ   r\   __classcell__)r   s   @r   r   r      s       = = = = = = 
 
 
 X
   H H H H	= 	= 	= 	=E E E EK K K K K TX    ,9 9 9 9       r   r   )
__future__r   rU   mathr   typesr   typingr   r   bridger	   	memcachior   r&   r   r   <module>rh      s    " " " " " "              * * * * * * * * # # # # # # Z Z Z Z Zo Z Z Z Z Zr   