o
    ;h                     @  sP   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 deZ
dS )    )annotationsN)ABCabstractmethod)
ModuleType)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  s   || _ tj| j | _|| _g | _|| _| jj	 
dd }| jj	 |d  dD ]}|d\}}| j|t|f q,| jjrK| jj| jd< | jjrX| jj| jd< d S d S )N@   ,:usernamepassword)r   urllibparseurlparseZ
parsed_urir
   hostsr   netlocstripfindsplitappendintr   r   )selfr   r
   r   seplochostport r$   V/var/www/html/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_exceptionsr   c                      d S r+   r$   r(   r$   r$   r%   get0      zMemcachedBridge.getkeysIterable[str]dict[bytes, int]c                   r.   r+   r$   )r   r1   r$   r$   r%   get_many3   r0   zMemcachedBridge.get_manyc                   r.   r+   r$   r(   r$   r$   r%   clear6   r0   zMemcachedBridge.clearr   Famountnoreplyboolc                   r.   r+   r$   )r   r'   r6   r7   r$   r$   r%   decr9   r0   zMemcachedBridge.decrTexpiryfloatset_expiration_keyc                   r.   r+   r$   )r   r'   r:   r6   r<   r$   r$   r%   incr<   s   zMemcachedBridge.incrc                   r.   r+   r$   r(   r$   r$   r%   
get_expiryE   r0   zMemcachedBridge.get_expiryc                   r.   r+   r$   r,   r$   r$   r%   checkH   r0   zMemcachedBridge.checkN)r   r	   r
   r   r   r   r   r   )r'   r	   r   r	   )r   r*   )r'   r	   r   r   )r1   r2   r   r3   )r'   r	   r   r   )r   F)r'   r	   r6   r   r7   r8   r   r   )r   T)
r'   r	   r:   r;   r6   r   r<   r8   r   r   )r'   r	   r   r;   )r   r8   )__name__
__module____qualname__r&   r)   propertyr   r-   r/   r4   r5   r9   r=   r>   r?   r$   r$   r$   r%   r   
   s,    

	r   )
__future__r   r   abcr   r   typesr   Zlimits.typingr   r   r$   r$   r$   r%   <module>   s    