
    Xh	                     T    d Z ddlZddlZddlZddlZddlZddlZddlZ G d d      Zy)A trio loop runner.    Nc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)
TrioRunnerr   c                      d| _         d| _        y)Initialize the runner.N)_cell_cancel_scope_trio_token)selfs    I/var/www/html/myenv/lib/python3.12/site-packages/ipykernel/trio_runner.py__init__zTrioRunner.__init__   s    "&    c                 2   |j                   j                  |        |j                   j                  dd       d |j                   j                  j                  d   d<   d| _        t        j                  |j                  dd      }|j                          y	)
r   	autoawaittrioc                 0    t        j                  dd      S )Nz5Autoawait isn't allowed in Trio background loop mode.   )
stacklevel)warningswarn)_s    r   <lambda>z'TrioRunner.initialize.<locals>.<lambda>   s    HMMCPQM
 r   lineFTTornadoBackground)targetdaemonnameN)	shellset_trio_runnerrun_line_magicmagics_managermagics_interrupted	threadingThreadstart)r
   kernelio_loop	bg_threads       r   
initializezTrioRunner.initialize   sw    $$T*##K8C
##**62;? "$$GMM$M`a	r   c                 j    | j                   r| j                   j                          yd}t        |      )zInterrupt the runner.z)Kernel interrupted but no cell is runningN)r   cancel	Exception)r
   signumframemsgs       r   	interruptzTrioRunner.interrupt   s,    ""##**,=CC. r   c                      t        j                   t         j                   j                        }d  fd}t        j                  |       t        j                   t         j                  |       y)zRun the loop.c                     dj                  t        j                  t        |       | | j                              } t        j                  d|        y )N
z2An exception occurred in a global nursery task.
%s)join	tracebackformat_exceptiontype__traceback__loggingerror)excs    r   log_nursery_excz'TrioRunner.run.<locals>.log_nursery_exc+   s9    ))I66tCy#sGXGXYZCMMOQTUr   c                  @  K   t         j                  j                         _        t        j                         4 d{   } | _        | t        _        t        j                          d{    ddd      d{    y7 C7 7 	# 1 d{  7  sw Y   yxY ww)zRun the main loop.N)	r   lowlevelcurrent_trio_tokenr	   open_nursery_add_excbuiltinsGLOBAL_NURSERYsleep_forever)nurseryr<   r
   s    r   	trio_mainz!TrioRunner.run.<locals>.trio_main/   s     #}}??AD((* + +g $3 *1'((***+ + +
 ++ + + +sX   <BB B*B	-B.B	2B=B>BB	B	BBBBN)signalSIGINTr0   r   run)r
   old_sigrF   r<   s   `  @r   rI   zTrioRunner.run'   sF    --t~~>	V	+ 	fmmW-r   c                 f      fd}t         j                  j                  || j                        S )zHandle a function call.c                    K   t        j                         _        j                  5  |  d{   cddd       S 7 # 1 sw Y   d_        yxY ww)zA thread runner context.N)r   CancelScoper   )coror
   s    r   locz TrioRunner.__call__.<locals>.loc?   sI     &*&6&6&8D#(( "!z" "!"&*D#s%   &A?=?
A?AA)
trio_token)r   from_threadrI   r	   )r
   async_fnrO   s   `  r   __call__zTrioRunner.__call__<   s.    	 ##Cd>N>N#OOr   N)	__name__
__module____qualname____doc__r   r)   r0   rI   rS    r   r   r   r      s     
	!.*Pr   r   )	rW   rB   r9   rG   r#   r5   r   r   r   rX   r   r   <module>rY      s)           ;P ;Pr   