
    ^h                    $   % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJrJrJrJrJr  S	S
KJr  \	R<                  S:w  a  SSKJr  OSr SSK J!r"  SSK$r$SSK%r%SSK&J'r'  SSK J(r(  SSK)J*r*  SSK+J,r,J-r-  SSK.J/r/  SSK0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:  SSK;J<r<  SSK=J>r>  S	SK?J@r@  S	SKAJBrB  S	SKCJDrD  SrES\FS'   S rG " S S\/5      rHg! \# a    \RD                  r" Nf = f) z9Base class for a kernel that talks to frontends over 0MQ.    )annotationsN)Mapping)
ContextVar)datetime)partial)SIGINTSIGTERMSignalsdefault_int_handlersignal   )CONTROL_THREAD_NAMEwin32)SIGKILLzwindown-SIGKILL-sentinel)utcnowStdinNotImplementedError)Session)ioloop)Queue
QueueEmpty)SingletonConfigurable)
AnyBoolDictFloatInstanceIntegerListUnicodedefaultobserve)	ZMQStream)
json_clean)kernel_protocol_version)	OutStream)LazyDictaa  For consistency across implementations, it is recommended that `{func_name}` either be a coroutine function (`async def`) or return an awaitable object (like an `asyncio.Future`). It might become a requirement in the future. Coroutine functions and awaitables have been supported since ipykernel 6.0 (2021). {target} does not seem to return an awaitablestr_AWAITABLE_MESSAGEc                T   [         R                  " U 5      R                  n[        R	                  US5      nU Hk  nUR                  U5      nU=(       a%    UR                  UR                  UR                  4;   =(       d     [        S UR                  5        5       5      X4'   Mm     U$ )NFc              3  R   #    U  H  oR                   UR                  :H  v   M     g 7fN)kindVAR_KEYWORD).0ps     N/home/james-whalen/.local/lib/python3.13/site-packages/ipykernel/kernelbase.py	<genexpr>&_accepts_parameters.<locals>.<genexpr>U   s     F2EQ1==(2Es   %')inspect	signature
parametersdictfromkeysgetr-   KEYWORD_ONLYPOSITIONAL_OR_KEYWORDanyvalues)methparam_namesr6   acceptsparam
param_specs         r1   _accepts_parametersrC   L   s    ""4(33JmmK/G^^E*
 _J$;$;Z=]=]#^^G F*2C2C2EFF 	  N    c                    ^  \ rS rSr% Sr\" S5      r0 rS\S'   \	" S5      S 5       r
\" \SS	9r\" S
SS	9r\" \SS	9r\" SS9rS\S'   S\S'   S\S'   S\S'   \" S5      S 5       r\	" S5      S 5       r\" \SS	9r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" \R<                  SS	9rS\S'   \ " S5      r!\"" 5       r#\" S5      S 5       r$0 r%S\S'   \" 5       r&S\S'   \'" SSS9RQ                  SS9r)\'" SS S9RQ                  SS9r*\'" S!5      r+\," 0 5      r-S"\S#'   S$r.S%\S&'   S'\S('   S)\S*'   S+\S,'   S-\S.'   \/S/ 5       r0\1" S05      RQ                  SS9r2\1" S15      RQ                  SS9r3\1" S2SS3S49r4Sr5\," 5       r6S5r7\" \8Rr                  5      r:/ S6Qr;/ \;QS7PS8PS9PS:PS;Pr<U 4S< jr=S= r>S> r?S? r@SSS@ jjrASA rBSB rCSC rDSD rESSE jrFSF rG\" SGS9rH\" SH5      SI 5       rISJ rJSK rKSL rLSM rMSSN jrNSO rOSP rPSSQ jrQSSR jrRSS rSSST jrTSSU jrU       SSV jrVSW rWSX rXSY rY   SSSSZ.S[ jjrZS\ r[S] r\S^ r]SS_ jr^S` r_      SSa jr`Sb ra\/Sc 5       rbSd rcSe rdSf reSg rfSh rgSi rhSj riSk rjSl rkSSm jrlSn rmSo rnSSp jroSSq jrpSSr jrqSs rr\'" S!5      rsSSt jrtSSSu jjruSv rvSw rwSSx jrxSSy jrySSz jrzS{ r{S| r|S} r}S~ r~\/S 5       rSrU =r$ )KernelZ   zThe base kernel class.Nzdict[str, psutil.Process]	processes	eventloopc                    [         R                  R                  5       nUR                  b  UR	                  U R
                  5        gg)z&schedule call to eventloop from IOLoopN)r   IOLoopcurrentnewadd_callbackenter_eventloop)selfchangeloops      r1   _update_eventloopKernel._update_eventloopf   s9     }}$$&::!d223 "rD   T)
allow_nonez"IPython.core.profiledir.ProfileDirzDeprecated shell_streams alias. Use shell_stream

        .. versionchanged:: 6.0
            shell_streams is deprecated. Use shell_stream.
        )helpzList[t.Any]shell_streamsr(   implementationimplementation_versionbannerc                n    [         R                  " S[        SS9  U R                  b  U R                  /$ / $ )NLKernel.shell_streams is deprecated in ipykernel 6.0. Use Kernel.shell_stream   
stacklevel)warningswarnDeprecationWarningshell_streamrP   s    r1   _shell_streams_defaultKernel._shell_streams_default}   s9    Z	

 (%%&&	rD   c                    [         R                  " S[        SS9  [        UR                  5      S:  a  [         R                  " S[
        SS9  UR                  (       a  UR                  S   U l        g g )Nr\   r]   r^   r   zJKernel only supports one shell stream. Additional streams will be ignored.r   )r`   ra   rb   lenrM   RuntimeWarningrc   )rP   rQ   s     r1   _shell_streams_changedKernel._shell_streams_changed   s\    Z	

 vzz?QMM\
 :: &

1D rD   zlogging.Loggerlogidentc                >    [        [        R                  " 5       5      $ r,   )r(   uuiduuid4rd   s    r1   _default_identKernel._default_ident   s    4::<  rD   zdict[str, object]language_infozList[dict[str, str]]
help_linkszSSet to False if you want to debug python standard and dependent libraries.
        )configzhWhether to use appnope for compatibility with OS X App Nap.

        Only affects OS X >= 10.9.
        FzDict[str, t.Any]_control_parentrD   bytes_control_parent_identzContextVar[dict[str, Any]]_shell_parentzContextVar[bytes]_shell_parent_identzMapping[str, bytes]_parent_identzasyncio.Lock_main_asyncio_lockc                V    [         R                  " S[        SS9  U R                  5       $ )NzEKernel._parent_header is deprecated in ipykernel 6. Use .get_parent()r]   r^   )r`   ra   rb   
get_parentrd   s    r1   _parent_headerKernel._parent_header   s&    S	

   rD   gMb@?{Gz?        a  time (in seconds) to wait for messages to arrive
        when aborting queued requests after an error.

        Requests that arrive within this window after an error
        will be cancelled.

        Increase in the event of unusually slow network
        causing significant delays,
        which can manifest as e.g. "Run all" in a notebook
        aborting some, but not all, messages after an error.
        )rv   rV   r   )
execute_requestcomplete_requestinspect_requesthistory_requestcomm_info_requestkernel_info_requestconnect_requestshutdown_requestis_complete_requestinterrupt_requestdebug_requestusage_requestcreate_subshell_requestdelete_subshell_requestlist_subshell_requestc                  >^  [         TT ]  " S
0 UD6  [        R                  T l        [        R
                  T l        0 T l        T R                   H  n[        T U5      T R                  U'   M     0 T l
        T R                   H  n[        T U5      T R                  U'   M     [        T R                  SS/5      T l        0 T l        ST l        [#        S5      T l        T R$                  R'                  0 5        [#        S5      T l        T R(                  R'                  S5        [+        U 4S jU 4S jS.5      T l        [.        R0                  " 5       T l        g	)zInitialize the kernel.	cell_metacell_idrD   shell_parentshell_parent_identc                    > T R                   $ r,   )ry   rd   s   r1   <lambda>!Kernel.__init__.<locals>.<lambda>H  s    4#=#=rD   c                 8   > T R                   R                  5       $ r,   )r{   r9   rd   s   r1   r   r   I  s    !9!9!=!=!?rD   )controlshellN )super__init__sysstdout_stdoutstderr_stderrshell_handlers	msg_typesgetattrcontrol_handlerscontrol_msg_typesrC   
do_execute_do_exec_accepted_paramsrw   ry   r   rz   setr{   r'   r|   asyncioLockr}   )rP   kwargsmsg_type	__class__s   `  r1   r   Kernel.__init__$  s'   "6"
 .1ZZ-0ZZ !H,3D(,CD) ' !#..H.5dH.ED!!(+ / )<OOk95)
%  "%("'7r"#-.B#C   $$S) &=?
 #*,,.rD   c                   #    U R                    ISh  vN   U R                  U5      I Sh  vN   SSS5      ISh  vN   g N. N N	! , ISh  vN  (       d  f       g= f7f)zMDispatch a control request, ensuring only one message is processed at a time.N)_control_lockprocess_controlrP   msgs     r1   dispatch_controlKernel.dispatch_controlO  sC      %%%&&s+++ &%%+ &%%%sQ   A"AA"AAAA"AA"AA"AAAA"c                  #    U R                   (       d  gU R                   R                  USS9u  p! U R                   R                  USSS9nU R                  R                  SU5        U R                  X!S	S
9  U R                  SS	5        US   nUS   nU R                  R                  US5      nUc  U R                  R                  SU5        O9 U" U R                  X!5      n[        R                  " U5      (       a
  UI Sh  vN   [        R                  b  [        R                  R!                  5         [        R"                  b  [        R"                  R!                  5         U R%                  SS	U R                  5        g! [         a    U R                  R                  SSS9   gf = f N! [         a    U R                  R                  SSS9   Nf = f7f)zdispatch control requestsNFcopyTcontentr   zInvalid Control Messageexc_infozControl received: %sr   channelbusyheaderr   z UNKNOWN CONTROL MESSAGE TYPE: %rzException in control handler:idle)sessionfeed_identitiesdeserialize	Exceptionrl   errordebug
set_parent_publish_statusr   r9   control_streamr4   isawaitabler   r   flushr   _publish_status_and_flush)rP   r   identsr   r   handlerresults          r1   r   Kernel.process_controlU  s    ||ll223U2C	,,**35*IC
 	-s3 	Y7VY/X*%''++Hd;?HHNN=xHO !4!4fB&&v.. LL ::!JJ::!JJ&&vy$:M:MN9  	HHNN4tND	( ! O>NOs`   /GF BG3F2 F0F2 
A<G$F-*G,F--G0F2 2$GGGGc                    g)zCheck whether a shell-channel message should be handled

Allows subclasses to prevent handling of certain messages (e.g. aborted requests).

.. versionchanged:: 7
    Subclass should_handle _may_ be async.
    Base class implementation is not async.
Tr   )rP   streamr   r   s       r1   should_handleKernel.should_handlez  s     rD   c               	  #    [        U5      S:X  aE  US   R                  S:X  a2  Uc  SU l        gU R                  R                  R                  US5        gU R                  (       d  gU R                  (       a1  [        R                  " 5       U R                  U R                  4;  d   eU R                  R                  USS9u  p1 U R                  R                  USSS9nU R!                  X1SS9  U R#                  SS5        US   S   nUS   R%                  S5      U:X  d   eU R                  (       a&  U R                  R                  R'                  U5      nOU R(                  nUS:X  ab  Uc  U R                  nO%U R                  R                  R+                  U5      nU(       a&  U R-                  XQU5        U R/                  SSU5        gU R                  R1                  SU5        U R                  R1                  SUS   5        U R3                  XQU5      n[4        R6                  " U5      (       a
  UI Sh  vN nU(       dB  U R/                  SSU5        U R                  R1                  SXAS   R%                  S5      5        gU R8                  R%                  US5      nUc  U R                  R;                  SU5        OmU R                  R1                  SXA5         U R=                  5          U" XSU5      n	[4        R6                  " U	5      (       a
  U	I Sh  vN    U RA                  5         [B        RD                  b  [B        RD                  RG                  5         [B        RH                  b  [B        RH                  RG                  5         U R/                  SSU5        g! [         a    U R                  R                  S	SS
9   gf = f GN! [         a    U R                  R1                  SSS
9   GNf = f N! [         a    U R                  R                  SSS
9   GN[>         a    U R                  R                  S5         GN+f = f! [         a    U R                  R1                  SSS
9   GNEf = f!  U RA                  5         f ! [         a    U R                  R1                  SSS
9   f f = f= f7f)zdispatch shell requestsr   r      stop abortingNFr   Tr   zInvalid Messager   r   r   r   r   r   subshell_idr   r   z
*** MESSAGE TYPE:%s***z   Content: %s
   --->
   r   zNot handling %s:%smsg_idzUnknown message type: %rz%s: %sz%Unable to signal in pre_handler_hook:zException in message handler:z#KeyboardInterrupt caught in kernel.z&Unable to signal in post_handler_hook:)%rh   buffer	_abortingshell_channel_threadmanagerset_subshell_abortingr   _supports_kernel_subshells	threadingcurrent_threadcontrol_threadr   r   r   rl   r   r   r   r9   $get_subshell_to_shell_channel_socketrc   get_subshell_aborting_send_abort_replyr   r   r   r4   r   r   warningpre_handler_hookKeyboardInterruptpost_handler_hookr   r   r   r   )
rP   r   r   r   r   r   abortingr   r   r   s
             r1   dispatch_shellKernel.dispatch_shell  s#    s8q=SV]].>>
 "!&  ))11GGUZ[||**++-##))6   
 ll223U2C	,,**35*IC 	W5VW-x=,8}  /;>>>**..66[[F &&F ((">>44<<RRS^_&&vF;..vwG
 	18<5s9~F262D2DVRX2Y}--"//M**67FCHHNN/x=;L;LX;VW%%))(D9?HH7BHHNN8X3W%%'\ 5&&v.. LL\**, ::!JJ::!JJ&&vw?O  	HHNN,tN<	J 0  WFQUVW
 ! O>N$ FDEF ! \HHNN#KVZN[\\**,  \HHNN#KVZN[\s   CR?N( #ER??O B%R?&O 7)P  P !P &Q 6A2R?($OR?OR?$O=9R?<O==R? P $Q&Q? )$QQ? QQ? $Q<8R?;Q<<R??R<RR<$R96R<8R99R<<R?c                6    [        [        [        5      U l        g)z.Hook to execute before calling message handlerN)r   r   r   saved_sigint_handlerrd   s    r1   r   Kernel.pre_handler_hook  s     %+63F$G!rD   c                8    [        [        U R                  5        g)z-Hook to execute after calling message handlerN)r   r   r   rd   s    r1   r   Kernel.post_handler_hook  s    vt001rD   c                   ^ ^^^ T R                   R                  ST R                  5        T R                  mTc  T R                   R                  S5        gUUU 4S jmUU 4S jmT" 5         g)zenter eventloopzEntering eventloop %sNz Exiting as there is no eventloopc                   >#    TR                   T La  TR                  R                  ST 5        g TR                  R	                  5       (       a#  TR                  R                  S5        T" 5         g TR                  R                  ST 5         T " T5        TR                   T L a  T" 5         g g ! [         a    TR                  R                  S5         N?f = f7f)Nzexiting eventloop %sz*Delaying eventloop due to waiting messageszAdvancing eventloop %sz"KeyboardInterrupt caught in kernel)rI   rl   info	msg_queueqsizer   r   r   )rI   schedule_nextrP   s   r1   advance_eventloop1Kernel.enter_eventloop.<locals>.advance_eventloop  s     ~~Y.4i@~~##%%KLHHNN3Y?E$ ~~* + % ECDEs*   BCB/ C/%CCCCc                    > TR                   R                  S5        TR                  R                  S[	        TR
                  T 5      5        g)z*Schedule the next advance of the eventloopzScheduling eventloop advancegMbP?N)rl   r   io_loop
call_laterr   schedule_dispatch)r   rP   s   r1   r   -Kernel.enter_eventloop.<locals>.schedule_next  s8     HHNN9:LL##E743I3IK\+]^rD   )rl   r   rI   )rP   r   rI   r   s   `@@@r1   rO   Kernel.enter_eventloop  sO    -t~~>NN	HHMM<=	 (	_ 	rD   c                   #    U R                   (       a+  U R                  (       d  U R                   R                  5         U R                  SS9I Sh  vN   g N7f)zProcess a single shell message

Any pending control messages will be flushed as well

.. versionchanged:: 5
    This is now a coroutine
F)waitN)rc   r   r   process_onerd   s    r1   do_one_iterationKernel.do_one_iteration  sA      T%D%D##%E***s   AAAAc                  #    U(       a&  U R                   R                  5       I Sh  vN u  p#nO U R                   R                  5       u  p#nU R
                  c  U R                  b  [        R                  " S5      I Sh  vN   U R                  R                  5         U R                  R                  nUR                  " S5      (       aQ  [        R                  " S5      I Sh  vN   U R                  R                  5         UR                  " S5      (       a  MQ  U" U6 I Sh  vN   g GN! [        R                  [        4 a     gf = f N Nj N,7f)z=Process one request

Returns None if no message was handled.
Nr   r   )r   r9   
get_nowaitr   r   r   r   sleepr   socketpoll)rP   r  tdispatchargsr  s         r1   r  Kernel.process_one(  s    
 &*nn&8&8&: :A$(NN$=$=$?!T &4+>+>+J --"""%%'((//F++a..mmA&&&##))+ ++a.. o' !; &&
3  #
 ' 	si   %ED,ED/ 3EEA$E&E'5EE&E'E/E	EEEEEc                   #      U R                  5       I Sh  vN   M   N! [         a    U R                  R                  S5         N+f = f7f)zCoroutine to preserve order of message handling

Ensures that only one message is processing at a time,
even when the handler is async
NzError in message handler)r  r   rl   	exceptionrd   s    r1   dispatch_queueKernel.dispatch_queueC  sJ      ?&&((( ( ?""#=>?s1   A! ! A! %A	AA		Az&Monotonic counter of messages
        _message_counterc                ,    [         R                  " 5       $ r,   )	itertoolscountrd   s    r1   _message_counter_defaultKernel._message_counter_defaultU  s      rD   c                    [        U R                  5      nU R                  R                  UUU45        U R                  R                  S 5        g)zschedule a message for dispatchc                     g r,   r   r   rD   r1   r   *Kernel.schedule_dispatch.<locals>.<lambda>e  s    $rD   N)nextr  r   
put_nowaitr   rN   )rP   r  r  idxs       r1   r  Kernel.schedule_dispatchY  sF    4(()!!	
 	!!,/rD   c                @   #    [         R                  " 5       U l        g 7fr,   )r   r   r   rd   s    r1   _create_control_lockKernel._create_control_lockg  s     $\\^s   c                   [         R                  R                  5       U l        [	        5       U l        U R                  (       d%  U R                  R                  U R                  5        U R                  (       a$  U R                  R                  U R                  SS9  U R                  (       aD  [        R                  S:  a0  U R                  R                  R                  U R                  5        O[         R"                  " 5       U l        U R&                  (       a  U R                  (       aT  U R                  R(                  R+                  U R,                  5        U R&                  R                  U R.                  SS9  O8U R&                  R                  [1        U R2                  U R4                  5      SS9  U R7                  SS5        g)z register dispatchers for streamsFr   )   
   startingr   N)r   rK   rL   r   r   r   r   rN   r  r   on_recvr   r   r   version_infor%  r   r   r   rc   r   set_on_recv_callback
shell_mainshell_channel_thread_mainr   r  r   r   rd   s    r1   startKernel.startk  sG   }},,.',w((LL%%d&9&9:''(=(=E'J3#3#3g#= ''44T5N5NO!(D(())11FFtW!!))$*H*Hu)U!!))..++  *  	Z1rD   c                  #    [         R                  " 5       U R                  :X  d   eU R                  R                   ISh  vN   U R                  c   SSS5      ISh  vN   gU R                  R                  USS9u  p# U R                  R                  USSS9nUS   R                  S5      nU R                  R                  nUR                  U5      nUc   eUR                  " USS9  SSS5      ISh  vN   g N N! [         a    U R                  R                  SSS	9   N;f = f N3! , ISh  vN  (       d  f       g= f7f)
z;Handler for shell messages received on shell_channel_threadNFr   r   r   r   zInvalid messageTr   )r   r   r   asyncio_lockr   r   r   r9   r   $get_shell_channel_to_subshell_socketsend_multipartr   rl   r   )rP   r   _msg2msg3r   subshell_managerr  s           r1   r/   Kernel.shell_channel_thread_main  s    '')T-F-FFFF,,999||# :99 ll223U2CGA
A||//e%/P"8n00? $(#<#<#D#D )NN{[)))%%c6 :99   A04@A! :999s   A E
D E
D0E
 D!E
&D0A,D/E
:D.;E
E
$D+(D0*D++D0.E
0E6D97EE
c                  #    U R                   (       a  Uc;  [        R                  " 5       [        R                  " 5       :X  d   eU R                  nO[        R                  " 5       U R
                  [        R                  " 5       4;  d   eU R
                  R                  R                  U5      nO?Ub   e[        R                  " 5       [        R                  " 5       :X  d   eU R                  nUc   eU ISh  vN   U R                  X!S9I Sh  vN   SSS5      ISh  vN   g N, N N	! , ISh  vN  (       d  f       g= f7f)z/Handler of shell messages for a single subshellN)r   )	r   r   r   main_threadr}   r   r   get_subshell_asyncio_lockr   )rP   r   r   r3  s       r1   r.  Kernel.shell_main  s    **" //1Y5J5J5LLLL#66 //1--))+:     $88@@ZZ  &&&++-1F1F1HHHH22L '''<%%c%CCC  <<C  <<<sZ   C:E	<D)=E	 D/D+D/E	#D-$E	+D/-E	/E5D86EE	c                    Xl         g)zRecord the ports that this kernel is using.

The creator of the Kernel instance must call this methods if they
want the :meth:`connect_request` method to return the port numbers.
N)_recorded_ports)rP   portss     r1   record_portsKernel.record_ports  s
      %rD   c           	         U R                   (       d  gU R                   R                  U R                  SXS.UU R                  S5      S9  g)z-Publish the code request on the iopub stream.Nexecute_input)codeexecution_countparentrn   )r   sendiopub_socket_topic)rP   rF  rI  rG  s       r1   _publish_execute_inputKernel._publish_execute_input  sD    ||>++o. 	 	
rD   c           	         U R                   (       d  gU R                   R                  U R                  SSU0U=(       d    U R                  U5      U R	                  S5      S9  g)z send status (busy/idle) on IOPubNstatusexecution_staterH  r   rJ  rK  r   rL  )rP   rP  r   rI  s       r1   r   Kernel._publish_status  sT    ||'5T__W5++h' 	 	
rD   c                    U R                  XU5        U(       aD  [        US5      (       a2  U R                  (       d   UR                  [        R
                  5        gggg)zfsend status on IOPub and flush specified stream to ensure reply is sent before handling the next replyr   N)r   hasattrr   r   zmqPOLLOUT)rP   rP  r   r   rI  s        r1   r    Kernel._publish_status_and_flush  sD    Vf5gfg..t7V7VLL% 8W.6rD   c           	         U R                   (       d  g U R                   R                  U R                  SUU R                  5       U R	                  S5      S9  g )Ndebug_eventrH  rR  )rP   events     r1   _publish_debug_eventKernel._publish_debug_event  sH    ||??$++m, 	 	
rD   c                    US:X  a  Xl         X l        gU R                  R                  U5        U R                  R                  U5        g)zSet the current parent request

Side effects (IOPub messages) and replies are associated with
the request that caused them via the parent_header.

The parent identity is used to route input_request messages
on the stdin channel.
r   N)ry   rw   r{   r   rz   )rP   rn   rI  r   s       r1   r   Kernel.set_parent  s@     i).&#) $$((/""6*rD   c                    Uc,  [         R                  " 5       R                  [        :X  a  SnOSnUS:X  a  U R                  $ U R
                  R                  5       $ )a  Get the parent request associated with a channel.

.. versionadded:: 6

Parameters
----------
channel : str
    the name of the channel ('shell' or 'control')

Returns
-------
message : dict
    the parent message for the most recent request on the channel.
r   r   )r   r   namer   rw   rz   r9   )rP   r   s     r1   r   Kernel.get_parent  sT      ?'')..2EE#!i'''!!%%''rD   c
                    U R                   (       d  gU R                   R                  UUUU R                  U	5      UUUUU5	      $ )zSend a response to the message we're currently processing.

This accepts all the parameters of :meth:`jupyter_client.session.Session.send`
except ``parent``.

This relies on :meth:`set_parent` having been called for the current
message.
N)r   rJ  r   )
rP   r   msg_or_typer   rn   bufferstrackr   metadatar   s
             r1   send_responseKernel.send_response  sI    ( ||||  OOG$

 
	
rD   c                    S[        5       0$ )zBInitialize metadata.

Run at the beginning of execution requests.
started)now)rP   rI  s     r1   init_metadataKernel.init_metadataA  s     su
 	
rD   c                    U$ )zHFinish populating metadata.

Run after completing an execution request.
r   )rP   rI  rg  reply_contents       r1   finish_metadataKernel.finish_metadataL  s	    
 rD   c           	     4  #    U R                   (       d  g US   nUS   nUR                  SS5      nUR                  SU(       + 5      nUR                  S0 5      nUR                  SS5      n	UR                  S	0 5      n
U
R                  S
5      nUR                  SS5      nU R                  U5      nU(       d1  U =R                  S-  sl        U R                  XSU R                  5        UUUUU	S.nU R                  S   (       a  XS'   U R                  S   (       a  XS'   US   R                  S5      nU R                  " S0 UD6n[        R                  " U5      (       a  UI Sh  vN nO6[        R                  " [        R                  SU R                  S9[         SS9  ["        R$                  b  ["        R$                  R'                  5         ["        R(                  b  ["        R(                  R'                  5         U R*                  (       a   [,        R.                  " U R*                  5        [1        U5      nU R3                  X=U5      nU R                   R5                  USUUUUS9nU R                  R7                  SU5        U(       d;  US   S   S:X  a.  U(       a&  US   R                  S5      nU R9                  U5        gggg! [         a:    U R                  R	                  S5        U R                  R	                  SU5         gf = f GN7f)zhandle an execute_requestNr   rF  silentFstore_historyuser_expressionsallow_stdinrg  cellIdzGot bad msg: %sstop_on_errorTr   )rF  rt  ru  rv  rw  r   r   r   r   r   	func_nametargetr^   execute_reply)rg  rn   rP  r   r   )r   r9   r   rl   r   rm  rG  rM  r   r   r4   r   r`   ra   r)   formatPendingDeprecationWarningr   r   r   r   _execute_sleeptimer  r$   rq  rJ  r   _abort_queues)rP   r   rn   rI  r   rF  rt  ru  rv  rw  r   r   rz  rg  do_execute_argsr   rp  	reply_msgs                     r1   r   Kernel.execute_requestS  s    ||	Y'G6?D[[51F#KKVDM&{{+=rB!++mU;K

:r2ImmH-G  OT:%%f-   A% ''d6J6JK * 0&
 ((5+4K(((3)0I&X&**=9 :/:}--"//MMM"))L)Y) ::!JJ::!JJ JJt**+ #=1''-H&*ll&7&7 '8 '
	 	tY')I.x8GC *..}=K{+ IVCvK  	HHNN?+HHNN4(	F 0s8   LA:K CL)L*E$LALLLL)r   r   c                   [         e)z4Execute user code. Must be overridden by subclasses.NotImplementedError)rP   rF  rt  ru  rv  rw  r   r   s           r1   r   Kernel.do_execute  s
     "!rD   c                ~  #    U R                   (       d  gUS   nUS   nUS   nU R                  XV5      n[        R                  " U5      (       a  UI Sh  vN nO6[        R
                  " [        R                  SU R                  S9[        SS9  [        U5      nU R                   R                  US	XsU5        g Ne7f)
zHandle a completion request.Nr   rF  
cursor_posdo_completer{  r   r^   complete_reply)r   r  r4   r   r`   ra   r)   r  r  r$   rJ  )rP   r   rn   rI  r   rF  r  matchess           r1   r   Kernel.complete_request  s     ||#v\*
""44w''#mGMM"))M$JZJZ)[) W%&"2GUK $s   AB=B;A&B=c                    / UU0 SS.$ )+Override in subclasses to find completions.ok)r  
cursor_endcursor_startrg  rP  r   )rP   rF  r  s      r1   r  Kernel.do_complete  s     $&
 	
rD   c                  #    U R                   (       d  gUS   nU R                  US   US   UR                  SS5      [        UR                  S/ 5      5      5      n[        R
                  " U5      (       a  UI Sh  vN nO6[        R                  " [        R                  SU R                  S	9[        S
S9  [        U5      nU R                   R                  USXSU5      nU R                  R                  SU5        g N7f)zHandle an inspect request.Nr   rF  r  detail_levelr   omit_sections
do_inspectr{  r   r^   inspect_replyry  )r   r  r9   r   r4   r   r`   ra   r)   r  r  r$   rJ  rl   r   rP   r   rn   rI  r   rp  r   s          r1   r   Kernel.inspect_request  s     ||#FOL!KK*OR01	
 }--"//MMM"))L)Y) #=1llPUVtS! 0s   A;D=C?>BDc                    S0 0 SS.$ )z.Override in subclasses to allow introspection.r  F)rP  datarg  foundr   )rP   rF  r  r  r  s        r1   r  Kernel.do_inspect  s    UKKrD   c                  #    U R                   (       d  gUS   nU R                  " S	0 UD6n[        R                  " U5      (       a  UI Sh  vN nO6[        R
                  " [        R                  SU R                  S9[        SS9  [        U5      nU R                   R                  USXSU5      nU R                  R                  SU5        g N7f)
zHandle a history request.Nr   
do_historyr{  r   r^   history_replyry  r   )r   r  r4   r   r`   ra   r)   r  r  r$   rJ  rl   r   r  s          r1   r   Kernel.history_request  s     ||#2'2}--"//MMM"))L)Y) #=1llPUVtS! 0s   A
CCBCc
                    S/ S.$ )z)Override in subclasses to access history.r  )rP  historyr   )
rP   hist_access_typeoutputrawr   r0  stopnpatternuniques
             r1   r  Kernel.do_history  s     2..rD   c                  #    U R                   (       d  gU R                  (       a  U R                  R                  5       O0 nSUS'   U R                   R                  USXCU5      nU R                  R                  SU5        g7f)zHandle a connect request.Nr  rP  connect_replyry  )r   r@  r   rJ  rl   r   rP   r   rn   rI  r   r   s         r1   r   Kernel.connect_request  sc     ||151E1E$&&++-2 ll%PtS!s   B Bc                   SSK Jn  / nU R                  (       a  UR                  S5        U(       a  UR                  S5        [        U R
                  U R                  U R                  U R                  U R                  US.$ )Nr   )_is_debugpy_availablezkernel subshellsdebugger)protocol_versionrX   rY   rt   rZ   ru   supported_features)
r  r  r   appendr%   rX   rY   rt   rZ   ru   )rP   r  r  s      r1   kernel_infoKernel.kernel_info   so    3(***%%&89 %%j1 !8"11&*&A&A!//kk//"4
 	
rD   c                   #    U R                   (       d  gSS0nUR                  U R                  5        U R                   R                  USXCU5      nU R                  R                  SU5        g7f)zHandle a kernel info request.NrP  r  kernel_info_replyry  )r   updater  rJ  rl   r   r  s         r1   r   Kernel.kernel_info_request4  sX     ||T"t''(ll(;WeTtS!s   A-A/c           	       #    U R                   (       d  gUS   nUR                  SS5      n[        U S5      (       a`  U R                  R                  R                  5        VVs0 s H.  u  pgUR                  U:X  d  Ub  M  U[        UR                  S9_M0     nnnO0 n[        USS9n	U R                   R                  USXU5      n
U R                  R                  S	U
5        gs  snnf 7f)
zHandle a comm info request.Nr   target_namecomm_manager)r  r  )commsrP  comm_info_replyry  )r   r9   rU  r  r  itemsr  r7   rJ  rl   r   )rP   r   rn   rI  r   r  kvr  rp  r   s              r1   r   Kernel.comm_info_request=  s     ||#kk-6 4(( #//55;;==FQ==K/; 34AMM22=  E E56ll(9=RWXtS!s   A"C*$C$C$AC*c                   [         R                  S:X  a  U R                  R                  S5        g [         R                  " 5       n[         R
                  " U5      nU(       a7  X!:X  a2  [        [         S5      (       a   [         R                  " U[        5        g [         R                  " U[        5        g ! [         a    [         R                  " U[        5        e f = f)Nntz*Interrupt message not supported on Windowskillpg)osra  rl   r   getpidgetpgidrU  r  r   OSErrorkill)rP   pidpgids      r1   _send_interrupt_childrenKernel._send_interrupt_childrenQ  s    77d?HHNNGH))+C::c?D H(=(=IIdF+
 V$	  GGC(s   >B6 6'Cc                <  #    U R                   (       d  gSS0n U R                  5         U R                   R                  USXCUS9  g! [         aH  nSSKnSUR	                  5       [        [        U5      R                  5      [        U5      S.n SnANjSnAff = f7f)	zHandle an interrupt request.NrP  r  r   r   )rP  	tracebackenameevalueinterrupt_replyrn   )	r   r  r  r  format_stackr(   type__name__rJ  )rP   r   rn   rI  r   errr  s          r1   r   Kernel.interrupt_requestb  s     ||%-t$4
	))+ 	&"3WER  	 "&335T#Y//0c(	G	s-   BA B
B>BBBBc                  #    U R                   (       d  gU R                  US   S   5      n[        R                  " U5      (       a  UI Sh  vN nO6[        R
                  " [        R                  SU R                  S9[        SS9  U R                   R                  USXCUS	9  U R                   R                  SXC5      U l        U R                  5       I Sh  vN   U R                  R                  S
5        U R                  (       a1  U R                  R                   nUR#                  UR$                  5        U R                  R                  S5        U R                   R#                  U R                   R$                  5        U R&                  (       aW  U R&                  R                   U R                   :w  a2  U R&                  R                   nUR#                  UR$                  5        ggg GN GN7f)zHandle a shutdown request.Nr   restartdo_shutdownr{  r   r^   shutdown_replyr  zStopping control ioloopzStopping shell ioloop)r   r  r4   r   r`   ra   r)   r  r  rJ  r   _shutdown_message_at_shutdownrl   r   r   r   rN   r  rc   )rP   r   rn   rI  r   control_io_loopshell_io_loops          r1   r   Kernel.shutdown_requestv  sz    ||""6)#4Y#?@w''#mGMM"))M$JZJZ)[)
 	&"2G5Q!%!1!12BG!T!!!01"1199O(()=)=>./!!$,,"3"34!2!2!:!:dll!J --55M&&}'9'9: "K) $ 	"s&   A
G3G-BG3G0DG30G3c                    SUS.$ )zMOverride in subclasses to do things when the frontend shuts down the
kernel.
r  )rP  r  r   )rP   r  s     r1   r  Kernel.do_shutdown  s     733rD   c                  #    U R                   (       d  gUS   nUS   nU R                  U5      n[        R                  " U5      (       a  UI Sh  vN nO6[        R
                  " [        R                  SU R                  S9[        SS9  [        U5      nU R                   R                  USXcU5      nU R                  R                  S	U5        g N7f)
zHandle an is_complete request.Nr   rF  do_is_completer{  r   r^   is_complete_replyry  )r   r  r4   r   r`   ra   r)   r  r  r$   rJ  rl   r   )rP   r   rn   rI  r   rF  rp  r  s           r1   r   Kernel.is_complete_request  s     ||#v++D1}--"//MMM"))4DTM`M`)a)
 #=1LL%%f.A=Z_`	tY' 0s   ACCBCc                
    SS0$ )r  rP  unknownr   )rP   rF  s     r1   r  Kernel.do_is_complete  s    )$$rD   c                  #    U R                   (       d  gUS   nU R                  U5      n[        R                  " U5      (       a  UI Sh  vN nO6[        R
                  " [        R                  SU R                  S9[        SS9  [        U5      nU R                   R                  USXSU5      nU R                  R                  SU5        g N7f)	zHandle a debug request.Nr   do_debug_requestr{  r   r^   debug_replyry  )r   r  r4   r   r`   ra   r)   r  r  r$   rJ  rl   r   )rP   r   rn   rI  r   rp  r  s          r1   r   Kernel.debug_request  s     ||#--g6}--"//MMM"))09N9N *  * #=1LL%%fm]TYZ	tY' 0s   A	CCBCc                d     [        X5      " 5       nUb  [        XC5      $ U$ ! [         a     gf = f)zGet the process metric value.r   )r   BaseException)rP   processra  	attributemetric_values        r1   get_process_metric_valueKernel.get_process_metric_value  s?    		"713L$|77  		s   " " 
//c           
     *  #    U R                   (       d  g[        R                  " 5       [        R                  " 5       S.n[
        R                  " 5       nU/UR                  SS9QnU Vs0 s H4  nUR                  U R                  R                  UR                  U5      _M6     snU l	        [        U R                  R                  5        Vs/ s H  nU R                  USS5      PM     sn5      US'   [        UR                  5       S5      (       a  SOSn[        U R                  R                  5        Vs/ s H  nU R                  US	U5      PM     sn5      US
'   [
        R                   " 5       n	U	b
  U	S:w  a  XS'   [
        R"                  " SS9US'   [%        [
        R&                  " 5       R)                  5       5      US'   U R                   R+                  USXCU5      n
U R,                  R/                  SU
5        gs  snf s  snf s  snf 7f)zHandle a usage request.N)hostnamer  T	recursivecpu_percent
kernel_cpupssrssmemory_full_infokernel_memoryr   host_cpu_percent)logical	cpu_counthost_virtual_memoryusage_replyry  )r   r  gethostnamer  r  psutilProcesschildrenr  rH   r9   sumr=   r  rU  r  r  r	  r7   virtual_memory_asdictrJ  rl   r   )rP   r   rn   rI  rp  current_processall_processesr  mem_info_typer  r  s              r1   r   Kernel.usage_request  s    ||%+%7%7%9"))+N ..*(T?+C+Cd+C+ST
 )
( KK++GKKAA(
 '*  $~~4466G --g}dK6'
l# "))I)I)KU!S!SY^),  $~~4466G --g7I=Y6*
o& ((* "{c'90;,-%+%5%5d%Ck"/3F4I4I4K4S4S4U/V+,LL%%fm]TYZ	tY'3

s,   A)H+;H&)HH	,AH:HB<Hc                   #    [         e7fr,   r  r   s     r1   r  Kernel.do_debug_request  s     !!s   	c                  #    U R                   (       d  gU R                  (       d  U R                  R                  S5        g[        R
                  " 5       R                  [        :X  d   eU R                  R                  R                  R                  nUR                  SS05        UR                  5       nU R                   R                  USXSU5        g7f)z7Handle a create subshell request.

.. versionadded:: 7
N*Subshells are not supported by this kernelr  createcreate_subshell_replyr   r   rl   r   r   r   ra  r   r   r   control_to_shell_channelfrom_socket	send_json	recv_jsonrJ  rP   r  rn   rI  control_socketreplys         r1   r   Kernel.create_subshell_request  s     
 ||..HHNNGH'')..2EEEE 22::SS__  &(!34((*&"95%P   CCc                "  #    U R                   (       d  gU R                  (       d  U R                  R                  S5        g[        R
                  " 5       R                  [        :X  d   e US   nUS   nU R                  R                  R                  R                  nUR                  SUS.5        UR                  5       nU R                   R                  USXsU5        g! [         a    U R                  R                  SU5         gf = f7f)	z7Handle a delete subshell request.

.. versionadded:: 7
NzKERNEL SUBSHELLS NOT SUPPORTEDr   r   zGot bad msg from parent: %sdelete)r  r   delete_subshell_reply)r   r   rl   r   r   r   ra  r   r   r   r   r  r  r   r!  rJ  )rP   r  rn   rI  r   r   r#  r$  s           r1   r   Kernel.delete_subshell_request  s     
 ||..HHNN;<'')..2EEEE	Y'G!-0K 22::SS__  (;!OP((*&"95%P  	HHNN8&A	s+   A)D,
C# 6A-D#&D	DDDc                  #    U R                   (       d  gU R                  (       d  U R                  R                  S5        g[        R
                  " 5       R                  [        :X  d   eU R                  R                  R                  R                  nUR                  SS05        UR                  5       nU R                   R                  USXSU5        g7f)z5Handle a list subshell request.

.. versionadded:: 7
Nr  r  listlist_subshell_replyr  r"  s         r1   r   Kernel.list_subshell_request*  s     
 ||..HHNNGH'')..2EEEE 22::SS__  &&!12((*&"7Nr&  c                J    SU R                   -  nU SU 3R                  5       $ )z!prefixed topic for IOPub messagesz	kernel.%s.)rn   encode)rP   topicbases      r1   rL  Kernel._topicC  s*    TZZ'&%!))++rD   c                    U R                   R                  nUR                  U5      nUc   eSnUR                  " USS9  g)z^Post a dummy message to the correct subshell that when handled will unset
the _aborting flag.
Nr   Fr   )r   r   r4  rJ  )rP   r   r9  r  r   s        r1   !_post_dummy_stop_aborting_message(Kernel._post_dummy_stop_aborting_messageK  sE      44<<!FF{S!!!Ce$rD   c                  ^  Uc  ST l         O&T R                  R                  R                  US5        T R                  R                  S5        T R                  (       a1  T R                  R                  R                  T R                  U5        g T R                  (       a+  T R                  (       d  T R                  R                  5         U 4S jn[        T R                  U5      nT R                  (       ay  T R                  R                  T R                  U5        T R                   bE  [#        T R                   S5      (       a)  T R                   R%                  T R                  S-   5        g g g U" 5         g )NTzAborting queuec                 R   >#    T R                   R                  S5        ST l        g 7f)NzFinishing abortF)rl   r   r   rd   s   r1   stop_aborting+Kernel._abort_queues.<locals>.stop_abortingn  s     HHMM+,"DNs   $'_schedule_exitr   )r   r   r   r   rl   r   r   rN   r6  rc   r   r   r   r  stop_on_error_timeoutr  rI   rU  r<  )rP   r   r:  schedule_stop_abortings   `   r1   r  Kernel._abort_queuesV  s#    !DN%%--CCKQUV&'$$%%--::66  T%D%D##%	# "))?)?!O%% LL##D$>$>@VW
 ~~)gdnnFV.W.W--d.H.H4.OP /X) #$rD   c           	     b   U R                   (       d  gU R                  R                  SUS   S   US   S   5        US   S   R                  SS5      S   S	-   nS
S0nU R	                  U5      nU R                  X&U5      nUR                  U5        U R                   R                  UUUUUUS9  g)z"Send a reply to an aborted requestNzAborting %s: %sr   r   r   r6  r   r   _replyrP  aborted)rg  r   rI  rn   )r   rl   r   rsplitrm  rq  r  rJ  )rP   r   r   r   
reply_typerP  mds          r1   r   Kernel._send_abort_reply  s    ||'Xx)@#h-PZB[\]:.55c1=a@8K
I&$!!#62
		& 	 	
rD   c                    Sn[        U5      e)zHRaise StdinNotImplementedError if active frontend doesn't support
stdin.z?raw_input was called, but this frontend does not support stdin.r   r   s     r1   _no_raw_inputKernel._no_raw_input  s     P&s++rD   c                    U R                   (       d  Sn[        U5      eUb  SSKnUR                  " S[        SS9  U R                  UU R                  R                  5       U R                  S5      SS	9$ )
zoForward getpass to frontends

Raises
------
StdinNotImplementedError if active frontend doesn't support stdin.
zFgetpass was called, but this frontend does not support input requests.Nr   zTThe `stream` parameter of `getpass.getpass` will have no effect when using ipykernelr]   r^   r   Tpassword)	_allow_stdinr   r`   ra   UserWarning_input_requestr{   r9   r   )rP   promptr   r   r`   s        r1   getpassKernel.getpass  sy       ZC*3//MMf
 ""$$((*OOG$	 # 
 	
rD   c                    U R                   (       d  Sn[        U5      eU R                  [        U5      U R                  R                  5       U R                  S5      SS9$ )zqForward raw_input to frontends

Raises
------
StdinNotImplementedError if active frontend doesn't support stdin.
zHraw_input was called, but this frontend does not support input requests.r   FrK  )rM  r   rO  r(   r{   r9   r   )rP   rP  r   s      r1   	raw_inputKernel.raw_input  s]       \C*3//""K$$((*OOG$	 # 
 	
rD   c                   [         R                  b  [         R                  R                  5         [         R                  b  [         R                  R                  5           U R                  R                  [        R                  5        M,  ! [        R                   a)  nUR                  [        R                  :X  a   S nAO	e S nAff = fU R                  c   e[        [        XS95      nU R                  R                  U R                  SXcUS9    [        R                  " U R                  // U R                  /S5      u  pxn	U(       d  U	(       a/  U R                  R!                  U R                  5      u  p*X*4S:w  a  ODOA! ["         a    Sn[#        U5      S e[$         a    U R&                  R)                  SSS	9   Of = fM   U
S
   S   nO.! [$         a!    U R&                  R+                  SU5        Sn Of = fUS:X  a  [,        eU$ )NT)rP  rL  input_requestr  r   )NNzInterrupted by userzInvalid Message:r   r   valuezBad input_reply: %s )r   r   r   r   stdin_socketrecv_multipartrV  NOBLOCKZMQErrorerrnoEAGAINr   r$   r7   rJ  selectrecvr   r   rl   r   r   EOFError)rP   rP  rn   rI  rL  er   rlistr6  xlistr$  r   rX  s                r1   rO  Kernel._input_request  s   ::!JJ::!JJ !!00=  << 77cjj( ||'''TCD$++_gUZ[ D #&**d.?.?-@"tGXGXFY[_"`%E#'<<#4#4T5F5F#GLE~5$ 7+',$6 D  !3d CD# (	)$W-E 	HHNN0&9E	 F?NsC   !)B C	 CCC	A.F ;GG	G (G=<G=c                N   [        U5      < nU R                  5        Hi  nU R                  R                  SX#5         U[        :X  a  UR                  5         M<  U[        :X  a  UR                  5         MX  UR                  U5        Mk     g! [        R                   a     M  f = f)zs
Send a signal to all our children

Like `killpg`, but does not include the current process
(or possible parents).
zSending %s to subprocess %sN)r
   _process_childrenrl   r   r	   	terminater   r  send_signalr  NoSuchProcess)rP   signumsig_repr0   s       r1   _signal_childrenKernel._signal_children  s     V_''')AHHNN8'EW$KKMw&FFHMM&) * '' s   BB6BB$#B$c                N   [         R                  " 5       nUR                  SS9n[        R                  S:X  a  U$ [        R
                  " 5       n/ nU H<  n [        R                  " UR                  5      nXc:X  a  UR                  U5        M<  M>     U$ ! [         a     MO  f = f)zRetrieve child processes in the kernel's process group

Avoids:
- including parents and self with killpg
- including all children that may have forked-off a new group
Tr  r  )
r  r  r  r  ra  getpgrpr  r  r  r  )rP   kernel_processall_childrenkernel_pgidprocess_group_childrenchild
child_pgids          r1   ri  Kernel._process_children  s      )%...>77d?jjl!#!E9ZZ		2
 ,*11%8 - " &%  s    B
B$#B$c                  #    SnU R                  5       (       d  U R                  R                  S5        g [        [        4 H  nU H  nU R                  5       nU(       d  U R                  R                  S5            g U R                  U5        U R                  R                  SUU5        [        R                  " U5      I S h  vN   M     M     g  N7f)N)r   gQ?g?g333333?r   r(  r)  zKernel has no children.z.No more children, continuing shutdown routine.z?Will sleep %s sec before checking for children and retrying. %s)ri  rl   r   r	   r   ro  r   r  )rP   sleepsrm  delayr  s        r1   %_progressively_terminate_all_children,Kernel._progressively_terminate_all_children'  s     1%%''HHNN45(F113HHNN#ST%%f-U
 mmE***   ) +s   CCCCc           	       #     U R                  5       I Sh  vN   U R                  bu  U R
                  (       ad  U R
                  R                  U R                  U R                  U R                  S5      S9  U R                  R                  SU R                  5        U R                  (       a*  U R                  R                  [        R                  5        gg N! [         a&  nU R                  R                  SU5         SnANSnAff = f! U R                  bu  U R
                  (       ad  U R
                  R                  U R                  U R                  U R                  S5      S9  U R                  R                  SU R                  5        U R                  (       a*  U R                  R                  [        R                  5        f f = f7f)zCActions taken at shutdown by the kernel, called by python's atexit.Nz,Exception during subprocesses termination %sshutdownr  ry  )r}  r   rl   r  r  r   rJ  rK  rL  r   r   r   rV  rW  )rP   rd  s     r1   r  Kernel._at_shutdown<  s]    	7<<>>>
 %%1dll!!%%**++j1 " 
 tT%;%;<""##))#++6 # ? 	RHHMqQQ	R %%1dll!!%%**++j1 " 
 tT%;%;<""##))#++6 #sK   GC CC B>GC 
D&DD DD B?GGc                    U R                   S L$ r,   )r   rd   s    r1   r   !Kernel._supports_kernel_subshellsN  s    ((44rD   )r   r   rw   ry   r   r}   r|   r@  rz   r{   r  r   r   r   r   r   rH   r   r   rc   r,   )r   
str | None)T)r   )NNNFNNN)TNF)r   r   )NNNNNF)returnNone)r   r  r  r  )rY  N)rY  )F)r  
__module____qualname____firstlineno____doc__r   rI   rH   __annotations__r"   rS   r   r   r   profile_dirr#   rc   r   rW   r!   re   rj   r   debug_shell_socketr   r   rK  iopub_threadr[  loggingLoggerrl   r   int_idr    rn   rr   rt   ru   r   tagdebug_just_my_code_darwin_app_naprM  r   rw   ry   propertyr   r   r  _poll_intervalr=  r  r@  rG  r   r   r   r   r   r   r   r   r   r   r   r   rO   r  r  r  r  r  r  r%  r0  r/  r.  rB  rM  r   r   r\  r   r   rh  rm  rq  r   r   r   r  r   r  r   r  r   r  r   r   r  r   r   r  r   r  r   r  r   r  r   r   r   rL  r   r6  r  r   rH  rQ  rT  rO  ro  ri  r}  r  r   __static_attributes____classcell__)r   s   @r1   rF   rF   Z   s     D	I+-I(-[4 4 w40G?DQKI$7L!%"M;  K_  _. . iD9NUN55L5L5L"7>>dCCC R[FIEW! !
 (*M$) (,vJ$-
  
cc	   
cc  ;L(,RO%0#&5&--** '& %$! ! 6]&&d&3N
 4[__D_1N!
*  fO O W\\*MI	 	 	"	
 	" 	 )1V,#OJ	`@DH
2(T+6? 
  ! !!0, 2DA.D6%



&	
+ (>  
D	
T,t " "L*
"4L"2 
/" 
 
&""(%"(;<4((%(("(H"Q(Q8O2, UI	%,%\
(,
2
"2h(&.+*7$ 5 5rD   rF   )Ir  
__future__r   r   r4   r  r  r  r  r   r   r  typingr  rp   r`   collections.abcr   contextvarsr   r   	functoolsr   r   r   r	   r
   r   threadr   platformr   jupyter_client.sessionr   rl  ImportErrorr  rV  IPython.core.errorr   r   tornador   tornado.queuesr   r   traitlets.config.configurabler   traitlets.traitletsr   r   r   r   r   r   r   r    r!   r"   zmq.eventloop.zmqstreamr#   ipykernel.jsonutilr$   _versionr%   iostreamr&   utilsr'   r)   r  rC   rF   r   rD   r1   <module>r     s    ? #     	  
      # "   H H '<<7(G4
  
 7 *  , ?   . ) -  K C v5" v5m  
,,Cs    C: :DD