
    ^hؓ                     d   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
JrJrJrJrJrJr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JrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&J'r'  S S	K(J)r)  S S
K*J+r+J,r,J-r-J.r.J/r/  S SK0J1r1J2r2J3r3J4r4  S SK5J6r6J7r7  S SK8J9r9J:r:J;r;  S SK<J=r=  S SK>J?r?J@r@  S SKAJBrB  S SKAJCrD  \
(       a  S SKEJFrF  S SKGJHrH  \R                  " \J5      rK\KR                  \R                  5        \2rN " S S\5      rO " S S\;5      rP\Q" \15      S :X  a  \1R                  " \P5        g\P\1S '   g)    N)defaultdict)contextmanager)TYPE_CHECKINGAnyDict	FrozenSet	GeneratorIterableListMapping
NamedTupleOptionalSetTupleTypecast)get_ipython)LiveSymbolRef	SymbolRefcompute_live_dead_symbol_refs)get_live_symbols_and_cells_for_referencesget_symbols_for_references)ResolvedSymbol)ExecutionScheduleFlowDirection	Interface)	Timestamp)MemoizedCellExecutionMemoizedInputMemoizedOutputMemoizedOutputLevelparse_verbosity)_CodeCellContainercells
statementssymbols)flowshell)
FormatTypeSliceSliceableMixin)IPyflowCapturedIO)IdTypeTimestampOrCounter)_IPY)cell_counter)	Statement)Symbolc                       \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\   \S'   \S   \S'   \S   \S'   \	\S	'   S
r
g)CheckerResultC   liveunresolved_live_refs
used_cells
live_cellsr2   deadmodified
typechecks N)__name__
__module____qualname____firstlineno__r   r   __annotations__r   intbool__static_attributes__r=       Q/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/data_model/cell.pyr4   r4   C   sF    
n
m,,CC
h-(mrF   r4   c                   
   \ rS rSr% 0 r\\S 4   \S'   0 r\\	S 4   \S'   Sr
\	\S'   0 r\\\	4   \S'   0 r\\	\4   \S'   \" \5      r\\\S    4   \S'   \" \5      r\\\\   4   \S	'   S
r\S    \S'   0 r\\\\	\4   4   \S'      SS\S\	S\S\\S4   S\S    S\S\\   SS
4S jjr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\ 4S j5       r!\S\S    4S j5       r"\S\4S j5       r#\S\4S j5       r$\S\4S j5       r%\S\	4S  j5       r&\S\'\\(S!   4   4S" j5       r)\S\'\\(S!   4   4S# j5       r*S\\\ S 4      4S$ jr+S\,S%   4S& jr-\.S' 5       r/\.S( 5       r0S) r1S* r2S+ r3SS,\S-\SS
4S. jjr4S/S!S0\	SS
4S1 jr5\S\4S2 j5       r6\S\4S3 j5       r7S4\S\4S5 jr8S6\SS
4S7 jr9\.S6\S\\   4S8 j5       r:SS9 jr;\.    SS\S\S\\S4   S:\S;\S\S\\   SS 4S< jj5       r<\.S=\\\	4   4S> j5       r=\.S\>S?   4S@ j5       r?\.S\>S?   4SA j5       r@\.SB\\\,\   4   SC\\\,\   4   4SD j5       rA\.\BS\>SE   4SF j5       5       rC\.S\	4SG j5       rD\.S\	4SH j5       rE\.S\>S?   4SI j5       rF\.S\>\S
S
4   4SJ j5       rG\.S0\	SS 4SK j5       rH\.S0\	SS 4SL j5       rI\.SM\	S\S    4SN j5       rJ\.SM\	S\S    4SO j5       rK\. SSP\LSQ\\	   SS 4SR jj5       rM\.S\SS 4SS j5       rN\.S\S\S    4ST j5       rO\.S\4SU j5       rP\.S6\S\S    4SV j5       rQ\RS\S\\\   \\   4   4SW j5       rS\.S\S\\   4SX j5       rT\.S\S\\   4SY j5       rU\S\4SZ j5       rV\S\4S[ j5       rWS\\	   4S\ jrX SS0\\	   S\\   4S] jjrY SS^\\   S_\\   S\\\ZR                     \4   4S` jjr\SS_\\   S\\\4   4Sa jjr]S\4Sb jr^S\4Sc jr_\BSd 5       r`SSe\\aR                     S\aR                  4Sf jjrc\S\	4Sg j5       rd\S\	4Sh j5       re\S\4Si j5       rf\S\4Sj j5       rg\.SSk j5       rh\.SSl j5       ri   SSm\\j   Sn\So\Sp\\S!      S\	4
Sq jjrkSr\S\\\l   \\m   \\m   \4   4Ss jrn SSr\S\o4St jjrpSu\\	   S\\\\	   4   4Sv jrqSw\\	   Sm\\j   S\4Sx jrrSw\\	   Sm\\j   S\4Sy jrs\Sz 5       rtS{ ruS\\    4S| jrv\.S}\wS    S\,S%   4S~ j5       rxS\,S%   4S jry    SS\S\S\\z\{      S\S\|4
S jjr}   SS\S\\z\{      S\S\|4S jjr~S r SS\S\S\	S\4S jjrSrg
)CellM   _current_cell_by_cell_id_cell_by_cell_ctrr   _cell_counter_position_by_cell_id_cell_id_by_position_cells_by_tag_reactive_cells_by_tagN_override_current_cell_memoized_executionscell_idcell_ctrcontenttags.	prev_cellplaceholder_idmemoized_output_levelreturnc                    Xl         X l        S U l        S U l        S U l        S U l        US:  a  U/O/ U l        S U l        X0l        S U l	        S U l
        X@l        XPl        S U l        S U l        [        5       U l        0 U l        0 U l        0 U l        0 U l        [        5       U l        [        5       U l        [        5       U l        [        5       U l        [        5       U l        [5        [        5      U l        S U l        [;        5       R<                  R>                  (       a  S OSU l         SU l!        S U l"        X`l#        Xpl$        SU l%        g )NTF)&rT   rU   last_check_contentlast_check_cell_ctrlast_check_resulterror_in_exechistoryexecuted_contentcurrent_contentlast_ast_contentcaptured_outputrW   rX   override_live_refsoverride_dead_refssetreactive_tagsraw_dynamic_parentsraw_dynamic_childrenraw_static_parentsraw_static_childrenused_symbolsstatic_removed_symbolsstatic_writesdynamic_writes_pending_dynamic_writesr   "_used_cell_counters_by_live_symbol_cached_astr'   settingsmark_typecheck_failures_unsafe_cached_typecheck_result_ready_extra_stmt_placeholder_idrZ   skipped_due_to_memoization_ctr)selfrT   rU   rV   rW   rX   rY   rZ   s           rG   __init__Cell.__init__X   s.     '%1526 :>6:0828*2/3$+/3<@%)	"7;7;'*u@B AC!?A@B +.558U#,/E-0U69e$LWM
/ 26FOOBBD 	% "/3-%:".0+rF   c                     U R                   $ N)rT   r}   s    rG   idCell.id   s    ||rF   c                     U R                   S L$ r   )ra   r   s    rG   is_errorCell.is_error   s    !!--rF   c                 4    U R                   U R                  :g  $ r   )rd   rc   r   s    rG   is_dirtyCell.is_dirty   s    ##t'<'<<<rF   c                     U R                   S L$ r   )rZ   r   s    rG   is_memoizedCell.is_memoized   s    ))55rF   c                 .    [        U R                  S5      $ Nr]   )r   rU   r   s    rG   	timestampCell.timestamp   s    ++rF   c                     U R                   $ r   )rX   r   s    rG   prev	Cell.prev   s    ~~rF   c                 >    U R                  5       R                  5       $ r   )sanitized_contentstripr   s    rG   text	Cell.text   s    %%'--//rF   c                     U R                   $ r   r{   r   s    rG   is_placeholder_idCell.is_placeholder_id   s    ###rF   c                     [        5       R                  R                  [        R                  [        R
                  4;   a  gU R                  S[        S5      4;  $ )NTr]   inf)r'   mut_settings	interfacer   IPYTHONUNKNOWNpositionfloatr   s    rG   
is_visibleCell.is_visible   sD    6((Y->->	@Q@Q,RR}}Ru$666rF   c                 X   U R                   R                  U R                  S5      nUS:X  a}  [        5       R                  nUR
                  [        R                  :X  aK  UR                  [        R                  :X  a-  [        U R                  [        5      (       d   eU R                  nU$ r   )rN   getrT   r'   r   
flow_orderr   IN_ORDERr   r   r   
isinstancerC   )r}   posrv   s      rG   r   Cell.position   s    ''++DLL"="9v**H##}'='==&&)*;*;;!$,,4444ll
rF   r2   c                 <   U R                   n[        5       R                  R                  [        R
                  :X  aO  UR                  5        VVs0 s H2  u  p#U R                  U R                  U5      R                  :  d  M0  X#_M4     nnn[        SU5      $ s  snnf Nz"Mapping[IdType, FrozenSet[Symbol]])
raw_parentsr'   r   r   r   r   itemsr   from_idr   )r}   parentssidsymss       rG   directional_parentsCell.directional_parents   s     ""6))]-C-CC ")!0IC==4<<#4#=#== 	!0  
 8'BB   /BBc                 <   U R                   n[        5       R                  R                  [        R
                  :X  aO  UR                  5        VVs0 s H2  u  p#U R                  U R                  U5      R                  :  d  M0  X#_M4     nnn[        SU5      $ s  snnf r   )
raw_childrenr'   r   r   r   r   r   r   r   r   )r}   childrenrT   r   s       rG   directional_childrenCell.directional_children   s    $$6))]-C-CC &.^^%5%5MG==4<<#8#A#AA %5  
 8(CCr   c                    [        5       nUR                  R                  [        R                  :w  a  g 0 nUR                  R                  5        H  nU R                  R                  5        H  u  pEXPR                  -
  UR                  1-
  n[        5       R                  U5      nU HG  nUR                  UR                  UR                  U5      R                  :  d  M9  XrUR                  '   MI     M     M     U$ r   )r'   r   r   r   r   iter_slicing_contextsr   r   rp   fake_edge_symr$   r   r   r   shallow_timestamp)	r}   flow_latest_par_by_ts_par_idraw_symsr   parentsyms	            rG   get_latest_parent_by_ts_map Cell.get_latest_parent_by_ts_map   s    ((M,B,BB46##99;A$($<$<$B$B$D "="==ATAT@UU0C+//0E0EvNWWX CI)>)>?   %E <  rF   r1   c                     / n[        [        U R                  5       R                  5      5       H6  nUR	                  [        5       R                  U R                  U5      5        M8     U$ r   )rangelento_astbodyappendr%   from_timestamprU   )r}   stmtsstmt_nums      rG   r%   Cell.statements   sK    #%c$++-"4"456HLL44T]]HMN 7rF   c                     0 U l         0 U l        SU l        0 U l        U R                  R                  5         U R                  R                  5         g Nr   )rK   rL   rM   rN   rP   clearrQ   clss    rG   r   
Cell.clear   sF    ')$ "#% !""((*rF   c                 V    [        S U R                  R                  5        5       S S9$ )Nc              3   L   #    U  H  nUR                   (       d  M  Uv   M     g 7fr   r   ).0cells     rG   	<genexpr>,Cell.with_placeholder_ids.<locals>.<genexpr>   s"      AD'' As   $	$c                     U R                   $ r   rU   r   s    rG   <lambda>+Cell.with_placeholder_ids.<locals>.<lambda>   s    T]]rF   keysortedrK   valuesr   s    rG   with_placeholder_idsCell.with_placeholder_ids   s0    88??A
 +
 	
rF   c                     U R                   $ r   )rc   r   s    rG   __str__Cell.__str__   s    $$$rF   c                 j    SU R                   R                   SU R                   SU R                   S3$ )N<z[ctr=z,id=z]>)	__class__r>   rU   rT   r   s    rG   __repr__Cell.__repr__  s1    4>>**+5tDLL>QSTTrF   c                 D    [        U R                  U R                  45      $ r   )hashrT   rU   r   s    rG   __hash__Cell.__hash__  s    T\\4==122rF   new_idupdate_edgesc                 
   U R                   nXl         SU l        U R                  b  U R                  R                  USS9  U(       d  g U R                  R                  US 5      nUb  X@R                  U'   U R                  R                  US 5      nUb  XPL d   eXPR                  U'   U R                  R                  5        H,  nX6;   d  M
  UR                  U5        UR                  U5        M.     [        5       R                  R                  5        H  nU R                  R                  5        HP  nU R!                  U5      n	U	R"                  R%                  5        V
Vs0 s H  u  pX:X  a  UOU
U_M     snn
U	l        MR     U R"                  R                  5        HP  n
U R!                  U
5      nUR                  R%                  5        VVs0 s H  u  pX:X  a  UOUU_M     snnUl        MR     M     g s  snn
f s  snnf )NF)r   )rT   r{   rX   	update_idrN   poprK   rQ   r   discardaddr'   r   r   r   keysr   r   r   )r}   r   r   old_idr   current_cellreactive_cellsr   pidr   cidr   childs                rG   r   Cell.update_id  s   $>>%NN$$V%$@''++FD9?03%%f-4488F#'''4@))&1"99@@BN'&&v.""6* C $$::<A'',,.c* &,%8%8%>%>%@'%@	  #}V#<%@'# / ((--/S) &+%6%6%<%<%>%%>	  #}V#<%>%! 0 ='%s   #G9
G?
r   ctrc                 N    US:  a  U R                   U   R                  U5        g g r   )rt   r   )r}   r   r	  s      rG   add_used_cell_counterCell.add_used_cell_counter(  s'    733C8<<SA rF   c                      U R                   S:  $ r   r   r   s    rG   is_executedCell.is_executed,  s    }}r!!rF   c                     U R                   $ r   ry   r   s    rG   is_readyCell.is_ready0  s    {{rF   	new_readyc                 *    U R                   nXl         U$ r   r  )r}   r  	old_readys      rG   	set_readyCell.set_ready4  s    KK	rF   tagc                     U R                   R                  U5        U R                  U   R                  U R                  5        g r   )rj   r   rQ   rT   )r}   r  s     rG   mark_as_reactive_for_tagCell.mark_as_reactive_for_tag9  s3    s###C(,,T\\:rF   c                 J    U R                   R                  U[        5       5      $ r   )rQ   r   ri   r   r  s     rG   get_reactive_ids_for_tagCell.get_reactive_ids_for_tag=  s    ))--c3599rF   c                    U R                   (       a  g 0 n[        5       R                  R                  5        H  nU R                  R                  5        H  nU H  nXA;   a  M
  UR                  nUR                  U R                  :X  a  M2  UR                  (       a  UR                  R                  (       d  M`  UR                  U R                  :  a        g [        UUUR                  UR                  UR                  5       S   5      X'   M     M     M     0 n[        5       R                    Hv  nUR                  UR"                  UR                  '   UR                  (       a  UR                  R                  (       d  MT  [%        XDR&                  UR(                  5      Xd'   Mx     U R*                  c   eU R,                  c   e[/        [1        UR                  5       5      [1        UR                  5       5      U R*                  U R                  5      U R2                  R5                  U R,                  0 5      U R                  '   g r   )r   r'   r   r   r   r   r   cell_numrU   is_user_accessiblecontaining_scope	is_globalr   memoize_timestampobj_idmake_memoize_comparableupdated_symbols last_updated_timestamp_by_obj_idr    r   objrf   rc   r   listrS   
setdefault)r}   inputsr   edgesr   sym_tsoutputss          rG   _maybe_memoize_paramsCell._maybe_memoize_paramsA  s   ==02$$::<A))002 C}  ]]F$--7 22#:N:N:X:X 4==8"/--

335a8#FK ! 3 =* 356))C?B}}C00<))1E1E1O1O)#/D/DcggNGL	 *
 ##///$$000 "!!"  MM	
 	!!,,T-B-BBGMM	
rF   bump_cell_countervalidate_ipython_counterc           
      >   U(       a  U =R                   S-  sl         U R                   nU(       a  U[        5       :w  av  [        5       R                  n	[	        5       R
                  (       a5  [        R                  SU[        5       5        [        R                  SU	5        U	=n=U l         [        l	        OSnU R                  U5      n
US:X  a  U
b   eU
b*  [        [        U5      [        U
R                  5      -  5      nU " UUUUU
UUS9nU
b  U
R                  UR                  -   Ul        U
R                  Ul        U
R                   Ul        U
R                   H!  nU R"                  U   R%                  U
5        M#     U
R&                   H+  nU R(                  U   R%                  U
R*                  5        M-     U H!  nU R"                  U   R-                  U5        M#     US:  a  XR.                  U'   U
c  S OU
R0                  nUb  X:  a  XR2                  U'   U$ )N   zAmismatch between cell counter (%d) and saved ipython counter (%d)z!fixing up to actual counter of %dr]   )rX   rY   rZ   )rM   ipy_cell_counterr   execution_countr'   is_dev_modeloggerwarningr/   r0   from_id_nullabletupleri   rW   rb   rn   rl   rP   r   rj   rQ   rT   r   rL   rU   rK   )r   rT   rV   rW   r4  r5  rY   rZ   rU   actual_counterrX   r   r  prev_cell_ctrs                 rG   create_and_trackCell.create_and_trackk  s    "((H'H8H8J,J!,!>!>6%%NN[ (*
 NN#FWCQQQ3,t/@H((1	r>$$$ TS%889D)"7
  $,,t||;DL'0'D'DD$(1(F(FD% ~~!!#&..y9 & ..**3/77	8I8IJ /Cc"&&t, b=.2!!(+ ) 1y7I7I H$<48((1rF   order_index_by_cell_idc                 n   [        5       R                  nUR                  [        R                  :X  a}  UR
                  [        R                  :w  a_  U R                  R                  5         U R                   H5  nX1;  a  [        [        [        S5      5      X'   M%  X0R                  X   '   M7     Xl
        g )Nr   )r'   r   r   r   r   r   r   r   rO   r   rN   r   rC   r   )r   rC  rv   rT   s       rG   set_cell_positionsCell.set_cell_positions  s    6&&=#9#99""i&7&77$$**,3386:3e6M*3PW,,-C-LM	 4
 $: rF   )rI   NNc              #      #    [        U R                  R                  5       5       H#  nU R                  U R                  U   5      v   M%     g 7fr   )r   rO   r  r   r   r   s     rG   'iterate_over_notebook_in_position_order,Cell.iterate_over_notebook_in_position_order  s=     #22779:C++c66s;<< ;s   AAc              #   f   #    [        U R                  R                  5       S S9 S h  vN   g  N7f)Nc                     U R                   $ r   r   r   s    rG   r   =Cell.iterate_over_notebook_in_counter_order.<locals>.<lambda>  s    DMMrF   r   r   r   s    rG   &iterate_over_notebook_in_counter_order+Cell.iterate_over_notebook_in_counter_order  s,     ((//17Q
 	
 	
s   '1/1override_live_refs_by_cell_idoverride_dead_refs_by_cell_idc                     UR                  5        H  u  p4U R                  U5      nXEl        M     UR                  5        H  u  p6U R                  U5      nXel        M     g r   )r   r   rg   rh   )r   rP  rQ  rT   rg   r   rh   s          rG   set_override_refsCell.set_override_refs  s^     ,I+N+N+P'G;;w'D&8# ,Q ,I+N+N+P'G;;w'D&8# ,QrF   )NNNc              #      #    U R                   n [        5       R                  R                  [        R
                  :X  a  U R                  0 5        S v   U R                  U5        g ! U R                  U5        f = f7fr   )rN   r'   r   r   r   	ANY_ORDERrE  )r   orig_position_by_cell_ids     rG   3_override_position_index_for_current_flow_semantics8Cell._override_position_index_for_current_flow_semantics  sc     
 $'#;#; 	=v""--1H1HH&&r*""#;<C""#;<s   A=AA' A='A::A=c                     U R                   $ r   )rM   r   s    rG   exec_counterCell.exec_counter  s       rF   c                 (    U R                  5       S-   $ Nr7  )r[  r   s    rG   next_exec_counterCell.next_exec_counter  s    !A%%rF   c              #   T   #    U R                   R                  5        S h  vN   g  N7fr   )rK   r   r   s    rG   current_cells_for_each_idCell.current_cells_for_each_id  s     //66888s   (&(c              #      #    U R                   R                  5        H#  nUR                  S:  d  M  UR                  v   M%     g 7fr   )rL   r   rU   rT   )r   r   s     rG   all_executed_cell_idsCell.all_executed_cell_ids  s4     ))002D}}q ll" 3s
   ,AAc                      U R                   U   $ r   )rL   r   r	  s     rG   
at_counterCell.at_counter  s    $$S))rF   c                 $    U R                  U5      $ r   )ri  rh  s     rG   from_counterCell.from_counter  s    ~~c""rF   r   c                 z    U R                   R                  5        H  u  p#X1:X  d  M  U R                  U5      s  $    g r   )rN   r   r   )r   r   rT   cell_poss       rG   at_positionCell.at_position  s8    !$!9!9!?!?!AG{{7++ "B rF   c                 $    U R                  U5      $ r   )rp  rH  s     rG   from_positionCell.from_position  s    s##rF   tsr   c                     Ub   e[        U[        5      (       a  U R                  UR                  5      $ U R                  U5      $ r   )r   r   ri  r"  )r   ru  r   s      rG   at_timestampCell.at_timestamp  s?     b)$$>>"++..>>"%%rF   c                      U R                   U   $ r   rK   r   rT   s     rG   r   Cell.from_id  s    ++G44rF   c                 8    U R                   R                  U5      $ r   )rK   r   r{  s     rG   r=  Cell.from_id_nullable  s    ++//88rF   c                     XR                   ;   $ r   rz  r{  s     rG   has_idCell.has_id  s    6666rF   c                 J    U R                   R                  U[        5       5      $ r   )rP   r   ri   r  s     rG   from_tagCell.from_tag  s      $$S#%00rF   c                 &   U R                  5       R                  SS9n[        U5      S:X  a  gUS   R                  5       nSnUR	                  U5      (       d  gSR                  USS  5      [        U[        U5      S  R                  5       5      4$ )NT)keependsr   NNz	%%memoize r7  )r   
splitlinesr   lstrip
startswithjoinr"   )rV   
cell_lines
first_linememoize_magics       rG   %get_memoized_content_and_output_level*Cell.get_memoized_content_and_output_level  s     ]]_///>
z?a]))+
$$$]33wwz!"~&s=)+,224)
 
 	
rF   c                 *    U R                  U5      S   $ r   r  r   rV   s     rG   get_memoized_contentCell.get_memoized_content&      88A!DDrF   c                 *    U R                  U5      S   $ r^  r  r  s     rG   get_memoized_output_levelCell.get_memoized_output_level*  r  rF   c                 ^    U R                  U R                  5      =(       d    U R                  $ r   )r  rd   r   s    rG   raw_cellCell.raw_cell.  s$    (()=)=>V$BVBVVrF   c                 R    U R                  5       nUb  U$ U R                  5       S   $ r^  ) get_transformed_memoized_contentraw_and_sanitized_content)r}   r   s     rG   transformed_cellCell.transformed_cell2  s/    446K--/22rF   c                    U R                   nU R                  (       a  Uc  g [        5       nUR                  R	                  U R
                  =(       d    S0 5      R                  5        H  u  nnnnX`R                  :  a  M  U H  u  pxpnXR                  La8  UR                  5       u  pXR                  L d  Uc    MV  U" X5      (       a  MJ    Mh  UR                  (       d$  UR                  R                  UR                  :X  a  M  UR                  U
:X  a0  UR                  UU	=(       d    [        R                   " 5       4;   a  M    M     Us  $    g )Nr  )rX   r   r&   rS   r   rc   r   rU   NULLr(  	is_importr   r"  r'  r&  r   uninitialized)r}   rX   symbols_r.  r1  displayed_outputr	  r   in_tsmem_tsr'  
comparablecurrent_compeqs                 rG   get_memoized_counterCell.get_memoized_counter9  s/   NN	9#49 ++//!!'R

&(
 mm#:@6FJ]]2'*'B'B'D$L#}}4
,33 ==CMM$:$:enn$LZZ6)c.C.C7i557H / % ;A( 
34 rF   c                 z    Uc  U R                  5       nUc  g U R                  [        R                  :X  a  gSU S3$ )NpasszOut.get())r  rZ   r!   QUIET)r}   r	  s     rG   r  %Cell.get_transformed_memoized_content`  sF     ;++-C;%%)<)B)BBcU!$$rF   r  pathc                     [        5       nUc  U R                  n UR                  U5      nUR	                  US9u  pVU H  nU" U5      nM     XT4$ ! [         a    Un N3f = fNr  )r(   r  transform_cell	Exception#make_rewriter_and_syntax_augmenters)r}   r  r  shell_rV   ast_rewritersyntax_augmentersaugs           rG   _rewriter_and_sanitized_content$Cell._rewriter_and_sanitized_contentl  s    
 }}H	++H5G +1*T*T +U +
' %C'lG %$$  	G	s   A A A c                 @    U R                   nX R                  X!S9S   4$ )Nr  r7  )r  r  )r}   r  r  s      rG   r  Cell.raw_and_sanitized_content  s(    ====h=RSTUUUrF   c                     [        5       R                  R                  n0 nS[        R                  " U5      R
                  ;   a  U R                  US'   U" U R                  U R                  40 UD6$ )Nraw_code)	r(   compilecacheinspect	signature
parametersr  r  rU   )r}   r  kwargss      rG   make_ipython_nameCell.make_ipython_name  s[    %%**51<<<!%F:T**DMMDVDDrF   c                 (    U R                  5       S   $ r^  )r  r   s    rG   r   Cell.sanitized_content  s    335a88rF   c              #      #    U R                   n X R                  l         S v   XR                  l         g ! XR                  l         f = f7fr   )rR   r   )r}   orig_overrides     rG   override_current_cellCell.override_current_cell  s7     33	B48NN14ANN1MNN1s   A
5 A
AA
overridec                 \   Ub  Xl         U R                   $ U R                   bS  U R                  bF  [        U R                  5      [        U R                  5      :w  d  U R                  U R                  :w  a  U R	                  5       nU R                  US9u  p4[        R                  " U5      U l         U R                  U l        Ub@  U R                  5          UR                  U R                   5        S S S 5        U R                   $ U R                   $ ! , (       d  f       U R                   $ = fr  )
ru   re   r   rd   r  r  astparser  visit)r}   r  r  rewriterrV   s        rG   r   Cell.to_ast  s    '###$$$,4(()S1E1E-FF$$(<(<<))+D $ D D$ D OH"yy1D$($8$8D!#//1NN4#3#34 2t 21s   D
D+c                 H    [        U R                  5       R                  5      $ r   )r   r   r   r   s    rG   num_original_stmtsCell.num_original_stmts  s    4;;=%%&&rF   c                 8    U R                   U R                  S L-   $ r   )r  rz   r   s    rG   	num_stmtsCell.num_stmts  s    &&$*:*:$*FGGrF   c                 R    U R                   R                  U R                  S 5      U L $ r   )rK   r   rT   r   s    rG   is_current_for_idCell.is_current_for_id  s$    ,,00tDLLrF   c                     U R                   $ r   )r  r   s    rG   
is_currentCell.is_current  s    %%%rF   c                 Z    U R                   =(       d    U R                  U R                     $ r   )rR   rL   rM   r   s    rG   r  Cell.current_cell  s$    ))US-B-B3CTCT-UUrF   c                 "    U R                  5       $ r   )r  r   s    rG   currentCell.current  s    !!rF   live_symbolsfilter_to_reactivefilter_to_cascading_reactivedead_symbolsc                    S n[        5       nUR                  R                  [        R                  :X  a  UR                  R
                  [        R                  :X  a  0 nUR                  R                  5        Hf  nU R                  R                  5        HE  u  pU	 H:  n
[        UR                  U
S5      U R                  U5      R                  5      XZ'   M<     MG     Mh     U R                  5          SnU R                  nU GH=  nUR                   (       a  M  U(       a  UR"                  (       d  M1  U(       a;  UR$                  (       d*  [        5       R'                  UR(                  5      (       d  Ms  UR*                  R,                  nUU R.                  R                  UR(                  [1        5       5      ;   d  M  U R3                  U5      R                  nX:  d  M  Ub:  UUR                  UR(                  [5        [6        [9        S5      5      5      :  d  GM  [        UUUR(                  R:                  5      nGM@     U=(       d    /  HW  n
U
R<                  (       d  M   UR>                  RA                  U
RB                  5      nUc  MA  [        UUR:                  5      nMY     UsS S S 5        $ ! [D        [F        4 a    S n N>f = f! , (       d  f       g = f)Nr]   r   )$r'   r   exec_scheduler   HYBRID_DAG_LIVENESS_BASEDr   r   r   r   r   r   maxr   r   r   rX  is_blockingis_cascading_reactiveis_reactiveis_updated_reactiver   r   r"  rt   ri   rw  r   rC   r   !_override_ready_liveness_cell_numr  global_scopelookup_symbol_by_qualified_nameimported_module
ValueError	TypeError)r}   r  r  r  r  #min_allowed_cell_position_by_symbolr   r   r  r   r   max_used_cell_ctrthis_cell_posresolvedlive_sym_updated_cell_ctrused_cell_positionmodule_symbols                    rG   %get_max_used_live_symbol_cell_counter*Cell.get_max_used_live_symbol_cell_counter  sq    NR+,, ::;""--1G1GG24/''==?!%!9!9!?!?!AIC#CF?CCCL LL-66D;@  $ "B @ EEG " MMM(''/8V8V&$00 F66x||DD,4,>,>,G,G)->>BB8<<QTQVWX *.):):1*h ' %:?G1BFF (d3e.E  
 14 1 9 ( N N1-7 )@ $)r)}})$)$6$6$V$V++%M
 !($'%!CC%! * %e HGT #I. )$(M)U HGsD   3C
KK#8K AK(%J7 K7K	KKK
Kupdate_liveness_time_versionsc                    [        5       n[        5       n[        5       nU R                  cJ  U R                  c=  [        U R	                  5       [        5       R                  U R                  S:  S9u  nnnO|U R                  b0  U R                   Vs1 s H  n[        R                  " U5      iM     nnU R                  b0  U R                   Vs1 s H  n[        R                  " U5      iM     nnSnUUUU4$ s  snf s  snf )Nr   )scopeinclude_killed_liveF)ri   rg   rh   r   r   r'   r  rU   r   from_stringr   )r}   r  live_symbol_refsdead_symbol_refsmodified_symbol_refsrefs         rG   #_get_live_dead_modified_symbol_refs(Cell._get_live_dead_modified_symbol_refs  s    03u+.5/2u""*t/F/F/N
 .f))$(MMA$5	  $ &&2>B>U>U$>UsM--c2>U ! $ &&2:>:Q:Q$:Q3I))#.:Q ! $ -2) )	
 	
$$s    C8 C=c                    U R                  U5      u  nnnn[        5       R                  U 5         [        U[        5       R                  U R
                  US9u  nnnS S S 5        [        5       R                  n[        X85      u  p[        XH5      u  p[        U5       H%  nU[        S UR                  SS9 5       5      -  nM'     U R                  b  U R                  U R                  :X  a  XR                  -  n	XR                  -  nW H  nUR                  (       a&  UR                  R                  R!                  U 5        O%UR                  R"                  R!                  U 5        U R%                  UR                  UR&                  R(                  5        M     U Vs1 s H  oR&                  R(                  iM     nn[+        UWUWU	UU R-                  Xe5      S9$ ! , (       d  f       GN= fs  snf )N)r  c              3   `   #    U  H$  nUR                   R                  (       a  M   Uv   M&     g 7fr   )
_timestampis_initialized)r   subsyms     rG   r   1Cell.check_and_resolve_symbols.<locals>.<genexpr>H  s(      $EF((77 Es   .	.T)recurse)r6   r7   r8   r9   r:   r;   r<   )r  r'   override_child_cellr   r  rU   r   r,  ri   get_namespace_symbolsr^   rd   rq   is_deepr   cells_where_deep_liver   cells_where_shallow_liver  r   r"  r4   _typechecks)r}   r  r  r  r  live_resolved_symbolsr9   r7   r  r  r   modified_symbolsr   r  r8   s                  rG   check_and_resolve_symbolsCell.check_and_resolve_symbols,  s    445RS	
 )V''-
 : ##.K		%$	 . v**45ET8 
 ()C $!777E$ !  * ##+&&$*>*>>...L 2 22-H2266t<5599$?&&x||X5G5G5P5PQ . CXXBWh((11BW
X&!5!!%''
J
 	
I .-F Ys   -G"#G4"
G1r8   c                 X   [        [        5      nX R                     R                  U R	                  5       5        U H/  nX R                  U5      R                     R                  U5        M1     UR                  5        VVs0 s H  u  pE[        U5      S:  d  M  XE_M     snn$ s  snnf )N   )r   ri   rT   r   r[  rw  r   r   )r}   r8   used_cell_counters_by_cell_idr"  rT   
cell_execss         rG   compute_phantom_cell_infoCell.compute_phantom_cell_infod  s    (3C(8%%ll3778I8I8KL"H)*;*;H*E*M*MNRR # (E'J'J'L
'L#:!#  G'L
 	
 
s   B&B&live_cell_ctrsc                    U R                   1nU H6  nU R                  U5      R                  (       d  M%  UR                  U5        M8     [	        U5       Vs/ s H  oPR                  U5      PM     nnU Vs1 s H  owR
                  R                  5       iM     nnSR                  SR                  S U 5       5      SR                  S U 5       5      S9$ s  snf s  snf )Nz{type_declarations}

{content}
c              3   r   #    U  H-  nU(       d  M  UR                    S UR                  5        3v   M/     g7f)z: N)nameget_type_annotation_string)r   r   s     rG   r   .Cell._build_typecheck_slice.<locals>.<genexpr>|  s6      (,C B388*Bs==?@A,s   7&7c              3   @   #    U  H  oR                  5       v   M     g 7fr   )r   )r   	live_cells     rG   r   r/    s      ?I)++--zs   )type_declarationsrV   )	rU   rw  r  r   r   r   get_top_levelformatr  )	r}   r)  r  live_cell_counterslive_cell_numr	  r9   r   top_level_symbolss	            rG   _build_typecheck_sliceCell._build_typecheck_sliceq  s     #mm_+M  /AAA"&&}5 , 9??Q8RS8R'',8R
S@LMWW224M188"ii (,( 
 II ?I  9 	
 		
 TMs   C7#Cc                 f   U R                   b  U R                   $ U R                  b  gU R                  X5      n [        R                  " S[
        R                  " U5       3SS9nUS:H  U l         U R                   $ ! [         a*    [        R                  S5        SU l          U R                   $ f = f)NTzmypy -c )r(   r   z'Exception occurred during type checking)
rx   rg   r8  
subprocesscallshlexquoter  r;  	exception)r}   r)  r  typecheck_slicerets        rG   r  Cell._typechecks  s     ((4000"".55nS	1//HU[[-I,J"KSWXC,/1HD) ,,,  	1FG,0D),,,	1s   6A< <&B0/B0c                     U R                   S L $ r   rx   r   s    rG   needs_typecheckCell.needs_typecheck  s    ,,44rF   c                     S U l         g r   rD  r   s    rG   invalidate_typecheck_result Cell.invalidate_typecheck_result  s
    (,%rF   c                     [        U R                  5       Vs1 s H  n[        U R                  U5      iM     sn$ s  snf r   )r   r  r   rU   )r}   is     rG   _get_stmt_timestampsCell._get_stmt_timestamps  s0    5:4>>5JK5J	$--+5JKKKs    ;slice_cellsc                     [        5       nU H  nX#R                  5       -  nM     [        S[        5       R	                  U5      5      $ )NzList[Statement])ri   rL  r   r%   make_multi_slice)r   rN  
timestampsr   s       rG   compute_multi_slice_stmtsCell.compute_multi_slice_stmts  sF     &)U
D3355J  L))*5
 	
rF   c                 &    U R                  U /5      $ r   )rR  r   s    rG   compute_slice_stmtsCell.compute_slice_stmts  s    --tf55rF   r   	seed_onlyformat_typeinclude_cell_headersc                 v    U(       a!  U R                  U R                  5       SUUUS9$ U R                  SUUUS9$ )NT)blackenrW  rX  rY  F)format_multi_slicerU  format_slice)r}   r   rW  rX  rY  s        rG   slice
Cell.slice  s]     **((*#'%9 +   $$#'%9	 %  rF   c                 &    U R                  USUUS9$ )NT)r   rW  rX  rY  )r^  )r}   r   rX  rY  s       rG   code	Cell.code  s&     zz#!5	  
 	
rF   c                 B    U R                  5       R                  " U0 UD6$ r   )ra  to_function)r}   argsr  s      rG   rd  Cell.to_function  s    yy{&&777rF   
show_inputshow_outputlookbackc                    U n[        U5       H  nUR                  c   eUR                  nM      U(       a_  [        nU" UR                  =(       d    S5        [	        S UR                  =(       d    SR                  5        5       5      nU" SU-  5        U(       a&  UR                  b  UR                  R                  SS9  [        5       R                  S   R                  UR                  5      $ )Nr  c              3   8   #    U  H  n[        U5      v   M     g 7fr   )r   )r   lines     rG   r   !Cell.reproduce.<locals>.<genexpr>  s      OD D		Os   -F)render_out_exprOut)r   rX   printrc   r  r  rf   showr(   user_nsr   rU   )r}   rg  rh  ri  cell_to_repror   print_max_lens           rG   	reproduceCell.reproduce  s     xA **666)33M ! F=117R8 *;;ArMMO G 3=!=88D))..u.Ewu%))-*@*@AArF   )!ru   rx   rz   rs   r{   ry   rt   rf   rU   rT   rd   rr   ra   rc   rb   re   r_   r^   r`   rZ   rh   rg   rX   rl   rk   rn   rm   rj   r|   rp   rq   rW   ro   )NFN)T)r[   N)TTFNr   r  )r[   rI   )FFN)F)FFNT)FNT)TTr   )r>   r?   r@   rA   rK   r   r-   rB   rL   rC   rM   rN   rO   r   ri   rP   strr   rQ   rR   r   rS   r   r   rD   r!   r~   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   classmethodr   r   r   r   r   r   r  r  r  r  r  r  r2  rA  rE  r	   rI  rN  rS  r   rX  r[  r_  rb  re  ri  rl  rp  rs  r.   rw  r   r=  r  r  staticmethodr  r  r  r  r  r  r  pycAstRewriterr  r  r  r   r  r  Moduler   r  r  r  r  r  r  r   r  r   r   r  r4   r!  r'  r8  r  rE  rH  rL  r
   rR  rU  r   r)   r*   r^  ra  rd  r   rw  rE   r=   rF   rG   rI   rI   M   sy   57d66>27+-tCK(-M3.0$vs{+0.0$sF{+0,7,<M4S[()<5@5EDc&k!12E/3HV,3HJ$sD.C)C$DDEJ '+$?C/1/1 /1 	/1
 CHo/1 F#/1 /1  ((;</1 
/1b F   .$ . . =$ = = 6T 6 6 ,9 , , hv&   0c 0 0 $4 $ $ 7D 7 7
 
# 
 
 	CWVYx5H-H%I 	C 	C Dgfi6I.I&J D D Xd9f;L6M-N  "D-  + + 
 
%U3 d d BB B B B "T " " $  4 D 
;C ;D ; :3 :3v; : :(
T  #')-$?C66 6 CHo	6
  6 #'6 6  ((;<6 
6 6p :VS[8I : : =	BT8U = = 
yAS7T 
 

 
9'+FDI,='>
9 (,FDI,='>
9 
9 	=	#	$	=  	= !S ! ! &# & & 9)4F*G 9 9 #id0B&C # #
 *S *V * * #s #v # # c hv&6   $ $(8 $ $ ?C&#&/7}&	& & 5f 5 5 5 9v 9(62B 9 9 7V 7 7 13 13v; 1 1 

	x}h':;;	<
 
 E3 E8C= E E E EAT8U E E W# W W 3# 3 3%hsm %P $(
%C=
%	#
% EI% %4<SM%	x(#-	.%&Vhsm VuSRUX VE3 E93 9 B B x

3  szz  & 'C ' ' H3 H H M4 M M &D & & V V " " $)-204H%.)H% !H% '+	H%
 s8}-H% 
H%T
-1
	s=!3y>3y>4G	H
F /46
'+6
 
6
p
CH 
fcRUhFVAW 

!#h
69.6I
	
*-!#h-69.6I-	-$ 5 5-Lc)n L 	
"6*	
	k		
 	
6T+%6 6
 26%)  d:./	
 # 
2 26%)	

 d:./
 #	

 

8 RSBB48BKNB	B BrF   rI   )Sr  r  loggingr=  r;  collectionsr   
contextlibr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   pyccolor}  IPythonr   ipyflow.analysis.live_refsr   r   r   r   r   !ipyflow.analysis.resolved_symbolsr   ipyflow.configr   r   r   ipyflow.data_model.timestampr   ipyflow.memoizationr   r   r    r!   r"   ipyflow.modelsr#   r$   r%   r&   ipyflow.singletonsr'   r(   ipyflow.slicing.mixinr)   r*   r+   ipyflow.tracing.output_recorderr,   ipyflow.typesr-   r.   ipyflow.utils.ipython_utilsr/   r0   r8  ipyflow.data_model.statementr1   ipyflow.data_model.symbolr2   	getLoggerr>   r;  setLevelWARNING_override_unused_warning_cellsr4   rI   r   r   r=   rF   rG   <module>r     s    
     # %   "    = F F 2  J I * C C = 4 , H60 
		8	$    "' J \B> \B~ ad# qrF   