
    fp                     <    d dl Z d dlZd dlmZmZmZ  G d d      Zy)    N)AnyDequeOptionalc                   `    e Zd ZdZdej
                  ddfdZd
dee   ddfdZ	de
fdZdd	Zy)EventResultOrErrorzEvent asyncio lock helper class.

    Wraps the Event asyncio lock allowing either to awake the
    locked Tasks without any error or raising an exception.

    thanks to @vorpalsmith for the simple design.
    loopreturnNc                     || _         d | _        t        j                         | _        t        j                         | _        y N)_loop_excasyncioEvent_eventcollectionsdeque_waiters)selfr   s     L/opt/lhia/ganansol/python/venv/lib/python3.12/site-packages/aiohttp/locks.py__init__zEventResultOrError.__init__   s-    
-1	mmo4?4E4E4G    excc                 F    || _         | j                  j                          y r   )r   r   set)r   r   s     r   r   zEventResultOrError.set   s    	r   c                 j  K   | j                   j                  | j                  j                               }| j                  j                  |       	 | d {   }| j                  j                  |       | j                  | j                  |S 7 9# | j                  j                  |       w xY wwr   )r   create_taskr   waitr   appendremover   )r   waitervals      r   r   zEventResultOrError.wait   s     ''(8(8(:;V$	),CMM  (99 ))O
 MM  (s0   AB3B BB 5B3B B00B3c                 F    | j                   D ]  }|j                           y)zCancel all waitersN)r   cancel)r   r    s     r   r#   zEventResultOrError.cancel&   s    mm 	FMMO	r   r   )r	   N)__name__
__module____qualname____doc__r   AbstractEventLoopr   r   BaseExceptionr   r   r   r#    r   r   r   r      sL    HW66 H4 Hx. $ C r   r   )r   r   typingr   r   r   r   r*   r   r   <module>r,      s      ' '# #r   