
    bi$                        d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ej4                  dk\  rd dl
mZ nd dlmZ dZdZ ed	      Z ed
      Z eeee f   Z!ede!e    f   Z"ee"e    ddf   Z#e G d de             Z$eejJ                   G d dee                        Z&e G d dee                 Z'e G d dee ef                Z(	 ddee)   de*dee+   dee#e    ge'e    f   fdZ,e	 	 d dddee)   de*dee+   dee#e    ge'e    f   fd       Z-ede#e    de'e    fd       Z-	 	 d dddeee)   e#e    f   de*dee+   deee#e    ge'e    f   e'e    f   fdZ-y)!    N)_is_coroutine)
_CacheInfo	_make_keypartialpartialmethod)AnyCallable	CoroutineGenericHashableOptionalOrderedDictSetType	TypedDictTypeVarUnioncastfinaloverload)      )Selfz2.0.5)
alru_cache_T_R.zpartial[_Coro[_R]]zpartialmethod[_Coro[_R]]c                   <    e Zd ZU eed<   ee   ed<   eed<   eed<   y)_CacheParameterstypedmaxsizetasksclosedN)__name__
__module____qualname__bool__annotations__r   int     M/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/async_lru/__init__.pyr   r   +   s    Kc]JLr*   r   c                   D    e Zd ZU ded<   eej                     ed<   ddZy)
_CacheItemasyncio.Future[_R]fut
later_callNc                 `    | j                   "| j                   j                          d | _         y y N)r0   cancelselfs    r+   r3   z_CacheItem.cancel9   s(    ??&OO""$"DO 'r*   returnN)r#   r$   r%   r'   r   asyncioHandler3   r)   r*   r+   r-   r-   3   s     
((#r*   r-   c            
           e Zd Zdee   dee   dedee   ddf
dZ	de
d	edefd
Zd!dZdddeddfdZdefdZdefdZde
ddfdZde
ddfdZddde
ddddfdZdededefdZdedeee      deedf   fd Zy)"_LRUCacheWrapperfnr    r   ttlr7   Nc                 l   	 |j                   | _         	 |j                  | _        	 |j                  | _        	 |j                  | _        	 |j
                  | _        	 | j                  j                  |j                         t        | _        || _	        || _
        || _        || _        t               | _        d| _        d| _        d| _        t%               | _        y # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w)NFr   )r$   AttributeErrorr#   r%   __doc__r'   __dict__updater   __wrapped___LRUCacheWrapper__maxsize_LRUCacheWrapper__typed_LRUCacheWrapper__ttlr   _LRUCacheWrapper__cache_LRUCacheWrapper__closed_LRUCacheWrapper__hits_LRUCacheWrapper__missesset_LRUCacheWrapper__tasks)r5   r<   r    r   r=   s        r+   __init__z_LRUCacheWrapper.__init__A   s3   	 mmDO	KKDM	 "D	::DL	#%#5#5D 	MM  -
 + 
>Im03C  		  		  		  		  		  		sh   C C+ C: D	 
D %D' 	C('C(+	C76C7:	DD		DD	D$#D$'	D32D3argskwargsc                    t        ||| j                        }| j                  j                  |d       }|y|j	                          y)NFT)r   rE   rG   popr3   )r5   rN   rO   key
cache_items        r+   cache_invalidatez!_LRUCacheWrapper.cache_invalidatem   sB    fdll3\\%%c40
r*   c                    d| _         d| _        | j                  j                         D ])  }|j                  s|j                  j                          + | j                  j                          | j                  j                          y )Nr   )rI   rJ   rG   valuesr0   r3   clearrL   )r5   cs     r+   cache_clearz_LRUCacheWrapper.cache_clearw   se    $$& 	&A||##%	& 	r*   F)waitrZ   c                   K   d| _         t        | j                        }|sy |s(|D ]#  }|j                         r|j	                          % t        j                  |ddi d {    y 7 w)NTreturn_exceptions)rH   listrL   doner3   r8   gather)r5   rZ   r!   tasks       r+   cache_closez_LRUCacheWrapper.cache_close   s^     T\\" "yy{KKM" nne<t<<<s   7A,*A,$A*%A,c                     t        | j                  | j                  | j                  t	        | j
                              S r2   )r   rI   rJ   rD   lenrG   r4   s    r+   
cache_infoz_LRUCacheWrapper.cache_info   s0    KKMMNN	
 	
r*   c                     t        | j                  | j                  t        | j                        | j
                        S )N)r    r   r!   r"   )r   rD   rE   rc   rL   rH   r4   s    r+   cache_parametersz!_LRUCacheWrapper.cache_parameters   s0    NN,,dll#==	
 	
r*   rR   c                 d    | xj                   dz  c_         | j                  j                  |       y N   )rI   rG   move_to_endr5   rR   s     r+   
_cache_hitz_LRUCacheWrapper._cache_hit   s"    q  %r*   c                 .    | xj                   dz  c_         y rh   )rJ   rk   s     r+   _cache_missz_LRUCacheWrapper._cache_miss   s    r*   r/   r.   r`   zasyncio.Task[_R]c                 Z   | j                   j                  |       |j                         r-|j                          | j                  j                  |d        y |j                         }|.|j                  |       | j                  j                  |d        y | j                  j                  |      }| j                  M|Kt        j                         }|j                  | j                  | j                  j
                  |d       |_        |j                  |j                                y r2   )rL   discard	cancelledr3   rG   rQ   	exceptionset_exceptiongetrF   r8   get_running_loop
call_laterr0   
set_resultresult)r5   r/   rR   r`   excrS   loops          r+   _task_done_callbackz$_LRUCacheWrapper._task_done_callback   s     	T">>JJLLLS$'nn?c"LLS$'\\%%c*
::!j&<++-D$(OO

DLL,,c4%J! 	t{{}%r*   fn_args	fn_kwargsc                  K   | j                   rt        d|        t        j                         }t	        ||| j
                        }| j                  j                  |      }|l| j                  |       |j                  j                         s't        j                  |j                         d {   S |j                  j                         S |j                         } | j                  |i |}|j                  |      }| j                   j#                  |       |j%                  t'        | j(                  ||             t+        |d       | j                  |<   | j,                  Qt/        | j                        | j,                  kD  r/| j                  j1                  d      \  }	}|j3                          | j5                  |       t        j                  |       d {   S 7 77 w)Nzalru_cache is closed for F)last)rH   RuntimeErrorr8   ru   r   rE   rG   rt   rl   r/   r^   shieldrx   create_futurerC   create_taskrL   addadd_done_callbackr   r{   r-   rD   rc   popitemr3   rn   )
r5   r|   r}   rz   rR   rS   r/   coror`   dropped_keys
             r+   __call__z_LRUCacheWrapper.__call__   s    ==!:4&ABB'')DLL9\\%%c*
!OOC >>&&($^^JNN;;;>>((**  "t6I6!%!1!1$!7wt'?'?cJK&sD1S>>%#dll*;dnn*L&*ll&:&:&:&F#K^^C(((# <" )s%   B0G.2G)3D1G.$G,%G.,G.instanceownerz&_LRUCacheWrapperInstanceMethod[_R, _T]c                 "    || S t        | |      S r2   )_LRUCacheWrapperInstanceMethod)r5   r   r   s      r+   __get__z_LRUCacheWrapper.__get__   s     =K1$AAr*   r6   )r#   r$   r%   _CBr   r   r(   r&   floatrM   r   r   rT   rY   ra   r   rd   r   rf   rl   rn   r{   r   r   r   r   r   r   r)   r*   r+   r;   r;   ?   s/   *6G*6 #*6 	*6
 e_*6 
*6X S T  16 = =$ =
J 

"2 
&h &4 &x D &'&.6&>P&	&2)# )C )B )@BB#+DH#5B	t==	>Br*   r;   c                       e Zd Zdee   deddfdZdedede	fdZ
dd	Zd
ddde	de	ddfdZdefdZdefdZdededefdZy)r   wrapperr   r7   Nc                    	 |j                   | _         	 |j                  | _        	 |j                  | _        	 |j                  | _        	 |j
                  | _        	 | j                  j                  |j                         t        | _        |j                  | _	        || _
        || _        y # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY wr2   )r$   r?   r#   r%   r@   r'   rA   rB   r   rC   (_LRUCacheWrapperInstanceMethod__instance'_LRUCacheWrapperInstanceMethod__wrapper)r5   r   r   s      r+   rM   z'_LRUCacheWrapperInstanceMethod.__init__   s   
	%00DO	#,,DM	 ' 4 4D	"??DL	#*#:#:D 	MM  !1!12
 +".." 7  		  		  		  		  		  		sh   B, B; C
 C 
C( %C7 ,	B87B8;	CC
	CC	C%$C%(	C43C47	DDrN   rO   c                V     | j                   j                  | j                  g|i |S r2   )r   rT   r   )r5   rN   rO   s      r+   rT   z/_LRUCacheWrapperInstanceMethod.cache_invalidate  s'    .t~~..tPPPPr*   c                 8    | j                   j                          y r2   )r   rY   r4   s    r+   rY   z*_LRUCacheWrapperInstanceMethod.cache_clear  s    ""$r*   FT)r3   r\   r3   r\   c                T   K   | j                   j                          d {    y 7 wr2   )r   ra   )r5   r3   r\   s      r+   ra   z*_LRUCacheWrapperInstanceMethod.cache_close  s      nn((***s   (&(c                 6    | j                   j                         S r2   )r   rd   r4   s    r+   rd   z)_LRUCacheWrapperInstanceMethod.cache_info  s    ~~((**r*   c                 6    | j                   j                         S r2   )r   rf   r4   s    r+   rf   z/_LRUCacheWrapperInstanceMethod.cache_parameters  s    ~~..00r*   r|   r}   c                ^   K    | j                   | j                  g|i | d {   S 7 wr2   )r   r   )r5   r|   r}   s      r+   r   z'_LRUCacheWrapperInstanceMethod.__call__  s+     #T^^DOOKgKKKKKs   $-+-r6   )r#   r$   r%   r;   r   r   rM   r   r   r&   rT   rY   ra   r   rd   r   rf   r   r)   r*   r+   r   r      s    "!!"%"! "! 
	"!HQ QS QT Q% !&++:>+	+
+J +1"2 1L# LC LB Lr*   r   r    r   r=   r7   c                 P     dt         t           dt        t           f fd}|S )Nr<   r7   c                 >   | }t        |t        t        f      r#|j                  }t        |t        t        f      r#t	        j
                  |      st        d|       t        | d      r| j                         } t        t        t        t           |             S )Nz$Coroutine function is required, got _make_unbound_method)
isinstancer   r   funcr8   iscoroutinefunctionr   hasattrr   r;   r   r   r   )r<   originr    r=   r   s     r+   r   z_make_wrapper.<locals>.wrapper(  s    '=!9:[[F '=!9: **62!EbVLMM 2-.((*BSWb 17E3GGr*   )_CBPr   r;   )r    r   r=   r   s   ``` r+   _make_wrapperr   #  s*    
HDH H!1"!5 H Nr*   )r=   c                     y r2   r)   )r    r   r=   s      r+   r   r   :  s     r*   c                     y r2   r)   )r    s    r+   r   r   D  s    
 r*   c                    | t        | t              rt        | ||      S t        t        t
           |       }t        |      st        |d      r t        ddd       |      S t        |d      )Nr      Fz decorating is not supported)	r   r(   r   r   r   r   callabler   NotImplementedError)r    r   r=   r<   s       r+   r   r   L  sk     *Wc2WeS11#b'7#B<72'=>2=eT2266!RF*F"GHHr*   r2   )r   F).r8   dataclassessysasyncio.coroutinesr   	functoolsr   r   r   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   version_infor   typing_extensions__version____all__r   r   _Coror   r   r   	dataclassr-   r;   r   r(   r&   r   r   r   r)   r*   r+   <module>r      s     
 , C C    & w& 
 T]T]#sB,sE"I~SW*,FFG y   # #  # eBwr{ eB eBP 7LWRV_ 7L 7Lz  c] 
% tBxj*2../	. 
   	c] 
%	
 tBxj*2../ 
 
"X b 
 /2I  	I8C=$r(*+II 
%	I
 8T"XJ 0 4457G7KKLIr*   