
    ^h                        S SK r S SKrS SKrS SKJrJrJ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  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  S SKJr  \(       a  S SKJr  \R<                  " \5      r \ RC                  \RD                  5         " S S\5      r#SS jr$S r%S r& " S S\RN                  \
5      r'\" \
\'5      r(g)    N)TYPE_CHECKING
NamedTupleOptional)Type)IPythonKernel)get_ipython)
singletons)NotebookFlow)IPyflowZMQInteractiveShell)flow)make_mro_inserter_metaclassis_project_file)__version__)Commc                        \ rS rSr% \\S'   Srg)PyccoloKernelSettings   store_history N)__name__
__module____qualname____firstlineno__bool__annotations____static_attributes__r       O/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/kernel/kernel.pyr   r      s    r   r   c                  d   ^  SSK Jn   U R                  mU4S jnXl        g ! [         a     g f = f)Nr   )FilesFilteringc                 6   > [        U5      (       a  gT" X5      $ )NFr   )selfreceived_filenameorig_in_project_rootss     r   in_project_roots3patch_pydevd_file_filters.<locals>.in_project_roots%   s    011(AAr   )_pydevd_bundle.pydevd_filteringr!   r&   	Exception)r!   r&   r%   s     @r   patch_pydevd_file_filtersr*      s7    B . ? ?	B
 +;' s   " 
//c                     [         R                  " 5       nSSKJn  UR                  U5        [         R                  " XS9n UR                  U5      $ ! [         ac     [         R                  " 5       R	                  5       n Nm! [         a/    [         R
                  " 5       n[         R                  " U5          Nf = ff = f! [         a    UR                  5         e f = f)Nr   patched_nest_asyncio)loop)asyncioget_running_loopRuntimeErrorget_event_loop_policyget_event_loopnew_event_loopset_event_loopipyflow.kernelr-   applyensure_futurerun_until_completeBaseExceptioncancel)_selfcoror.   r-   futures        r   patched_taskrunner_runr?   /   s    )'') 4t$""43F&&v..  )	)002AACD 	)))+D""4(	)	)  s5   A C 
C#B5B=9C<B==CC c                  l     SS K n [        U R                  R                  l        g ! [
         a     g f = f)Nr   )jupyter_core.utilsr?   utils_TaskRunnerrunr)   )jupyter_cores    r   patch_jupyter_taskrunner_runrF   D   s0    !-C&&* s   #& 
33c                     ^  \ rS rSr% Sr\" \5      r\r	Sr
\\\      \S'   Sr\\\      \S'   Sr\S   \S'   SU 4S	 jjr\SU 4S
 jj5       rSS\SS4U 4S jjjrU 4S jr\ SS\\   S\SS4S jj5       r\SS j5       rSS jrU 4S jr\R8                  " \R:                  5      (       a      SU 4S jjrSr!U =r"$ SSKJr  \RA                  5             SU 4S jjrSr!U =r"$ )IPyflowKernelO   kernelNprev_kernel_classreplacement_classr   client_commreturnc                 F   > [         TU ]  " S0 UD6  U R                  5         g )Nr   )super__init___initialize)r#   kwargs	__class__s     r   rQ   IPyflowKernel.__init__W   s    "6"r   c                    > [         TU ]  " U0 UD6n[        R                  " 5       nUR                  U5         SSKJn  UR                  UR                  USS9  U$ ! [         a     U$ f = f)Nr   )ModuleReloaderF)shellr   enabled)rP   instancer
   register_comm_targetsuperduperreloadrW   rX   r)   )clsargsrS   retflow_rW   rT   s         r   rZ   IPyflowKernel.instance\   st    g//%%'""3'	7###))%#O 
  	
	s   !A 
A*)A*do_asyncio_patchesc                    > U(       a   SSK Jn  UR                  5         [        5         [	        5         S[
        R                  " [        TU ]   5      R                  ;   U l
        g )Nr   r,   cell_id)r6   r-   r7   rF   r*   inspect	signaturerP   
do_execute
parameters_has_cell_id)r#   rb   r-   rT   s      r   rR   IPyflowKernel._initializei   sI    ; &&(
 )*!#**57+=>III 	r   c                 ,  >#    [        5       nUR                  nUR                  S5      S:X  a  UR                  S0 SS.5        SUl        O/UR                  S5      S:X  a  SUl        UR                  SS05        [
        TU ]  U5      I S h  vN $  N7f)	Ncommandattachcompute_exec_scheduleF)typecell_metadata_by_idnotify_content_changed
disconnectTro   )r   mut_settingsgethandledataflow_enabledrP   do_debug_request)r#   msgr`   settingsrT   s       r   rw   IPyflowKernel.do_debug_requestx   s     %%779)LL3+-.3 ).H%WWY</(,H%LL&"9:;W-c2222s   B
BBBc                    [        5       nUR                  nXl        U R                  c:  UR	                  US9  [
        R                  R                  5        H	  nXEl        M     [        R                  " 5       R                  U5        Xl        g )N)rb   )r   rJ   rT   rK   rR   r	   rH   	_walk_mro	_instancer
   rZ   r[   )kernel_classrK   rb   ipyrJ   subclasss         r   injectIPyflowKernel.inject   su     m'))12DE&44>>@%+" A44V<):&r   c                 t    U R                   c  g U R                   [        5       R                  l        S U l         g N)rL   r   rJ   rT   )r~   s    r   _maybe_ejectIPyflowKernel._maybe_eject   s/    ))1)5)G)G&)-&r   c                     [         R                  " 5       nUR                  S0 5      nUR                  SS5      nUb  UR                  U5        [	        UR                  SS5      5      nUR                  U5        g)c
Don't actually change the metadata; we just want to get the cell id
out of the execution request.
metadatacellIdNtagsr   )r	   r   rt   set_active_celltupleset_tags)r#   parentr`   r   rd   r   s         r   before_init_metadata"IPyflowKernel.before_init_metadata   se    
 !::j"-,,x.!!'*X\\&"-.tr   c                 D   > U R                  U5        [        TU ]	  U5      $ )r   )r   rP   init_metadata)r#   r   rT   s     r   r   IPyflowKernel.init_metadata   s#    
 	!!&)w$V,,r   c                    >#    [        5       nU R                  (       a  XgS'   UR                  " UUUUU40 UD6I S h  vN n	U R                  5         U	$  N7f)Nrd   )rP   ri   rg   r   )r#   codesilentr   user_expressionsallow_stdinrd   rS   super_r_   rT   s             r   rg   IPyflowKernel.do_execute   sf      WF  $+y!))   C Js   :AAAr   r,   c                    >^^^^^^
 [        5       m
U R                  (       a  UTS'   UUUUU
U4S jn[        R                  " 5       R	                  U" U5      5      n	U R                  5         U	$ )Nrd   c                    >#    TR                   " U TTTT40 TD6n[        R                  " U5      (       a
  UI S h  vN $ U$  N7fr   )rg   re   isawaitable)cellr_   r   rS   r   r   r   r   s     r   _run_cell_func0IPyflowKernel.do_execute.<locals>._run_cell_func   sT     ''!$  &&s++!$9$J %s   8AAA)rP   ri   r/   r3   r9   r   )r#   r   r   r   r   r   rd   rS   r   resultr   rT   s     ```` `  @r   rg   r      s[     WF  $+y!  ++-@@PTAUVFMr   )ri   rN   N)rN   rH   )F)FNFN)#r   r   r   r   implementationr   r   shell_classr   implementation_versionrK   r   TypeTyper   r   rL   rM   rQ   classmethodrZ   r   rR   rw   r   r   r   r   re   iscoroutinefunctionrg   r6   r-   r7   r   __classcell__)rT   s   @r   rH   rH   O   s:   N12K(;?x 78?;?x 78?$(K&!(
 
 

d 
t 
 
3"  $);#M2; !; 
	; ; . .- ""=#;#;<<  !	 	2 	8""$  !	 	r   rH   r   ))r/   re   loggingtypingr   r   r   r   r   ipykernel.ipkernelr   IPythonr   	traitletsipyflowr	   ipyflow.flowr
   ipyflow.shell.zmqshellr   ipyflow.singletonsr   ipyflow.utils.ipython_utilsr   ipyflow.utils.misc_utilsr   ipyflow.versionr   ipykernel.commr   	getLoggerr   loggersetLevelWARNINGr   r*   r?   rF   rH   UsesIPyflowKernelr   r   r   <module>r      s       6 6 # ,    % = # C 4 '#			8	$   J  *cJ,,m cL 0}M r   