
    ^h8                     X   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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  \R8                  " \5      r\R?                  \R@                  5        \r! " S
 S\5      r"\#" \5      S :X  a  \RH                  " \"5        g\"\S '   g)    N)
ModuleType)
AnyDict	GeneratorIterableIteratorListOptionalSequenceSetTuple)Scope)Symbol)	Timestamp)_NamespaceContainer
namespaces)flow)SupportedIndexTypec                     ^  \ rS rSr% Sr\" 5       r\" 5       r\	\
S4   \S'   SS.S\S\S	S4U 4S
 jjjr\S 5       rS	\4S jrS	\4S jr\S	\4S j5       rS	\\\   SS4   4S jrS	\\\      4S jrS	\\\\\   4   SS4   4S jrS	\\\\\   4      4S jr\S 5       r\S	\4S j5       r\S	\4S j5       r \S	\4S j5       r!S@S jr"S@S jr#S@S jr$\S	\4S j5       r%S\&\   S	\4S jr'S@S jr(SAS	\	\)\4   4S jjr*S\S	S 4S jr+\,SBS  j5       r-S\S	S 4S! jr.S"\S	\
4S# jr/S$\)S	\\   4S% jr0SSS&.S$\)S'\\   S(\S)\S	\\   4
S* jjr1S$\)S+\S)\S	\\   4S, jr2S-\S.\S/\\   S	S4S0 jr3S1\S	S4S2 jr4S1\S	S4S3 jr5 SAS$\)S'\S	S4U 4S4 jjjr6 SCS	\7\   4S5 jjr8S$\)S6\S	S4S7 jr9S@S8 jr:S9\S'\S	\S    4S: jr;\S	\S    4S; j5       r<S	\S<   4S= jr=SDS> jr>S?r?U =r@$ )E	Namespace!   z<anonymous_namespace>NFILE_SYSTEMF)force_allow_iterationobjr   returnc                2  > [         TU ]  " U0 UD6  S U l        / U l        Xl        [        U5      U l        Ubt  [        U[        5      (       d_  [        U5      [        5       R                  ;   a>  SU-  n[        5       R                  (       a  [        U5      e[        R                  U5        XR                  La   U [        5       R                  [        U5      '   SU l        ["        R$                  " 5       U l        0 U l        [+        5       U l        X l        g )Nz#namespace already registered for %sF)super__init__cloned_fromchild_clonesr   idcached_obj_id
isinstanceintr   r   is_dev_mode
ValueErrorloggerwarningPENDING_CLASS_PLACEHOLDER
_tombstoner   uninitializedmax_descendent_timestamp_subscript_symbol_by_namesetnamespace_waiting_symbols_force_allow_iteration)selfr   r   argskwargsmsg	__class__s         V/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/data_model/namespace.pyr   Namespace.__init__+   s     	$)&)26/1WOsC((346,,,7#=Cv!! o%s#444)-DFbg&3<3J3J3L%KM&69e&&;#    c                     gNT r1   s    r6   is_namespace_scopeNamespace.is_namespace_scopeF       r8   c                     gr:   r;   r<   s    r6   __bool__Namespace.__bool__J   r?   r8   c                     [        U R                  [        [        [        45      (       d  [        SX R                  5      e[        U R                  5      $ )Nz5tried to get length of non-container namespace %s: %s)r#   r   dictlisttuple	TypeErrorlenr<   s    r6   __len__Namespace.__len__N   s@    $((T4$788Gxx  488}r8   c                 X    [        U R                  5      [        U R                  5      -   $ N)rH   r-   _symbol_by_namer<   s    r6   sizeNamespace.sizeU   s#    4112S9M9M5NNNr8   c              #      #    [        U R                  [        [        45      (       a  [	        U R                  5      nO[	        U R
                  5      n[        U5       H  nU R                  USS9v   M     g 7fNTis_subscript)r#   r   rE   rF   rH   r-   range&lookup_symbol_by_name_this_indentation)r1   limitis      r6   _iter_innerNamespace._iter_innerY   s[     dhhu..ME667EuA==ad=SS s   A6A8c                     U R                   (       d;  [        U R                  [        [        45      (       d  [        SX R                  5      eU R                  5       $ )Nz6tried to iterate through non-sequence namespace %s: %s)r0   r#   r   rE   rF   rG   rX   r<   s    r6   __iter__Namespace.__iter__a   sO    **:HHtUm4
 4
 H$PXPX  !!r8   c              #   t   #    U R                   R                  5        H  nXR                  USS94v   M     g 7frQ   )r   keysrU   )r1   keys     r6   _items_innerNamespace._items_innerk   s<     88==?CBB$ C    #s   68c                     [        U R                  [        5      (       d  [        SU R                  5      eU R	                  5       $ )Nz<tried to get iterate through items of non-dict namespace: %s)r#   r   rD   rG   r`   r<   s    r6   itemsNamespace.itemsq   s=    $((D))NPTPXPX    ""r8   c                 6    [        U R                  [        5      $ rL   )r#   r   r   r<   s    r6   	is_moduleNamespace.is_moduley   s    $((J//r8   c                     U R                   $ rL   )r"   r<   s    r6   obj_idNamespace.obj_id}   s    !!!r8   c                     U R                   [        R                  :X  a  gU R                  nUb  UR                  (       a  gg)NTF)
scope_namer   	ANONYMOUSnamespace_parent_scopeis_anonymousr1   containing_nss     r6   ro   Namespace.is_anonymous   s6    ??i11133$)C)Cr8   c                     U R                   $ rL   r*   r<   s    r6   
is_garbageNamespace.is_garbage   s    r8   c                     U R                   (       a  g SU l        U R                  SS9 H  nUR                  5         M     g )NTexclude_class)ru   r*   all_symbols_this_indentationmark_garbager1   syms     r6   r{   Namespace.mark_garbage   s8    ??4444HC Ir8   c                     SU l         g NFrt   r<   s    r6   unmark_garbageNamespace.unmark_garbage   s	    r8   c                     U R                   (       d   e[        [        U R                  SS95      5      S:X  d   e[	        5       R
                  R                  U R                  S 5        g )NTrx   r   )ru   rH   rE   rz   r   r   popri   r<   s    r6   collect_self_garbageNamespace.collect_self_garbage   sQ    4999MNOSTTTTdkk40r8   c                 h    [        5       R                  U R                  5      nUc  gUR                  $ r   )r   get_first_full_symbolri   rS   r|   s     r6   rS   Namespace.is_subscript   s,    f**4;;7;###r8   seenc                 H   ^ [        U4S jU R                  5        5       SS9$ )Nc              3   D   >#    U  H  nUR                  TS S9v   M     g7f)F)r   consider_containing_symbolsN)cascading_reactive_cell_num).0r}   r   s     r6   	<genexpr><Namespace.max_cascading_reactive_cell_num.<locals>.<genexpr>   s1       ?C //5 0  ?s    )default)maxrz   )r1   r   s    `r6   max_cascading_reactive_cell_num)Namespace.max_cascading_reactive_cell_num   s-      <<>	 
 	
r8   c                     SU l         [        5       R                  R                  U R                  S 5        Xl        [        U5      U l        U [        5       R                  U R                  '   g r   )r*   r   r   r   r"   r   r!   r1   r   s     r6   update_obj_refNamespace.update_obj_ref   sP    d00$7W04$,,-r8   c                 @    U(       a  U R                   $ U R                  $ rL   )r-   rM   )r1   rS   s     r6   symbol_by_nameNamespace.symbol_by_name   s    111'''r8   c                     [        XR                  U R                  5      nXl        U R                  R                  U5        U$ rL   )r   rl   parent_scoper   r    append)r1   r   cloneds      r6   cloneNamespace.clone   s7    31B1BC!  (r8   c                 $    U " U R                   X!S9$ )N)r   )r)   )clsscoperl   s      r6   make_child_namespaceNamespace.make_child_namespace   s    300*QQr8   c                 B    [        XR                  U R                  5      $ rL   )r   rl   r   r   s     r6   
fresh_copyNamespace.fresh_copy   s    oot/@/@AAr8   r}   c                     U R                   n[        UR                  5      nU(       a5  UR                  (       d  UR	                  5       (       a  U SU S3$ U SU 3$ U$ )N[].)full_namespace_pathstrnamerS   	isdecimal)r1   r}   pathr   s       r6   make_namespace_qualified_name'Namespace.make_namespace_qualified_name   s[    ''388}4>>#3#3qa((q''Kr8   r   c                 R   U R                   R                  U5      n[        U R                  [        5      (       al  [        U[
        5      (       aW  [        U R                  S5      (       a<  US:  a6  Uc3  [        U R                  5      U-   nU R                   R                  U5      nU$ )NrI   r   )r-   getr#   r   r   r$   hasattrrH   )r1   r   rets      r6   _lookup_subscriptNamespace._lookup_subscript   s    ,,006txx**4%%),,axCK488}t+4488>
r8   )rS   skip_cloned_lookuprS   r   r3   c                   Uc1  U R                   R                  US 5      nUc  U R                  U5      nO5U(       a  U R                  U5      nOU R                   R                  US 5      nU(       df  Ucc  U R                  bV  U(       dO  [	        U[
        5      (       a:  U[        U R                  S0 5      ;  a  U R                  R                  " U4SU0UD6nU$ )N__dict__rS   )	rM   r   r   r   r#   r   getattrr   rU   )r1   r   rS   r   _r3   r   s          r6   rU   0Namespace.lookup_symbol_by_name_this_indentation   s     &&**46C{,,T2((.C&&**46C"  , 4%%7488Z<<&&MM'37= 
r8   r2   c                 .    U R                   " U/UQ70 UD6$ rL   )rU   )r1   r   r2   r3   s       r6   lookup_symbol_by_nameNamespace.lookup_symbol_by_name   s     ::4Q$Q&QQr8   from_idxto_idxprev_objc                     U R                   R                  US 5      nUc  g X$l        UR                  5         UR	                  [        5       USSSS9  X@R                   U'   SUl        g )NFT)	overwrite	propagaterefresh)r-   r   r   invalidate_cachedupdate_depsr.   _is_dangling_on_edges)r1   r   r   r   subsyms        r6   
_remap_symNamespace._remap_sym  so    //33HdC>  "E 	 	
 28&&v.'+$r8   posc                     [        [        U R                  5      S-
  US5       HH  nU[        U R                  5      S-
  :  a  U R                  US-      OS nU R                  US-
  X#5        MJ     g )N   r   rT   rH   r   r   r1   r   idxr   s       r6   shuffle_symbols_upward_from%Namespace.shuffle_symbols_upward_from  s\    TXX*C4C,/#dhh-!2C,Ctxxa(HOOC!GS3 5r8   c                     [        US-   [        U R                  5      S-   5       H4  nX!S-   :  a  U R                  US-
     OS nU R                  X"S-
  U5        M6     g )Nr      r   r   s       r6   _shuffle_symbols_downward_to&Namespace._shuffle_symbols_downward_to  sR    q#dhh-!"34C,/'Mtxxa(tHOOCq(3 5r8   c                   > U(       a  U R                   R                  US 5      nUcV  US:X  aP  [        U R                  [        5      (       a1  [        U R                  5      nU R                   R                  US 5      nUb  UR                  [        5       SS9  [        U R                  [        5      (       a(  [        U[        5      (       a  U R                  U5        g g g [        TU ]-  U5        g )Nr   T)deleted)r-   r   r#   r   rE   rH   r   r.   r$   r   r   delete_symbol_for_name)r1   r   rS   r}   r5   s       r6   r    Namespace.delete_symbol_for_name  s     0044T4@C{trzj4.H.HHH 4488tDt4$((D))js.C.C11$7 /D) G*40r8   c                    Uc5  U R                   R                  5       U R                  R                  5       /nO>U(       a  U R                  R                  5       /nOU R                   R                  5       /nU R                  b0  U(       d)  UR	                  U R                  R                  5       5        [        R                  " U6 $ rL   )rM   valuesr-   r   r   rz   	itertoolschain)r1   ry   rS   sym_collections_to_chains       r6   rz   &Namespace.all_symbols_this_indentation0  s     $$++-..5578$ (,(F(F(M(M(O'P$(,(<(<(C(C(E'F$'$++  ==?  899r8   valc                     UR                   (       a  X R                  U'   O1[        U[        5      (       d  [	        SU-  5      eX R
                  U'   Xl        g )Nz%s should be a string)rS   r-   r#   r   rG   rM   containing_scope)r1   r   r   s      r6   putNamespace.putB  sK    36**40D#&&3d:;;),  &#r8   c                 8    [         R                  " 5       U l        g rL   )r   currentr,   r<   s    r6   r   Namespace.refreshK  s    (1(9(9(;%r8   ri   c                     S nU R                   b  U R                   R                  X5      nUb  U$ US U R                  US9 5       ;   a  U $ g )Nc              3   :   #    U  H  nUR                   v   M     g 7frL   )ri   )r   r}   s     r6   r   =Namespace.get_earliest_ancestor_containing.<locals>.<genexpr>Y  s      
S JJSs   rR   )rn    get_earliest_ancestor_containingrz   )r1   ri   rS   r   s       r6   r   *Namespace.get_earliest_ancestor_containingN  sg     &&2--NNC ?J 
88l8S
 
 Kr8   c                 t    U R                   b+  [        U R                   [        5      (       a  U R                   $ g rL   )r   r#   r   r<   s    r6   rn    Namespace.namespace_parent_scopea  s/    (Z8I8I9-U-U$$$r8   )r   NNc              #      #    U nUb:  UR                   (       a(  Uv   UR                  nUb  UR                   (       a  M&  g g g g 7frL   )r=   r   rp   s     r6   iter_containing_namespaces$Namespace.iter_containing_namespacesg  sE     'M,L,L)66M 'M,L,L,L',L's
   ;AAc                 p   [        U R                  SSS95       H  n [        5       R                  UR                  UR
                  SS9nUR                  U5        [        R                  SX U5        U R                  R                  UR
                  S 5        X!R                  UR
                  '   Xl        M     [        U R                  SSS95       H  n [        5       R                  UR                  UR
                  SS9nUR                  U5        [        R                  SX U5        U R                   R                  UR
                  S 5        X!R                   UR
                  '   Xl        M     g ! [         a     GMj  [         a       M  f = f! [        [        4 a     M  [         a       g f = f)NTF)ry   rS   rR   zshuffle %s from %s to %s)rE   rz   r   retrieve_namespace_attr_or_subr   r   AttributeErrorrG   r   r'   inforM   r   r   
IndexErrorKeyErrorr-   )r1   new_nsr}   	inner_objs       r6   transfer_symbols_toNamespace.transfer_symbols_tom  s   --Du-U
C FAAJJu B 	 y)KK2CvF  $$SXXt4/2""388,#) 
  --Dt-T
C FAAJJt B 	 y)KK2CvF**..sxx>9<,,SXX6#) 
 "   )  s/   -E6-F6
F	FFF5(	F54F5)	r0   r-   r*   r"   r    r   r,   r/   r   )r   N)F)r   r   )FN)r  r   r   N)A__name__
__module____qualname____firstlineno__rm   objectr)   rD   r   r   r   __annotations__r   boolr   propertyr=   rA   r$   rI   rN   r   r
   r   rX   r   r[   r   r`   rc   rf   ri   ro   ru   r{   r   r   rS   r   r   r   r   r   r   classmethodr   r   r   r   rU   r   r   r   r   r   r   rz   r   r   r   rn   r   r  __static_attributes____classcell__)r5   s   @r6   r   r   !   s   'I & $(6Kc4i)
 >C<<6:<	< <6  $   Oc O OTYx'7t'CD T"(8F#34 "ic8F3C.C(DdD(PQ #xc8F+;&; <= # 0 0 " " " d   D   1
 $d $ $	
CK 	
C 	
5(D9KV9S4T (   R RBc Bk B	 	C 	
&8 
Xf=M 
  (,#(  tn	
 !  
&	<R&R/2R>AR	&	R
,3 , ,x} ,QU , 4s 4t 4
4 4 4 >C1&16:1	1 1$ 15:	&	:$$* $ $D $<)-	+	& (=  
7I6M,N 7 *  *r8   r   )%r   loggingtypesr   typingr   r   r   r   r   r	   r
   r   r   r   ipyflow.data_model.scoper   ipyflow.data_model.symbolr   ipyflow.data_model.timestampr   ipyflow.modelsr   r   ipyflow.singletonsr   ipyflow.typesr   	getLoggerr  r'   setLevelWARNING#_override_unused_warning_namespacesr   rH   r   r;   r8   r6   <module>r     s         + , 2 : # ,			8	$    '1 #l* l*^ q y)&r8   