
    piq                        d dl Z d dlZd dlZd dl mZmZ d dlmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ  ed      Zeedef   Zej2                  d	k\  r G d
 de      ZeZneeeedef   gef   Zdee   defdZe	 ddede	e   fd       Ze	 ddee   de	e j                     fd       Zdedee   ddfdZ dedee   fdZ!y)    N)AbstractEventLoopFuture)	Awaitable	Coroutine	GeneratorIterator)contextmanager	ExitStack)Context)AnyCallableOptionalProtocolTypeVar)
OrderedSetT      c            
       z    e Zd Z	 ddededdef   eddef   z  dedz  dej                  j                  e   fdZy)TaskFactoryN_TaskFactory__loop_TaskFactory__factory_TaskFactory__contextreturnc                     y N )selfr   r   r   s       ]/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/torch/_inductor/await_utils.py__call__zTaskFactory.__call__   s     .1    r   )__name__
__module____qualname__r   r   objectr   r   asynciofuturesr   r!   r   r"   r    r   r      sb    
 )-		1%	1 !tV!34ytVAS7TT	1 ~		1 __##F+	1r"   r   	awaitabler   c                 d    t               5 }|j                  |       cd d d        S # 1 sw Y   y xY wr   )get_looprun_until_complete)r)   loops     r    
await_syncr.       s,    	 2t&&y12 2 2s   &/always_create_new_loopc              #     K   	 t        j                         }t
        dt         j                  dt        d    fd       }t
        dt        d    fd       }t               5 }|j                         rW|j                   |              |j                   ||             |j                  t	        |j                                     }n]|j                         r|j                  t	                     }n3| r1|j                   ||             |j                  t	                     }| d d d        y # t        $ r<}dt        |      v r)t	               5 }| d d d        n# 1 sw Y   nxY wY d }~y  d }~ww xY w# 1 sw Y   y xY ww)Nz(There is no current event loop in threadr-   r   c              3   t   K   	 d  t        j                  |        y # t        j                  |        w xY wwr   )r'   set_event_loopr-   s    r    _restore_loopzget_loop.<locals>._restore_loop3   s*     	)""4(G""4(s   8 858c               3     K   t         j                  j                         } t         j                  j                  d        	 d  t         j                  j                  |        y # t         j                  j                  |        w xY wwr   )r'   events_get_running_loop_set_running_loop)loop_from_eventss    r    _restore_running_loopz'get_loop.<locals>._restore_running_loop<   sY     ">>;;=((.	?NN,,-=>GNN,,-=>s   >B	A%  B	%!BB	r3   )r'   get_event_loopRuntimeErrorstr	_new_loopr	   r   r   r
   
is_runningenter_contextget_task_factory	is_closed)r/   r-   rer4   r:   stacks         r    r+   r+   %   sc    %%' )'')	$) ) ?8D> ? ? 
 
?? 5 784 89&&y1F1F1H'IJD^^&&y{3D#4 89&&y{3D

 
5  5R@ 
  4
 
se   FD0 AFC	E8'	F0	E59E0E	E0E'	#E0*F/E00E55F8F=Ftask_factoryc              #     K   t        j                         }t        |      }| r|j                  |        t        j                  |       	 | 	 t        ||       t        j                  d        |j                          y # t        j                  d        |j                          w xY w# 	 t        ||       t        j                  d        |j                          w # t        j                  d        |j                          w xY wxY wwr   )r'   new_event_loop_patch_loopset_task_factoryr2   _cancel_all_tasksclose)rE   r-   taskss      r    r>   r>   R   s      !!#DEl+4 
	dE*""4(JJL ""4(JJL		dE*""4(JJL ""4(JJLsH   ADB, B &D'B))D,D
.C :&D
 'DD

Dr-   rL   c                 b   |D cg c]  }|j                         r| }}|sy |D ]  }|j                           | j                  t        j                  |ddi       |D ]G  }|j                         r|j                         %| j                  d|j                         |d       I y c c}w )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)donecancelr,   r'   gather	cancelledrP   call_exception_handler)r-   rL   rQ   	to_cancels       r    rJ   rJ   h   s     #(;$tyy{;I;   	GNNINNO 
>>>>'''R!%!1 	
 <s
   B,B,c           	      $   t        j                         d gdt        t           dd ffd}dt        t           ffd}d ddt        dt
        dt        d z  dt        j                  ffd	}| j                  |       || _	        || _
        S )
Nfactoryr   c                     | d<   y Nr   r   )rY   task_factoriess    r    _set_task_factoryz&_patch_loop.<locals>._set_task_factory   s    #qr"   c                       d   S r[   r   )r\   s   r    _get_task_factoryz&_patch_loop.<locals>._get_task_factory   s    a  r"   contextr-   corora   c                B   d   }|]t         j                  dk\  rt        j                  || |      }nt        j                  ||       }|j                  r6|j                  d= n(t         j                  dk\  r || ||      }n	 || |      }j                  |       |S )Nr   r   )r-   ra   r3   r`   )sysversion_infor'   Task_source_tracebackadd)r-   rb   ra   rE   rQ   r\   rL   s        r    _safe_task_factoryz'_patch_loop.<locals>._safe_task_factory   s     &a(7*||DtWE||Dt4%%** 7*#D$@#D$/		$r"   )weakrefWeakSetr   TaskFactoryTyper   TCoror   r'   r   rI   rA   )r-   r]   r_   rj   r\   rL   s       @@r    rH   rH      s    %,__%6E7;fN$8O#< $ $!x8 ! #'	 4	
 
6 	,--D-DLr"   )Fr   )"r'   re   rk   r   r   collections.abcr   r   r   r   
contextlibr	   r
   contextvarsr   typingr   r   r   r   r   torch.utils._ordered_setr   r   rn   rf   r   rm   r.   boolr+   r>   rJ   rH   r   r"   r    <module>ru      s;    
  - E E 0  = = / CL#tQ,w1h 1 "O 19UD!^3LMvUVO2)A, 21 2
 #() ) ) )X .2?+g''( *
f 
8,' ,Jv,> ,r"   