
    > /iM'                       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,e G d dee&e$f                Z- G d dee$         Z.e	 	 	 	 d-d       Z/ed.d        Z/	 	 	 	 d/d!Z/ed"d"d"d#	 	 	 	 	 	 	 d0d$       Z0e	 	 	 	 d-d%       Z0ed.d&       Z0	 d1d'd(d(d#	 	 	 	 	 	 	 	 	 d2d)Z0e	 	 	 	 	 	 	 	 d3d*       Z1e	 	 	 	 	 	 d4d+       Z1e*f	 	 	 	 	 	 	 d5d,Z1y)6    )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__     E/srv/sistema/bot/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                  D    e Zd Z	 	 	 	 	 	 	 	 ddZddZd	dZd
dZ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   )selffuncr5   r;   r<   s        r.   __init__zAsyncLRUCacheWrapper.__init__N   sN      
+2+>GQD"3tT"r-   c                n    t        | j                  | j                  | j                  | j                        S N)r   rA   rB   rD   rE   rH   s    r.   
cache_infozAsyncLRUCacheWrapper.cache_info^   s#    djj$,,t~~VVr-   c                J    | j                   | j                  | j                  dS )Nr5   r;   r<   rD   rF   rG   rM   s    r.   cache_parametersz%AsyncLRUCacheWrapper.cache_parametersa   s#    }}[[!%!8!8
 	
r-   c                    t         j                  d       x}r(|j                  | d        dx| _        x| _        | _        y y r?   )r&   getpoprA   rB   rE   )rH   r   s     r.   cache_clearz AsyncLRUCacheWrapper.cache_clearh   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rL   type).0args     r.   	<genexpr>z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>{   s     3sc3   c              3  2   K   | ]  }t        |        y wrL   rY   )r[   vals     r.   r]   z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>}   s     1W$s)1Wr^   )fast_acquireF)last)rD   r@   rB   r/   sumitemsrF   tuplevaluesr&   rT   LookupErrorr   setKeyErrorr
   r   rG   rA   move_to_endr   r   r#   rE   popitem)	rH   argskwargsvaluekeyr   cache_entrycached_valuelocks	            r.   __call__zAsyncLRUCacheWrapper.__call__m   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 N)rI   zCallable[..., Awaitable[T]]r5   r4   r;   r:   r<   r:   )returnr   )rt   r   )rt   None)rl   zP.argsrm   zP.kwargsrt   r#   )r)   r*   r+   rJ   rN   rR   rV   rs   r,   r-   r.   r   r   L   sC    #)# # 	#
  # W
;
B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 rL   rQ   )rH   r5   r;   r<   s       r.   rJ   z_LRUCacheWrapper.__init__   s    "3r-   c                    y rL   r,   rH   rI   s     r.   rs   z_LRUCacheWrapper.__call__   s     &)r-   c                    y rL   r,   rz   s     r.   rs   z_LRUCacheWrapper.__call__   s     +.r-   c                   t        |      r,t        || j                  | j                  | j                        S  t        j                  | j                  | j                        |      S )N)r5   r;   )r   r   rD   rF   rG   	functoolsr   )rH   fs     r.   rs   z_LRUCacheWrapper.__call__   sU     q!'4==$++t/F/F  My""4==LQOOr-   N)r5   r4   r;   r:   r<   r:   rI   z#Callable[P, Coroutine[Any, Any, T]]rt   zAsyncLRUCacheWrapper[P, T]rI   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+   rJ   r   rs   r,   r-   r.   rw   rw      sg    4
 )7)	#) ) .$.	(. .PGP	EPr-   rw   c                    y rL   r,   rI   s    r.   r   r           "%r-   c                    y rL   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-   .rP   c                     y rL   r,   rP   s      r.   r   r      s      r-   c                    y rL   r,   r   s    r.   r   r      r   r-   c                    y rL   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)rw   r   callable	TypeErrorr#   )rI   r5   r;   r<   s       r.   r   r      sN    , |$We5FGGD>=>>AAw/@A$GGr-   c                  K   y wrL   r,   )functioniterableinitials      r.   r	   r	     s      	   c                  K   y wrL   r,   )r   r   s     r.   r	   r	     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_itrn   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   )rI   z6Callable[..., T] | Callable[P, Coroutine[Any, Any, T]]rt   r   )r5   r4   r;   r:   r<   r:   rt   z_LRUCacheWrapper[Any]rL   )
rI   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#   )2
__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   rw   r   r   r	   r,   r-   r.   <module>r      s   "  
 #  % '	 	 	 & ( (w +CLCLcN    	 	 (;'<$ <Z 9  b71a4= b bJ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-   