
    ^ht                         S SK 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  \(       a  S SKJr  S S	KJr  \ R&                  " \5      r\R-                  \ R.                  5         " S
 S\5      rg)    N)TYPE_CHECKINGOptionalcast)ExecutionMode)	Timestamp)flow)resolve_external_call)CommonEqualityMixin)Atom)Symbolc                      \ rS rSr   S SSSSS\S   S\\   S	\S
\SS4S jjrS!S jrS\	4S jr
S\4S 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 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\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rSrg)"ResolvedSymbol   Nsymr   atomr   	next_atomliveness_timestamp
is_lhs_ref	is_killedreturnc                 L    Xl         X l        X0l        X@l        XPl        X`l        g N)r   r   r   r   r   r   )selfr   r   r   r   r   r   s          [/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/analysis/resolved_symbols.py__init__ResolvedSymbol.__init__   s#     	""4$"    c                     UR                  SU R                  5      US'   U R                  (       a  SUS'   U R                  R                  " U0 UD6  g )Nis_blockingT
exclude_ns)getr   r   r   update_usage_info)r   argskwargss      r   r"    ResolvedSymbol.update_usage_info%   sE     &

=$:J:J K}??#'F< ""D3F3r   c                 "    SU R                    S3$ )Nz|->|)r   r   s    r   __repr__ResolvedSymbol.__repr__+   s    TXXJa  r   c                     [        U R                  U R                  U R                  U R                  U R
                  U R                  45      $ r   )hashr   r   r   r   r   r   r(   s    r   __hash__ResolvedSymbol.__hash__.   s@    		''	
 		
r   c                 |    U R                   (       a  U R                  R                  $ U R                  R                  $ r   )is_deepr   	timestampshallow_timestampr(   s    r   r1   ResolvedSymbol.timestamp:   s)    <<88%%%88---r   c                 .    U R                   R                  $ r   )r   is_anonymousr(   s    r   r5   ResolvedSymbol.is_anonymousA   s    xx$$$r   c                 .    U R                   R                  $ r   )r   is_callpointr(   s    r   	is_calledResolvedSymbol.is_calledE   s    yy%%%r   c                     U R                   S L $ r   )r   r(   s    r   is_lastResolvedSymbol.is_lastI   s    ~~%%r   c                     U R                   R                  =(       dB    U R                  =(       a/    U R                  R	                  U R
                  R                  5      $ r   )r   is_cascading_reactiveis_liver    is_cascading_reactive_at_counterr   cell_numr(   s    r   r?   $ResolvedSymbol.is_cascading_reactiveM   sF    yy.. 
LL 99''00	
r   c                 "   U R                   (       a  gU R                  R                  =(       a    U R                  (       + =(       dI    U R                  =(       d6    U R
                  =(       a#    [        5       R                  U R                  5      $ )NF)	r   r   is_reactiver   r?   r@   r   is_updated_deep_reactiver   r(   s    r   rE   ResolvedSymbol.is_reactiveV   s^    YY"":4??': L))LJ!@!@!J	
r   c                     U R                   R                  =(       db    U R                  =(       aO    [        5       R                  R                  U R                  S5      U R                  R                  R                  :  $ )N)	r   r   r@   r   %blocked_reactive_timestamps_by_symbolr!   r   r1   rB   r(   s    r   r   ResolvedSymbol.is_blocking`   sY    yy$$ 
LL +<<@@2Nxx!!**+	
r   c                 D    U R                   S L =(       d    U R                  $ r   )r   r   r(   s    r   is_deadResolvedSymbol.is_deadh   s    &&$.@$..@r   c                 $    U R                   (       + $ r   )rM   r(   s    r   r@   ResolvedSymbol.is_livel   s    <<r   c                     U R                   (       d   eU R                  (       a  gU R                  (       a  gU R                  c  gU R                  R                  (       d  gU R
                  (       a  ggNFT)r@   r   rE   r   r8   is_mutatingr(   s    r   r0   ResolvedSymbol.is_deepp   sR     |||??>>!,,r   c                 J    U R                   (       d   eU R                  (       + $ r   )r@   r0   r(   s    r   
is_shallowResolvedSymbol.is_shallow   s     |||<<r   c           	         U R                   (       d   eU R                  c  gU R                  R                  (       d  g[        S U R                  R
                  S [        [        U R                  R                  5      S SS9nUS L$ )NF)	call_nodeuse_standard_default)	r@   r   r8   r	   r   objr   strvalue)r   ext_calls     r   rS   ResolvedSymbol.is_mutating   sm    |||>>!~~**(HHLLdnn**+!&
 t##r   c                    U R                   (       d   eU R                  c  gU R                  R                  (       aT  U R                  (       aB  U R                  (       d0  [        5       R                  R                  [        R                  :X  a  gg[        U R                  R                  [        [        45      (       aa  [        U R                  R                  [         5      (       a8  U R                  R                  [#        U R                  R                  5      :  a  g[        U R                  R                  [$        5      (       a/  U R                  R                  U R                  R                  ;  a  gU R&                  R                  (       d  [        U R                  R                  [$        [        [        45      (       d  [        U R                  R                  [(        5      (       a}  [+        U R                  R                  R,                  U R                  R                  5      (       d:  [+        U R                  R                  U R                  R                  5      (       d  ggrR   )r@   r   r8   rS   rE   r   mut_settings	exec_moder   REACTIVE
isinstancer   r[   listtupler]   intlendictr   r\   hasattr	__class__r(   s    r   	is_unsafeResolvedSymbol.is_unsafe   sm   |||>>!>>&&  6&&00M4J4JJtxx||dE]334>>//55$$DHHLL(99dhhllD))dnn.B.B$((,,.V		&&txx||dD%-@AA4>>//55 DHHLL22DNN4H4HIIdnn.B.BCC r   posc                 H    U R                   R                  XR                  S9$ )N)deep)r   is_waiting_at_positionr0   )r   rn   s     r   rq   %ResolvedSymbol.is_waiting_at_position   s    xx..s.FFr   )r   r   r   r   r   r   )NFF)r   N)__name__
__module____qualname____firstlineno__r   r   boolr   r"   r\   r)   rg   r-   propertyr1   r5   r9   r<   r?   rE   r   rM   r@   r0   rV   rS   rl   rq   __static_attributes__ r   r   r   r      s    37 ## # F#	#
 %Y/# # # 
# 4!# !

# 

 .9 . . %d % % &4 & & & & & 
 
 
T 
 
 
T 
 
 A A A            D    
 $T $ $  !4 ! !FG# G$ Gr   r   )loggingtypingr   r   r   ipyflow.configr   ipyflow.data_model.timestampr   ipyflow.singletonsr   ipyflow.tracing.external_callsr	   ipyflow.utilsr
   ipyflow.analysis.symbol_refr   ipyflow.data_model.symbolr   	getLoggerrs   loggersetLevelWARNINGr   rz   r   r   <module>r      sY     0 0 ( 2 # @ -00 
		8	$   iG( iGr   