o
    iQ                  
   @   s~   d dl Z d dlmZmZ d dlmZmZmZ edZG dd dee Z	de
deeg eeeef f ge	e f fd	d
ZdS )    N)Callable	Coroutine)AnyGenericTypeVarTc                   @   s   e Zd Zdeg eeeef f deddfddZde	j
e fddZde	j
e fd	d
ZdddZdefddZde	j
e fddZdS )	DebouncedfuncdelayreturnNc                 C   s   || _ || _d | _d S N)_func_delay_task)selfr	   r
    r   c/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/agents/utils/aio/debounce.py__init__	   s   
zDebounced.__init__c                    s.       dtf fdd}t|  _ jS )Nr   c                      s"   t  jI d H    I d H S r   )asynciosleepr   r   r   r   r   r   _func_with_timer   s   z,Debounced.schedule.<locals>._func_with_timer)cancelr   r   create_taskr   )r   r   r   r   r   schedule   s   zDebounced.schedulec                 C   s   |    t|  | _| jS r   )r   r   r   r   r   r   r   r   r   run   s   zDebounced.runc                 C   s0   | j d ur| j  s| j   d | _ d S d S d S r   )r   doner   r   r   r   r   r      s   

zDebounced.cancelc                 C   s"   | j d uo| j   o| j   S r   )r   r   	cancelledr   r   r   r   
is_running#   s   "zDebounced.is_runningc                 C   s   |   S r   )r   r   r   r   r   __call__&   s   zDebounced.__call__)r   N)__name__
__module____qualname__r   r   r   r   floatr   r   Taskr   r   r   boolr   r   r   r   r   r   r      s    (

r   r
   r   c                    s0   dt g ttttf f dtt f fdd}|S )Nr	   r   c                    s
   t |  S r   )r   )r	   r
   r   r   	decorator+   s   
zdebounced.<locals>.decorator)r   r   r   r   r   )r
   r'   r   r&   r   	debounced*   s   ,r(   )r   collections.abcr   r   typingr   r   r   r   r   r#   r(   r   r   r   r   <module>   s    6"