o
    /hU                     @   sB   d Z ddlZddl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   ddl m}  | dtdd d S )Nr   warnz1returning `None` from `cache(self)` is deprecated   )
stacklevel)warningsr   DeprecationWarningr    r   L/var/www/html/myenv/lib/python3.10/site-packages/cachetools/_cachedmethod.pywarn_cache_none   s   
r
   c                    s6   t   fdd} fdd}||_|S )Nc                    s  | }|d u rt   | g|R i |S | g|R i | | 6 | t |  fdd z|  W W  d    S  tyS     Y nw W d    n1 s^w   Y  zx| g|R i |}| < z|| < W n	 ty   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 Nr   r   kpr   r	   <lambda>   s    z-_condition.<locals>.wrapper.<locals>.<lambda>)	r
   
setdefaultsetwait_forKeyErroradd
ValueErrorremove
notify_all)selfargskwargscvcachecondkeylockmethodpendingr   r	   wrapper   sL   



,z_condition.<locals>.wrapperc                    J    | }|d ur#|  |   W d    d S 1 sw   Y  d S d S r   clearr   r   r   r!   r   r	   cache_clear.      

"z_condition.<locals>.cache_clear)weakrefWeakKeyDictionaryr*   )r"   r   r    r!   r   r$   r*   r   r   r	   
_condition   s
   r.   c                    s*    fdd} fdd}||_ |S )Nc              	      s   | }|d u rt   | g|R i |S | g|R i |}|  z|| W W  d    S  ty;   Y nw W d    n1 sFw   Y  | g|R i |}| " z|||W W  d    S  ty{   | Y W  d    S w 1 sw   Y  d S r   )r
   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   r	   r$   9   s0   

z_locked.<locals>.wrapperc                    r%   r   r&   r(   r)   r   r	   r*   L   r+   z_locked.<locals>.cache_clearr*   )r"   r   r    r!   r$   r*   r   r0   r	   _locked8   s   r2   c                    s&    fdd} fdd}||_ |S )Nc                    s    | }|d u rt   | g|R i |S | g|R i |}z|| W S  ty/   Y nw | g|R i |}z|||< W |S  tyL   Y |S w r   )r
   r   r   r/   r   r    r"   r   r	   r$   W   s$   

z_unlocked.<locals>.wrapperc                    s     | }|d ur|   d S d S r   r&   r(   )r   r   r	   r*   h   s   z_unlocked.<locals>.cache_clearr1   )r"   r   r    r$   r*   r   r3   r	   	_unlockedV   s   r4   c                 C   s   |d ur|d urt | ||||}n|d urt | ||||}n|d ur*t| |||}nt| ||}||_||_|d ur<|n||_||_t|| S r   )	r.   r2   r4   r   	cache_key
cache_lockcache_condition	functoolsupdate_wrapper)r"   r   r    r!   r   r$   r   r   r	   _wrapperq   s   r:   )NN)__doc__r8   r,   r
   r.   r2   r4   r:   r   r   r   r	   <module>   s    
'