o
    ÔÙ¾iY  ã                   @  s´   d dl mZ d dlmZmZ d dlmZmZmZ er d dl	m
Z
 G dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Úannotations)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚTupleÚUnion)ÚTreeNodec                   @  s   e Zd Zeddd„ƒZdS )	ÚEvictionStrategyÚnodeú
'TreeNode'ÚreturnúUnion[float, Tuple]c                 C  s   d S ©N© ©Úselfr
   r   r   úU/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/mem_cache/evict_policy.pyÚget_priority   s   zEvictionStrategy.get_priorityN)r
   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	   
   s    r	   c                   @  ó   e Zd Zddd„ZdS )	ÚLRUStrategyr
   r   r   Úfloatc                 C  ó   |j S r   ©Úlast_access_timer   r   r   r   r      ó   zLRUStrategy.get_priorityN©r
   r   r   r   ©r   r   r   r   r   r   r   r   r      ó    r   c                   @  r   )	ÚLFUStrategyr
   r   r   úTuple[int, float]c                 C  ó   |j |jfS r   )Ú	hit_countr   r   r   r   r   r      s   zLFUStrategy.get_priorityN©r
   r   r   r"   r   r   r   r   r   r!      r    r!   c                   @  r   )	ÚFIFOStrategyr
   r   r   r   c                 C  r   r   ©Úcreation_timer   r   r   r   r      r   zFIFOStrategy.get_priorityNr   r   r   r   r   r   r&      r    r&   c                   @  r   )	ÚMRUStrategyr
   r   r   r   c                 C  ó   |j  S r   r   r   r   r   r   r       ó   zMRUStrategy.get_priorityNr   r   r   r   r   r   r)      r    r)   c                   @  r   )	ÚFILOStrategyr
   r   r   r   c                 C  r*   r   r'   r   r   r   r   r   %   r+   zFILOStrategy.get_priorityNr   r   r   r   r   r   r,   $   r    r,   c                   @  s   e Zd ZdZd	dd„ZdS )
ÚPriorityStrategyz\Priority-aware eviction: lower priority values evicted first, then LRU within same priority.r
   r   r   r"   c                 C  r#   r   )Úpriorityr   r   r   r   r   r   ,   s   zPriorityStrategy.get_priorityNr%   )r   r   r   Ú__doc__r   r   r   r   r   r-   )   s    r-   N)Ú
__future__r   Úabcr   r   Útypingr   r   r   Ú sglang.srt.mem_cache.radix_cacher   r	   r   r!   r&   r)   r,   r-   r   r   r   r   Ú<module>   s    