U
    φhψ  γ                   @   s@   d Z dd Zdd Zdd Zdd Zd	d
 Zdd Zdd ZdS )z'Extensible memoizing decorator helpers.c                    sR   d  fdd} fdd}fdd}||_ ||_|S )Nι    c               
      sΈ   | |}F z" | }d7 |W W  5 Q R £ S  t k
rN   d7 Y nX W 5 Q R X | |}F z  ||‘W W  5 Q R £ S  tk
r¨   | Y W  5 Q R £ S X W 5 Q R X d S ©Nι   ©ΪKeyErrorΪ
setdefaultΪ
ValueError©ΪargsΪkwargsΪkΪresultΪv)ΪcacheΪfuncΪhitsΪkeyΪlockΪmisses© ϊ:/tmp/pip-unpacked-wheel-hev5io13/cachetools/_decorators.pyΪwrapper   s    

z$_cached_locked_info.<locals>.wrapperc                	      s$       ‘  d W 5 Q R X d S ©Nr   ©Ϊclearr   )r   r   r   r   r   r   Ϊcache_clear   s    z(_cached_locked_info.<locals>.cache_clearc                
      s&     W  5 Q R £ S Q R X d S ©Nr   r   )r   Ϊinfor   r   r   r   Ϊ
cache_info   s    z'_cached_locked_info.<locals>.cache_info©r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   Ϊ_cached_locked_info   s    r   c                    sH   d  fdd} fdd}||_ fdd|_|S )Nr   c                     sn   | |}z | }d7 |W S  t k
r<   d7 Y nX | |}z| |< W n tk
rh   Y nX |S r   ©r   r   r   )r   r   r   r   r   r   r   r   +   s    

z&_cached_unlocked_info.<locals>.wrapperc                      s      ‘  d d S r   r   r   )r   r   r   r   r   r   ;   s    z*_cached_unlocked_info.<locals>.cache_clearc                      s
    S r   r   r   )r   r   r   r   r   Ϊ<lambda>A   σ    z'_cached_unlocked_info.<locals>.<lambda>r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   Ϊ_cached_unlocked_info(   s    r#   c                    s8   d fdd}fdd}||_ fdd|_|S )Nr   c                     s   d7  | |S r   r   ©r	   r
   )r   r   r   r   r   H   s    z_uncached_info.<locals>.wrapperc                      s   d d S r   r   r   )r   r   r   r   M   s    z#_uncached_info.<locals>.cache_clearc                      s
    dS r   r   r   )r   r   r   r   r!   R   r"   z _uncached_info.<locals>.<lambda>r   )r   r   r   r   r   )r   r   r   r   Ϊ_uncached_infoE   s    r%   c                    s*    fdd} fdd}||_ |S )Nc               
      s€   | |}2 z | W W  5 Q R £ S  t k
r:   Y nX W 5 Q R X | |}F z  ||‘W W  5 Q R £ S  tk
r   | Y W  5 Q R £ S X W 5 Q R X d S r   r   ©r	   r
   r   r   ©r   r   r   r   r   r   r   W   s    

z_cached_locked.<locals>.wrapperc                	      s       ‘  W 5 Q R X d S r   r   r   )r   r   r   r   r   f   s    z#_cached_locked.<locals>.cache_clear©r   )r   r   r   r   r   r   r   r'   r   Ϊ_cached_lockedV   s    r)   c                    s"    fdd} fdd|_ |S )Nc                     sZ   | |}z
 | W S  t k
r(   Y nX | |}z| |< W n tk
rT   Y nX |S r   r    r&   ©r   r   r   r   r   r   o   s    


z!_cached_unlocked.<locals>.wrapperc                      s      ‘ S r   r   r   )r   r   r   r!   |   r"   z"_cached_unlocked.<locals>.<lambda>r(   )r   r   r   r   r   r*   r   Ϊ_cached_unlockedn   s    r+   c                    s    fdd}dd |_ |S )Nc                     s
    | |S r   r   r$   ©r   r   r   r      s    z_uncached.<locals>.wrapperc                   S   s   d S r   r   r   r   r   r   r!      r"   z_uncached.<locals>.<lambda>r(   )r   r   r   r,   r   Ϊ	_uncached   s    
r-   c                 C   s   |d k	rF|d krt | |}q|d kr4t| |||}qt| ||||}n<|d krXt| }n$|d krnt| ||}nt| |||}d |_|S r   )r%   r#   r   r-   r+   r)   r   )r   r   r   r   r   r   r   r   r   Ϊ_cached_wrapper   s    
r.   N)Ϊ__doc__r   r#   r%   r)   r+   r-   r.   r   r   r   r   Ϊ<module>   s   $