
    pi*                    
   U d dl mZ d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mZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZ d d	lmZ d
dlmZ d
dlmZm Z  ejB                  dk\  rd dlm"Z" nd dl#m"Z"  ed      Z$ ed      Z% e"d      Z& ed      Z'de(d<    G d d      Z) e)       Z*de(d<    G d de      Z+ G d de      Z, G d dee$         Z-e G d dee&e$f                Z. G d d ee$         Z/e	 	 	 	 d/d!       Z0ed0d"       Z0	 	 	 	 d1d#Z0ed$d$d$d%	 	 	 	 	 	 	 d2d&       Z1e	 	 	 	 d/d'       Z1ed0d(       Z1	 d3d)d*d*d%	 	 	 	 	 	 	 	 	 d4d+Z1e	 	 	 	 	 	 	 	 d5d,       Z2e	 	 	 	 	 	 d6d-       Z2e*f	 	 	 	 	 	 	 d7d.Z2y)8    )annotations)AsyncCacheInfoAsyncCacheParametersAsyncLRUCacheWrappercache	lru_cachereduceN)OrderedDict)AsyncIterable	AwaitableCallable	CoroutineHashableIterable)update_wrapper)iscoroutinefunction)AnyGeneric
NamedTuple	TypedDictTypeVarcastfinaloverload)WeakKeyDictionary   )Lock)RunVar
checkpoint)      )	ParamSpecTSPlru_cache_itemszRunVar[WeakKeyDictionary[AsyncLRUCacheWrapper[Any, Any], OrderedDict[Hashable, tuple[_InitialMissingType, Lock] | tuple[Any, None]]]]c                      e Zd Zy)_InitialMissingTypeN)__name__
__module____qualname__     Q/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/anyio/functools.pyr(   r(   8   s    r-   r(   initial_missingc                  6    e Zd ZU ded<   ded<   ded<   ded<   y)r   inthitsmisses
int | NonemaxsizecurrsizeNr)   r*   r+   __annotations__r,   r-   r.   r   r   ?   s    
IKMr-   r   c                  ,    e Zd ZU ded<   ded<   ded<   y)r   r4   r5   booltypedalways_checkpointNr7   r,   r-   r.   r   r   F   s    Kr-   r   c                  4    e Zd ZddZddZd	dZd
dZddZy)_LRUMethodWrapperc                     || _         || _        y N)_LRUMethodWrapper__wrapper_LRUMethodWrapper__instance)selfwrapperinstances      r.   __init__z_LRUMethodWrapper.__init__M   s     "r-   c                6    | j                   j                         S r@   )rA   
cache_inforC   s    r.   rH   z_LRUMethodWrapper.cache_infoQ   s    ~~((**r-   c                6    | j                   j                         S r@   )rA   cache_parametersrI   s    r.   rK   z"_LRUMethodWrapper.cache_parametersT   s    ~~..00r-   c                8    | j                   j                          y r@   )rA   cache_clearrI   s    r.   rM   z_LRUMethodWrapper.cache_clearW   s    ""$r-   c                   K   | j                    | j                  |i | d {   S  | j                  | j                   g|i | d {   S 7 ,7 wr@   )rB   rA   )rC   argskwargss      r.   __call__z_LRUMethodWrapper.__call__Z   sT     ??"'8888#T^^DOOEdEfEEE 9Es!   "AA'AAAAN)rD   zAsyncLRUCacheWrapper[..., T]rE   objectreturnr   rT   r   rT   None)rO   r   rP   r   rT   r#   )r)   r*   r+   rF   rH   rK   rM   rQ   r,   r-   r.   r>   r>   L   s    #+1%Fr-   r>   c                  Z    e Zd Z	 	 	 	 	 	 	 	 ddZd	dZd
dZddZddZ	 d	 	 	 	 	 ddZy)r   c                    || _         d| _        d| _        |t        |d      nd | _        d| _        || _        || _        t        | |       y Nr   )	__wrapped___hits_missesmax_maxsize	_currsize_typed_always_checkpointr   )rC   funcr5   r;   r<   s        r.   rF   zAsyncLRUCacheWrapper.__init__c   sN      
+2+>GQD"3tT"r-   c                n    t        | j                  | j                  | j                  | j                        S r@   )r   r\   r]   r_   r`   rI   s    r.   rH   zAsyncLRUCacheWrapper.cache_infos   s#    djj$,,t~~VVr-   c                J    | j                   | j                  | j                  dS )Nr5   r;   r<   r_   ra   rb   rI   s    r.   rK   z%AsyncLRUCacheWrapper.cache_parametersv   s#    }}[[!%!8!8
 	
r-   c                    t         j                  d       x}r(|j                  | d        dx| _        x| _        | _        y y rZ   )r&   getpopr\   r]   r`   )rC   r   s     r.   rM   z AsyncLRUCacheWrapper.cache_clear}   s@    #''--5-IIdD!9::DJ: .r-   c                  K   | j                   dk(  r1 | j                  |i | d {   }| xj                  dz  c_        |S |}|r%|t        ft	        |j                         d      z   z  }| j                  rB|t        d |D              z  }|r+|t        ft        d |j                         D              z   z  }	 t        j                         }	 ||    }	 ||   \  }}|T| xj$                  dz  c_        |j'                  |       | j"                  rt)                d {    t+        t,        |      S |4 d {    ||   d   x}t        u r| xj                  dz  c_        | j                   ,| j.                  | j                   k\  r|j1                  d       n| xj.                  dz  c_         | j                  |i | d {   }|d f||<   n6| xj$                  dz  c_        |j'                  |       t+        t,        |      }d d d       d {    |S 7 # t        $ r# t               }t        j                  |       Y zw xY w# t        $ r t               x}|| <   Y w xY w# t        $ r( t        t!        | j"                         }}||f||<   Y w xY w7 7 i7 7 # 1 d {  7  sw Y   S xY ww)	Nr   r   r,   c              3  2   K   | ]  }t        |        y wr@   type).0args     r.   	<genexpr>z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>   s     3sc3   c              3  2   K   | ]  }t        |        y wr@   rm   )ro   vals     r.   rq   z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>   s     1W$s)1Wrr   )fast_acquireF)last)r_   r[   r]   r/   sumitemsra   tuplevaluesr&   ri   LookupErrorr   setKeyErrorr
   r   rb   r\   move_to_endr   r   r#   r`   popitem)	rC   rO   rP   valuekeyr   cache_entrycached_valuelocks	            r.   rQ   zAsyncLRUCacheWrapper.__call__   s    ==A*$**D;F;;ELLALL  $O%FLLNB(???C;;53d333C)E1Wv}}1W,WWW	'#'')E
	6+K
	2!,S!1L$ <JJ!OJ##C(&& l""<(( 	. 	. +C 0 33G!==,4==1P''U'3NNa'N.d..???#($;C  

a
'',Q-	. 	."  <"  	'%'E&	'  	6(35K%+	6  	2  d&=&="=> L  ,T1K	2 #	. @	. 	. 	. 	." s   %K HBK ;H I I, AK J  K :J#;K >BJ*J&AJ*	K J(K (I
K 	I

K I)%K (I))K ,-JK JK #K &J*(K *J=0J31J=8K Nc                J    t        | |      }t        || j                         |S r@   )r>   r   r[   )rC   rE   ownerrD   s       r.   __get__zAsyncLRUCacheWrapper.__get__   s%     $D(3w 0 01r-   )rc   zCallable[P, Awaitable[T]]r5   r4   r;   r:   r<   r:   rS   rU   rV   )rO   zP.argsrP   zP.kwargsrT   r#   r@   )rE   rR   r   ztype | NonerT   z_LRUMethodWrapper[T])	r)   r*   r+   rF   rH   rK   rM   rQ   r   r,   r-   r.   r   r   a   sf    #'# # 	#
  # W
;
BJ 6:'2	r-   r   c                  X    e Zd ZddZe	 	 	 	 dd       Ze	 	 	 	 dd       Z	 	 	 	 d	dZy)
_LRUCacheWrapperc                .    || _         || _        || _        y r@   rg   )rC   r5   r;   r<   s       r.   rF   z_LRUCacheWrapper.__init__   s    "3r-   c                    y r@   r,   rC   rc   s     r.   rQ   z_LRUCacheWrapper.__call__   s     &)r-   c                    y r@   r,   r   s     r.   rQ   z_LRUCacheWrapper.__call__   s     +.r-   c                   t        |      r,t        || j                  | j                  | j                        S  t        j                  | j                  | j                        |      S )N)r5   r;   )r   r   r_   ra   rb   	functoolsr   )rC   fs     r.   rQ   z_LRUCacheWrapper.__call__   sU     q!'4==$++t/F/F  My""4==LQOOr-   N)r5   r4   r;   r:   r<   r:   rc   z#Callable[P, Coroutine[Any, Any, T]]rT   zAsyncLRUCacheWrapper[P, T]rc   zCallable[..., T]rT   zfunctools._lru_cache_wrapper[T])r   z6Callable[P, Coroutine[Any, Any, T]] | Callable[..., T]rT   <AsyncLRUCacheWrapper[P, T] | functools._lru_cache_wrapper[T])r)   r*   r+   rF   r   rQ   r,   r-   r.   r   r      sg    4
 )7)	#) ) .$.	(. .PGP	EPr-   r   c                    y r@   r,   rc   s    r.   r   r           "%r-   c                    y r@   r,   r   s    r.   r   r      s    ILr-   c               &     t        d      |       S )z
    A convenient shortcut for :func:`lru_cache` with ``maxsize=None``.

    This is the asynchronous equivalent to :func:`functools.cache`.

    N)r5   )r   r   s    r.   r   r      s     #9T"4((r-   .rf   c                     y r@   r,   rf   s      r.   r   r      s      r-   c                    y r@   r,   r   s    r.   r   r     r   r-   c                    y r@   r,   r   s    r.   r   r     s    MPr-      Fc                  | t        t           |||      S t        |       st        d       t        t           |||      |       S )a  
    An asynchronous version of :func:`functools.lru_cache`.

    If a synchronous function is passed, the standard library
    :func:`functools.lru_cache` is applied instead.

    :param always_checkpoint: if ``True``, every call to the cached function will be
        guaranteed to yield control to the event loop at least once

    .. note:: Caches and locks are managed on a per-event loop basis.

    z#the first argument must be callable)r   r   callable	TypeErrorr#   )rc   r5   r;   r<   s       r.   r   r     sN    , |$We5FGGD>=>>AAw/@A$GGr-   c                  K   y wr@   r,   )functioniterableinitials      r.   r	   r	   .  s      	   c                  K   y wr@   r,   )r   r   s     r.   r	   r	   7  s     
 	r   c                 K   d}t        |t              ro|j                         }|t        u r(	 t	        t
        |j                          d{         }nt	        t
        |      }|2 3 d{   } | ||       d{   }d}t        |t              rYt        |      }|t        u r	 t	        t
        t        |            }nt	        t
        |      }|D ]  } | ||       d{   }d} nt        d      |st                d{    |S 7 # t        $ r t        d      dw xY w7 7 6 7# t        $ r t        d      dw xY w7 d7 Bw)at  
    Asynchronous version of :func:`functools.reduce`.

    :param function: a coroutine function that takes two arguments: the accumulated
        value and the next element from the iterable
    :param iterable: an iterable or async iterable
    :param initial: the initial value (if missing, the first element of the iterable is
        used as the initial value)

    FNz0reduce() of empty sequence with no initial valueTz9reduce() argument 2 must be an iterable or async iterable)
isinstancer   	__aiter__r/   r   r#   	__anext__StopAsyncIterationr   r   iternextStopIterationr   )r   r   r   function_calledasync_itr   elementits           r.   r	   r	   ?  se    " O(M*%%'o%Qh&8&8&: :; G$E% 	# 	#'"5'22E"O	Hh	'(^o%QR) G$E 	#G"5'22E"O	# STT lLE !;% F	#2 & ! F 3 	s   +ED D
D E'D-+D),D-/E<D+=*E(D/ "E#E$#EE
ED D&&E)D-+E-E/EE
Er   r   )rc   z6Callable[..., T] | Callable[P, Coroutine[Any, Any, T]]rT   r   )r5   r4   r;   r:   r<   r:   rT   z_LRUCacheWrapper[Any]r@   )
rc   z=Callable[P, Coroutine[Any, Any, T]] | Callable[..., T] | Noner5   r4   r;   r:   r<   r:   rT   zTAsyncLRUCacheWrapper[P, T] | functools._lru_cache_wrapper[T] | _LRUCacheWrapper[Any])r   r#   r   zCallable[[T, S], Awaitable[T]]r   zIterable[S] | AsyncIterable[S]rT   r#   )r   zCallable[[T, T], Awaitable[T]]r   zIterable[T] | AsyncIterable[T]rT   r#   )r   zT | _InitialMissingTyper   z?Callable[[T, T], Awaitable[T]] | Callable[[T, S], Awaitable[T]]r   z?Iterable[T] | Iterable[S] | AsyncIterable[T] | AsyncIterable[S]rT   r#   )3
__future__r   __all__r   syscollectionsr
   collections.abcr   r   r   r   r   r   r   inspectr   typingr   r   r   r   r   r   r   r   weakrefr   _core._synchronizationr   lowlevelr   r   version_infor"   typing_extensionsr#   r$   r%   r&   r8   r(   r/   r   r   r>   r   r   r   r   r	   r,   r-   r.   <module>r      s   "  
 #  % '	 	 	 & ( (w +CLCLcN    	 	 (;'<$ <Z 9 F
 F* i71a4= i iXPwqz P6 
%
-%% 
%
 
 L 
 L	)
@	)A	) 
 s  )- HL   
 
 
%
-%% 
%
 
 P 
 P KOH #H
GH 	H
 H H YH> 
 	,,
  
 
,, 	 
 (7	8 %	8M8M8
 8r-   