
    jKj4                     b   d dl Z d dlZ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j6                  dk\  rd dlmZ nd dlmZ ej6                  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& G d de'      Z(e G d de             Z)eejT                   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e0   dee0   dee&e#   ge,e#   f   f
dZ1e	 	 d$ddddee.   de/dee0   dee0   dee&e#   ge,e#   f   f
d        Z2ede&e#   de,e#   fd!       Z2	 	 d$ddddeee.   e&e#   f   de/dee0   dee0   deee&e#   ge,e#   f   e,e#   f   f
d"Z2y)%    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.3.0)AlruCacheLoopResetWarning
alru_cache_T_R.zpartial[_Coro[_R]]zpartialmethod[_Coro[_R]]c                       e Zd ZdZy)r   zJEmitted once per cache instance when a loop change triggers an auto-reset.N)__name__
__module____qualname____doc__     c/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/async_lru/__init__.pyr   r   0   s    Tr&   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)r!   r"   r#   bool__annotations__r   intr%   r&   r'   r)   r)   4   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)r5   cancelselfs    r'   r9   z_CacheItem.cancelC   s(    ??&OO""$"DO 'r&   returnN)	r!   r"   r#   r/   r   asyncioHandler0   r9   r%   r&   r'   r2   r2   <   s#     ((L#r&   r2   c                   n   e Zd Zdee   dee   dedee   dee   ddfdZ	e
ded	   fd
       Zdej                  ddfdZdedede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*   ttljitterr=   Nc                    	 |j                   | _         	 |j                  | _        	 |j                  | _        	 |j                  | _        	 |j
                  | _        	 | j                  j                  |j                         t        j                  dk  rt        | _
        || _        || _        || _        || _        || _        t!               | _        d| _        d| _        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#   r$   r/   __dict__updatesysversion_infor   __wrapped___LRUCacheWrapper__maxsize_LRUCacheWrapper__typed_LRUCacheWrapper__ttl_LRUCacheWrapper__jitterr   _LRUCacheWrapper__cache_LRUCacheWrapper__closed_LRUCacheWrapper__hits_LRUCacheWrapper__misses_LRUCacheWrapper__first_loop#_LRUCacheWrapper__warned_loop_reset)r;   rB   r+   r*   rC   rD   s         r'   __init__z_LRUCacheWrapper.__init__K   sO   	 mmDO	KKDM	 "D	::DL	#%#5#5D 	MM  -
 g%!.D 
>ImAE#( I  		  		  		  		  		  		sh   C5 D D D" 
D1 %E  5	D D	DD	DD"	D.-D.1	D=<D= 	EEr3   c                     t        | j                  j                         D ch c](  }|j                  j	                         s|j                  * c}      S c c}w r8   )listrP   valuesr4   done)r;   
cache_items     r'   __tasksz_LRUCacheWrapper.__tasks{   sT      #',,"5"5"7"7J!++- "7
 	
s   -Aloopc                     | j                   || _         y | j                   |urG| j                  s#t        j                  dt        d       d| _        | j                          || _         y y )Nzalru_cache detected event loop change and auto-cleared stale entries. This is safe but unusual outside of tests (pytest-anyio, etc.).r   
stacklevelT)rT   rU   warningswarnr   cache_clear)r;   r]   s     r'   _check_loopz_LRUCacheWrapper._check_loop   sk    $ $Dd*++2 .  ,0(  $D +r&   argskwargsc                L    t        ||| j                        }|| j                  v S )zsCheck if the given arguments are in the cache.

        Does not affect hit/miss counters or LRU ordering.
        )r   rM   rP   )r;   re   rf   keys       r'   cache_containsz_LRUCacheWrapper.cache_contains   s%    
 fdll3dll""r&   c                    t        ||| j                        }| j                  j                  |d       }|y|j	                          y)NFT)r   rM   rP   popr9   )r;   re   rf   rh   r[   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   )rR   rS   rP   rY   r5   r9   clear)r;   cs     r'   rc   z_LRUCacheWrapper.cache_clear   sP    $$&A||##% ' 	r&   Fwaitrr   c                   K   d| _         | j                  }|sy |s(|D ]#  }|j                         r|j                          % t	        j
                  |ddi d {    y 7 w)NTreturn_exceptions)rQ   _LRUCacheWrapper__tasksrZ   r9   r>   gather)r;   rr   r,   r4   s       r'   cache_closez_LRUCacheWrapper.cache_close   sT     yy{KKM  nne<t<<<s   .A#*A#A!A#c                     t        | j                  | j                  | j                  t	        | j
                              S r8   )r   rR   rS   rL   lenrP   r:   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)   rL   rM   ry   ru   rQ   r:   s    r'   cache_parametersz!_LRUCacheWrapper.cache_parameters   s0    NN,,dll#==	
 	
r&   rh   c                 d    | xj                   dz  c_         | j                  j                  |       y N   )rR   rP   move_to_endr;   rh   s     r'   
_cache_hitz_LRUCacheWrapper._cache_hit   s"    q  %r&   c                 .    | xj                   dz  c_         y r~   )rS   r   s     r'   _cache_missz_LRUCacheWrapper._cache_miss   s    r&   r4   c                    |j                         s|j                  | j                  j                  |d        y | j                  j	                  |      }| j
                  |}| j
                  }| j                  #|t        j                  d| j                        z  }t        j                         }|j                  || j                  j                  |d       |_        y y y rn   )	cancelled
_exceptionrP   rk   getrN   rO   randomuniformr>   get_running_loop
call_laterr5   )r;   rh   r4   r[   effective_ttlr]   s         r'   _task_done_callbackz$_LRUCacheWrapper._task_done_callback   s     >>t:LLS$'\\%%c*
::!j&< JJM}}(4==!AA++-D$(OOt||//d%J! '=!r&   r[   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r~   )	r4   r>   shieldr6   CancelledErrorrZ   r9   rP   rk   )r;   r[   rh   r4   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                         }| 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      \  }}	|	j1                          | j3                  |       | j                  ||       d {   S 7 7 w)Nzalru_cache is closed for r   F)last)rQ   RuntimeErrorr>   r   rd   r   rM   rP   r   r   r4   rZ   r6   r   resultrK   create_taskadd_done_callbackr   r   r2   rL   ry   popitemr9   r   )
r;   r   r   r]   rh   r[   coror4   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%   C	GGDGGGGinstanceownerz&_LRUCacheWrapperInstanceMethod[_R, _T]c                 "    || S t        | |      S r8   )_LRUCacheWrapperInstanceMethod)r;   r   r   s      r'   __get__z_LRUCacheWrapper.__get__!  s     =K1$AAr&   r<   )%r!   r"   r#   _CBr   r   r0   r.   floatrV   propertyr   ru   r>   AbstractEventLooprd   r   r   ri   rl   rc   rw   r   rz   r)   r|   r   r   r   r2   r   r   r   r   r   r   r   r%   r&   r'   rA   rA   I   s   .)G.) #.) 	.)
 e_.) .) 
.)` 	
01 	
 	
% 9 9 %d %$#x #3 #4 # 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&   rA   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edede	fd	Zdd
Zddddde	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"   rF   r!   r#   r$   r/   rG   rH   rI   rJ   r   rK   (_LRUCacheWrapperInstanceMethod__instance'_LRUCacheWrapperInstanceMethod__wrapper)r;   r   r   s      r'   rV   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re   rf   c                V     | j                   j                  | j                  g|i |S r8   )r   ri   r   r;   re   rf   s      r'   ri   z-_LRUCacheWrapperInstanceMethod.cache_containsQ  s'    ,t~~,,T__NtNvNNr&   c                V     | j                   j                  | j                  g|i |S r8   )r   rl   r   r   s      r'   rl   z/_LRUCacheWrapperInstanceMethod.cache_invalidateT  s'    .t~~..tPPPPr&   c                 8    | j                   j                          y r8   )r   rc   r:   s    r'   rc   z*_LRUCacheWrapperInstanceMethod.cache_clearW  s    ""$r&   FT)rr   r9   rt   rr   r9   rt   c                   K   |s|durt        j                  dt        d       | j                  j	                  |       d {    y 7 w)NTzwcancel/return_exceptions are deprecated; use wait=True to allow tasks to finish and wait=False to cancel pending tasks.   r_   rq   )ra   rb   DeprecationWarningr   rw   )r;   rr   r9   rt   s       r'   rw   z*_LRUCacheWrapperInstanceMethod.cache_closeZ  sH      &d2MMD"	 nn((d(333s   AAA
Ac                 6    | j                   j                         S r8   )r   rz   r:   s    r'   rz   z)_LRUCacheWrapperInstanceMethod.cache_infoj  s    ~~((**r&   c                 6    | j                   j                         S r8   )r   r|   r:   s    r'   r|   z/_LRUCacheWrapperInstanceMethod.cache_parametersm  s    ~~..00r&   r   r   c                ^   K    | j                   | j                  g|i | d {   S 7 wr8   )r   r   )r;   r   r   s      r'   r   z'_LRUCacheWrapperInstanceMethod.__call__p  s+     #T^^DOOKgKKKKKs   $-+-r<   )r!   r"   r#   rA   r   r   rV   r   r   r.   ri   rl   rc   rw   r   rz   r)   r|   r   r%   r&   r'   r   r   *  s    #!!"%#! #! 
	#!JOx O3 O4 OQ QS QT Q% "&4 4 	4
  4 
4 +J +1"2 1L# LC LB Lr&   r   r+   r*   rC   rD   r=   c                      t        d      dk  rt        d      dt        t           dt        t           f fd}|S )Nzjitter requires ttl to be setr   zjitter must be non-negativerB   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   rA   r   r   r   rI   rJ   markcoroutinefunction)rB   originr   rD   r+   rC   r*   s      r'   r   z_make_wrapper.<locals>.wrapper  s    '=!9:[[F '=!9: **62!EbVLMM2-.((*B"4B#4guc6Rw&33G<Gr&   )
ValueError_CBPr   rA   )r+   r*   rC   rD   r   s   ```` r'   _make_wrapperr   t  s\     ck899fqj677DH !1"!5  " Nr&   )rC   rD   c                     y r8   r%   )r+   r*   rC   rD   s       r'   r   r     s     r&   c                     y r8   r%   )r+   s    r'   r   r     s    
 r&   c                    | t        | t              rt        | |||      S t        t        t
           |       }t        |      st        |d      r t        ddd d       |      S t        |d      )Nr      Fz decorating is not supported)	r   r0   r   r   r   r   callabler   NotImplementedError)r+   r*   rC   rD   rB   s        r'   r   r     so     *Wc2WeS&99#b'7#B<72'=>8=eT48<<!RF*F"GHHr&   )NN)r   F)3r>   dataclassesr   r   rI   ra   	functoolsr   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   rJ   r   typing_extensionsasyncio.coroutinesr   __version____all__r   r   _Coror   r   UserWarningr   r)   	dataclassr2   rA   r   r0   r.   r   r   r   r%   r&   r'   <module>r      s       
  C C    & w&g0 
5 T]T]#sB,sE"I~SW*,FFGU U y   # #  # ]Bwr{ ]B ]B@ FLWRV_ FL FLX  "	c] 
% UO	
 tBxj*2../> 
   "c] 
%	
 UO tBxj*2../ 
 
"X b 
 /2I  "I8C=$r(*+II 
%	I
 UOI 8T"XJ 0 4457G7KKLIr&   