o
    Y۷iv7                     @   s   d Z dZddlZddlZddlZdd Zdd Zdd	 ZG d
d dZG dd dZ	G dd de	Z
dd Zdd Zdd Zdd Zdd Zdd ZdddZdS )zMethod decorator helpers.     Nc                 C   s   t jdt| d d S )Nz9decorating class methods with @cachedmethod is deprecated
stacklevelwarningswarnDeprecationWarningr   r   r   N/home/ubuntu/vllm_env/lib/python3.10/site-packages/cachetools/_cachedmethod.py_warn_classmethod
   
   
r
   c                 C   s   t j| t|d d S )Nr   r   )msgr   r   r   r	   _warn_instance_dict   r   r   c                 C   s   d S Nr   )_r   r   r	   _none   s   r   c                   @   sZ   e Zd ZdZdddZdd Zdd Zed	d
 Zedd Z	edd Z
edd ZdS )_WrapperBasezDWrapper base class providing default implementations for properties.Nc                 C   sh   t |tr
tdd t| | || _|| _t||| _|d ur#|nt	| _
|d ur/|| _d S t	| _d S )N   r   )
isinstancetyper
   	functoolsupdate_wrapper_obj_WrapperBase__cachepartial_WrapperBase__keyr   _WrapperBase__lock_WrapperBase__cond)selfobjmethodcachekeylockcondr   r   r	   __init__!   s   

z_WrapperBase.__init__c                 O      t  r   NotImplementedErrorr   argskwargsr   r   r	   __call__+      z_WrapperBase.__call__c                 C   r%   r   r&   r   r   r   r	   cache_clear.   r,   z_WrapperBase.cache_clearc                 C      |  | jS r   )r   r   r-   r   r   r	   r    1      z_WrapperBase.cachec                 C   s   | j S r   )r   r-   r   r   r	   	cache_key5   s   z_WrapperBase.cache_keyc                 C   r/   r   )r   r   r-   r   r   r	   
cache_lock9   r0   z_WrapperBase.cache_lockc                 C   r/   r   )r   r   r-   r   r   r	   cache_condition=   r0   z_WrapperBase.cache_condition)NN)__name__
__module____qualname____doc__r$   r+   r.   propertyr    r1   r2   r3   r   r   r   r	   r      s    




r   c                   @   s,   e Zd ZdZd
ddZdd Zddd	ZdS )_DescriptorBasezADescriptor base class implementing the basic descriptor protocol.Fc                 C   s   d | _ || _d S r   )_DescriptorBase__attrname_DescriptorBase__deprecated)r   
deprecatedr   r   r	   r$   E   s   
z_DescriptorBase.__init__c                 C   s:   | j d u r
|| _ d S || j krtd| j d|dd S )Nz=Cannot assign the same @cachedmethod to two different names (z and z).)r:   	TypeError)r   ownernamer   r   r	   __set_name__I   s   


z_DescriptorBase.__set_name__Nc                 C   s   |  |}|d u r	 |S | jd urfz|j| j|}W |S  tyA   dt|jd| jd}| jr9t|d nt	|d Y |S  t	ye   dt|jd| jd}| jr]t|d nt	|d Y |S w | jrl	 |S d}t	|d )NzNo '__dict__' attribute on z instance to cache z
 property.   zThe '__dict__' attribute on z7 instance does not support item assignment for caching zDCannot use @cachedmethod instance without calling __set_name__ on it)
Wrapperr:   __dict__
setdefaultAttributeErrorr   r4   r;   r   r=   )r   r   objtypewrapperr   r   r   r	   __get__R   sD   
 




z_DescriptorBase.__get__)Fr   )r4   r5   r6   r7   r$   r@   rH   r   r   r   r	   r9   B   s
    
	r9   c                       s0   e Zd ZdZ fddZdd Zdd Z  ZS )_DeprecatedDescriptorBasez=Descriptor base class supporting deprecated @classmethod use.c                    s   t  jdd || _|| _d S )NT)r<   )superr$   "_DeprecatedDescriptorBase__wrapper&_DeprecatedDescriptorBase__cache_clear)r   rG   r.   	__class__r   r	   r$   ~   s   
z"_DeprecatedDescriptorBase.__init__c                 O   s   t dd | j|i |S NrA   r   )r
   rK   r(   r   r   r	   r+         
z"_DeprecatedDescriptorBase.__call__c                 C   s   t dd | |S rO   )r
   rL   )r   rF   r   r   r	   r.      s   

z%_DeprecatedDescriptorBase.cache_clear)r4   r5   r6   r7   r$   r+   r.   __classcell__r   r   rM   r	   rI   {   s
    rI   c                    s$   G  fdddt }| S )Nc                       *   e Zd ZG  fdddeZdS )z#_condition_info.<locals>.Descriptorc                       sF   e Zd Z fddZfddZdd ZfddZ  ZS )	z+_condition_info.<locals>.Descriptor.Wrapperc                    s.   t  | d | _| _t | _d S Nr   )rJ   r$   _Wrapper__hits_Wrapper__missesset_Wrapper__pendingr   r   rN   r    r#   r!   r"   r   r   r	   r$      s   z4_condition_info.<locals>.Descriptor.Wrapper.__init__c                    s  j }j}j}j|i | |> | fdd z|  } jd7  _|W W  d    S  tyI   j   j	d7  _	Y nw W d    n1 sTw   Y  zmj
g|R i |}|7 z|| < W n	 tyx   Y nw |W  d    W | j  |  W d    S 1 sw   Y  S 1 sw   Y  W | j  |  W d    d S 1 sw   Y  d S | j  |  W d    w 1 sw   Y  w )Nc                      s
    j vS r   )rW   r   r!   r   r   r	   <lambda>   s   
 zF_condition_info.<locals>.Descriptor.Wrapper.__call__.<locals>.<lambda>   )r    r2   r3   r1   wait_forrT   KeyErrorrW   addrU   r   
ValueErrorremove
notify_all)r   r)   r*   r    r"   r#   resultvalr   rZ   r	   r+      sN   	

(
z4_condition_info.<locals>.Descriptor.Wrapper.__call__c                 S   B   | j  | j  d | _| _W d    d S 1 sw   Y  d S rS   r2   r    clearrT   rU   r-   r   r   r	   r.         
"z7_condition_info.<locals>.Descriptor.Wrapper.cache_clearc                    <   | j   | j| j| jW  d    S 1 sw   Y  d S r   r2   r    rT   rU   r-   infor   r	   
cache_info      $z6_condition_info.<locals>.Descriptor.Wrapper.cache_infor4   r5   r6   r$   r+   r.   rn   rQ   r   r    r#   rm   r!   r"   r   rM   r	   rB      s
    rB   Nr4   r5   r6   r   rB   r   rq   r   r	   
Descriptor       "rs   r9   )r   r    r!   r"   r#   rm   rs   r   rq   r	   _condition_info   s   ,rv   c                    s"   G  fdddt }| S )Nc                       (   e Zd ZG  fdddeZdS )z _locked_info.<locals>.Descriptorc                       sD   e Zd Z fddZfddZdd ZfddZ  ZS )	z(_locked_info.<locals>.Descriptor.Wrapperc                    s$   t  | d | _| _d S rS   rJ   r$   rT   rU   rX   rN   r    r!   r"   r   r   r	   r$      s   z1_locked_info.<locals>.Descriptor.Wrapper.__init__c              	      s   | j }| j}| j|i |}|. z|| }|  jd7  _|W W  d    S  ty6   |  jd7  _Y nw W d    n1 sAw   Y   | jg|R i |}|" z|||W W  d    S  tyu   | Y W  d    S w 1 syw   Y  d S Nr\   )	r    r2   r1   rT   r^   rU   r   rD   r`   )r   r)   r*   r    r"   r!   rc   rd   re   r   r	   r+      s0   z1_locked_info.<locals>.Descriptor.Wrapper.__call__c                 S   rf   rS   rg   r-   r   r   r	   r.      ri   z4_locked_info.<locals>.Descriptor.Wrapper.cache_clearc                    rj   r   rk   r-   rl   r   r	   rn      ro   z3_locked_info.<locals>.Descriptor.Wrapper.cache_inforp   r   r    rm   r!   r"   r   rM   r	   rB      s
    rB   Nrr   r   r{   r   r	   rs           rs   ru   )r   r    r!   r"   rm   rs   r   r{   r	   _locked_info   s   $r}   c                    s    G  fdddt }| S )Nc                       s&   e Zd ZG  fdddeZdS )z"_unlocked_info.<locals>.Descriptorc                       sB   e Zd Z fddZfddZdd ZfddZ  ZS )	z*_unlocked_info.<locals>.Descriptor.Wrapperc                    s"   t  | d | _| _d S rS   rx   rX   rN   r    r!   r   r   r	   r$      s   z3_unlocked_info.<locals>.Descriptor.Wrapper.__init__c                    s   | j }| j|i |}z|| }|  jd7  _|W S  ty)   |  jd7  _Y nw  | jg|R i |}z|||< W |S  tyG   Y |S w rz   )r    r1   rT   r^   rU   r   r`   )r   r)   r*   r    r!   rc   rd   re   r   r	   r+      s"   
z3_unlocked_info.<locals>.Descriptor.Wrapper.__call__c                 S   s   | j   d | _| _d S rS   )r    rh   rT   rU   r-   r   r   r	   r.     rP   z6_unlocked_info.<locals>.Descriptor.Wrapper.cache_clearc                    s    | j | j| jS r   )r    rT   rU   r-   rl   r   r	   rn     s   z5_unlocked_info.<locals>.Descriptor.Wrapper.cache_inforp   r   r    rm   r!   r   rM   r	   rB      s
    rB   Nrr   r   r   r   r	   rs      s    rs   ru   )r   r    r!   rm   rs   r   r   r	   _unlocked_info   s   r   c                    sb   t   fdd fddfdd}G  fdddt}||S )	Nc                    s  | }| g|R i | | / |   fdd z|  W W  d    S  ty:     Y nw W d    n1 sEw   Y  zt| g|R i |}| : z|| < W n	 tyj   Y nw |W  d    W |    |   W d    S 1 sw   Y  S 1 sw   Y  W |    |   W d    d S 1 sw   Y  d S |    |   W d    w 1 sw   Y  w )Nc                      s    vS r   r   r   kpendingr   r	   r[     s    z-_condition.<locals>.wrapper.<locals>.<lambda>)r]   r^   r_   r`   ra   rb   )r   r   r)   r*   cv)r    r#   r!   r"   r   r   r	   rG     sD   





,
z_condition.<locals>.wrapperc                    >    | }|  |   W d    d S 1 sw   Y  d S r   rh   r   r   r    r"   r   r	   r.   '     

"z_condition.<locals>.cache_clearc                    s&     | t }| |g|R i |S r   )rD   rV   )r   r)   r*   p)r   rG   r   r	   classmethod_wrapper,  s   z'_condition.<locals>.classmethod_wrapperc                       s,   e Zd ZG  fdddeZdS )z_condition.<locals>.Descriptorc                       s@   e Zd Z fddZfddZdfdd	Z  ZS )	z&_condition.<locals>.Descriptor.Wrapperc                    s"   t  | t | _d S r   )rJ   r$   rV   rW   rX   rY   r   r	   r$   2  s   z/_condition.<locals>.Descriptor.Wrapper.__init__c                    s    | j | jg|R i |S r   )r   rW   r(   rG   r   r	   r+   6  s   z/_condition.<locals>.Descriptor.Wrapper.__call__Nc                    
    | j S r   r   r   _objtyper.   r   r	   r.   :     
z2_condition.<locals>.Descriptor.Wrapper.cache_clearr   r4   r5   r6   r$   r+   r.   rQ   r   r    r.   r#   r!   r"   r   rG   rM   r	   rB   1  s    rB   Nrr   r   r   r   r	   rs   0  s    $rs   )weakrefWeakKeyDictionaryrI   )r   r    r!   r"   r#   r   rs   r   )r    r.   r#   r!   r"   r   r   rG   r	   
_condition  s    
r   c                    sH    fdd fddG  fdddt }|S )Nc              	      s    | }| g|R i |}|  z|| W W  d    S  t y)   Y nw W d    n1 s4w   Y  | g|R i |}| " z|||W W  d    S  tyi   | Y W  d    S w 1 smw   Y  d S r   )r^   rD   r`   r   r)   r*   r   r   r   )r    r!   r"   r   r   r	   rG   A  s*   

z_locked.<locals>.wrapperc                    r   r   r   r   r   r   r	   r.   S  r   z_locked.<locals>.cache_clearc                       rR   )z_locked.<locals>.Descriptorc                       s>   e Zd Z fddZfddZdfdd	Z  ZS )	z#_locked.<locals>.Descriptor.Wrapperc                    s   t  | d S r   rJ   r$   rX   ry   r   r	   r$   Z     z,_locked.<locals>.Descriptor.Wrapper.__init__c                        | j g|R i |S r   r   r(   r   r   r	   r+   ]  r   z,_locked.<locals>.Descriptor.Wrapper.__call__Nc                    r   r   r   r   r   r   r	   r.   a  r   z/_locked.<locals>.Descriptor.Wrapper.cache_clearr   r   r   r    r.   r!   r"   r   rG   rM   r	   rB   Y  s    rB   Nrr   r   r   r   r	   rs   X  rt   rs   rI   )r   r    r!   r"   rs   r   r   r	   _locked@  s   
r   c                    sB    fdd fddG  fdddt }|S )Nc                    sv    | }| g|R i |}z|| W S  t y   Y nw | g|R i |}z|||< W |S  ty:   Y |S w r   )r^   r`   r   )r    r!   r   r   r	   rG   h  s   

z_unlocked.<locals>.wrapperc                    s    | }|   d S r   r   r   )r    r   r	   r.   v  s   z_unlocked.<locals>.cache_clearc                       rw   )z_unlocked.<locals>.Descriptorc                       s<   e Zd Z fddZfddZdfdd	Z  ZS )	z%_unlocked.<locals>.Descriptor.Wrapperc                    s   t  | d S r   r   rX   r~   r   r	   r$   |  s   z._unlocked.<locals>.Descriptor.Wrapper.__init__c                    r   r   r   r(   r   r   r	   r+     r   z._unlocked.<locals>.Descriptor.Wrapper.__call__Nc                    r   r   r   r   r   r   r	   r.     r   z1_unlocked.<locals>.Descriptor.Wrapper.cache_clearr   r   r   r    r.   r!   r   rG   rM   r	   rB   {  s    rB   Nrr   r   r   r   r	   rs   z  r|   rs   r   )r   r    r!   rs   r   r   r	   	_unlockedg  s   
r   c                 C   s  |d ur9|d ur|d urt | |||||}nS|d ur$t | |||||}nE|d ur1t| ||||}n8t| |||}n0|d urJ|d urJt| ||||}n|d urWt| ||||}n|d urct| |||}nt| ||}||_||_|d uru|n||_||_	t
|| S r   )rv   r}   r   r   r   r   r    r1   r2   r3   r   r   )r   r    r!   r"   r#   rm   rG   r   r   r	   _wrapper  s(   r   )NNN)r7   __all__r   r   r   r
   r   r   r   r9   rI   rv   r}   r   r   r   r   r   r   r   r   r	   <module>   s$    $90(!3'"