
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    '7`                     @   sd   d dl Z d dlZd dlmZmZ zd dlmZ W n  ek
rP   d dlmZ Y nX G dd dZdS )    N)AnyOptional)Dequec                   @   sT   e Zd ZdZejddddZdee ddddZ	e
d	d
dZdd	ddZdS )EventResultOrErrorz
    This class wrappers the Event asyncio lock allowing either awake the
    locked Tasks without any error or raising an exception.

    thanks to @vorpalsmith for the simple design.
    N)loopreturnc                 C   s$   || _ d | _t | _t | _d S N)_loop_excasyncioEvent_eventcollectionsdeque_waiters)selfr    r   @/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/locks.py__init__   s    
zEventResultOrError.__init__)excr   c                 C   s   || _ | j  d S r   )r
   r   set)r   r   r   r   r   r      s    zEventResultOrError.set)r   c              	      sP   | j | j }| j| z|I d H }W 5 | j| X | jd k	rL| j|S r   )r	   Zcreate_taskr   waitr   appendremover
   )r   waitervalr   r   r   r      s    
zEventResultOrError.waitc                 C   s   | j D ]}|  qdS )z Cancel all waiters N)r   cancel)r   r   r   r   r   r   *   s    
zEventResultOrError.cancel)N)__name__
__module____qualname____doc__r   ZAbstractEventLoopr   r   BaseExceptionr   r   r   r   r   r   r   r   r      s
   r   )	r   r   typingr   r   r   ImportErrorZtyping_extensionsr   r   r   r   r   <module>   s   