
    tni*                    &   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j!        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dId%            Z0edJd(            Z0dKd+Z0ed,d,d,d-dLd4            Z1edId5            Z1edJd6            Z1	 dMd7d8d8d-dNd;Z1edOdA            Z2edPdD            Z2e*fdQdHZ2dS )R    )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dS )_InitialMissingTypeN)__name__
__module____qualname__     L/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/anyio/functools.pyr(   r(   8   s        Dr-   r(   initial_missingc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )r   inthitsmisses
int | NonemaxsizecurrsizeNr)   r*   r+   __annotations__r,   r-   r.   r   r   ?   s7         IIIKKKMMMMMr-   r   c                  .    e Zd ZU ded<   ded<   ded<   dS )r   r4   r5   booltypedalways_checkpointNr7   r,   r-   r.   r   r   F   s3         KKKr-   r   c                  6    e Zd ZddZddZdd
ZddZddZdS )_LRUMethodWrapperwrapperAsyncLRUCacheWrapper[..., T]instanceobjectc                "    || _         || _        d S N)_LRUMethodWrapper__wrapper_LRUMethodWrapper__instance)selfr?   rA   s      r.   __init__z_LRUMethodWrapper.__init__M   s     "r-   returnr   c                4    | j                                         S rD   )rE   
cache_inforG   s    r.   rK   z_LRUMethodWrapper.cache_infoQ   s    ~((***r-   r   c                4    | j                                         S rD   )rE   cache_parametersrL   s    r.   rN   z"_LRUMethodWrapper.cache_parametersT   s    ~..000r-   Nonec                8    | j                                          d S rD   )rE   cache_clearrL   s    r.   rQ   z_LRUMethodWrapper.cache_clearW   s    ""$$$$$r-   argsr   kwargsr#   c                r   K   | j          | j        |i | d {V S  | j        | j         g|R i | d {V S rD   )rF   rE   )rG   rR   rS   s      r.   __call__z_LRUMethodWrapper.__call__Z   sm      ?"'8888888888#T^DOEdEEEfEEEEEEEEEr-   N)r?   r@   rA   rB   rI   r   rI   r   rI   rO   )rR   r   rS   r   rI   r#   )r)   r*   r+   rH   rK   rN   rQ   rU   r,   r-   r.   r>   r>   L   s~        # # # #+ + + +1 1 1 1% % % %F F F F F Fr-   r>   c                  B    e Zd ZddZddZddZd dZd!dZ	 d"d#dZdS )$r   funcCallable[P, Awaitable[T]]r5   r4   r;   r:   r<   c                    || _         d| _        d| _        |t          |d          nd | _        d| _        || _        || _        t          | |           d S Nr   )	__wrapped___hits_missesmax_maxsize	_currsize_typed_always_checkpointr   )rG   rZ   r5   r;   r<   s        r.   rH   zAsyncLRUCacheWrapper.__init__c   s^      
+2+>GQD"3tT"""""r-   rI   r   c                N    t          | j        | j        | j        | j                  S rD   )r   r_   r`   rb   rc   rL   s    r.   rK   zAsyncLRUCacheWrapper.cache_infos   s    dj$,t~VVVr-   r   c                ,    | j         | j        | j        dS )Nr5   r;   r<   rb   rd   re   rL   s    r.   rN   z%AsyncLRUCacheWrapper.cache_parametersv   s!    }[!%!8
 
 	
r-   rO   c                    t                               d           x}r-|                    | d            dx| _        x| _        | _        d S d S r]   )r&   getpopr_   r`   rc   )rG   r   s     r.   rQ   z AsyncLRUCacheWrapper.cache_clear}   sT    #''---5 	;IIdD!!!9::DJ:	; 	;r-   rR   P.argsrS   P.kwargsr#   c                  K   | j         dk    r% | j        |i | d {V }| xj        dz  c_        |S |}|r.|t          ft	          |                                d          z   z  }| j        rU|t          d |D                       z  }|r7|t          ft          d |                                D                       z   z  }	 t          
                                }n8# t          $ r+ t                      }t                              |           Y nw xY w	 ||          }n## t          $ r t                      x}|| <   Y nw xY w	 ||         \  }}n4# t          $ r' t          t!          | j                   }}||f||<   Y nw xY w|U| xj        dz  c_        |                    |           | j        rt)                       d {V  t+          t,          |          S |4 d {V  ||         d         x}t          u ri| xj        dz  c_        | j         '| j        | j         k    r|                    d           n| xj        dz  c_         | j        |i | d {V }|d f||<   n:| xj        dz  c_        |                    |           t+          t,          |          }	 d d d           d {V  n# 1 d {V swxY w Y   |S )	Nr   r   r,   c              3  4   K   | ]}t          |          V  d S rD   type).0args     r.   	<genexpr>z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>   s(      33sc333333r-   c              3  4   K   | ]}t          |          V  d S rD   rq   )rs   vals     r.   ru   z0AsyncLRUCacheWrapper.__call__.<locals>.<genexpr>   s(      1W1W$s))1W1W1W1W1W1Wr-   )fast_acquireF)last)rb   r^   r`   r/   sumitemsrd   tuplevaluesr&   rk   LookupErrorr   setKeyErrorr
   r   re   r_   move_to_endr   r   r#   rc   popitem)	rG   rR   rS   valuekeyr   cache_entrycached_valuelocks	            r.   rU   zAsyncLRUCacheWrapper.__call__   s     =A*$*D;F;;;;;;;;ELLALLL  $ 	@O%FLLNNB(?(???C; 	X533d333333C X)E1W1Wv}}1W1W1W,W,WWW	'#''))EE 	' 	' 	'%''E&&&&&	'	6+KK 	6 	6 	6(35K%+++	6	2!,S!1L$$ 	2 	2 	2  d&="=>>> L  ,T1K	2 <JJ!OJJ##C(((& # ll"""""""<((( 	. 	. 	. 	. 	. 	. 	. 	. +C 0 33GG!=,4=1P1P''U'3333NNa'NN.d.?????????#($;C   

a

'',,,Q---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	." sI   C 2DDD D>=D>E .E?>E?!B;J//
J9<J9NrA   rB   ownertype | None_LRUMethodWrapper[T]c                P    t          | |          }t          || j                   |S rD   )r>   r   r^   )rG   rA   r   r?   s       r.   __get__zAsyncLRUCacheWrapper.__get__   s+     $D(33w 0111r-   )rZ   r[   r5   r4   r;   r:   r<   r:   rV   rW   rX   )rR   rm   rS   rn   rI   r#   rD   )rA   rB   r   r   rI   r   )	r)   r*   r+   rH   rK   rN   rQ   rU   r   r,   r-   r.   r   r   a   s        # # # # W W W W
 
 
 
; ; ; ;
B B B BJ 6:      r-   r   c                  N    e Zd ZddZedd            Zedd            ZddZdS )_LRUCacheWrapperr5   r4   r;   r:   r<   c                0    || _         || _        || _        d S rD   ri   )rG   r5   r;   r<   s       r.   rH   z_LRUCacheWrapper.__init__   s    "3r-   rZ   #Callable[P, Coroutine[Any, Any, T]]rI   AsyncLRUCacheWrapper[P, T]c                   d S rD   r,   rG   rZ   s     r.   rU   z_LRUCacheWrapper.__call__   s	     &)Sr-   Callable[..., T]functools._lru_cache_wrapper[T]c                   d S rD   r,   r   s     r.   rU   z_LRUCacheWrapper.__call__   s	     +.#r-   f6Callable[P, Coroutine[Any, Any, T]] | Callable[..., T]<AsyncLRUCacheWrapper[P, T] | functools._lru_cache_wrapper[T]c                   t          |          r!t          || j        | j        | j                  S  t          j        | j        | j                  |          S )N)r5   r;   )r   r   rb   rd   re   	functoolsr   )rG   r   s     r.   rU   z_LRUCacheWrapper.__call__   s]     q!! 	'4=$+t/F   My"4=LLLQOOOr-   N)r5   r4   r;   r:   r<   r:   rZ   r   rI   r   rZ   r   rI   r   )r   r   rI   r   )r)   r*   r+   rH   r   rU   r,   r-   r.   r   r      s        4 4 4 4
 ) ) ) X) . . . X.P P P P P Pr-   r   rZ   r   rI   r   c                   d S rD   r,   rZ   s    r.   r   r      	     "%r-   r   r   c                   d S rD   r,   r   s    r.   r   r      s    ILr-   6Callable[..., T] | Callable[P, Coroutine[Any, Any, T]]r   c               4     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-   .rh   r5   r4   r;   r:   r<   _LRUCacheWrapper[Any]c                    d S rD   r,   rh   s      r.   r   r      s	      Cr-   c                   d S rD   r,   r   s    r.   r   r     r   r-   c                   d S rD   r,   r   s    r.   r   r     s    MPSr-      F=Callable[P, Coroutine[Any, Any, T]] | Callable[..., T] | NoneTAsyncLRUCacheWrapper[P, T] | functools._lru_cache_wrapper[T] | _LRUCacheWrapper[Any]c                  | 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.

    Nz#the first argument must be callable)r   r   callable	TypeErrorr#   )rZ   r5   r;   r<   s       r.   r   r     sa    , |$We5FGGGD>> ?=>>>AAw/@AA$GGGr-   initialfunctionCallable[[T, S], Awaitable[T]]iterableIterable[S] | AsyncIterable[S]c               
   K   d S rD   r,   )r   r   r   s      r.   r	   r	   .  s       	r-   Callable[[T, T], Awaitable[T]]Iterable[T] | AsyncIterable[T]c               
   K   d S rD   r,   )r   r   s     r.   r	   r	   7  s      
 	r-   T | _InitialMissingType?Callable[[T, T], Awaitable[T]] | Callable[[T, S], Awaitable[T]]?Iterable[T] | Iterable[S] | AsyncIterable[T] | AsyncIterable[S]c                 K   d}t          |t                    r|                                }|t          u rM	 t	          t
          |                                 d{V           }n3# t          $ r t          d          dw xY wt	          t
          |          }|2 3 d{V } | ||           d{V }d}6 nt          |t                    rt          |          }|t          u rB	 t	          t
          t          |                    }n3# t          $ r t          d          dw xY wt	          t
          |          }|D ]} | ||           d{V }d}nt          d          |st                       d{V  |S )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	   ?  s     " O(M** U%%''o%%Qh&8&8&:&: : : : : : :;;%   F 
 G$$E% 	# 	# 	# 	# 	# 	# 	#'"(5'22222222E"OO &X 
Hh	'	' U(^^o%%QR))    F 
 G$$E 	# 	#G"(5'22222222E"OO	# STTT  llLs   -A& &BB7'"D
 
D%r   r   )rZ   r   rI   r   )r5   r4   r;   r:   r<   r:   rI   r   rD   )
rZ   r   r5   r4   r;   r:   r<   r:   rI   r   )r   r#   r   r   r   r   rI   r#   )r   r   r   r   rI   r#   )r   r   r   r   r   r   rI   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       ++++++GCLLGCLLIcNN F     	 	 	 	 	 	 	 	 (;':'<'< < < < <    Z       9   F F F F F
 F F F* i i i i i71a4= i i iXP P P P Pwqz P P P6 
% % % 
%
 
 L L L 
 L	) 	) 	) 	) 
 s          
 
 
% % % 
%
 
 P P P 
 P KOH #H H H H H H> 
   
 
   
 (7	8 8 8 8 8 8 8r-   