
    .`i>                     L   d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZ d dlZ ede          Z ed          Z ed	          Z G d
 d          Z e            Z G d deeef                   Z G d de          Z G d dej        eef                   ZdS )    )UserDict)CallableHashableIteratorKeysViewMapping)MappingProxyType)
NamedTupleTypeVarcastoverloadN_K)bound_V_Tc                       e Zd ZdS )	_SentinelN)__name__
__module____qualname__     d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/utils/cache.pyr   r      s          r   r   c                   x     e Zd Zdeeef         deedf         f fdZdee         fdZde	e         fdZ
 xZS )_MappingOrderCacheViewdataordered_keysNc                 X    t                                          |           || _        d S N)super__init__r   )selfr   r   	__class__s      r   r!   z_MappingOrderCacheView.__init__   s)    (r   returnc                 *    t          | j                  S r   )iterr   r"   s    r   __iter__z_MappingOrderCacheView.__iter__   s    D%&&&r   c                 *    t          | j                  S r   )r   r   r'   s    r   keysz_MappingOrderCacheView.keys   s    )***r   )r   r   r   r   r   r   r!   r   r(   r   r*   __classcell__r#   s   @r   r   r      s        )WRV_ )GBH<M ) ) ) ) ) )'(2, ' ' ' '+hrl + + + + + + + +r   r   c                   H    e Zd ZU eed<   eed<   edefd            ZddZdS )		CacheInfohitstotalr$   c                 :    | j         dk    rdS | j        | j         z  S Nr   )r0   r/   r'   s    r   	hit_ratiozCacheInfo.hit_ratio%   s!    :??1y4:%%r   otherc                 X    t          | j        |j        z
  | j        |j        z
            S )Nr/   r0   )r.   r/   r0   )r"   r4   s     r   __sub__zCacheInfo.__sub__,   s1    UZ'*u{*
 
 
 	
r   N)r4   r.   )	r   r   r   int__annotations__propertyfloatr3   r7   r   r   r   r.   r.   !   sa         
IIIJJJ&5 & & & X&
 
 
 
 
 
r   r.   c                       e Zd Zd'dedeegef         dz  f fdZdddeded	ef fd
Z	ded	df fdZ
ed	eeef         fd            Zed	eedf         fd            Zed	efd            Zed	efd            Zddded	efdZded	dfdZeded	edz  fd            Zedeez  ded	eez  fd            Zd'deez  dz  ded	eez  dz  fdZeded	efd            Zededeez  d	eez  fd            Zd'dedeez  dz  d	eez  dz  fdZdeded	dfdZded	dfdZded	dfdZdededz  d	dfd Zdd!d"ed	dfd#Zd(d$Zd)d"efd%Zd(d&Z xZ S )*LRUCacheNcapacity	getsizeofc                     t                                          ||           t          t                               | _        d| _        d| _        t          dd          | _        d S )Nr   r6   )	r    r!   setr   pinned_items_hits_totalr.   
_last_info)r"   r>   r?   r#   s      r   r!   zLRUCache.__init__4   sS    9---GII
#!444r   Tupdate_infokeyrG   r$   c                    t                                          |          }|r | xj        dz  c_        | xj        dz  c_        |S )N   )r    __getitem__rC   rD   )r"   rH   rG   valuer#   s       r   rK   zLRUCache.__getitem__=   sF    ##C(( 	JJ!OJJKK1KKr   c                     || v }|                      |d          }t                                          |           || j        v r|                     |           |r|                     ||           d S d S NFrF   )rK   r    __delitem__rB   _unpin
_on_remove)r"   rH   run_on_removerL   r#   s       r   rO   zLRUCache.__delitem__F   s    t  % 88C   $###KK 	(OOC'''''	( 	(r   c                 6    t          | j        | j                  S )z:Return the internal cache dictionary in order (read-only).)r   _Cache__dataorderr'   s    r   cachezLRUCache.cacheP   s!     &J
 
 	
r   c                 *    t          | j                  S )z1Return the internal order dictionary (read-only).)r	   _LRUCache__orderr'   s    r   rU   zLRUCache.orderX   s       5666r   c                     | j         S r   )maxsizer'   s    r   r>   zLRUCache.capacity]   s
    |r   c                 :    | j         dk    rdS | j        | j         z  S r2   )rZ   currsizer'   s    r   usagezLRUCache.usagea   s#    <11}t|++r   F)deltar^   c                f    t          | j        | j                  }|r|| j        z
  }|| _        |}|S )z
        Gets the cumulative number of hits and queries against this cache.

        If `delta=True`, instead gets these statistics
        since the last call that also passed `delta=True`.
        r6   )r.   rC   rD   rE   )r"   r^   info
info_deltas       r   statzLRUCache.stath   s?     dj<<< 	/J"DODr   c                 r    	 | j                             |           d S # t          $ r d | j         |<   Y d S w xY wr   )rX   move_to_endKeyErrorr"   rH   s     r   touchzLRUCache.touchx   sU    	.!--c22222 	. 	. 	.)-D!#&&&&	.s    66c                    d S r   r   rf   s     r   getzLRUCache.get~   s    ,/Cr   defaultc                    d S r   r   r"   rH   rj   s      r   ri   zLRUCache.get   s    <?Cr   c                    || v r(|                      |d          }| xj        dz  c_        n|}| xj        dz  c_        |S )NFrF   rJ   )rK   rC   rD   r"   rH   rj   rL   s       r   ri   zLRUCache.get   sN    $;;$$Se$<<EJJ!OJJJEqr   c                     d S r   r   rf   s     r   popzLRUCache.pop   s    "%#r   c                     d S r   r   rl   s      r   rp   zLRUCache.pop   s    9<r   c                 j    || vr|S |                      |d          }|                     |           |S rN   )rK   rO   rn   s       r   rp   zLRUCache.pop   sA    d??N  % 88r   rL   c                 2    |                      ||           d S r   )__setitem__r"   rH   rL   s      r   putzLRUCache.put   s    e$$$$$r   c                 h    || vrt          d| d          | j                            |           dS )zd
        Pins a key in the cache preventing it from being
        evicted in the LRU order.
        zCannot pin key: z not in cache.N)
ValueErrorrB   addrf   s     r   pinzLRUCache.pin   sD    
 d??CCCCDDDc"""""r   c                 :    | j                             |           dS )z_
        Unpins a key in the cache allowing it to be
        evicted in the LRU order.
        N)rB   removerf   s     r   rP   zLRUCache._unpin   s!    
 	  %%%%%r   c                     d S r   r   ru   s      r   rQ   zLRUCache._on_remove   s    r   remove_pinnedr   c                \    t          |           dk    rd S |                     |           d S )Nr   r~   )lenpopitem)r"   r   s     r   remove_oldestzLRUCache.remove_oldest   s0    t99>>F=11111r   c                 r    | j         | j        k    r&|                                  | j         | j        k    $d S d S r   )r\   r>   r   r'   s    r   _remove_old_if_neededzLRUCache._remove_old_if_needed   s@    mdm++    mdm++++++r   c                      |s?t           fd j        D             t                    }|t          u rt          d          n!t          t	           j                            }                     t          t          |                    }||fS )z>Remove and return the `(key, value)` pair least recently used.c              3   .   K   | ]}|j         v|V  d S r   )rB   ).0rH   r"   s     r   	<genexpr>z#LRUCache.popitem.<locals>.<genexpr>   s0      KKc9J.J.J.J.J.J.JKKr   z:All items are pinned, cannot remove oldest from the cache.)nextrU   ALL_PINNED_SENTINELRuntimeErrorr&   rp   r   r   )r"   r   lru_keyrL   s   `   r   r   zLRUCache.popitem   s     	-KKKK
KKK# G ---"P   .
 4
++,,Gb'**++r   c                     t          |           dk    r)|                     d           t          |           dk    )d| _        d| _        t	          dd          | _        d S )Nr   Tr~   r6   )r   r   rC   rD   r.   rE   r'   s    r   clearzLRUCache.clear   sa    $ii!mmT222 $ii!mm 
#!444r   r   )r$   N)F)!r   r   r   r;   r   r   r!   r   boolrK   rO   r:   r   rV   rU   r>   r]   r.   rb   rg   r   ri   r   rp   rv   rz   rP   rQ   r   r   r   r   r+   r,   s   @r   r=   r=   3   s       5 5 58RD%K3H43O 5 5 5 5 5 5 ;?   r 4 2      (r (d ( ( ( ( ( ( 
wr2v 
 
 
 X
 7wr4x( 7 7 7 X7 %    X ,u , , , X, %*   T i     . . . . . . /r/d/// X/?rBw?r?27??? X?
 
rBw~ 
r 
b4 
 
 
 
 %r%b%%% X%<r<BG<R<<< X< r BGdN b2gn    %r %" % % % % %#r #d # # # #&" & & & & &b d t     6; 2 2 2d 2t 2 2 2 2! ! ! !   T        "5 5 5 5 5 5 5 5r   r=   )collectionsr   collections.abcr   r   r   r   r   typesr	   typingr
   r   r   r   
cachetoolsr   r   r   r   r   r   r.   r=   r   r   r   <module>r      s   !           K K K K K K K K K K K K K K " " " " " " 6 6 6 6 6 6 6 6 6 6 6 6    WT"""WT]]WT]]          ikk 	+ 	+ 	+ 	+ 	+Xb"f- 	+ 	+ 	+
 
 
 
 

 
 
 
$c5 c5 c5 c5 c5z"2r6* c5 c5 c5 c5 c5r   