o
    Ö]¼jË  ã                   @   s°   d Z dZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZ G dd„ deƒZd	d
„ Zddd„Zddd„Zddd„Zdejdfdd„Zddejdfdd„ZdS )z?`functools.lru_cache` compatible memoizing function decorators.)Ú
fifo_cacheÚ	lfu_cacheÚ	lru_cacheÚrr_cacheÚ	ttl_cacheé    N)Ú	Conditioné   )Ú	FIFOCacheÚLFUCacheÚLRUCacheÚRRCacheÚTTLCacheÚcachedÚkeysc                   @   s    e Zd Zdd„ Zedd„ ƒZdS )Ú_UnboundTTLCachec                 C   s   t  | tj||¡ d S ©N)r   Ú__init__ÚmathÚinf)ÚselfÚttlÚtimer© r   úR/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/cachetools/func.pyr      s   z_UnboundTTLCache.__init__c                 C   s   d S r   r   )r   r   r   r   Úmaxsize   s   z_UnboundTTLCache.maxsizeN)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r   r   r   r      s    r   c                    s   ‡ ‡‡fdd„}|S )Nc                    s:   ˆrt jnt j}tˆ |tƒ dd�| ƒ}‡‡fdd„|_|S )NT)ÚcacheÚkeyÚ	conditionÚinfoc                      s
   ˆ ˆdœS )N©r   Útypedr   r   r#   r   r   Ú<lambda>   s   
 z+_cache.<locals>.decorator.<locals>.<lambda>)r   ÚtypedkeyÚhashkeyr   r   Úcache_parameters)Úfuncr    Úwrapper©r   r   r$   r   r   Ú	decorator   s   z_cache.<locals>.decoratorr   )r   r   r$   r,   r   r+   r   Ú_cache   s   	r-   é€   Fc                 C   ó@   | du r
t i d|ƒS t| ƒrt tdƒd|ƒ| ƒS t t| ƒ| |ƒS )z—Decorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a First In First Out (FIFO)
    algorithm.

    Nr.   )r-   Úcallabler	   r#   r   r   r   r   #   ó
   r   c                 C   r/   )z™Decorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Least Frequently Used (LFU)
    algorithm.

    Nr.   )r-   r0   r
   r#   r   r   r   r   1   r1   r   c                 C   r/   )z—Decorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Least Recently Used (LRU)
    algorithm.

    Nr.   )r-   r0   r   r#   r   r   r   r   ?   r1   r   c                 C   sD   | du r
t i d|ƒS t| ƒrt td|ƒd|ƒ| ƒS t t| |ƒ| |ƒS )z•Decorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Random Replacement (RR)
    algorithm.

    Nr.   )r-   r0   r   )r   Úchoicer$   r   r   r   r   M   s
   r   iX  c                 C   sN   | du rt t||ƒd|ƒS t| ƒrt td||ƒd|ƒ| ƒS t t| ||ƒ| |ƒS )zÀDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Least Recently Used (LRU)
    algorithm with a per-item time-to-live (TTL) value.

    Nr.   )r-   r   r0   r   )r   r   r   r$   r   r   r   r   [   s
   r   )r.   F)Ú__doc__Ú__all__r   ÚrandomÚtimeÚ	threadingr   Ú r	   r
   r   r   r   r   r   r   r-   r   r   r   r2   r   Ú	monotonicr   r   r   r   r   Ú<module>   s    $	


