
    k7i@                         % S SK Jr  S SK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r\\S'   Sr\\S	'    " S
 S\
5      rg)    )Sequence)AnySupportsFloat)override)AsyncKeyValue)BaseWrapper)TTLClampWrapperg      @DEFAULT_MAX_TTLDEFAULT_MISSING_TTLc                     ^  \ rS rSrSr  SS\S\S\S-  S\S-  SS4
U 4S	 jjjr\SS
.S\	S\	S-  S\
\	\4   S-  4S jj5       r\SS
.S\\	   S\	S-  S\\
\	\4   S-     4S jj5       r\SS
.S\	S\	S-  S\\
\	\4   S-  \S-  4   4S jj5       r\SS
.S\\	   S\	S-  S\\\
\	\4   S-  \S-  4      4S jj5       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S
.S\	S\	S-  S\4S jj5       r\SS
.S\\	   S\	S-  S\4S jj5       rSrU =r$ )PassthroughCacheWrapper   zTwo-tier wrapper: reads from cache store, falls back to primary and populates cache.

TTLs from the primary are respected when writing into the cache using a clamped TTL policy.
Nprimary_key_valuecache_key_valuemaximum_ttlmissing_ttlreturnc                    > Xl         X l        [        USU=(       d    [        U=(       d    [        S9U l        [        TU ]  5         g)aE  Initialize the passthrough cache wrapper.

Args:
    primary_key_value: The primary store to wrap.
    cache_key_value: The cache store to wrap.
    maximum_ttl: The maximum TTL for puts into the cache store. Defaults to 30 minutes.
    missing_ttl: The TTL to use for entries that do not have a TTL. Defaults to 30 minutes.
r   )	key_valuemin_ttlmax_ttlr   N)r   unwrapped_cache_key_valuer	   r
   r   r   super__init__)selfr   r   r   r   	__class__s        j/home/james-whalen/.local/lib/python3.13/site-packages/key_value/aio/wrappers/passthrough_cache/wrapper.pyr    PassthroughCacheWrapper.__init__   sC     1B8G&.%2?#:':	 
 	    )
collectionkeyr    c                  #    U R                   R                  X!S9I S h  vN =n(       a  U$ U R                  R                  X!S9I S h  vN u  pEU(       d  g U R                   R	                  X!XES9I S h  vN   U$  N\ N4 N
7fNr    r!   r    r!   valuettl)r   getr   r'   put)r   r!   r    managed_entryuncached_entryr'   s         r   r(   PassthroughCacheWrapper.get/   s     "&"6"6":":j":"ZZZ=Z  $($:$:$>$>*$>$^^""&&*^&eee [ _
 	fs3   BA<)B	A>
+B5B 6B>B Bkeysc                  #    [         R                  US 5      nU R                  R                  X!S9I S h  vN n[	        U5       H  u  pVXE   X6'   M     UR                  5        VVs/ s H  u  pgUb  M
  UPM     nnnU R                  R                  X(S9I S h  vN n	/ n
/ n/ n[	        U5       HE  u  pVX   u  pUb3  UR                  U5        U
R                  U5        UR                  U5        XU'   MG     U
(       a$  U R                  R                  UUU
US9I S h  vN   U Vs/ s H  ocU   PM	     sn$  GNs  snnf  N N$s  snf 7f)Nr    r-   r    r-   valuesr'   )
dictfromkeysr   get_many	enumerateitemsr   ttl_manyappendput_manyr   r-   r    key_to_valuecached_entriesir!   r&   uncached_keysuncached_entriesentries_to_cacheentries_to_cache_keysentries_to_cache_ttlsentryr'   s                  r   r4    PassthroughCacheWrapper.get_many=   so    9=tT9R =A<P<P<Y<Yeo<Y<{6{oFA . 1L & 0</A/A/CU/Cu/CUSWSiSiSrSr! Ts T
 N
 24+-46.FA),JE %,,S1 ''.%,,S1 % / &&//%*')	 0    .22TcS!T22A 7|
 VN
$ 3sX   3E
D81E
'	D;4D;:E
EBE
EE
'E5E
;E
E
E
c                  #    U R                   R                  X!S9I S h  vN u  p4U(       a  X44$ U R                  R                  X!S9I S h  vN u  pTU(       d  gU R                   R                  X!XTS9I S h  vN   XT4$  N` N5 N7f)Nr$   NNr%   )r   r'   r   r)   )r   r!   r    cached_entryr'   r+   s         r   r'   PassthroughCacheWrapper.ttld   s     "&"6"6":":j":"ZZ$$$($:$:$>$>*$>$^^""&&*^&eee"" [
 _
 	fs3   BB ,BB+B8B9BBBc                  #    [         R                  US5      nU R                  R                  X!S9I S h  vN n[	        U5       H  u  pVXE   S   XE   S   4X6'   M     UR                  5        VVs/ s H  u  pgUS:X  d  M  UPM     nnnU R                  R                  X(S9I S h  vN n	/ n
/ n/ n[	        U5       HF  u  pVX   u  pUb3  UR                  U5        U
R                  U5        UR                  U5        X4X6'   MH     U
(       a$  U R                  R                  UUU
US9I S h  vN   U Vs/ s H  ocU   PM	     sn$  GNs  snnf  N N$s  snf 7f)NrF   r/   r      r0   )	r2   r3   r   r7   r5   r6   r   r8   r9   r:   s                  r   r7    PassthroughCacheWrapper.ttl_manyt   s    NRmm\`bnNo RVQeQeQnQn! Ro R
 L
  oFA!/!21!5~7H7K LL & 0</A/A/C]/CuP\G\/C]SWSiSiSrSr! Ts T
 N
 24+-46.FA),JE %,,S1 ''.%,,S1!&L / &&//%*')	 0    .22TcS!T22EL
 ^N
$ 3sX   3EE;E1E	E	E&E'BE,E-E5EE	EEE)r    r'   r&   r'   c                   #    U R                   R                  X1S9I S h  vN nU R                  R                  X1X$S9I S h  vN   g  N' N7fr#   )r   deleter   r)   )r   r!   r&   r    r'   _s         r   r)   PassthroughCacheWrapper.put   sI     &&---MM$$((Ju(^^^ N^!   AA!AA	A	Ar1   c                   #    U R                   R                  X1S9I S h  vN nU R                  R                  XX4S9I S h  vN   g  N' N7f)Nr/   )r-   r1   r    r'   )r   delete_manyr   r9   )r   r-   r1   r    r'   rN   s         r   r9    PassthroughCacheWrapper.put_many   sL      &&22j2TT$$--4S]-ggg UgrP   c                   #    U R                   R                  X!S9I S h  vN nU R                  R                  X!S9I S h  vN $  N% N7f)Nr$   )r   rM   r   )r   r!   r    rN   s       r   rM   PassthroughCacheWrapper.delete   sG     &&---MM++22j2RRR NR!   A	A A	 AA	A	c                   #    U R                   R                  X!S9I S h  vN nU R                  R                  X!S9I S h  vN $  N% N7f)Nr/   )r   rR   r   )r   r-   r    rN   s       r   rR   #PassthroughCacheWrapper.delete_many   sG     &&22j2TT++77:7YYY UYrV   )r   r   r   rF   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   strr2   r   r(   listr4   tuplefloatr'   r7   r)   r   r9   boolrM   intrR   __static_attributes____classcell__)r   s   @r   r   r      s    -1,0( ' #T)	
 #T) 
 6 >B S t tCQTH~X\G\   JN $349 $3S4Z $3SWX\]`be]eXfimXmSn $3 $3L >B #S #t #uTRUWZRZ^^bMbdilpdpMpGq # # JN &349 &3S4Z &3SWX]^bcfhkck^los^suz  ~B  vB  _B  YC  TD &3 &3P UYw{ _S _c3h _d
 _`mpt`t _  AE _ _
  "&59
h3i
h c3h(
h
 $J
h md*+d2
h 

h 
h AE S SC$J S$ S S
 MQ Zd3i Zd
 ZVY Z Zr   r   N)collections.abcr   typingr   r   typing_extensionsr   !key_value.aio.protocols.key_valuer   key_value.aio.wrappers.baser    key_value.aio.wrappers.ttl_clampr	   r
   ra   __annotations__r   r    r   r   <module>rn      s<    $ % & ; 3 <$ $( U (lZk lZr   