File: //opt/alt/python38/lib/python3.8/site-packages/__pycache__/async_lru.cpython-38.pyc
U
Wz8\� � @ s� d dl Z d dlmZ d dlmZmZmZmZ zd dl mZ W n e k
rZ e
e d�ZY nX dZdZdd � Z
d
d� Zdd
� Zdd� Zdd� Zdd� Zdddd�dd�Ze jdd� �Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd+ddddd(�d)d*�ZdS ),� N)�OrderedDict)�
_CacheInfo� _make_key�partial�wraps)�
ensure_future�asyncz1.0.2)�
alru_cachec C s0 z
| � � W S tk
r* tj| d� Y S X d S )N��loop)�
create_future�AttributeError�asyncio�Futurer
� r �:/opt/alt/python38/lib/python3.8/site-packages/async_lru.pyr s
r c C s t | d�r| j} q | S )N�func)�hasattrr )�fnr r r � unpartial s
r c C sD |� � r| �� d S |�� }|d k r2| �|� d S | �|�� � d S �N)� cancelled�cancel� exception�
set_exception�
set_result�result)�fut�task�excr r r �_done_callback s
r c O s* t |||�}|| jk}|r&| j�|� |S r )r �_cache�pop)�wrapped�typed�args�kwargs�key�existsr r r �_cache_invalidate* s
r) c C s d | _ | _t� | _t� | _d S )Nr )�hits�missesr r! �set�tasks)r# r r r �_cache_clear5 s r. c C s` | j std��| j| j koDt| j� koDt| j� koDdkn }|sVtd��d| _ d S )Nzalru_cache is not closedr z#alru_cache was not closed correctlyF)�closed�RuntimeErrorr* r+ �lenr- r! )r# Z
was_closedr r r �_open; s �����r2 FT)r �return_exceptionsr c C sB | j rtd��d| _ |r4| jD ]}|�� s|�� qt| ||d�S )Nzalru_cache is closedT�r3 r )r/ r0 r- �doner �_wait_closed)r# r r3 r r r r r �_closeM s
�r7 c c sV |d krt �� }t j| j||d��}|�tt| �� |E d H }t jd|d�E d H |S )Nr4 r r
)r �get_event_loopZgatherr- �add_done_callbackr �
_close_waited�sleep)r# r3 r Zwait_closed�retr r r r6 _ s �
r6 c C s | � � d S r )�cache_clear)r# �_r r r r: t s r: c C s t | j| j|t| j��S r )r r* r+ r1 r! )r# �maxsizer r r �_cache_infox s �r@ c C s* z| j �|� W n tk
r$ Y nX d S r )r! �move_to_end�KeyError�r# r'