
    ^hj                        S SK r S SKrS SKrS SKJrJr  S SKJrJrJ	r	J
r
JrJrJr  S SKrS SKJr  S SK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*J+r+  S SK,J-r-  S SK.J/r/J0r0J1r1J2r2J3r3  \Rh                  " \55      r6\6Ro                  \Rp                  5        Sr9 " S S\Rt                  \5      r;\1" \\;5      r<g)    N)contextmanagersuppress)Callable	GeneratorListOptionalTupleTypeUnion)get_ipython)ExecutionResultInteractiveShell)TraceFinder)
singletons)	Interface)Cell)	Statement)	Timestamp)NotebookFlow)MemoizedOutputLevel)DataflowAstRewriter)InterruptTracer)DataflowTracerStackFrameManager)OutputRecorder)ast_transformer_contextinput_transformer_contextmake_mro_inserter_metaclassprint_purple'save_number_of_currently_executing_celli    c                   0  ^  \ rS rSr% Sr\\\      \S'   Sr	\\\      \S'   S2U 4S jjr
S2U 4S jjr\S3U 4S jj5       r\S\\   SS4S	 j5       r\S2S
 j5       rS rS rS\4S jr\S\R,                  S\S   4S j5       r\S 5       r   SS\\\R,                        S\\R6                     S\\   S\\\R6                     \\   4   4S jjr\ S4S\4S jj5       r S2S jr!\S\4S j5       r"S\S\4S jr#S\4S jr$    S5U 4S jjr%    S5S\S\&4U 4S jjjr'  S6S\S\&4U 4S  jjjr(S2S! jr)S2S" jr*S2S# jr+\S\S   4S$ j5       r,S%\-S\\   4S& jr. S4S'\S(\S)\\   S\\   4S* jjr/S2S+ jr0S2S, jr1S-\SS4S. jr2S/\3S\\44   SS4S0 jr5S1r6U =r7$ )7IPyflowInteractiveShell'   Nprev_shell_classreplacement_classreturnc                 F   > [         TU ]  " S0 UD6  U R                  5         g )N )super__init___initialize)selfkwargs	__class__s     X/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/shell/interactiveshell.pyr*    IPyflowInteractiveShell.__init__+   s    "6"    c                   > [         R                  " 5       U l        [         [        [        /U l        / U l        SU l        SU l        SU l	        / U l
        S[        R                  " [        TU ]8  5      R                  ;   U l        SU l        g )NFTcell_id)r   instancetee_output_tracerr   r   registered_tracerstracer_cleanup_callbackstracer_cleanup_pendingsyntax_transforms_enabledsyntax_transforms_only_saved_meta_path_entriesinspect	signaturer)   	_run_cell
parameters_has_cell_id_should_capture_output)r,   r.   s    r/   r+   #IPyflowInteractiveShell._initialize/   s    !/!8!8!:?

 9;%,1#/3&,1#;=%**57+<=HHH 	 ',#r1   c                 R   > [         TU ]  " U0 UD6n[        R                  " 5         U$ N)r)   r4   r   )clsargsr-   retr.   s       r/   r4    IPyflowInteractiveShell.instance@   s(    g//
r1   c                 t   [        5       nXl        U R                  c;  UR                  5         [        R
                  R                  5        H	  nX#l        M     [        R                  " 5         UR                  [        l        UR                  R                  c  [        =R                  S-  sl        Xl        g N   )r   r.   r$   r+   r   IPyflowShell	_walk_mro	_instancer   r4   execution_countr   _cell_counterdisplayhookexec_result)shell_classr$   ipysubclasss       r/   injectIPyflowInteractiveShell.injectF   s    m#''/OO&33==?%(" @ 00??&&.!#'7$r1   c                 `    U R                   c  g U R                   [        5       l        S U l         g rD   )r%   r   r.   )rS   s    r/   _maybe_eject$IPyflowInteractiveShell._maybe_ejectU   s)    ((0"-"?"?(,%r1   c                     U R                  5         [        U R                  5       H
  nU" 5         M     U R                  R                  5         SU l        g NF)_restore_meta_pathreversedr7   clearr8   )r,   cleanups     r/   cleanup_tracers'IPyflowInteractiveShell.cleanup_tracers\   sB    ! = =>GI ?%%++-&+#r1   c                 H    [         R                  " 5       R                  5       $ rD   )r   flowcell_counterr,   s    r/   re   $IPyflowInteractiveShell.cell_counterc   s     --//r1   c                 P    [         R                  " 5       nUR                  5       nU$ rD   )r   current_cellmake_ipython_name)r,   cur_cell	cell_names      r/   make_ipython_cell_name.IPyflowInteractiveShell.make_ipython_cell_namef   s$    $$&..0	r1   tracer)NNNc              #     ^ ^^^#    TR                   R                  mTR                   R                  m [        T[        5      (       a  [        T[
        5      (       a  UU U4S jTR                   l        UU U4S jTR                   l        S v   TTR                   l        TTR                   l        g ! TTR                   l        TTR                   l        f = f7f)Nc                  N   > TR                   TR                  ;   =(       a    T" U 6 $ rD   r.   r6   )rF   orig_passes_filterr,   ro   s    r/   <lambda>?IPyflowInteractiveShell._patch_tracer_filters.<locals>.<lambda>w   s(    &"2"2d6M6M"M #2*D1#2r1   c                  N   > TR                   TR                  ;   =(       a    T" U 6 $ rD   rr   )rF   orig_checkerr,   ro   s    r/   rt   ru   {   s(    f..$2I2II ( $'(r1   )r.   file_passes_filter_for_eventshould_instrument_file
isinstancer   r   )r,   ro   rw   rs   s   ``@@r/   _patch_tracer_filters-IPyflowInteractiveShell._patch_tracer_filtersk   s     
 $--JJ''>>	Cf&788J= =2   =
( 3 <NF96BF3 =OF96BF3s   -CAB3 #C3$CCc              #     ^^^^#    [         R                  m[         R                  m[         R                  R                  m[         R                  R                  mU4S jnU4S jnU4S jnU4S jn U[         l        U[         l        U[         R                  l        U[         R                  l        Sv   T[         l        T[         l        T[         R                  l        T[         R                  l        g! T[         l        T[         l        T[         R                  l        T[         R                  l        f = f7f)z
The purpose of this context manager is to disable this project's
tracer inside pyccolo's "exec()" functions, since it probably
will not work properly inside of these.
c            	         > [         R                  " 5       R                  5          T" U SUR                  SS5      S-   0UD6sS S S 5        $ ! , (       d  f       g = fNnum_extra_lookback_framesr   rK   r   r4   tracing_disabledpop)rF   r-   	orig_execs     r/   _patched_execGIPyflowInteractiveShell._patch_pyccolo_exec_eval.<locals>._patched_exec   V    ((*;;= .4jj9TVW.X/ 	 >==   A
Ac            	         > [         R                  " 5       R                  5          T" U SUR                  SS5      S-   0UD6sS S S 5        $ ! , (       d  f       g = fr   r   )rF   r-   	orig_evals     r/   _patched_evalGIPyflowInteractiveShell._patch_pyccolo_exec_eval.<locals>._patched_eval   r   r   c            	         > [         R                  " 5       R                  5          T" U SUR                  SS5      S-   0UD6sS S S 5        $ ! , (       d  f       g = fr   r   )rF   r-   orig_tracer_execs     r/   _patched_tracer_execNIPyflowInteractiveShell._patch_pyccolo_exec_eval.<locals>._patched_tracer_exec   V    ((*;;='.4jj9TVW.X/ 	 >==r   c            	         > [         R                  " 5       R                  5          T" U SUR                  SS5      S-   0UD6sS S S 5        $ ! , (       d  f       g = fr   r   )rF   r-   orig_tracer_evals     r/   _patched_tracer_evalNIPyflowInteractiveShell._patch_pyccolo_exec_eval.<locals>._patched_tracer_eval   r   r   N)pycexeceval
BaseTracer)	r,   r   r   r   r   r   r   r   r   s	        @@@@r/   _patch_pyccolo_exec_eval0IPyflowInteractiveShell._patch_pyccolo_exec_eval   s      HH	HH	>>..>>..				
	3$CH$CH"6CNN"6CNN CH CH"2CNN"2CNN !CH CH"2CNN"2CNNs!   A-D>4AC9 8AD>9AD;;D>tracersast_rewriterpathc                    Uc*  U R                    Vs/ s H  oDR                  5       PM     snOUn[        U5      S:X  a  S / 4$ U=(       d	    [        XS9n/ nU H#  nUR	                  UR                  U5      5        M%     X%4$ s  snf )Nr   )r   )r6   r4   lenr   extendmake_syntax_augmenters)r,   r   r   r   ro   all_syntax_augmenterss         r/   #make_rewriter_and_syntax_augmenters;IPyflowInteractiveShell.make_rewriter_and_syntax_augmenters   s      .2-D-DE-D6__-DE 	
 w<18O#N':7'N "F!(()F)F|)TU 22 Fs   Br9   c              #   $  #    U(       aZ  U=(       d?    [         R                  " 5       R                  U R                  5       U R	                  5       S9nU R                  X#S9u  pEO/ n[        U5         S v   S S S 5        g ! , (       d  f       g = f7f)N	module_id)r   r   )r   r4   make_ast_rewriterrm   re   r   r   )r,   r9   all_tracersr   _r   s         r/   &_syntax_transform_only_tracing_context>IPyflowInteractiveShell._syntax_transform_only_tracing_context   s      %' >+B+B+D+V+V++-9J9J9L ,W ,L (,'O'O# (P ($A$ %'!&'<= >==s   A/B1A?6	B?
B	Bc                     U R                   (       aL  [        R                  R                  SU R                   R	                  5       5        U R                   (       a  MK  g g )Nr   )r;   sys	meta_pathinsertr   rf   s    r/   r]   *IPyflowInteractiveShell._restore_meta_path   s<    ++MM  D$A$A$E$E$GH +++r1   c           
   #   	  #    U R                  5          U R                   Vs/ s H/  nU[        Ld  U R                  (       d  M  UR	                  5       PM1     nnU R
                  (       a  U R                  X5         S v   S S S 5        g U R                  5         [        S U 5       5      (       aP  [        S U 5       5      (       d9  [        R                  " 5         UR                  [        R                  " 5       5        U R                  5       n[        R                  " 5       R                  X@R                   5        U H.  nUR"                  R%                  U5        UR'                  5         M0     [(        R                  " 5       U;   a#  [(        R                  " 5       R+                  5         [,        R.                  " U Vs/ s H  o R1                  U5      PM     sn5         [3        U R4                  5      S:X  aL  [7        U5       H<  u  pRU R4                  R                  UR9                  U[3        U5      S-
  :H  S95        M>     OU H  nUR;                  SS9  M     [(        R                  " 5       R=                  X@R?                  5       S9nU R                  XUS	9   [A        U/5         U RC                  5          U RE                  5          S v   S S S 5        S S S 5        S S S 5        S S S 5        [(        R                  " 5       U;   a#  [(        R                  " 5       RG                  5         U RH                  (       a  U RK                  5         O[M        U5       H  nURO                  SS
9  M     [3        [P        RR                  5      S:  a  [U        [P        RR                  S   [V        5      (       a  U RX                  R                  [P        RR                  S   5        [P        RR                  R[                  S5        [3        [P        RR                  5      S:  a(  [U        [P        RR                  S   [V        5      (       a  M  S S S 5        g s  snf ! , (       d  f       g = fs  snf ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f! [\         a    [^        Ra                  S5        e f = f7f)Nc              3   8   #    U  H  oR                   v   M     g 7frD   )has_sys_trace_events.0ro   s     r/   	<genexpr>;IPyflowInteractiveShell._tracing_context.<locals>.<genexpr>   s     I[6..[   c              3   B   #    U  H  n[        U[        5      v   M     g 7frD   )rz   r   r   s     r/   r   r      s      HSfJv'899s   r   rK   )do_patch_meta_pathF)check_disabledr   )r   )check_enabledzencountered an exception)1before_enter_tracing_contextr6   r   rA   r4   r:   r   r]   anyr   clear_instanceappendrm   r   rd   set_name_to_cell_num_mappingrO   _tracing_enabled_filesaddresetr   init_symtabr   multi_contextr{   r   r7   	enumeratetracing_non_context_enable_tracingr   re   r   r   inner_tracing_contextfinish_cell_hookr8   ra   r^   _disable_tracingr   r   rz   r   r;   r   	Exceptionlogger	exception)r,   r9   ro   r   rl   idxr   s          r/   _tracing_context(IPyflowInteractiveShell._tracing_context   s    ))+E	 #555F/43N3N "!5  
 **@@-  '')I[III HS   &446&&'8'A'A'CD335IOO::// &--11)< & &&(K7'')557""BMN+++F3+N t445:'0'=55<<"6636#k:JQ:N3N 7  (> #...e.D #.-668JJ):):)<  K   @@- A  1,@!::<!%!;!;!= % "> = A "**,;"++->>@..((*"*;"7//e/D #8 cmm,q0Za(+6 6 55<<S]]1=MN))!,	 cmm,q0Za(+6 6A ;  ( O( ">!= =< A@ ! J  	78	s   S)S QQ$S <QS 	S)
D9S Q'S $B>R4"R"/R Q>	Q,Q>	R&R".ER4S S)S 
Q$ S #S)$S ,
Q;6Q>	>
RR
RR""
R1	,R44
S>S S)S !S&&S)codec                 Z    U R                   R                  U5      R                  5       S:H  $ )N )input_transformer_managertransform_cellstrip)r,   r   s     r/   _is_code_empty&IPyflowInteractiveShell._is_code_empty2  s'    --<<TBHHJbPPr1   c                 ,    U R                   nSU l         U$ r\   )rA   )r,   rG   s     r/   _reset_should_capture_output4IPyflowInteractiveShell._reset_should_capture_output5  s    ))&+#
r1   c                   > U R                   (       a  XVS'   U R                  n [        TU ]  " U4UUUS.UD6[	        U SS 5      " 5         UR                  5         $ ! [	        U SS 5      " 5         UR                  5         f = f)Nr3   store_historysilentshell_futuresr   c                      g rD   r(   r(   r1   r/   rt   2IPyflowInteractiveShell.run_cell.<locals>.<lambda>Q  s    $r1   )r@   r5   r)   run_cellgetattrdone_capturing_output)	r,   raw_cellr   r   r   r3   r-   r5   r.   s	           r/   r    IPyflowInteractiveShell.run_cell:  s      '9 22	67#++	
  D8,GI 335	 D8,GI 335s   A %Br   c                 \  >#    U R                   (       a  XVS'   U(       d  U R                  U5      (       a  [        TU ]  " U4UUUS.UD6I S h  vN nO1[	        5          U R
                  " U4UUS.UD6I S h  vN nS S S 5        U R                  5         W$  NH N ! , (       d  f       N$= f7f)Nr3   r   )r   r   )r@   r   r)   run_cell_asyncr    _ipyflow_run_cellrY   )	r,   r   r   r   r   r3   r-   rG   r.   s	           r/   r   &IPyflowInteractiveShell.run_cell_asyncW  s       '9T((22.++	
  C 9: 22"/"/ 	  ; 	
! ;:s<   AB,BB,B8B9B=B,B
B)%B,c                   >#    U R                   " U4SU0UD6nUb  Un[        R                  " 5       R                  nUR                  nUR                  5       R                  S5      nU=(       a    U(       + U l         U(       aF  U R                  U R                  =(       a$    UR                  5       R                  S5      (       + 5      O	[        5          UR                  SS 5      S Ln	 U R                  U5      n
U	(       a  XS'   [        R                  " 5       n[         TU ]D  " U	(       a  UR$                  OU
4USUS.UD6I S h  vN nUR&                  Ul        U(       a  UR                  5       R)                  5       S   [+        S5      S  R                  5       n[        R                  " 5       R,                  R/                  U[1        5       R2                  R5                  U5      5        S S S 5        U(       a  U R7                  U5        OCWR8                  b6  UR8                  R:                  Ul        UR8                  R<                  Ul        U R?                  S 5        W$ ! [         a    Un
 GNyf = f GN2! , (       d  f       N= f! [         aB  nUR@                  (       a  [B        RE                  S5        U R?                  U5         S nAW$ S nAff = f7f)	Nr   z	%%capturez%%transformed_cellFr   r   zexception occurred)#before_run_cellr   rd   mut_settingsdataflow_enabledr   
startswithrA   r   r9   r   r   r   r   r   ri   r)   r   r   error_in_exec
splitlinesr   global_scopeupsert_symbol_for_namer   user_nsgetafter_run_cell	prev_cellraw_static_parentsraw_dynamic_parentson_exceptionis_dev_moder   r   )r,   r   r   r   r-   maybe_new_contentsettingsshould_traceis_already_recording_outputhas_transformed_cellr   cellrG   outvarer.   s                  r/   r   )IPyflowInteractiveShell._ipyflow_run_cellv  s     !00
$1
5;
 ((H??$1100&.nn&6&A&A+&N#&2&V;V7V#.	$   %%22 >$NN,77== Z  (.zz2Dd'KSW'W$0'+':':8'D$ (1A-.((*!G2%9DMM?O"/ "/	
   &)%6%6". (335a8[9I9KLRRT  OO%22II 5 5 9 9& A= D ##H-+*...*K*K'+/>>+M+M( d#
E ! 0'/$0#   N  	!##  !56a   
	!s|   A:K>AJ I<+I&<AI<I9B'I</A$J K&I62I<5I66I<<
J
J 
K7KKKKc                 ,    [         R                  " SS9  g )NT)use_comm)r   r4   rf   s    r/   after_init_class(IPyflowInteractiveShell.after_init_class  s    t,r1   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)zc
Don't actually change the metadata; we just want to get the cell id
out of the execution request.
metadatacellIdNtagsr(   )r   rd   r   set_active_celltupleset_tags)r,   parentflow_r  r3   r  s         r/   before_init_metadata,IPyflowInteractiveShell.before_init_metadata  se    
 !::j"-,,x.!!'*X\\&"-.tr1   c                 b    [         R                  " 5       nUR                  R                  5         g rD   )r   rd   updated_symbolsr_   )r,   r  s     r/   r   4IPyflowInteractiveShell.before_enter_tracing_context  s     !##%r1   c              #   n  #    [         R                  " 5       R                  5         [         R                  " 5       R	                  [
        SSSS 40S9   [         R                  " 5       R	                  [
        S5         S v   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nrun_line_magic_stack_depthrK   c                     U S-   $ rJ   r(   )ds    r/   rt   ?IPyflowInteractiveShell.inner_tracing_context.<locals>.<lambda>  s    AEr1   )kwarg_transformsrun_cell_magic)r   rd   init_virtual_symbolsro   dataflow_tracing_disabled_patchr   rf   s    r/   r   -IPyflowInteractiveShell.inner_tracing_context  s     ..0 @@,q/.BC A 

 ""$DD "2 
 

 
 
s6   AB5*B$=BB$
	B5
B!	B$$
B2.B5r  c                    UR                   nUc  g UR                  5       nUc  g UR                  UR                  =(       d    S   U   u  nnnnUc   eUc   e[	        UR                  5       R                  5       H2  u  px[        R                  " U[        U R                  5       U5      S9  M4     X1l        [        S5        U Hq  u  pnU	R                  ULa)  XR                  U	R                  '   U	R!                  U5        [        U R                  5       U
R"                  5      nU	R%                  US9  Ms     UR&                  [(        R*                  :X  a  Xal        UR/                  SS9  UR1                  US9$ )Nr   )	timestampzLDetected identical symbol usages to previous run; reusing memoized result...F)render_out_expr)ctr)r   get_memoized_counter_memoized_executionsexecuted_contentr   to_astbodyr   create_and_trackr   re   skipped_due_to_memoization_ctrr   objr   nameupdate_obj_refstmt_numrefreshmemoized_output_levelr   VERBOSEcaptured_outputshow get_transformed_memoized_content)r,   r  r   identical_result_ctrr   memoized_outputsmemoized_display_outputr   	stmt_nodesymout_tsvaluenew_updated_tss                r/   _get_content_for_memoized_run5IPyflowInteractiveShell._get_content_for_memoized_run  su   NN	#88:' **4+@+@+FBG 
	
#  +++&222 ((:(:;NC&&Yt/@/@/BC%H <
 /C+Z	
 #3Cwwe#).SXX&""5)&t'8'8':FOOLNKK.K1 #3 %%)<)D)DD#: #(((?449M4NNr1   cell_contentr   r3   c           	         Un[         R                  " U5      u  nnUb  Un[        R                  " 5       nUR                  n	U	R
                  [        R                  :X  a#  [        U SS 5      c  [        R                  U	l        U	R                  U l
        U	R                  U l        UR                  5         UR                  5         UR                  b&  [        R!                  UR                  5        S Ul        Ub  X8l        UR"                  n
U
S L nU
c  [         R$                  " 5       n
[         R&                  " U
UUR(                  UUUS9nXl        UR,                  Usol        UR.                  U
sol        UR                  R0                  (       d  g U R3                  U5      nUb  U$ [4        U R6                  ;   a   UR9                  U5        UR>                  nUR                  R@                  (       aQ  UbN  X4UU4:w  aE  [        RC                  SU5        S Ul        URD                  c  gSURD                  RF                   S3$ U$ ! [:         a    [        R=                  S5         Nf = f)Nkernel)validate_ipython_counterplaceholder_idr8  z"exception occurred during precheckzndetected out of order usage of cell [%d]; showing previous output if any (run again to ignore force execution)passzOut.get())$r   %get_memoized_content_and_output_levelr   rd   r   	interfacer   UNKNOWNr   IPYTHONr9   r:   $test_and_clear_waiter_usage_detected2test_and_clear_out_of_order_usage_detected_counter_saved_debug_messager   erroractive_cell_idnext_exec_counterr1  _tagsr.  last_executed_contentlast_executed_cell_idr   rE  r   r6   _safety_precheck_cellr   r   #out_of_order_usage_detected_counterwarn_out_of_order_usageswarningr   cell_ctr)r,   rG  r   r3   _kwargsoriginal_contentnew_cell_contentr8  r  r  to_create_cell_idrK  r  last_contentlast_cell_idmemoized_run_contentused_out_of_order_counters                    r/   r   'IPyflowInteractiveShell.before_run_cell  se    ( 66|D	
!'+L!%%)"3"33h-5!*!2!2H)1)K)K&&.&E&E#224@@B%%1LL334)-E&#* !00*d2$ $ 6 6 8$$KK%2)"7
 !- '' 	21
 '' 	21
 !!22#AA$G+'' T444G++D1 ).(Q(Q%"";;-9&5    E- )-%>>)!%dnn&=&=%>a@@-  G  !EFGs   ?I
 
I,+I,c                    [         R                  " 5       nUR                  nUR                  S:  Ga  Uc   eUR	                  UR	                  5       S9  [         R
                  " UR                  5      nUc   e[        R                  " 5       R                  R                  5        GH  n[        UR                  R                  5       5       H  u  pEUR                  XE5        M     UR                  R                  5        H  u  pEUR                  XE5        M     [        UR!                  5       UR!                  5       5       Hv  u  pg[        UR                  R                  5       5       H  u  pEUR                  XE5        M     UR                  R                  5        H  u  pEUR                  XE5        M     Mx     GM     g UR"                  (       a  UR%                  5         g g )Nr   )override)r   ri   r   r2  r/  
at_counterr   rd   r   iter_slicing_contextslistraw_parentsitemsremove_parent_edgesadd_parent_edgeszip
statementsis_memoized_maybe_memoize_params)r,   r  r   r   r  symsstmt	prev_stmts           r/   _handle_memoization+IPyflowInteractiveShell._handle_memoization\  s}     "NN	..2(((KK!1!1!3K4(K(KLI(((__&33IIK$()9)9)?)?)A$BLF,,V: %C$-$9$9$?$?$ALF))&7 %B'*4??+<i>R>R>T'UOD(,T-=-=-C-C-E(F00> )G(1(=(=(C(C(E--f; )F (V L &&( r1   c                    [         R                  " 5       nS n[        R                  " 5       n[	        UR
                  5      S:  a#  [        R                  " UR
                  S   5      nUR                  R                  (       a7  UR                  b*  Ub'  UR                  b  UR                  R                  5         Ubf  UR                  nUbW  [        S UR                   5       5      [	        UR                  5      -   [	        UR                  5      -   [         :  a  S Ul
        UR                  c  U R"                  R$                  Ul
        g g )N   c              3   v   #    U  H/  n[        S  UR                  R                  5        5       5      v   M1     g7f)c              3   8   #    U  H  n[        U5      v   M     g 7frD   )r   )r   datums     r/   r   CIPyflowInteractiveShell._handle_output.<locals>.<genexpr>.<genexpr>  s     E0DuE

0Dr   N)sumdatavalues)r   outputs     r/   r   9IPyflowInteractiveShell._handle_output.<locals>.<genexpr>  s2      "2 E0B0B0DEEE"2s   79)r   rd   r   ri   r   historyat_timestampr   r]  r\  r:  r;  r  outputsstdoutstderr_CAPTURE_OUTPUT_SAVE_LIMITr5   capture_output)r,   r  r   r  captureds        r/   _handle_output&IPyflowInteractiveShell._handle_outputq  s   !	  "t||!))$,,r*:;I7799E%))5%%**,  00H# "*"2"2  hoo&	'
 hoo&' -- -1	)'#'#9#9#H#HD  (r1   _cell_contentc                 $   U R                  5         [        R                  " 5       nUR                  R                  (       d  g UR                  5        Vs/ s H4  nUR                  R                  [        R                  " 5       :X  d  M2  UPM6     nnU Vs1 s H  o3R                  (       d  M  UiM     nnU H
  nSUl
        M     UR                  U5        U R                  5         UR                  U5        UR                  5         g s  snf s  snf r\   )r  r   rd   r   r   all_symbolsr)  cell_numr   exec_counter_is_dangling_on_edges_resync_symbolsry  _remove_dangling_parent_edgesgc)r,   r  r  rA  this_cell_symbolsthis_cell_dangling_symbolss         r/   r   &IPyflowInteractiveShell.after_run_cell  s     !!!22 ((*
*}}%%):):)<< * 	 
 -&
,C0I0IC, 	# &
 .C(-C% ./0  "++,FG


&
s   1D	DD-Dr	  c                 L    [         R                  " 5       R                  U5        g rD   )r   rd   -get_and_set_exception_raised_during_execution)r,   r	  s     r/   r   $IPyflowInteractiveShell.on_exception  s    GGJr1   )	r@   r;   rA   r6   r9   r:   r5   r7   r8   )r&   N)r&   r"   rD   )FFTN)FT)8__name__
__module____qualname____firstlineno__r$   r   r
   r   __annotations__r%   r*   r+   classmethodr4   rV   rY   ra   re   strrm   r   r   r   r   r{   r   r   AstRewriterr	   r   r   boolr   r]   r   r   r   r   r   r   r   r  r  r   r   r   rE  r   ry  r  r   r   r   r   __static_attributes____classcell__)r.   s   @r/   r"   r"   '   s   9=ht$456=:>x%5 67>,"  
 8d3C.D 8 8 8 - -,0 
 CC 
#	$C C. 93 93z 3726"	3$s~~./3 s/3 sm	3
 
x($x.8	93( IM)- I H$ H HTQ3 Q4 Qd  6@  
 D 	AA 
A AF-& 
y1A'B 
 
&O$ &O8C= &OX "&	XX X #	X 
#Xt)*I:C D .KeD#y$89 Kd K Kr1   r"   )=r<   loggingr   
contextlibr   r   typingr   r   r   r   r	   r
   r   pyccolor   IPythonr   IPython.core.interactiveshellr   r   pyccolo.import_hooksr   ipyflowr   ipyflow.configr   ipyflow.data_model.cellr   ipyflow.data_model.statementr   ipyflow.data_model.timestampr   ipyflow.flowr   ipyflow.memoizationr   !ipyflow.tracing.flow_ast_rewriterr    ipyflow.tracing.interrupt_tracerr   ipyflow.tracing.ipyflow_tracerr   r   ipyflow.tracing.output_recorderr   ipyflow.utils.ipython_utilsr   r   r   r   r    	getLoggerr  r   setLevelWARNINGr  rL   r"   UsesIPyflowShellr(   r1   r/   <module>r     s      
 / J J J   K ,  $ ( 2 2 % 3 A < L :  
		8	$    - 	Kj557G 	KD /- r1   