o
    i                     @   s   d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZ eG dd deZedZd	ee d
ee deee  dee	 deedB  deedf fddZG dd de
e ZeZdS )    Ndeque)AsyncGeneratorAsyncIterableAsyncIteratorIterator)AnyGenericProtocolTypeVaroverloadruntime_checkable)AsyncContextManagerc                   @   s   e Zd ZdddZdS )_ACloseablereturnNc                    s   dS )z Asynchronously close this objectN selfr   r   d/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/agents/utils/aio/itertools.pyaclose   s    z_ACloseable.acloser   N)__name__
__module____qualname__r   r   r   r   r   r      s    r   Titeratorbufferpeerslock	exceptionr   c           	      C  s  z	 |sn|4 I d H X |r	 W d   I d H  q|d d ur#|d z	|   I d H }W n" ty>   Y W d   I d H  n6 tyN } z||d<  d }~ww |D ]}|| qQW d   I d H  n1 I d H siw   Y  | V  qW t|D ]\}}||u r||  nqy|st| tr| 	 I d H  d S d S d S t|D ]\}}||u r||  nq|st| tr| 	 I d H  w w w )NTr   )
	__anext__StopAsyncIterationBaseExceptionappendpopleft	enumeratepop
isinstancer   r   )	r   r   r   r   r   itemepeer_bufferidxr   r   r   tee_peer   sV   
(


r,   c                   @   s   e Zd ZdZ	ddee defddZdefdd	Ze	d
ede
e fddZe	d
edee
e df fddZd
eeB de
e ee
e df B fddZdee
e  fddZdddZdedededdfddZdddZdS ) Tee)	_iterator_buffers	_children   r   nc                    sN   |  _dd t|D _t d g t fddjD _d S )Nc                 S   s   g | ]}t  qS r   r   ).0_r   r   r   
<listcomp>K   s    z Tee.__init__.<locals>.<listcomp>c                 3   s&    | ]}t j|j d V  qdS ))r   r   r   r   r   N)r,   r.   r/   )r3   r   r   r   r   r   r   	<genexpr>O   s    
zTee.__init__.<locals>.<genexpr>)	__aiter__r.   ranger/   asyncioLocktupler0   )r   r   r2   r   r6   r   __init__E   s   
zTee.__init__r   c                 C   s
   t | jS N)lenr0   r   r   r   r   __len__Z      
zTee.__len__r(   c                 C      d S r>   r   r   r(   r   r   r   __getitem__]      zTee.__getitem__.c                 C   rB   r>   r   rC   r   r   r   rD   `   rE   c                 C   s
   | j | S r>   r0   rC   r   r   r   rD   c   rA   c                 c   s    | j E d H  d S r>   rF   r   r   r   r   __iter__f   s   zTee.__iter__Tee[T]c                    s   | S r>   r   r   r   r   r   
__aenter__i   s   zTee.__aenter__exc_typeexc_valexc_tbNc                    s   |   I d H  d S r>   )r   )r   rJ   rK   rL   r   r   r   	__aexit__l   s   zTee.__aexit__c              	      sn   | j D ]}z	| I d H  W q ty   Y qw t| jtr5z| j I d H  W d S  ty4   Y d S w d S r>   )r0   r   	Exceptionr'   r.   r   )r   childr   r   r   r   o   s   
z
Tee.aclose)r1   )r   rH   r   )r   r   r   	__slots__r   r   intr=   r@   r   r   rD   slicer<   r   rG   rI   r   rM   r   r   r   r   r   r-   B   s$    
 *
r-   )r:   collectionsr   collections.abcr   r   r   r   typingr   r	   r
   r   r   r   typing_extensionsr   r   r   listr"   r,   r-   teer   r   r   r   <module>   s.     



.;