
    ZeIi                    ^    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
dS )    )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d"S )/MemcachedBridgeuristr
dependencyr   optionsfloat | str | boolreturnNonec                v   || _         t          j                            | j                   | _        || _        g | _        || _        | j        j        	                                
                    d          dz   }| j        j        	                                |d                              d          D ]C}|                    d          \  }}| j                            |t          |          f           D| j        j        r| j        j        | j        d<   | j        j        r| j        j        | j        d<   d S d S )N@   ,:usernamepassword)r
   urllibparseurlparse
parsed_urir   hostsr   netlocstripfindsplitappendintr   r   )selfr
   r   r   seplochostports           h/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/limits/aio/storage/memcached/bridge.py__init__zMemcachedBridge.__init__   s      ,//99$
o$**,,11#66:?)//11#$$7==cBB 	1 	1C3JD$JtSYY/0000?# 	@'+'?DL$?# 	@'+'?DL$$$	@ 	@    keyc                    |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#   r+   s     r(   _expiration_keyzMemcachedBridge._expiration_key!   s     Zr*   -type[Exception] | tuple[type[Exception], ...]c                    d S Nr-   r#   s    r(   base_exceptionszMemcachedBridge.base_exceptions*   s	     9<r*   r"   c                
   K   d S r2   r-   r.   s     r(   getzMemcachedBridge.get0   s      *-#r*   keysIterable[str]dict[bytes, int]c                
   K   d S r2   r-   )r#   r7   s     r(   get_manyzMemcachedBridge.get_many3   s      GJsr*   c                
   K   d S r2   r-   r.   s     r(   clearzMemcachedBridge.clear6   s      -0Sr*   r   Famountnoreplyboolc                
   K   d S r2   r-   )r#   r+   r>   r?   s       r(   decrzMemcachedBridge.decr9   s      SVSVr*   Texpiryfloatset_expiration_keyc                
   K   d S r2   r-   )r#   r+   rC   r>   rE   s        r(   incrzMemcachedBridge.incr<   s       cr*   c                
   K   d S r2   r-   r.   s     r(   
get_expiryzMemcachedBridge.get_expiryE   s      363r*   c                
   K   d S r2   r-   r3   s    r(   checkzMemcachedBridge.checkH   s      #&3r*   N)r
   r   r   r   r   r   r   r   )r+   r   r   r   )r   r0   )r+   r   r   r"   )r7   r8   r   r9   )r+   r   r   r   )r   F)r+   r   r>   r"   r?   r@   r   r"   )r   T)
r+   r   rC   rD   r>   r"   rE   r@   r   r"   )r+   r   r   rD   )r   r@   )__name__
__module____qualname__r)   r/   propertyr   r4   r6   r;   r=   rB   rG   rI   rK   r-   r*   r(   r	   r	   
   s       @ @ @ @,        < < < ^ X< --- ^-JJJ ^J000 ^0VVVV ^V
 #'    ^ 666 ^6&&& ^&&&r*   r	   )
__future__r   r   abcr   r   typesr   limits.typingr   r	   r-   r*   r(   <module>rT      s    " " " " " "  # # # # # # # #       " " " " " "?' ?' ?' ?' ?'c ?' ?' ?' ?' ?'r*   