o
    |j6h                     @   s   d Z dZddlZddlZddlZzddlmZ W n ey'   ddlmZ Y nw ddl	m
Z
mZmZmZmZmZ ddl	mZ ddl	mZ G d	d
 d
eZdd Zd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	mru_cacherr_cache	ttl_cache    N)RLock   )	FIFOCacheLFUCacheLRUCacheMRUCache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   ^/var/www/html/chefvision.cloud.itp360.com/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lock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 )zDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a First In First Out (FIFO)
    algorithm.

    Nr0   )r/   callabler
   r%   r   r   r   r   &   
   r   c                 C   r1   )zDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Least Frequently Used (LFU)
    algorithm.

    Nr0   )r/   r2   r   r%   r   r   r   r   4   r3   r   c                 C   r1   )zDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Least Recently Used (LRU)
    algorithm.

    Nr0   )r/   r2   r   r%   r   r   r   r   B   r3   r   c                 C   sZ   ddl m} |dtdd | du rti d|S t| r%ttdd|| S tt| | |S )zDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Most Recently Used (MRU)
    algorithm.
    r   )warnz@mru_cache is deprecated   )
stacklevelNr0   )warningsr4   DeprecationWarningr/   r2   r   )r   r&   r4   r   r   r   r   P   s   r   c                 C   sD   | du r
t i d|S t| rt td|d|| S t t| || |S )zDecorator to wrap a function with a memoizing callable that saves
    up to `maxsize` results based on a Random Replacement (RR)
    algorithm.

    Nr0   )r/   r2   r   )r   choicer&   r   r   r   r   a   s
   r   iX  c                 C   sN   | du rt t||d|S t| rt td||d|| S t t| ||| |S )zDecorator 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.
    Nr0   )r/   r   r2   r   )r   r   r   r&   r   r   r   r   o   s
   r   )r0   F)__doc____all__r   randomtime	threadingr   ImportErrordummy_threading r
   r   r   r   r   r   r   r   r   r/   r   r   r   r   r9   r   	monotonicr   r   r   r   r   <module>   s*     	




