
    9j                        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	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZ d dlmZ  ed      Ze	edef   Zej0                  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dz  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Callable	Coroutine	GeneratorIterator)contextmanager	ExitStack)Context)Any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       [/media/conek/DATA/Code/OCR/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	r2   )r&   get_event_loopRuntimeErrorstr	_new_loopr
   r   r	   r   
is_runningenter_contextget_task_factory	is_closed)r.   r,   rer3   r9   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_factoryr1   _cancel_all_tasksclose)rD   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,   rK   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	cancelledrO   call_exception_handler)r,   rK   rP   	to_cancels       r   rI   rI   h   s     #(;$tyy{;I;   	GNNINNO 
>>>>'''R!%!1 	
 <s
   B,B,c           	         t        j                         d gdt        d z  dd ffd}dt        d z  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   )rX   task_factoriess    r   _set_task_factoryz&_patch_loop.<locals>._set_task_factory   s    #qr!   c                       d   S rZ   r   )r[   s   r   _get_task_factoryz&_patch_loop.<locals>._get_task_factory   s    a  r!   contextr,   coror`   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,   r`   r2   r_   )sysversion_infor&   Task_source_tracebackadd)r,   ra   r`   rD   rP   r[   rK   s        r   _safe_task_factoryz'_patch_loop.<locals>._safe_task_factory   s     &a(7*||DtWE||Dt4%%** 7*#D$@#D$/		$r!   )
weakrefWeakSetTaskFactoryTyper   TCoror   r&   r   rH   r@   )r,   r\   r^   ri   r[   rK   s       @@r   rG   rG      s    %,__%6E486N$?T#9 $d $!5 ! #'	 4	
 
8 	,--D-DLr!   )Fr   )!r&   rd   rj   r   r   collections.abcr   r   r   r   r	   
contextlibr
   r   contextvarsr   typingr   r   r   torch.utils._ordered_setr   r   rm   re   r   rl   r-   boolr*   r=   rI   rG   r   r!   r   <module>rt      s;    
  - O O 0  ) ) / CL#tQ,w1h 1 "O 19UD!^3LMvUVO2)A, 21 2
 #() ) ) )X +/!D(g''( *
f 
:-' -Jv,> -r!   