
    ^h*                     r   S SK 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  S SKJr  S S	KJr  S S
KJr  S SKJrJr  \R:                  " \5      r\RA                  \RB                  5         " S S\\\\ RD                  5      r# SS\	\$\ RJ                  4   S\&S\\   4S jjr'g)    N)contextmanager)IterableListOptionalSetUnion)static_resolve_rvals)SaveOffAttributesMixinSkipUnboundArgsMixinVisitListsMixin)resolve_slice_to_constant)cells)	Namespace)Symbol)	Timestamp)flowtracerc                   Z   \ rS rSrS\SS4S jrS\R                  S\\	   4S jr
S\R                  S\\	   4S jr\S	 5       r  S0S
\\	   S\R                  S\S\SS4
S jjrS\R"                  4S jrS\R&                  4S jrS\R                  4S jrS\R,                  4S jrS\\R                  \R&                  4   4S jrS rS rS rS rS\\R<                  \R>                  4   S\ \!   4S jr"S\R<                  4S jr#S\R>                  4S jr$S\RJ                  4S jr&S\RN                  4S jr(S r)S r*S r+S  r,S! r-S" r.S\R^                  4S# jr0S\Rb                  4S$ jr2S\Rf                  4S% jr4S\\Rj                  \Rl                  4   4S& jr7S\Rl                  4S' jr8S\Rj                  4S( jr9S\Rt                  4S) jr;S\Rx                  4S* jr=S\R|                  4S+ jr?S\R                  4S, jrAS\R                  4S- jrCS\R                  4S. jrES/rFg)1ResolveRvalSymbols   update_usage_inforeturnNc                 X    / U l         Xl        [        5       U l        SU l        SU l        g )NF)symbolsr   setdead_in_kill_context
exclude_ns)selfr   s     Y/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/tracing/symbol_resolver.py__init__ResolveRvalSymbols.__init__   s'    /1!2!$	 %    nodec                 p    U R                  U5        U R                   Vs1 s H	  o"c  M  UiM     sn$ s  snf N)visitr   r   r$   syms      r    __call__ResolveRvalSymbols.__call__"   s*    

4#||?||???s   33c                     U R                  / [        5       SSS9   U R                  U5        U R                   Vs/ s H	  o"c  M  UPM     snsS S S 5        $ s  snf ! , (       d  f       g = f)NF)r   r   r   r   )push_attributesr   r'   r   r(   s      r    %_resolve_symbols_without_side_effects8ResolveRvalSymbols._resolve_symbols_without_side_effects&   s_    !!SUUe " 
 JJt#'<<C<CC<C	
 
 D	
 
s"    AAAAA
A*c              #     #    U R                   nU R                  S[        5       S9   U R                  U5        U R                   nU Vs1 s H  oDU;  d  M
  UiM     nnS S S 5        U =R                   W-  sl          S v   U =R                   W-  sl         g s  snf ! , (       d  f       NC= f! U =R                   W-  sl         f = f7f)NT)r   r   )r   r-   r   r'   )r   r$   r   new_deadrefnot_present_befores         r    killed_context!ResolveRvalSymbols.killed_context-   s     yy!!4ce!DJJtyyH19!M#_#!M E 			X		,II++I "N ED II++IsL   %C"B		BBBC<B,  CB
B)%C,CCr   	used_nodeshould_extendshould_update_usage_infoc                    [        U5      nU R                  (       a  U =R                  [        U5      -  sl        g U R                  (       am  U Vs/ s H  oUU R                  ;  d  M  UPM     nnU(       a  [        R                  " XU R
                  S9  U(       a  U R                  R                  U5        g g g s  snf )N)r6   r   )r   r   r   r   r   r   r   extend)r   r   r6   r7   r8   symbols         r    _add_to_resolved#ResolveRvalSymbols._add_to_resolved:   s     g,  IIW%I##,3OG&TYY7NvGGO'++T__ ##G,  $Os   B;(B;c                 X    [        5       R                  U5      nU R                  X!5        g r&   )r   resolve_loaded_symbolsr<   r   r$   resolveds      r    
visit_NameResolveRvalSymbols.visit_NameM   s"    82248h-r#   c                 &    U R                  U5        g r&   visit_List_or_Tupler   r$   s     r    visit_TupleResolveRvalSymbols.visit_TupleQ         &r#   c                 &    U R                  U5        g r&   rE   rG   s     r    
visit_ListResolveRvalSymbols.visit_ListT   rJ   r#   c                    [        5       R                  U5      nU(       dP  U R                  UR                   Vs/ s H  o3(       d  M  UPM     sn5        U R                  UR                  5        g U R                  X!5        g s  snf r&   )r   r?   generic_visitkeysvaluesr<   )r   r$   rA   ks       r    
visit_DictResolveRvalSymbols.visit_DictW   sa    82248 499:9a9:;t{{+!!(1  ;s   
BBc                     [        5       R                  U5      nU(       d  U R                  UR                  5        g U R	                  X!5        g r&   )r   r?   rO   eltsr<   r@   s      r    rF   &ResolveRvalSymbols.visit_List_or_Tuplea   s9    82248 tyy)!!(1r#   c                 :    U R                  UR                  5        g r&   r'   valuerG   s     r    visit_AugAssign_or_AnnAssign/ResolveRvalSymbols.visit_AugAssign_or_AnnAssignj       

4::r#   c                 &    U R                  U5        g r&   r[   rG   s     r    visit_AnnAssign"ResolveRvalSymbols.visit_AnnAssignm       ))$/r#   c                 &    U R                  U5        g r&   r_   rG   s     r    visit_AugAssign"ResolveRvalSymbols.visit_AugAssignp   rb   r#   c                    [        UR                  [        R                  [        R                  45      (       a  U R                  UR                  5        [        5       R                  UR                  5      nU R                  X!R                  5        [        5       R                  U5      nU R                  X!5        U R                  UR                  UR                  /5        g r&   )
isinstancefuncast	Attribute	Subscriptr'   r   r?   r<   rO   argskeywordsr@   s      r    
visit_CallResolveRvalSymbols.visit_Calls   s    dii#--!?@@JJtyy!822499=h		282248h-DIIt}}56r#   c                     U R                  UR                  5      n[        U5      S:w  d  US   c  g [        5       R                  R                  US   R                  S 5      $ )N   r   )r.   rZ   lenr   
namespacesgetobj_id)r   r$   r   s      r     _get_attr_or_subscript_namespace3ResolveRvalSymbols._get_attr_or_subscript_namespace|   sU     <<TZZHw<1
 2v  $$WQZ%6%6==r#   c                     [        UR                  [        R                  5      (       a  U R	                  UR                  5        [        5       R                  U5      n[        U5      S:  a  U R                  X!SS9  g  U R                  U5      nUc  g UR                  UR                  SS9nUb  U R                  U/U5        g g ! [         a-    [        R                  S[        R                  " U5      5         g f = f)Nr   F)r8   is_subscript*Exception occurred while resolving node %s)rg   rZ   ri   Callr'   r   r?   rr   r<   rv   &lookup_symbol_by_name_this_indentationattr	Exceptionlogger	exceptiondump)r   r$   r   nsr)   s        r    visit_Attribute"ResolveRvalSymbols.visit_Attribute   s    djj#((++JJtzz"(11$7w<!!!'%!P	66t<Bz;;		 < C %%seT2  	<chhtn	s   ?C 0C 4C=<C=c                    [        UR                  [        R                  5      (       a  U R	                  UR                  5        [        5       R                  U5      nU R                  X!SS9  UR                  U R                  UR                  5      5        [        U5      S:  a  U R                  R                  U5        g  [        U5      nUb  [        U[        R                  5      (       a  g U R                  UR                  5      n[        U5      S:w  d  US   c  g U R                  U5      nUc  g UR!                  USS9nUc8  [        U["        5      (       a#  US:  a   UR!                  [        U5      U-   SS9nUb  U R                  U/U5        g g ! [$         a    S n N&f = f! [&         a-    [(        R+                  S[        R,                  " U5      5         g f = f)NF)r7   r   rq   Try   r{   )rg   rZ   ri   r|   r'   r   r?   r<   r:   r.   slicerr   r   r   Namerv   r}   int	TypeErrorr   r   r   r   )r   r$   r   r   r   r)   s         r    visit_Subscript"ResolveRvalSymbols.visit_Subscript   s   djj#((++JJtzz"(11$7g5AtAA$**MNw<!LL(	-d3E}
5#(( ; ;@@LG7|q GAJ$666t<Bz;;EPT;UC{z%55%!)CCB%d D C
 %%seT2  ! C  	<chhtn	sH   -F- 20F- #F- 8.F- 'F F- F*'F- )F**F- -4G$#G$c                 :    U R                  UR                  5        g r&   rY   rG   s     r    visit_keyword ResolveRvalSymbols.visit_keyword   r]   r#   c                 h    U R                   R                  [        5       R                  U5      5        g r&   r   r:   r   r?   rG   s     r    visit_Starred ResolveRvalSymbols.visit_Starred   !    FH;;DABr#   c                 h    U R                   R                  [        5       R                  U5      5        g r&   r   rG   s     r    visit_LambdaResolveRvalSymbols.visit_Lambda   r   r#   c                 &    U R                  U5        g r&   5visit_GeneratorExp_or_DictComp_or_ListComp_or_SetComprG   s     r    visit_GeneratorExp%ResolveRvalSymbols.visit_GeneratorExp       BB4Hr#   c                 &    U R                  U5        g r&   r   rG   s     r    visit_DictComp!ResolveRvalSymbols.visit_DictComp   r   r#   c                 &    U R                  U5        g r&   r   rG   s     r    visit_ListComp!ResolveRvalSymbols.visit_ListComp   r   r#   c                 &    U R                  U5        g r&   r   rG   s     r    visit_SetComp ResolveRvalSymbols.visit_SetComp   r   r#   c                     U R                  UR                   Vs/ s H  o"R                  PM     sn5         [        U[        R
                  5      (       a7  U R                  UR                  5        U R                  UR                  5        OU R                  UR                  5        UR                   H9  nU R                  UR                  5        U R                  UR                  5        M;     S S S 5        g s  snf ! , (       d  f       g = fr&   )r4   
generatorstargetrg   ri   DictCompr'   keyrZ   eltiterifs)r   r$   gens      r    r   HResolveRvalSymbols.visit_GeneratorExp_or_DictComp_or_ListComp_or_SetComp   s      !H**!HI$--

488$

4::&

488$

388$

377# ' JI!HIIs   C:B;C??
Dc                 l    [        5       R                  UR                  5      nU R                  X!5        g r&   )r   r?   argr<   r@   s      r    	visit_argResolveRvalSymbols.visit_arg   s&    822488<h-r#   c                 :    U R                  UR                  5        g r&   )r'   r   rG   s     r    	visit_ForResolveRvalSymbols.visit_For       

499r#   c                 :    U R                  UR                  5        g r&   )r'   testrG   s     r    visit_IfResolveRvalSymbols.visit_If   r   r#   c                 p    U R                  UR                  5        U R                  UR                  5        g r&   )r'   rl   rO   decorator_listrG   s     r    %visit_FunctionDef_or_AsyncFunctionDef8ResolveRvalSymbols.visit_FunctionDef_or_AsyncFunctionDef   s(     	

4994../r#   c                 &    U R                  U5        g r&   r   rG   s     r    visit_FunctionDef$ResolveRvalSymbols.visit_FunctionDef       2248r#   c                 &    U R                  U5        g r&   r   rG   s     r    visit_AsyncFunctionDef)ResolveRvalSymbols.visit_AsyncFunctionDef   r   r#   c                 p    U R                  UR                  5        U R                  UR                  5        g r&   )rO   basesr   rG   s     r    visit_ClassDef!ResolveRvalSymbols.visit_ClassDef   s(    4::&4../r#   c                 :    U R                  UR                  5        g r&   )rO   itemsrG   s     r    
visit_WithResolveRvalSymbols.visit_With   s    4::&r#   c                 :    U R                  UR                  5        g r&   )r'   context_exprrG   s     r    visit_withitem!ResolveRvalSymbols.visit_withitem   s    

4$$%r#   c                     UR                   b?  [        5       R                  UR                   5      nU R                  X!R                   5        g g r&   )typer   r?   r<   r@   s      r    visit_ExceptHandler&ResolveRvalSymbols.visit_ExceptHandler  s9    99 x66tyyAH!!(II6 !r#   c                     g r&    rG   s     r    visit_ImportResolveRvalSymbols.visit_Import      r#   c                     g r&   r   rG   s     r    visit_ImportFrom#ResolveRvalSymbols.visit_ImportFrom  r   r#   )r   r   r   r   r   )TT)G__name__
__module____qualname____firstlineno__boolr!   ri   ASTr   r   r*   r   r.   r   r4   r   r<   r   rB   TuplerH   rL   DictrS   r   rF   r[   r`   rd   rn   rj   rk   r   r   rv   r   r   keywordr   Starredr   r   r   r   r   r   r   r   r   Forr   Ifr   AsyncFunctionDefFunctionDefr   r   r   ClassDefr   Withr   withitemr   ExceptHandlerr   Importr   
ImportFromr   __static_attributes__r   r#   r    r   r      s    $  4  @SWW @V @D#'' Dd6l D 
, 
,  #)--&!- 77- 	-
 #'- 
-&.sxx .'		 ''sxx '2sxx 22chh		.A(B 2007>#--67>	)	>CMM ."CMM "H#++ C#++ CCIIII	$.cgg .cgg SVV 0#..?@09coo 993+?+? 903<< 0'sxx '&3<< &7(9(9 7 S^^ r#   r   	rval_noder8   r   c                    [        U [        5      (       a$  [        R                  " U 5      R                  S   nOU n[        U[        R
                  [        R                  [        R                  45      (       a#  UR                  c
  [        5       $ UR                  n[        U5      " U5      n[        U5      S:X  a  [        5       R                  5       R                  n[        UUc  SOUR                   [#        5       R$                  S9nU(       a  [&        R(                  " XRS9  U Vs1 s H  ofR*                  iM     nnU$ s  snf )Nr   )cell_ctrscope)r6   )rg   strri   parsebodyAssign	AnnAssign	AugAssignrZ   r   r   rr   r   current_cell	prev_cellr	   r   r   active_scoper   r   r)   )r   r8   r$   rval_symbolsr  static_rval_symbolsr)   s          r    resolve_rval_symbolsr    s     )S!!		),11!4$S]]CMMBCC::5Lzz%&>?EL
<AG((*44	2$,R)2D2D(''

 $''(;L+>?+>C+>? @s   *E)T)(ri   logging
contextlibr   typingr   r   r   r   r   ipyflow.analysis.live_refsr	   ipyflow.analysis.mixinsr
   r   r   ipyflow.analysis.symbol_refr   ipyflow.data_model.cellr   ipyflow.data_model.namespacer   ipyflow.data_model.symbolr   ipyflow.data_model.timestampr   ipyflow.singletonsr   r   	getLoggerr   r   setLevelWARNINGNodeVisitorr   r   r   r   r  r   r#   r    <module>r     s    
  % 7 7 ; 
 B ) 2 , 2 +			8	$   t0/3??tp FJS#''\">B[r#   