
    /j                          S SK r  " S S5      rg)    Nc                   L    \ rS rSrSrSS jrSS\SS4S jjrSS jrSS	 jr	S
r
g)	WaitGroup   zE
asyncio wait group implementation (similar to sync.WaitGroup in go)
returnNc                 z    SU l         [        R                  " 5       U l        U R                  R	                  5         g )Nr   )_counterasyncioEvent_zero_eventsetselfs    T/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/utils/aio/wait_group.py__init__WaitGroup.__init__	   s)    "==?    deltac                     U R                   U-   nUS:  a  [        S5      eX l         U R                   S:X  a  U R                  R                  5         g U R                  R	                  5         g )Nr   z%WaitGroup counter cannot go negative.)r   
ValueErrorr   r   clear)r   r   	new_values      r   addWaitGroup.add   sX    MME)	q=DEE!==A  """$r   c                 &    U R                  S5        g )N)r   r   s    r   doneWaitGroup.done   s    r   c                 T   #    U R                   R                  5       I S h  vN   g  N7f)N)r   waitr   s    r   r   WaitGroup.wait   s     ##%%%s   (&()r   r   )r   N)   )__name__
__module____qualname____firstlineno____doc__r   intr   r   r   __static_attributes__ r   r   r   r      s)    

% 
%T 
%&r   r   )r	   r   r)   r   r   <module>r*      s    & &r   