
    /j                       S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
Jr  \" S5      r\" SSS	9r\" S
SS9r " S S\5      r " S S\5      r " S S\5      r " S S\
\   5      r " S S\
\   5      r " S S\	\   5      rg)    )annotationsN)deque)AsyncIterator)GenericProtocolTypeVarTT_coT)	covariantT_contra)contravariantc                      \ rS rSrSrg)
ChanClosed    N__name__
__module____qualname____firstlineno____static_attributes__r       Q/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/utils/aio/channel.pyr   r          r   r   c                      \ rS rSrSrg)ChanFull   r   Nr   r   r   r   r   r      r   r   r   c                      \ rS rSrSrg)	ChanEmpty   r   Nr   r   r   r   r   r      r   r   r   c                  2    \ rS rSrSS jrSS jrSS jrSrg)	
ChanSender   c                   #    g 7fNr   selfvalues     r   sendChanSender.send   s     3   c                    g r%   r   r&   s     r   send_nowaitChanSender.send_nowait    s    Cr   c                    g r%   r   r'   s    r   closeChanSender.close"       Sr   r   N)r(   r   returnNoner4   r5   )r   r   r   r   r)   r-   r1   r   r   r   r   r"   r"      s    67 r   r"   c                  F    \ rS rSrS	S jrS	S jrS
S jrSS jrS	S jrSr	g)ChanReceiver%   c                   #    g 7fr%   r   r0   s    r   recvChanReceiver.recv&   s     #r+   c                    g r%   r   r0   s    r   recv_nowaitChanReceiver.recv_nowait(   s    3r   c                    g r%   r   r0   s    r   r1   ChanReceiver.close*   r3   r   c                    g r%   r   r0   s    r   	__aiter__ChanReceiver.__aiter__,   s    r   c                   #    g 7fr%   r   r0   s    r   	__anext__ChanReceiver.__anext__.   s     sr+   r   N)r4   r
   r6   )r4   zAsyncIterator[T_co])
r   r   r   r   r;   r>   r1   rC   rF   r   r   r   r   r8   r8   %   s    %& 3*r   r8   c                      \ rS rSr  S     SS jjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
\SS
 j5       rSS jrSS jrSS jrSS jrSS jrSrg)Chan1   Nc                   U=(       d    [         R                  " 5       U l        [        US5      U l        [         R
                  " 5       U l        SU l        [        5       U l	        [        5       U l
        [        5       U l        g Nr   F)asyncioget_event_loop_loopmax_maxsizeEvent	_close_ev_closedr   _gets_puts_queue)r'   maxsizeloops      r   __init__Chan.__init__2   sU    
 5W335
GQ 6;g
6;g
 %r   c                    U(       aA  UR                  5       nUR                  5       (       d  UR                  S 5        g U(       a  M@  g g r%   )popleftdone
set_result)r'   waiterswaiters      r   _wakeup_nextChan._wakeup_next@   s4    __&F;;==!!$'	 gr   c                  #    U R                  5       (       a  U R                  R                  5       (       dv  U R                  R	                  5       nU R
                  R                  U5         UI S h  vN   U R                  5       (       a!  U R                  R                  5       (       d  Mv  U R                  U5        g  NL! [         a    e   UR                  5         [        R                  " [        5         U R
                  R                  U5        S S S 5        O! , (       d  f       O= fU R                  5       (       d0  UR                  5       (       d  U R                  U R
                  5        e = f7fr%   )fullrS   is_setrO   create_futurerV   appendr   cancel
contextlibsuppress
ValueErrorremove	cancelledrb   r-   )r'   r(   ps      r   r)   	Chan.sendG   s     iikk$.."7"7"9"9

((*AJJa 	 iikk$.."7"7"9"9  	  
((4JJ%%a( 544 yy{{1;;==%%djj1sO   A*E6-C 2B?3C 74E6-E6?C 6E37D	E3
D*	&AE33E6c                    U R                   R                  5       (       a  [        eU R                  5       (       a  [        eU R
                  R                  U5        U R                  U R                  5        g r%   )	rS   rf   r   re   r   rW   rh   rb   rU   r&   s     r   r-   Chan.send_nowaitZ   sO    >>  ""99;;N5!$**%r   c                  #    U R                  5       (       a  U R                  R                  5       (       dv  U R                  R	                  5       nU R
                  R                  U5         UI S h  vN   U R                  5       (       a!  U R                  R                  5       (       d  Mv  U R!                  5       $  NJ! [         a    e [         a    UR                  5         [        R                  " [        5         U R
                  R                  U5        S S S 5        O! , (       d  f       O= fU R                  5       (       d0  UR                  5       (       d  U R                  U R
                  5        e f = f7fr%   )emptyrS   rf   rO   rg   rU   rh   r   BaseExceptionri   rj   rk   rl   rm   rn   rb   r>   )r'   gs     r   r;   	Chan.recvd   s    jjll4>>#8#8#:#:

((*AJJa  jjll4>>#8#8#:#:$ !!    
((4JJ%%a( 544 zz||AKKMM%%djj1sO   A*E=-B? 2B=3B? 74E=-E==B? ?>E:=D"	E:"
D0	,AE::E=c                    U R                  5       (       a+  U R                  R                  5       (       a  [        e[        eU R
                  R                  5       nU R                  U R                  5        U$ r%   )	rt   rS   rf   r   r   rW   r]   rb   rV   )r'   items     r   r>   Chan.recv_nowaity   sV    ::<<~~$$&&  {{""$ 	$**%r   c                |   SU l         U R                  R                  5         U R                   H3  nUR	                  5       (       a  M  UR                  [        5       5        M5     [        U R                  5      U R                  5       :  aq  U R                  R                  5       nUR	                  5       (       d  UR                  [        5       5        [        U R                  5      U R                  5       :  a  Mq  U R                  (       a/  U R                  U R                  5        U R                  (       a  M.  g g )NT)rT   rS   setrV   rn   set_exceptionr   lenrU   qsizepoprb   )r'   puttergetters      r   r1   
Chan.close   s    jjF##%%$$Z\2 ! $**o

,ZZ^^%F##%%$$Z\2 $**o

,
 jjdjj) jjjr   c                    U R                   $ r%   )rT   r0   s    r   closedChan.closed   s    ||r   c                ,    [        U R                  5      $ )z<the number of elements queued (unread) in the channel buffer)r~   rW   r0   s    r   r   
Chan.qsize   s    4;;r   c                ^    U R                   S::  a  gU R                  5       U R                   :  $ rL   )rQ   r   r0   s    r   re   	Chan.full   s&    ==A::<4==00r   c                $    U R                   (       + $ r%   )rW   r0   s    r   rt   
Chan.empty   s    ;;r   c                    U $ r%   r   r0   s    r   rC   Chan.__aiter__   s    r   c                j   #     U R                  5       I S h  vN $  N! [         a    [        S ef = f7fr%   )r;   r   StopAsyncIterationr0   s    r   rF   Chan.__anext__   s2     	/$$$ 	/$$.	/s    3  3 03)rS   rT   rU   rO   rQ   rV   rW   )r   N)rX   intrY   z asyncio.AbstractEventLoop | Noner4   r5   )r`   zdeque[asyncio.Future[T | None]]r4   r5   )r(   r	   r4   r5   )r4   r	   r6   )r4   bool)r4   r   )r4   zAsyncIterator[T])r   r   r   r   rZ   rb   r)   r-   r;   r>   r1   propertyr   r   re   rt   rC   rF   r   r   r   r   rI   rI   1   sv     15(( /( 
	( &&"*
*$   1/r   rI   )
__future__r   rM   rj   collectionsr   collections.abcr   typingr   r   r   r	   r
   r   	Exceptionr   r   r   r"   r8   rI   r   r   r   <module>r      s    "    ) - -CLv&:T2	 		y 			 	!(# !	+8D> 	+A/71: A/r   