
    KiI                     f    d dl Z d dlmZ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e      Zy)	    N)MappingSequence)AnySupportsFloat)override)AsyncKeyValue)BaseWrapperc                   B    e Zd ZdZ	 ddededdf fdZeddded	edz  de	ee
f   dz  fd
       Zedddee   d	edz  dee	ee
f   dz     fd       Zeddded	edz  dee	ee
f   dz  edz  f   fd       Zedddee   d	edz  deee	ee
f   dz  edz  f      fd       Zeddddedeee
f   d	edz  dedz  ddf
d       Zeddddee   deeee
f      d	edz  dedz  ddf
d       Zeddded	edz  defd       Zedddee   d	edz  defd       Z xZS )TimeoutWrappera5  Wrapper that adds timeout limits to all operations.

    This wrapper ensures that no operation takes longer than the specified timeout.
    If an operation exceeds the timeout, it raises asyncio.TimeoutError. This is useful
    for preventing operations from hanging indefinitely and for enforcing SLAs.
    	key_valuetimeoutreturnNc                 >    || _         || _        t        |           y)zInitialize the timeout wrapper.

        Args:
            key_value: The store to wrap.
            timeout: Timeout in seconds for all operations. Defaults to 5.0 seconds.
        N)r   r   super__init__)selfr   r   	__class__s      r/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/key_value/aio/wrappers/timeout/wrapper.pyr   zTimeoutWrapper.__init__   s     )2%    )
collectionkeyr   c                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wN)r   r   r   )asynciowait_forr   getr   r   r   r   s      r   r   zTimeoutWrapper.get#   :     %%dnn&8&8SZ&8&Xbfbnbnoooo   A A	AA	keysc                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wN)r!   r   r   )r   r   r   get_manyr   r   r!   r   s      r   r$   zTimeoutWrapper.get_many'   ;     %%dnn&=&=4T^&=&_imiuiuvvvvr    c                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wr   )r   r   r   ttlr   r   s      r   r(   zTimeoutWrapper.ttl+   r   r    c                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wr#   )r   r   r   ttl_manyr   r%   s      r   r*   zTimeoutWrapper.ttl_many/   r&   r    )r   r(   valuer(   c                   K   t        j                  | j                  j                  ||||      | j                         d {   S 7 w)N)r   r+   r   r(   r   )r   r   r   putr   )r   r   r+   r   r(   s        r   r-   zTimeoutWrapper.put3   sT     %%dnn&8&8SZdjm&8&nx|  yE  yE  F  F  	F  F   AAA	Avaluesc                   K   t        j                  | j                  j                  ||||      | j                         d {   S 7 w)N)r!   r/   r   r(   r   )r   r   r   put_manyr   )r   r!   r/   r   r(   s        r   r1   zTimeoutWrapper.put_many7   sJ      %%NN##fY\#]gkgsgs
 
 	
 
r.   c                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wr   )r   r   r   deleter   r   s      r   r3   zTimeoutWrapper.deleteD   s;     %%dnn&;&;PZ&;&[eieqeqrrrrr    c                   K   t        j                  | j                  j                  ||      | j                         d {   S 7 wr#   )r   r   r   delete_manyr   r%   s      r   r5   zTimeoutWrapper.delete_manyH   s;     %%dnn&@&@dWa&@&blplxlxyyyyr    )g      @)__name__
__module____qualname____doc__r   floatr   r   strdictr   r   r   listr$   tupler(   r*   r   r   r-   r1   boolr3   intr5   __classcell__)r   s   @r   r   r      s       
	  >B pS pt ptCQTH~X\G\ p p NR w8C= wt wW[\`adfiai\jmq\qWr w w >B pS pt puTRUWZRZ^^bMbdilpdpMpGq p p NR w8C= wt wW[\abfgjlogobpswbwy~  BF  zF  cF  ]G  XH w w X\z~ FS Fc): F3QU: Fcpswcw F  DH F F  "&$(

sm

 c*+


 $J

 T!

 


 

 AE s sC$J s$ s s QU zhsm zC$J zZ] z zr   r   )r   collections.abcr   r   typingr   r   typing_extensionsr   !key_value.aio.protocols.key_valuer   key_value.aio.wrappers.baser	   r    r   r   <module>rH      s%     - % & ; 3?z[ ?zr   