
    Mh	                     \    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dS )A trio loop runner.    Nc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )
TrioRunnerr   c                 "    d| _         d| _        dS )Initialize the runner.N)_cell_cancel_scope_trio_token)selfs    U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipykernel/trio_runner.py__init__zTrioRunner.__init__   s    "&    c                    |j                             |            |j                             dd           d |j         j        j        d         d<   d| _        t          j        |j        dd          }|                                 d	S )
r   	autoawaittrioc                 .    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     HMCPQM
 M
 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   s    $$T***##K888C
 C
#*62;? "$GM$M`aaa	r   c                 h    | j         r| j                                          dS d}t          |          )zInteruppt the runner.z)Kernel interrupted but no cell is runningN)r   cancel	Exception)r
   signumframemsgs       r   	interruptzTrioRunner.interrupt   s9    " 	!#**,,,,,=CC.. r   c                      t          j         t           j         j                  }d  fd}t          j        |           t          j         t           j        |           dS )zRun the loop.c                     d                     t          j        t          |           | | j                            } t          j        d|            d S )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+   sE    ))I6tCyy#sGXYYZZCMOQTUUUUUr   c                  &  K   t           j                                        _        t          j                    4 d{V } | _        | t          _        t          j                     d{V  ddd          d{V  dS # 1 d{V swxY w Y   dS )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     #}??AAD(** + + + + + + +g $3 *1'(*********+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s    -B  
B
B
N)signalSIGINTr0   r   run)r
   old_sigrF   r<   s   `  @r   rI   zTrioRunner.run'   su    -t~>>	V 	V 	V	+ 	+ 	+ 	+ 	+ 	+ 	fmW-----r   c                 \      fd}t           j                            || j                  S )zHandle a function call.c                    K   t          j                    _        j        5  |  d{V cddd           S # 1 swxY w Y   d_        dS )zA thread runner context.N)r   CancelScoper   )coror
   s    r   locz TrioRunner.__call__.<locals>.loc?   s      &*&6&8&8D#( " "!zzzzzz" " " " " " " " " " " " " " " "&*D#4s   8<<)
trio_token)r   from_threadrI   r	   )r
   async_fnrO   s   `  r   __call__zTrioRunner.__call__<   s?    	 	 	 	 	 ##Cd>N#OOOr   N)	__name__
__module____qualname____doc__r   r)   r0   rI   rS    r   r   r   r      sj             
	 	 	! ! !. . .*P P P P Pr   r   )	rW   rB   r9   rG   r#   r5   r   r   r   rX   r   r   <module>rY      s                  ;P ;P ;P ;P ;P ;P ;P ;P ;P ;Pr   