
    ^hgD                        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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  S SKJrJr  S SKJrJrJr  S SKJ r J!r!  S S	K"J#r#  \(       a  S S
K$J%r%  \RL                  " \'5      r(\(RS                  \RT                  5        \r+ " S S5      r,\-" \5      S :X  a  \R\                  " \,5        g\,\S '   g)    N)
ModuleType)
TYPE_CHECKINGAnyDict	GeneratorIterableOptionalSetTupleUnioncast)compute_live_dead_symbol_refs)Atom	SymbolRef)Symbol
SymbolType)_ScopeContainercellsscopes)tracertracer_initialized)SupportedIndexType)	Namespacec            #          \ rS rSrSr\SS4S\S\S    S\\R                     4S jjr	S r
S	 rS
 rS\S\4S jrS\S\4S jrS\S\\   4S jrSFS jr\S\S    4S j5       rSGS jrS\S\SS4S jrS\S\S\\   4S jrS\\   4S jrS\S\S\\   4S jrS\S\\   4S jrS\S\\ \\!\\!   4   SS4   4S jr"S\S\\ \\!\\!   4      4S  jr#S\S\\   4S! jr$\%       SHS"\S#\S$\S%\S&\S'\S(\S)\S    4S* jj5       r&S+\S\4S, jr'S+\S\4S- jr(S+\S\4S. jr)S+\S\4S/ jr*              SIS\S"\S0\\\      S1\\+\,RZ                  \,R\                  4      S2\\,R^                     S#\S$\S%\S&\S'\S(\S)\S    S3\\0   S4\S5\S6\\   S\4"S7 jjr1   SJS\S"\S0\2\   S3\0S1\\+\,RZ                  \,R\                  4      S2\\,R^                     S5\S\ \\\   \\   4   4S8 jjr3 SFS\S$\4S9 jjr4\S: 5       r5\S; 5       r6\S< 5       r7\S= 5       r8\S\S>   4S? j5       r9\S@ 5       r:\S\ \SA4   4SB j5       r;\S\4SC j5       r<S+\S\4SD jr=SEr>g)KScope)   z<module>N
scope_nameparent_scopesymtabc                 J    [        U5      U l        X l        X0l        0 U l        g N)strr   r   r   _symbol_by_name)selfr   r   r   s       R/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/data_model/scope.py__init__Scope.__init__,   s"     j/(AC    c                 *    [        [        U 5      5      $ r!   )hashidr$   s    r%   __hash__Scope.__hash__7   s    BtH~r(   c                 ,    [        U R                  5      $ r!   )r"   	full_pathr,   s    r%   __str__Scope.__str__:   s    4>>""r(   c                     [        U 5      $ r!   )r"   r,   s    r%   __repr__Scope.__repr__=   s    4yr(   itemreturnc                 J    U R                  U5      nUc  [        SU-  5      eU$ )Nzitem not found: %s)getKeyError)r$   r6   rets      r%   __getitem__Scope.__getitem__@   s*    hhtn;/$677
r(   c                 (    U R                  U5      S L$ r!   )r9   r$   r6   s     r%   __contains__Scope.__contains__F   s    xx~T))r(   c                 $    U R                  U5      $ r!   )&lookup_symbol_by_name_this_indentationr?   s     r%   r9   	Scope.getI   s    ::4@@r(   c                 >    U(       a  [        S5      eU R                  $ )Nz&Only namespace scopes carry subscripts)
ValueErrorr#   )r$   is_subscripts     r%   symbol_by_nameScope.symbol_by_nameL   s    EFF###r(   c                     U R                   (       a  g U R                  R                  (       a  U R                  R                  $ U R                  $ r!   )	is_globalr   is_namespace_scopenon_namespace_parent_scoper,   s    r%   rM    Scope.non_namespace_parent_scopeQ   s;     >>//$$???   r(   c                 &   U R                   (       a  [        5       R                  OU R                  nS nUb7   UR	                  U5      nUR                  5       (       a  UR                  5       n[        XUS9$ ! [         a     N[         a     N!f = f)N)r   r   )
rK   r   cur_cell_symtabr   lookupis_namespaceget_namespacer:   rF   r   )r$   r   r   child_symtabsyms        r%   make_child_scopeScope.make_child_scope[   s    -1^^))mmJ/##%%#&#4#4#6L
 Z<HH	   s   6A8 8
B	BBnamevalc                 ,    X R                   U'   Xl        g r!   )r#   containing_scope)r$   rX   rY   s      r%   put	Scope.puti   s    %(T"#r(   _c                 8    U R                   R                  U5      $ r!   )r#   r9   )r$   rX   r^   s      r%   rC   ,Scope.lookup_symbol_by_name_this_indentationm   s     ##''--r(   c                 6    U R                   R                  5       $ r!   )r#   valuesr,   s    r%   all_symbols_this_indentation"Scope.all_symbols_this_indentationr   s    ##**,,r(   kwargsc                     U R                   " U40 UD6nUc*  U R                  b  U R                  R                  " U40 UD6nU$ r!   )rC   rM   lookup_symbol_by_name)r$   rX   re   r;   s       r%   rg   Scope.lookup_symbol_by_nameu   sJ     99$I&I;4::F11GGWPVWC
r(   qualified_namec                 &   U nUR                  S5       Hb  n[        U[        5      (       a  UR                  n[        U[        5      (       d    g UR                  USS9n[        U[        5      (       a  Mb    g    [        U[        5      (       a  U$ S $ )N.FrG   )split
isinstancer   	namespacer   rC   )r$   ri   scope_or_symparts       r%   lookup_symbol_by_qualified_name%Scope.lookup_symbol_by_qualified_name}   s    59"((-D,//+55lE22'NN5 O L lF33 .  *,??|ITIr(   
symbol_refc              #     #    U n[        UR                  5       H  u  p4U[        UR                  5      S-
  :H  nUR                  (       a?  UR	                  UR
                  5      nUb  XdU(       a  SOUR                  US-      4v     gUR	                  UR
                  5      nUc    gXdU(       a  SOUR                  US-      4v   UR                  nUc    gUnM     g7f)z
Generates progressive symbols appearing in an AttrSub chain until
this can no longer be done semi-statically (e.g. because one of the
chain members is a CallPoint).
   N)	enumeratechainlenis_callpointrg   valuero   )r$   rt   	cur_scopeiatomis_lastnext_symnss           r%   gen_symbols_for_attrsub_chain#Scope.gen_symbols_for_attrsub_chain   s      	 !1!12GA3z//0144G  $::4::F'"'$z?O?OPQTUPU?VVV 66tzzBHgd:;K;KAPQE;RRR##Bz	! 3s   CC!rx   c                 H    SnU R                  U5       H
  u  p4nX4U4nM     U$ )zn
Get most specific Symbol for the whole chain (stops at first point it cannot find nested, e.g. a CallPoint).
Nr   )r$   rx   r;   rU   r~   	next_atoms         r%   *get_most_specific_symbol_for_attrsub_chain0Scope.get_most_specific_symbol_for_attrsub_chain   s3     $($F$Fu$M CyY&C %N
r(   c                 N    Su  p#U R                  U5       H  u  p$nM     Uc  U$ S $ )N)NNr   )r$   rx   rU   r   r^   s        r%   try_fully_resolve_attrsub_chain%Scope.try_fully_resolve_attrsub_chain   s7    #!%!C!CE!JCI "K's1T1r(   obj	overwriterG   is_function_def	is_import	is_moduleis_anonymousclass_scopec                 .   Ub  U(       d  U(       a   eU(       a"  U(       d   eU(       a   e[         R                  $ U(       a"  U(       d   eU(       a   e[         R                  $ U(       a"  U(       d   eU(       a   e[         R                  $ Ub"  U(       d   eU(       a   e[         R                  $ U(       a  [         R
                  $ U(       a  [         R                  $ [        U [        5      (       a  [         R                  $ [         R                  $ r!   )
r   FUNCTIONIMPORTMODULECLASS	SUBSCRIPT	ANONYMOUSrn   r   DEFAULTr   r   rG   r   r   r   r   r   s           r%   _resolve_symbol_typeScope._resolve_symbol_type   s      +IOO9###&&&9###$$$9###$$$$9######''''''Z(($$$%%%r(   rU   c                     UR                   b  UR                  c  g [        UR                   U S9R                  5       [	        UR                  U 5      S   ;   $ ! [
         a     gf = f)NF)scoperv   )symbol_node	stmt_noder   	canonicalr   	TypeErrorr$   rU   s     r%   #_compute_is_static_write_for_assign)Scope._compute_is_static_write_for_assign   sf    ??"cmm&;	#//6@@B0EaHI  		s   ;A 
A&%A&c                     UR                   c  g[        UR                   U 5      S   n[        UR                  [        5      =(       a#    [
        R                  " UR                  5      U;   $ )NFrv   )r   r   rn   rX   r"   r   from_string)r$   rU   deads      r%    _compute_is_static_write_for_def&Scope._compute_is_static_write_for_def   sO    == ,S]]DA!D#((C(TY-B-B388-LPT-TTr(   c                 x   [        UR                  [        R                  [        R                  45      (       d   e[        UR                  U 5      S   nUR                  R                   HL  nUR                  S:X  d9  [        R                  " UR                  =(       d    UR                  5      U;  d  ML    g   g)Nrv   *FT)rn   r   astImport
ImportFromr   namesrX   r   r   asname)r$   rU   r   import_names       r%   #_compute_is_static_write_for_import)Scope._compute_is_static_write_for_import   s    #--#**cnn)EFFFF,S]]DA!D==..K  C'((););)O{?O?OP  / r(   c                    U nUR                   (       a  UR                  nUR                   (       a  M  UR                  (       a  UR                  c  g[        R
                  " [        UR                  5      5      (       d  g[        UR                  [        R                  5      (       a  UR                  U5      $ [        UR                  [        R                  [        R                  [        R                  45      (       a  UR                  U5      $ [        UR                  [        R                  [        R                   45      (       a  UR#                  U5      $ gNF)rL   r   rK   r   pycis_outer_stmtr+   rn   r   Assignr   AsyncFunctionDefClassDefFunctionDefr   r   r   r   )r$   rU   r   s      r%   _compute_is_static_writeScope._compute_is_static_write   s    &&&&E &&&#--"7""2cmm#455szz22<<SAAMMC00#,,P
 
 99#>>

CNN'CDD<<SAAr(   depsr   r   symbol_type	propagateimplicitis_cascading_reactivec                 B   U=(       d    U R                  UUUUU	U
UUS9n[        Uc  / OU5      nU R                  UUUUUUUS9u  nnnUR                  UUUUU(       + US9  [	        5       (       a#  [        5       R                  R                  U5        [        5       R                  5       S::  a  U$  U R                  U5      n[        5       R                  5       n[        R                  " U/UR                  SS95       H  nU(       aH  UUR                   ;  a8  UR"                  R%                  U5        UR&                  R                  U5        MR  UR&                  R%                  U5        UR"                  R                  U5        M     U$ ! [         a    Sn Nf = f)Nr   )r   r   )prev_objr   r   refreshr   r   FT)recurse)r   set_upsert_symbol_for_name_innerupdate_depsr   r   this_stmt_updated_symbolsaddr   exec_counterr   SyntaxErrorcurrent_cell	itertoolsrx   get_namespace_symbolsdynamic_writes_pending_dynamic_writesdiscardstatic_writes)r$   rX   r   r   r   r   r   rG   r   r   r   r   r   r   r   r   r   rU   prev_symr   is_static_writer   subsyms                          r%   upsert_symbol_for_nameScope.upsert_symbol_for_name  s   & " 	
T%>%>%+%# &? 	&
 ,BD
 #'"D"D# #E #
Xx 	 L"7 	 	
 H..22377!Q&J	$";;C@O w++-ooseS-F-Ft-F-TUF61L1L#L44<<VD**..v6**22374488= V 
  	$#O	$s   3F FFc                 |   S nU R                  UU[        R                  :H  SS9n	U	b  U	R                  c  [        R
                  OU	R                  nXR                  U	R                  5      ;   a;  U	R                  U:X  a+  U	R                  USS9  U	R                  U5        Xil        XU4$ UR                  U	5        U R                  n
U
bO  U[        R                  :X  a;  U
R                  b.  U
R                  R                  USS9nUb  UR                  U5        [	        UUUU UUSUS9nU R!                  X5        XU4$ )NT)rG   skip_cloned_lookupF)refresh_cachedrl   )r   r   refresh_cached_objr   )rC   r   r   r   r   NULLrH   rG   r   update_obj_refupdate_stmt_noder   r   ro   r   cloned_fromr\   )r$   rX   r   r   r   r   r   r   r   r   ns_selfnew_deprU   s                r%   r   #Scope._upsert_symbol_for_name_innerP  sT    >>$
(<(<<# ? 

 &.ll&:v{{H ++H,A,ABB((K7''E'B)))4'2$833( "..z111##/ ))PP5 Q G "!#$	
 	h&&r(   c                     U(       a   eU R                   R                  US 5      nUb)  UR                  [        5       SS9  UR	                  5         g g )NT)deleted)r#   popr   r   mark_garbage)r$   rX   rG   rU   s       r%   delete_symbol_for_nameScope.delete_symbol_for_name  sM      ""&&tT2?OOCE4O0 r(   c                     U R                   S L $ r!   )r   r,   s    r%   rK   Scope.is_global  s      D((r(   c                     gr    r,   s    r%   r   Scope.is_module      r(   c                 z    U R                   =(       d)    U R                  =(       a    U R                  R                  $ r!   )rK   rL   r   is_globally_accessibler,   s    r%   r   Scope.is_globally_accessible  s-    ~~ 
##P(9(9(P(P	
r(   c                     gr   r   r,   s    r%   rL   Scope.is_namespace_scope  r   r(   r   c                 >    U R                   (       a  [        SU 5      $ g )Nr   )rL   r   r,   s    r%   ro   Scope.namespace  s    ""T**r(   c                 T    U R                   (       a  U $ U R                  R                  $ r!   )rK   r   global_scoper,   s    r%   r   Scope.global_scope  s     >>K  ---r(   .c                 t    U R                   4nU R                  (       a  U$ U R                  R                  U-   $ r!   )r   rK   r   r0   )r$   paths     r%   r0   Scope.full_path  s1    !>>K$$..55r(   c                 @   U R                   (       d  gU R                  b  U R                  R                  nOSnU(       aT  U R                  R	                  5       (       d  [        U SS5      (       a  U SU R                   S3$ U SU R                   3$ U R                  $ )N rG   F[]rk   )rL   r   full_namespace_pathr   	isdecimalgetattr)r$   prefixs     r%   r  Scope.full_namespace_path  s    &&(&&::FF((**gdNE.R.R 4??"3155 4??"344??"r(   c                 ,    [        UR                  5      $ r!   )r"   rX   r   s     r%   make_namespace_qualified_name#Scope.make_namespace_qualified_name  s    388}r(   )r#   r   r   r   )F)r7   r   )TFFFFFN)NNNTFFFFFNNTFN)NNF)?__name__
__module____qualname____firstlineno__GLOBAL_SCOPE_NAMEr"   r	   symtableSymbolTabler&   r-   r1   r4   r   r   r<   boolr@   r9   rH   propertyrM   rV   r\   r   rC   r   rc   rg   rr   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   stmtLambdaASTr   r   r
   r   r   rK   r   r   rL   ro   r   r0   r  r
  __static_attributes__r   r(   r%   r   r   )   sF   " ,*.15		D	D w'	D --.		D# 2 v *!3 * *A* Ax/? A$
 !HW,= ! !I$* $ $D $.&.-0.	&	.
-hv.> -&25	&	Jc JhvFV J#	5x~56dB	C6			%htn45	6	2Y 28FCS 2  " %")-"&"&"& "& 	"&
 "& "& "& g&"& "&H	v 	$ 	UF Ut U
v 
$ 
F t 0 ,0;?)-" %")-,004#A A A x'(	A
 E#((CJJ"678A cgg&A A A A A A A g&A j)A A  !A"  (~#A$ 
%AR <@)-G' G' G' &k	G'
  G' E#((CJJ"678G' cgg&G' G' 
vx'#6	7G'T >C&6: ) )   
 

   8K0   . .
 65c? 6 6 #S # # C r(   r   )/r   r   loggingr  typesr   typingr   r   r   r   r   r	   r
   r   r   r   pyccolor   ipyflow.analysis.live_refsr   ipyflow.analysis.symbol_refr   r   ipyflow.data_model.symbolr   r   ipyflow.modelsr   r   r   ipyflow.singletonsr   r   ipyflow.typesr   ipyflow.data_model.namespacer   	getLoggerr  loggersetLevelWARNING_override_unused_warning_scopesr   ry   appendr   r(   r%   <module>r+     s    
        D 7 8 9 9 9 ,6 
		8	$    #) q qh 15!OAr(   