o
    /h,                     @   s   d Z dZddl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 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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   C/var/www/html/myenv/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 )zDecorator 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/   )zDecorator 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/   )zDecorator 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 )zDecorator 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 )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.
    Nr.   )r-   r   r0   r   )r   r   r   r$   r   r   r   r   [   s
   r   )r.   F)__doc____all__	functoolsr   randomtime	threadingr    r	   r
   r   r   r   r   r   r   r-   r   r   r   r2   r   	monotonicr   r   r   r   r   <module>   s"    	



