
    ߲oi*                        d dl Z d dlZd dlZd dl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j2                  dk\  rd dl	mZ nd dlmZ ej2                  dk  r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jL                   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)
_CacheInfo	_make_keypartialpartialmethod)AnyCallable	CoroutineGenericHashableListOptionalOrderedDictType	TypedDictTypeVarUnioncastfinaloverload)      )Selfr      )_is_coroutinez2.1.0)
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     Z/home/ubuntu/docker-apps/notebooks/venv/lib/python3.12/site-packages/async_lru/__init__.pyr    r    .   s    Kc]JLr,   r    c                   N    e Zd ZU ded<   eej                     ed<   eed<   ddZy)
_CacheItemasyncio.Task[_R]task
later_callwaitersNc                 `    | j                   "| j                   j                          d | _         y y N)r2   cancelselfs    r-   r6   z_CacheItem.cancel=   s(    ??&OO""$"DO 'r,   returnN)	r%   r&   r'   r)   r   asyncioHandler*   r6   r+   r,   r-   r/   r/   6   s#     ((L#r,   r/   c            
       ,   e Zd Zdee   dee   dedee   ddf
dZ	e
de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eddddfdZdee   dede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!   ttlr:   Nc                 t   	 |j                   | _         	 |j                  | _        	 |j                  | _        	 |j                  | _        	 |j
                  | _        	 | j                  j                  |j                         t        j                  dk  rt        | _
        || _        || _        || _        || _        t               | _        d| _        d| _        d| _        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)Nr   Fr   )r&   AttributeErrorr%   r'   __doc__r)   __dict__updatesysversion_infor   __wrapped___LRUCacheWrapper__maxsize_LRUCacheWrapper__typed_LRUCacheWrapper__ttlr   _LRUCacheWrapper__cache_LRUCacheWrapper__closed_LRUCacheWrapper__hits_LRUCacheWrapper__misses)r8   r?   r"   r!   r@   s        r-   __init__z_LRUCacheWrapper.__init__E   s8   	 mmDO	KKDM	 "D	::DL	#%#5#5D 	MM  -
 g%!.D 
>ImC  		  		  		  		  		  		sh   C  C/ C> D 
D %D+  	C,+C,/	C;:C;>	D
	D
	DD	D('D(+	D76D7r0   c                     t        | j                  j                         D ch c](  }|j                  j	                         s|j                  * c}      S c c}w r5   )listrL   valuesr1   done)r8   
cache_items     r-   __tasksz_LRUCacheWrapper.__tasksq   sO      #',,"5"5"7!++- 
 	
s   -Aargskwargsc                    t        ||| j                        }| j                  j                  |d       }|y|j	                          y)NFT)r   rJ   rL   popr6   )r8   rW   rX   keyrU   s        r-   cache_invalidatez!_LRUCacheWrapper.cache_invalidate|   sB    fdll3\\%%c40
r,   c                     d| _         d| _        | j                  j                         D ])  }|j                  s|j                  j                          + | j                  j                          y )Nr   )rN   rO   rL   rS   r2   r6   clear)r8   cs     r-   cache_clearz_LRUCacheWrapper.cache_clear   sU    $$& 	&A||##%	& 	r,   F)waitra   c                   K   d| _         | j                  }|sy |s(|D ]#  }|j                         r|j                          % t	        j
                  |ddi d {    y 7 w)NTreturn_exceptions)rM   _LRUCacheWrapper__tasksrT   r6   r;   gather)r8   ra   r#   r1   s       r-   cache_closez_LRUCacheWrapper.cache_close   sY      "yy{KKM" nne<t<<<s   .A#*A#A!A#c                     t        | j                  | j                  | j                  t	        | j
                              S r5   )r   rN   rO   rI   lenrL   r7   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    rI   rJ   rh   rd   rM   r7   s    r-   cache_parametersz!_LRUCacheWrapper.cache_parameters   s0    NN,,dll#==	
 	
r,   r[   c                 d    | xj                   dz  c_         | j                  j                  |       y N   )rN   rL   move_to_endr8   r[   s     r-   
_cache_hitz_LRUCacheWrapper._cache_hit   s"    q  %r,   c                 .    | xj                   dz  c_         y rm   )rO   rp   s     r-   _cache_missz_LRUCacheWrapper._cache_miss   s    r,   r1   c                 b   |j                         s|j                  | j                  j                  |d        y | j                  j	                  |      }| j
                  O|Lt        j                         }|j                  | j
                  | j                  j                  |d       |_	        y y y r5   )
	cancelled
_exceptionrL   rZ   getrK   r;   get_running_loop
call_laterr2   )r8   r[   r1   rU   loops        r-   _task_done_callbackz$_LRUCacheWrapper._task_done_callback   s     >>t:LLS$'\\%%c*
::!j&<++-D$(OO

DLL,,c4%J! '=!r,   rU   c                   K   |j                   }	 t        j                  |       d {   |xj                  dz  c_        S 7 # t        j                  $ r] |j                  dk(  rL|j                         s<|j                          |j                          | j                  j                  |d         w xY w# |xj                  dz  c_        w xY wwrm   )	r1   r;   shieldr3   CancelledErrorrT   r6   rL   rZ   )r8   rU   r[   r1   s       r-   "_shield_and_handle_cancelled_errorz3_LRUCacheWrapper._shield_and_handle_cancelled_error   s      	$ -- !# .%% 	 !!Q&tyy{!!#  d+	 !#s8   CA AA CA A0B44B7 7CCfn_args	fn_kwargsc                  K   | j                   rt        d|        t        j                         }t	        ||| j
                        }| j                  j                  |      }|t| j                  |       |j                  j                         s/|xj                  dz  c_        | j                  ||       d {   S |j                  j                         S  | j                  |i |}|j                  |      }|j!                  t#        | j$                  |             t'        |d d      }|| j                  |<   | j(                  Qt+        | j                        | j(                  kD  r/| j                  j-                  d      \  }}	|	j/                          | j1                  |       | j                  ||       d {   S 7 7 w)Nzalru_cache is closed for rn   F)last)rM   RuntimeErrorr;   rx   r   rJ   rL   rw   rq   r1   rT   r3   r   resultrH   create_taskadd_done_callbackr   r{   r/   rI   rh   popitemr6   rs   )
r8   r   r   rz   r[   rU   coror1   dropped_keydropped_cache_items
             r-   __call__z_LRUCacheWrapper.__call__   s    ==!:4&ABB'')DLL9\\%%c*
!OOC ??'')""a'"!DDZQTUUU ??))++t6I6!%!1!1$!7wt'?'?EFdA.
&S>>%#dll*;dnn*L.2ll.B.B.B.N+K+%%'<<ZMMM% V$ Ns%   B8G
:G;DG
 GG
G
instanceownerz&_LRUCacheWrapperInstanceMethod[_R, _T]c                 "    || S t        | |      S r5   )_LRUCacheWrapperInstanceMethod)r8   r   r   s      r-   __get__z_LRUCacheWrapper.__get__   s     =K1$AAr,   r9   )!r%   r&   r'   _CBr   r   r*   r(   floatrP   propertyr   rd   r   r   r\   r`   rf   r   ri   r    rk   rq   rs   r{   r/   r   r   r   r   r   r   r   r+   r,   r-   r>   r>   C   sk   *G* #* 	*
 e_* 
*X 
01 
 
 S T  16 = =$ =
J 

"2 
&h &4 &x D x 7I d $$R.$/7$	$&!N# !NC !NB !NF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   r:   Nc                 2   	 |j                   | _         	 |j                  | _        	 |j                  | _        	 |j                  | _        	 |j
                  | _        	 | j                  j                  |j                         t        j                  dk  r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)Nr   )r&   rB   r%   r'   rC   r)   rD   rE   rF   rG   r   rH   (_LRUCacheWrapperInstanceMethod__instance'_LRUCacheWrapperInstanceMethod__wrapper)r8   r   r   s      r-   rP   z'_LRUCacheWrapperInstanceMethod.__init__  s    
	%00DO	#,,DM	 ' 4 4D	"??DL	#*#:#:D 	MM  !1!12
 g%!.D".." 9  		  		  		  		  		  		sh   B? C C C, 
C; %D
 ?	C
C	CC	C)(C),	C87C8;	DD
	DDrW   rX   c                V     | j                   j                  | j                  g|i |S r5   )r   r\   r   )r8   rW   rX   s      r-   r\   z/_LRUCacheWrapperInstanceMethod.cache_invalidate)  s'    .t~~..tPPPPr,   c                 8    | j                   j                          y r5   )r   r`   r7   s    r-   r`   z*_LRUCacheWrapperInstanceMethod.cache_clear,  s    ""$r,   FT)r6   rc   r6   rc   c                T   K   | j                   j                          d {    y 7 wr5   )r   rf   )r8   r6   rc   s      r-   rf   z*_LRUCacheWrapperInstanceMethod.cache_close/  s      nn((***s   (&(c                 6    | j                   j                         S r5   )r   ri   r7   s    r-   ri   z)_LRUCacheWrapperInstanceMethod.cache_info4  s    ~~((**r,   c                 6    | j                   j                         S r5   )r   rk   r7   s    r-   rk   z/_LRUCacheWrapperInstanceMethod.cache_parameters7  s    ~~..00r,   r   r   c                ^   K    | j                   | j                  g|i | d {   S 7 wr5   )r   r   )r8   r   r   s      r-   r   z'_LRUCacheWrapperInstanceMethod.__call__:  s+     #T^^DOOKgKKKKKs   $-+-r9   )r%   r&   r'   r>   r   r   rP   r   r   r(   r\   r`   rf   r   ri   r    rk   r   r+   r,   r-   r   r     s    #!!"%#! #! 
	#!JQ QS QT Q% !&++:>+	+
+J +1"2 1L# LC LB Lr,   r   r"   r!   r@   r:   c                 P     dt         t           dt        t           f fd}|S )Nr?   r:   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           |             }t        j                  dk\  rt	        j                  |      }|S )Nz$Coroutine function is required, got _make_unbound_method)r      )
isinstancer   r   funcinspectiscoroutinefunctionr   hasattrr   r>   r   r   r   rF   rG   markcoroutinefunction)r?   originr   r"   r@   r!   s      r-   r   z_make_wrapper.<locals>.wrapperC  s    '=!9:[[F '=!9: **62!EbVLMM 2-.((*B"4B#4gucJw&33G<Gr,   )_CBPr   r>   )r"   r!   r@   r   s   ``` r-   _make_wrapperr   >  s'    
DH !1"!5 $ Nr,   )r@   c                     y r5   r+   )r"   r!   r@   s      r-   r   r   X  s     r,   c                     y r5   r+   )r"   s    r-   r   r   b  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   j  sk     *Wc2WeS11#b'7#B<72'=>2=eT2266!RF*F"GHHr,   r5   )r   F)/r;   dataclassesr   rF   	functoolsr   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   rG   r   typing_extensionsasyncio.coroutinesr   __version____all__r   r   _Coror   r   r    	dataclassr/   r>   r   r*   r(   r   r   r   r+   r,   r-   <module>r      s      
 C C    & w&g0 
 T]T]#sB,sE"I~SW*,FFG y   # #  # {Bwr{ {B {B| 8LWRV_ 8L 8L|  c] 
% tBxj*2../	4 
   	c] 
%	
 tBxj*2../ 
 
"X b 
 /2I  	I8C=$r(*+II 
%	I
 8T"XJ 0 4457G7KKLIr,   