
    9i                    V    d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	  G d de      Z
y)    )annotationsN)ABCabstractmethod)
ModuleType)Iterablec                      e Zd Z	 	 	 	 	 	 	 	 ddZddZee	 	 dd              Zedd       Zedd       Z	edd       Z
eddd       Ze	 	 d	 	 	 	 	 	 	 	 	 dd       Zedd	       Zedd
       Zy)MemcachedBridgec                   || _         t        j                  j                  | j                         | _        || _        g | _        || _        | j                  j                  j                         j                  d      dz   }| j                  j                  j                         |d  j                  d      D ]<  }|j                  d      \  }}| j                  j                  |t        |      f       > | j                  j                  r#| j                  j                  | j                  d<   | j                  j                  r$| j                  j                  | j                  d<   y y )N@   ,:usernamepassword)uriurllibparseurlparse
parsed_uri
dependencyhostsoptionsnetlocstripfindsplitappendintr   r   )selfr   r   r   seplochostports           V/var/www/html/venv/lib/python3.12/site-packages/limits/aio/storage/memcached/bridge.py__init__zMemcachedBridge.__init__   s     ,,//9$
oo$$**,11#6:??))//1#$7==cB 	1C3JD$JJtSY/0	1 ??##'+'?'?DLL$??##'+'?'?DLL$ $    c                    |dz   S )z
        Return the expiration key for the given counter key.

        Memcached doesn't natively return the expiration time or TTL for a given key,
        so we implement the expiration time on a separate key.
        z/expires r   keys     r$   _expiration_keyzMemcachedBridge._expiration_key!   s     Zr&   c                     y Nr(   r   s    r$   base_exceptionszMemcachedBridge.base_exceptions*   s     9<r&   c                   K   y wr-   r(   r)   s     r$   getzMemcachedBridge.get0   s	     *-   c                   K   y wr-   r(   )r   keyss     r$   get_manyzMemcachedBridge.get_many3   s	     GJr2   c                   K   y wr-   r(   r)   s     r$   clearzMemcachedBridge.clear6   s	     -0r2   c                   K   y wr-   r(   )r   r*   amountnoreplys       r$   decrzMemcachedBridge.decr9   s	     SVr2   c                   K   y wr-   r(   )r   r*   expiryr9   set_expiration_keys        r$   incrzMemcachedBridge.incr<   s      r2   c                   K   y wr-   r(   r)   s     r$   
get_expiryzMemcachedBridge.get_expiryE   s	     36r2   c                   K   y wr-   r(   r.   s    r$   checkzMemcachedBridge.checkH   s	     #&r2   N)r   strr   r   r   zfloat | str | boolreturnNone)r*   rD   rE   rD   )rE   z-type[Exception] | tuple[type[Exception], ...])r*   rD   rE   r   )r4   zIterable[str]rE   zdict[bytes, int])r*   rD   rE   rF   )r   F)r*   rD   r9   r   r:   boolrE   r   )r   T)
r*   rD   r=   floatr9   r   r>   rG   rE   r   )r*   rD   rE   rH   )rE   rG   )__name__
__module____qualname__r%   r+   propertyr   r/   r1   r5   r7   r;   r?   rA   rC   r(   r&   r$   r	   r	   
   s    @@ @ &	@
 
@,  <	6<  < - -J J0 0V V
 #'  	
 ! 
  6 6& &r&   r	   )
__future__r   r   abcr   r   typesr   limits.typingr   r	   r(   r&   r$   <module>rQ      s     "  #  "?'c ?'r&   