
    5j                    x    S SK Jr  S SKrS SKJr  S SKJr  S SKJrJ	r	  SSK
Jr  \(       a  S SKr " S S	\5      rg)
    )annotationsN)ceil)
ModuleType)TYPE_CHECKINGIterable   )MemcachedBridgec                     ^  \ rS rSr        SU 4S jjr\  SS j5       rSS jrSS jrSS jr	SS jr
SSS jjr S         SS	 jjrSS
 jrSS jrSrU =r$ )MemcachioBridge   c                6   > [         TU ]  " X40 UD6  S U l        g N)super__init___storage)selfuri
dependencyoptions	__class__s       e/root/lseg-credit/backend/venv/lib/python3.13/site-packages/limits/aio/storage/memcached/memcachio.pyr   MemcachioBridge.__init__   s     	4G48<    c                    U R                   R                  R                  U R                   R                  R                  4$ r   )r   errorsNoAvailableNodesMemcachioConnectionError)r   s    r   base_exceptionsMemcachioBridge.base_exceptions   s4    
 OO""33OO"";;
 	
r   c                  #    U R                   (       dL  U R                  R                  " U R                   VVs/ s H  u  pX4PM
     snn40 U R                  D6U l         U R                   (       d   eU R                   $ s  snnf 7fr   )r   r   Clienthostsr   )r   hps      r   get_storageMemcachioBridge.get_storage!   se     }} OO22$(JJ/JDA!J/,,DM }}}}}	 0s   7BA?
=Bc                   #    U R                  U/5      I S h  vN R                  UR                  S5      S5      $  N#7f)Nutf-8r   )get_manygetencoder   keys     r   r*   MemcachioBridge.get*   s2     mmSE**//

70CQGG*s   ><$>c                2  #    U R                  5       I Sh  vN R                  " U Vs/ s H  o"R                  S5      PM     sn6 I Sh  vN nUR                  5        VVs0 s H  u  p$U[	        UR
                  5      _M     snn$  Nqs  snf  NDs  snnf 7f)zW
Return multiple counters at once

:param keys: the keys to get the counter values for
Nr(   )r%   r*   r+   itemsintvalue)r   keyskresultsvs        r   r)   MemcachioBridge.get_many-   s~       $//1166)-.Ahhw.
 
 -4MMO<ODA3qww<O<< 2.
 =s>   BBBB
B
BB""BB
BBc                   #    U R                  5       I S h  vN R                  UR                  S5      5      I S h  vN   g  N+ N7fNr(   )r%   deleter+   r,   s     r   clearMemcachioBridge.clear8   s4     %%''//

70CDDD'Ds   AA%AAAAc                   #    U R                  5       I S h  vN nUR                  S5      nUR                  XRUS9I S h  vN =(       d    S$  N6 N7f)Nr(   )noreplyr   )r%   r+   decr)r   r-   amountr>   storage	limit_keys         r   r?   MemcachioBridge.decr;   sG     ((**JJw'	\\)W\EEJJ +Es    AA(AA AAc                  #    U R                  5       I S h  vN nUR                  S5      nU R                  U5      R                  5       nUR                  Xc5      I S h  vN =nc  U R                  5       I S h  vN nUR	                  Xc R                  5       [        U5      S9I S h  vN (       aZ  U(       aQ  UR                  U[        U[        R                  " 5       -   5      R                  S5      [        U5      SS9I S h  vN   U$ U R                  5       I S h  vN nUR                  Xc5      I S h  vN =(       d    U$ U$  GN4 N N N NK N3 N7f)Nr(   )expiryF)rE   r>   )	r%   r+   _expiration_keyincraddr   setstrtime)	r   r-   rE   r@   set_expiration_keyrA   rB   
expire_keyr2   s	            r   rG   MemcachioBridge.incr@   s&     ((**JJw'	))#.557
#LL;;<EE ,,..G[[h,>,>,@f[VVV%!++"FTYY[0188A#F| %	 &     $ 0 0 22$\\)<<FF# + <.V 3<s}   EE
AEE E:E;/E*E+AEEE!E"E:E;EEEEEEEc                H  #    U R                  5       I S h  vN nU R                  U5      R                  S5      nUR                  U5      I S h  vN R                  US 5      nU=(       a    [	        UR
                  5      =(       d    [        R                  " 5       $  N NP7fr9   )r%   rF   r+   r*   floatr2   rK   )r   r-   rA   expiration_keyitems        r   
get_expiryMemcachioBridge.get_expiryV   sv     ((**--c299'Bkk.1166~tL)djj)8TYY[8	 +1s"   B"B8B"B AB" B"c                   #     U R                  5       I Sh  vN nUR                  S5      I Sh  vN   g N N!    g= f7f)zY
Check if storage is healthy by calling the ``get`` command
on the key ``limiter-check``
Ns   limiter-checkTF)r%   r*   )r   rA   s     r   checkMemcachioBridge.check]   sB     
	 ,,..G++./// //	s/   A: 6: 8: A: : >A)r   )r   rJ   r   r   r   zfloat | str | boolreturnNone)rX   z-type[Exception] | tuple[type[Exception], ...])rX   zmemcachio.Client[bytes])r-   rJ   rX   r1   )r3   zIterable[str]rX   zdict[bytes, int])r-   rJ   rX   rY   )r   F)r-   rJ   r@   r1   r>   boolrX   r1   )r   T)
r-   rJ   rE   rP   r@   r1   rL   rZ   rX   r1   )r-   rJ   rX   rP   )rX   rZ   )__name__
__module____qualname____firstlineno__r   propertyr   r%   r*   r)   r;   r?   rG   rS   rV   __static_attributes____classcell__)r   s   @r   r   r      s    == = &	=
 
= 
	6
 
H	=EK TX %/2LP	,9 r   r   )
__future__r   rK   mathr   typesr   typingr   r   bridger	   	memcachior    r   r   <module>ri      s+    "    * #Zo Zr   