o
    ri=                     @  sT   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd deZdS )	    )annotations)ABCabstractmethod)
ModuleType)parse_storage_uri)Iterablec                   @  s   e Zd Zd-d	d
Zd.ddZeed/ddZed0ddZed1ddZ	ed2ddZ
ed3d4d d!Ze		"d5d6d&d'Zed7d(d)Zed8d*d+Zd,S )9MemcachedBridgeuristr
dependencyr   optionsfloat | str | boolreturnNonec                 K  sZ   || _ t|| _|| _| jj| _|| _| jjr| jj| jd< | jjr+| jj| jd< d S d S )Nusernamepassword)	r	   r   
parsed_urir   	locationshostsr   r   r   )selfr	   r   r    r   b/var/www/html/pca-backend/venv/lib/python3.10/site-packages/limits/aio/storage/memcached/bridge.py__init__   s   

zMemcachedBridge.__init__keyc                 C  s   |d 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/expiresr   r   r   r   r   r   _expiration_key   s   zMemcachedBridge._expiration_key-type[Exception] | tuple[type[Exception], ...]c                 C  s   d S Nr   r   r   r   r   base_exceptions%   s   zMemcachedBridge.base_exceptionsintc                      d S r   r   r   r   r   r   get+      zMemcachedBridge.getkeysIterable[str]dict[bytes, int]c                   r!   r   r   )r   r$   r   r   r   get_many.   r#   zMemcachedBridge.get_manyc                   r!   r   r   r   r   r   r   clear1   r#   zMemcachedBridge.clear   Famountnoreplyboolc                   r!   r   r   )r   r   r*   r+   r   r   r   decr4   r#   zMemcachedBridge.decrTexpiryfloatset_expiration_keyc                   r!   r   r   )r   r   r.   r*   r0   r   r   r   incr7   s   zMemcachedBridge.incrc                   r!   r   r   r   r   r   r   
get_expiry@   r#   zMemcachedBridge.get_expiryc                   r!   r   r   r   r   r   r   checkC   r#   zMemcachedBridge.checkN)r	   r
   r   r   r   r   r   r   )r   r
   r   r
   )r   r   )r   r
   r   r    )r$   r%   r   r&   )r   r
   r   r   )r)   F)r   r
   r*   r    r+   r,   r   r    )r)   T)
r   r
   r.   r/   r*   r    r0   r,   r   r    )r   r
   r   r/   )r   r,   )__name__
__module____qualname__r   r   propertyr   r   r"   r'   r(   r-   r1   r2   r3   r   r   r   r   r   
   s,    

	r   N)
__future__r   abcr   r   typesr   limits._storage_schemer   limits.typingr   r   r   r   r   r   <module>   s    