
    k7i                     j    S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr   " S S\5      rg	)
    )Sequence)AnySupportsFloatoverload)prepare_ttl)override)AsyncKeyValue)BaseWrapperc                   Z  ^  \ rS rSrSr SS\S\S\S\S-  SS4
U 4S	 jjjr\S
\S\	4S j5       r
\S
\S-  S\	S-  4S j5       r
S
\S-  S\	S-  4S jr
\SSS.S\S\\\4   S\S-  S
\S-  SS4
S jj5       r\SSS.S\\   S\\\\4      S\S-  S
\\S-     S-  SS4
S jj5       rSrU =r$ )TTLClampWrapper   z<Wrapper that enforces a maximum TTL for puts into the store.N	key_valuemin_ttlmax_ttlmissing_ttlreturnc                    > Xl         [        U5      U l        [        U5      U l        Ub  [        U5      OSU l        [
        TU ]  5         g)a  Initialize the TTL clamp wrapper.

Args:
    key_value: The store to wrap.
    min_ttl: The minimum TTL for puts into the store.
    max_ttl: The maximum TTL for puts into the store.
    missing_ttl: The TTL to use for entries that do not have a TTL. Defaults to None.
N)r   floatr   r   r   super__init__)selfr   r   r   r   	__class__s        b/home/james-whalen/.local/lib/python3.13/site-packages/key_value/aio/wrappers/ttl_clamp/wrapper.pyr   TTLClampWrapper.__init__   s@     )2#Gn#Gn?J?V{);\`    ttlc                     g N r   r   s     r   
_ttl_clampTTLClampWrapper._ttl_clamp    s    7:r   c                     g r   r   r    s     r   r!   r"   #   s    EHr   c                     Uc  U R                   $ [        US9n[        U R                  [	        XR
                  5      5      $ )N)t)r   r   maxr   minr   r    s     r   r!   r"   &   s7    ;###C 4<<S,,!788r   )
collectionr   keyvaluer(   c          	      n   #    U R                   R                  X1X R                  US9S9I S h  vN   g  N7f)Nr   )r(   r)   r*   r   )r   putr!   )r   r)   r*   r(   r   s        r   r-   TTLClampWrapper.put.   s1     nn  JuRaRafiRaRj kkks   +535keysvaluesc                   #    [        U[        5      (       a  U Vs/ s H  oPR                  US9PM     nnU R                  R	                  XX4S9I S h  vN   g s  snf  N
7f)Nr,   )r/   r0   r(   r   )
isinstancer   r!   r   put_many)r   r/   r0   r(   r   r%   s         r   r3   TTLClampWrapper.put_many2   sV      c8$$3673a??q?)3C7nn%%4:%___ 8_s   A AA AA )r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r	   r   r   r   r   r!   r   strdictr   r-   listr   r3   __static_attributes____classcell__)r   s   @r   r   r      so   F }A&1>IVeruyey	 $ :m:: :Hmd2Hut|H H9md2 9ut| 9 UYw{ lS lc3h ld
 l`mpt`t l  AE l l  "&59`3i` c3h(`
 $J` md*+d2` 
` `r   r   N)collections.abcr   typingr   r   r   #key_value.shared.utils.time_to_liver   typing_extensionsr   !key_value.aio.protocols.key_valuer	   key_value.aio.wrappers.baser
   r   r   r   r   <module>rE      s(    $ / / ; & ; 33`k 3`r   