
    ^h                    .   S SK r 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  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  S SK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)  S SK%J*r+  S SK%J,r-  S SK%J.r/  S SK%J0r1  S SK%J2r3  S SK%J4r5  S SK%J6r7  S SK%J8r9  S SK%J:r;  S SK%J<r=  S SK>J?r?  S SK@JArA  S SKBJCrC  S SKDJErE  S SKFJGrG  S SKHJIrI  S SKJJKrL  S SKMJNrN  S SKOJPrPJQrQJRrR  S SKSJTrT  S S KUJVrV  S S!KWJXrX  S S"KYJZrZ  S S#K[J\r\  S S$K]J^r^  S S%K_J`r`Jara  S S&KbJcrc  \(       a  S SKdrdO\e" \ S'5      (       a  \ rdOS SKdrd\arf\grh\gri\\A\\f\j4   rk\\A\\f\j4   rl\\A\\f\j\\m   4   rn\R                  " \p5      rq\qR                  \R                  5        \R                  " \R                  R                  S(S)S*9rw\R                  " \R                  R                  S+S)S*9rx\R                  " \R                  R                  S,S)S*9ry " S- S.\P5      rz " S/ S0\z5      r{g)1    N)defaultdict)contextmanager)	FrameTypeFunctionType
ModuleType)TYPE_CHECKINGAnyCallableDict	GeneratorListOptionalSetTupleTypeUnioncast)get_ipython)compute_live_dead_symbol_refs)resolve_slice_to_constant)(compile_and_register_handlers_for_module)code)deps)has_tag)lift)mutate)rdeps)rusers)set_tag)	timestamp)	unset_tag)users)watchpoints)cells)	Namespace)Scope)	Statement)Symbol)	Timestamp)symbols)apply_patches)SingletonBaseTracerflowshell)resolve_external_call)ExternalCallHandler)DataflowAstRewriter)resolve_rval_symbols)uninstrument)3match_container_obj_or_namespace_with_literal_nodes)SubscriptIndicesSupportedIndexType)is_project_fileunparse$ )aug_typetokenreplacementz$$z$:c                   2  ^  \ rS rSrSrSrSU 4S jjr\R                  " \R                  \R                  45      S\SSS\S	\R                  S\\S
      4
S j5       r\R$                  " SSR'                  / SQ5       S35      r\S\S\4S j5       rSrU =r$ )StackFrameManager\   FreturnNc                 B   > [         TU ]  " U0 UD6  SU l        SU l        g )Nr   )super__init__
call_depthexternal_call_depthselfargskwargs	__class__s      X/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/tracing/ipyflow_tracer.pyrD   StackFrameManager.__init__a   s$    $)&)#$     _ret_node_idframeeventzpyc.SkipAllc                 ,   UR                   R                  S:X  a  [        R                  $ [	        5       nUR                   R
                  nU[        R                  :X  aw  U =R                  S-  sl        U =R                  UR                  U5      (       + =(       a    [        U5      (       + -  sl        U R                  S:X  a  [        R                  $  g U[        R                  :X  a  U =R                  S-  sl        U =R                  UR                  U5      (       + =(       a    [        U5      (       + -  sl        [        U R                  S5      U l        [        U R                  S5      U l        U R                  S:X  a  [        R                  $ g )Nz<traced_lambda>   r   )f_codeco_namepycSkipAllr-   co_filenamecallrE   rF   is_cell_filer7   return_max)	rH   rO   rP   rQ   rR   ___flow_frame_filenames	            rL   handle_first_ipython_frame,StackFrameManager.handle_first_ipython_framef   s?    <<#44;; 11CHHOOq O$$E,>,>- ) )6%n556$ !#{{" $  ckk!OOq O$$E,>,>- ) )6%n556$ "$//15DO'*4+C+CQ'GD$!#{{"rN   z[/\\](|)IPython	ipykernelz
_?pytest.*pluggytestz)[/\\]c                    [        5       nSnUnUbx  UR                  R                  nUR                  U5      (       d6  [	        U5      (       d+  U R
                  R                  U5      (       d  SU;  a  US-  nUR                  nUb  Mx  U$ )Nr   zscripts/test_runner.pyrT   )r-   rU   rY   r[   r7   _FILTERED_PATH_REGEXsearchf_back)clsrQ   r`   user_call_depthbt_framefilenames         rL   get_user_call_stack_depth+StackFrameManager.get_user_call_stack_depth   s    (-"22H!!(++#H--0077AA,H<1$H " rN   )rE   rF   rA   N)__name__
__module____qualname____firstlineno__should_patch_meta_pathmultiple_threads_allowedrD   rW   register_raw_handlerrZ   r\   r	   r   
TraceEventr   r   rb   recompilejoinrj   classmethodintrq   __static_attributes____classcell__rK   s   @rL   r?   r?   \   s    "$%
 	sxx56  	
 ~~ 
$}%	& 7B ::#((STUU[\ i C  rN   r?   c                     ^  \ rS rSr\rSrS\R                  S\	S\
4S jrSU 4S jjrSS	 jr\S\S
   4S j5       r SS\\/\4   S\\\\\\\/\4   4   4      S\\/\4   4S jjr\ SS\S\S\\\\\\\/\4   4   4      S\S
   4S jj5       r\S\\R6                     4S j5       rS\4S jrSS jrSS jr SS jr!S\"S\#SS4S jr$S\R                  S\"SS4S jr%SS\
SS4S jjr& SS\#S\
SS4S jjr'S\"S\#S \SS4S! jr(S\R                  S\"S\#S \SS4
S" jr)\*S#\+\\\,RZ                  4   S\+\\4   4S$ j5       r.S%\S\#S\\/\\\
\0\1   4   4S& jr2S%\+\\\,RZ                  4   S\#S\\/\3\\
\0\1   4   4S' jr4S%\+\\\,RZ                  4   S\\/\\   \3\
4   4S( jr5S)\+\\\,RZ                  \14   S\\1   4S* jr6S+\0\+\\\14      S\0\1   4S, jr7 SS\S-\\1   S.\\   S\84S/ jjr9  SS0\S1\,RZ                  S2\
S3\
S\\1   4
S4 jjr:S5\S1\,RZ                  S\\1   4S6 jr;\Rx                  " \Rz                  5      S7\>SS4S8 j5       r=\Rx                  " \R~                  \R                  \R                  \R                  \R                  \R                  \R                  45      S9\FSS4S: j5       rG\Rx                  " \R                  \R                  \R                  \R                  \R                  \R                  45      S\#S;\SS4S< j5       rN\Rx                  " \R                  5      \R                  S\SS4S= j5       5       rO\Rx                  " \R                  5      \R                  S>\S9\FSS4S? j5       5       rQ\R                  " \R                  \R                  \R                  \R                  \R                  \R                  45      \R                  SS@.S\S1\+\,R                  \,R                  4   SA\#S\R                  SB\3SC\
SD\FS.\\   SS4SE jj5       5       rU\Rx                  " \R                  5      S\S9\FSS4SF j5       rW\R                  " \R                  5      \R                  SG\SH\,RZ                  S\\+\YSI   \14      4SJ j5       5       rZSSK jr[\Rx                  " \R                  5      \R                  SG\SL\SM\\   SN\
S\\\   4
SO j5       5       r]S7\\>   S\\   SP\SQ\\   SR\,R                  SS4SS jr_\R~                  \R                  S1\,R                  S\#4ST j5       5       r?\Rx                  " \R                  \R                  45      S>\SU\F4SV j5       r`\Rx                  " \R                  5      SW\SX\FS\#4SY j5       rb\Rx                  " \R                  \R                  \R                  45      \R                  SZ 5       5       rf\Rx                  " \R                  \R                  \R                  45      \R                  S[\+\j\k\l4   S9\F4S\ j5       5       rm\Rx                  " \R                  5      \R                  S\S]\F4S^ j5       5       rn\Rx                  " \R                  5      \R                  S\S_\FS]\FS`\F4Sa j5       5       ro\Rx                  " \R                  \R                  45      \R                  S\Sb\FSc\\   Sd\F4Se j5       5       rr\Rx                  " \R                  5      \R                  S\Sf\Sg\#SS4Sh j5       5       rs\Rx                  " \R                  5      Si\Sj\Sk\S\Sl\Sl\4   4   4Sm j5       rt\Rx                  " \R                  5      S \SS4Sn j5       ru\Rx                  " \R                  5      So\Sp\S\#SS4Sq j5       rvSr\,R                  SS4Ss jrx\R                  " \R                  5      Sr\,R                  S\\   4St j5       ry\Rx                  " \R                  5      SoSSp\S\#SS4Su j5       rzS\#S\4Sv jr{  SS\#Sw\\   Sx\
S\
4Sy jjr|Sz\,R                  S\#S\"4S{ jr}S\R                  Sz\\,R                     S\"SS4S| jr~S\R                  S}\S~\S\\,R                     4S jr\Rx                  " \GR                   5      S\SXSS\#S\R                  S\\YSI      4
S j5       r\Rx                  " \GR                  \GR                  45      SS.S\SXSS\#S\R                  Sz\\,R                     SS4S jj5       rSrU =r$ )DataflowTracer   TevtexcrA   c                 *    [        5       R                  $ N)r-   is_dev_mode)rH   r   r   s      rL   "should_propagate_handler_exception1DataflowTracer.should_propagate_handler_exception   s     v!!!rN   Nc                 :  > [         TU ]  " U0 UD6  U R                  R                  U R                  5        U R                  5          U R                  [           U l        U R                  [           U l
        U R                  [           U l        S S S 5        SU l        SU l        [        5       U l        SU l        [        5       U l        [        5       U l        S U l        S U l        0 U l        0 U l        0 U l        0 U l        0 U l        0 U l        0 U l        [        5       U l        0 U l        S U l        SU l         S U l!        U RE                  5       U l#        U RF                  RI                  5          S U l%        S U l&        / U l'        SU l(        S U l)        S U l*        / U l+        SU l,        SU l-        SU l.        U RF                  R_                  5          [a        5       Rb                  U l2        [a        5       Rb                  U l3        SU l4        S S S 5        U RE                  5       U l5        U Rj                  RI                  5          S U l6        SU l7        S U l8        S U l9        S U l:        S U l;        S U l<        U RE                  5       U l=        U Rz                  RI                  5          S U l>        S S S 5        S S S 5        S S S 5        g ! , (       d  f       GN>= f! , (       d  f       N= f! , (       d  f       NB= f! , (       d  f       NK= f! , (       d  f       g = f)NFr   rT   )?rC   rD   _tracing_enabled_filesdiscarddefined_filepersistent_fieldsaugmented_node_ids_by_specreactive_specreactive_node_idscascading_reactive_speccascading_reactive_node_idsblocking_specblocking_node_ids tracing_disabled_since_last_stmt'tracing_disabled_since_last_module_stmtsetguards_pending_deactivation_module_stmt_counter_seen_loop_ids_seen_functions_ids
prev_eventprev_trace_stmttraced_statementsnode_id_to_loaded_symbolsnode_id_to_saved_store_data$node_id_to_saved_live_subscript_refsnode_id_to_saved_del_datanode_id_to_loaded_literal_scopenode_id_to_saved_dict_keythis_stmt_updated_symbolspending_usage_updates_by_symcur_cell_symtab tracing_disabled_user_call_depthcalling_symbol
make_stack
call_stackregister_stack_stateprev_trace_stmt_in_cur_frameprev_node_id_in_cur_frameexternal_callsis_external_call_pending_returnsaved_assign_rhs_objnext_stmt_node_idpending_class_namespacessaved_call_depthsaved_external_call_depthrn   needing_manual_initializationr-   global_scopecur_frame_original_scopeactive_scopeinside_anonymous_calllexical_call_stackcur_functionnum_args_seenfirst_obj_id_in_chaintop_level_node_id_for_chainsaved_complex_symbol_load_data!prev_node_id_in_cur_frame_lexicalexternal_call_candidatelexical_literal_stackactive_literal_scoperG   s      rL   rD   DataflowTracer.__init__   s   $)&)##++D,=,=>##%/3/N/N0D" //0GH , 04/N/N0D" & 16-7<458U($%!+.503 4848:<EG&IK(OQ1EG&HJ,<>&69e&@B)?C02-04*.//*;__113EID-?CD*=?D9>D07;D%7;D"=?D) %&D!-.D*#$D >>@7;v7J7J-+/6+>+>!-2* A
 7;oo6GD#((==?37!%&">B*EI0  3 LP6NR,=A__=N*//DDFEID- G @/ 43A &%b A@$ GF @?/ 43sc   A	K3A!L:K7LA!K;&K*.K;6L
K
K'	#L*
K84K;;
L		L
Lc                      [        5       R                  5       n[        R                  " UR                  5       UR	                  5       S5      U l        g ! [         a     g f = f)Nexec)r$   current_cellsymtablesanitized_contentmake_ipython_namer   	Exception)rH   cur_cells     rL   init_symtabDataflowTracer.init_symtab   sY    	w++-H#+#4#4**,**,$D 
  		s   AA 
A! A!)NNNc              #     #    U R                   n U(       a  U R                  5         S v   U(       a#  U R                   (       d  U R                  5         g g g ! U(       a#  U R                   (       d  U R                  5         f f f = f7fr   )is_tracing_enabled_disable_tracing_enable_tracing)rH   r   s     rL   dataflow_tracing_disabled(DataflowTracer.dataflow_tracing_disabled   si     !44	'!%%'!$*A*A$$& +B!!$*A*A$$& +B!s   BA +B,BB	orig_funckwarg_transformsc                    ^ ^^ T=(       d    0 m[         R                  " T5      S[        S[        S[        4UUU 4S jj5       nU$ )NrI   rJ   rA   c                     > TR                  5        H!  u  nu  p4U" UR                  X#5      5      X'   M#     TR                  5          T" U 0 UD6sS S S 5        $ ! , (       d  f       g = fr   )itemsgetr   )rI   rJ   namedefault	transformr   r   rH   s        rL   new_func;DataflowTracer.make_tracing_disabled_func.<locals>.new_func  sY    .>.D.D.F**w(D)BC /G//1 $1&1 211s   A
A')	functoolswrapsr	   )rH   r   r   r   s   ``` rL   make_tracing_disabled_func)DataflowTracer.make_tracing_disabled_func  sL    
 ,1r		#	2C 	23 	23 	2 	2 
$	2 rN   objattrc              #      #    [        X5      nU R                  XCS9n [        XU5        S v   [        XU5        g ! [        XU5        f = f7f)N)r   )getattrr   setattr)rH   r   r   r   r   r   s         rL   dataflow_tracing_disabled_patch.DataflowTracer.dataflow_tracing_disabled_patch  sO      C&	22 3 
	*Cx(Cy)GCy)s   A; AA		Ac                 $    [         [        [        /$ r   )r   r   r   rH   s    rL   syntax_augmentation_specs(DataflowTracer.syntax_augmentation_specs(  s    6FFrN   c                     U R                   $ r   )r   r   s    rL   module_stmt_counter"DataflowTracer.module_stmt_counter,  s    (((rN   c                    SU l         U R                  R                  5         S U l        U R                  U l        S U l        S U l        S U l        S U l	        U R                  R                  5         U R                  R                  5         S U l        S U l        [        5       =R                  U R                   -  sl        U R                   R                  5         U R"                  R                  5         S U l        U R&                  R)                  5        H  u  pUR+                  US9  M     U R&                  R                  5         g )NF)
exclude_ns)r   r   clearr   r   r   r   r   r   r   r   r   r   r   r-   updated_symbolsr   r   r   r   r   update_usage_info)rH   symr   s      rL   after_stmt_reset_hook$DataflowTracer.after_stmt_reset_hook0  s
   /4,!!#'+$ 99%)"+/(.2+$(!,,224&&,,.)-&$(!$"@"@@&&,,.  &&("#@@FFHOC!!Z!8  I))//1rN   c                     U R                    H  nU R                  U5        M     U R                   R                  5         g r   )r   deactivate_guardr   )rH   guards     rL   _deactivate_guards!DataflowTracer._deactivate_guardsH  s2    55E!!%( 6((..0rN   c                     U R                   R                  5        H  nUR                  5         M     U R                  5         g r   )r   valuesmark_finishedr  )rH   stmts     rL   finish_cell_hookDataflowTracer.finish_cell_hookM  s3    **113D  4!rN   
trace_stmtrQ   c                    U R                   [        5       R                  R                  :  a  U R	                  U5        g U R
                  R                  5         UR                  UR                  =(       d    U5      nU R                  R                  5          [        UR                  [        R                  [        R                  [        R                   45      (       + U l        X0l        X0l        [)        U R+                  U5      S5      U l        U R.                  U l        U R                   U l        S S S 5        U=U l        U l        g ! , (       d  f       N= f)NrT   )rF   r-   mut_settings#max_external_call_depth_for_tracing_tracked_disable_tracingr   r   get_post_call_scoperQ   r   push
isinstance	stmt_nodeastFunctionDefAsyncFunctionDefClassDefr   r   r   r]   rq   rn   rE   r   r   r   r   )rH   r  rQ   	new_scopes       rL   _handle_call_transition&DataflowTracer._handle_call_transitionR  s   $$v""FFG ))%0&&,,.22:3C3C3LuM	__!!# .8$$#"6"6E. *D& -6) )#&t'E'Ee'La#PD $(OOD!-1-E-ED* $ DNM)D,@ $#s   BE


ErR   c                    U[         R                  :X  ac  UR                  5       (       aN  [        U R                  5      S:  a5  U R                  R                  5         [        U R                  5      S:  a  M5  SnU[         R                  :X  aZ  U R                  [         R                  [         R                  4;  a,  U R                  b  U R                  R                  5         US-  nU[         R                  :X  d=  U[         R                  :X  a>  [        UR                  [        R                  5      (       a  UR                  5         US-  nUS:  a  U R!                  5         g g )Nr   rT   )rW   
after_stmtis_initial_frame_stmtlenr   popr\   r   rZ   	exceptionr   finished_execution_hookr  r  r  Returnr   )rH   rR   r  num_finished_stmtss       rL   $_check_prev_stmt_done_executing_hook3DataflowTracer._check_prev_stmt_done_executing_hookj  s    CNN"z'G'G'I'Idoo&*##% doo&* S[[ 
 $$0   88:!#CNN"S[[ Z
0D0Dcjj%Q%Q..0!#!&&( "rN   check_disabledc                 0    SU l         U R                  US9  g )Nr   )r'  )r   r   )rH   r'  s     rL   _tracked_enable_tracing&DataflowTracer._tracked_enable_tracing  s    02-N;rN   check_enabledc                     SU l         SU l        U R                  (       a  U R                  U5      U l        U R                  US9  g )NTr+  )r   r   r   rq   r   r   )rH   rQ   r+  s      rL   r  'DataflowTracer._tracked_disable_tracing  sF     8<404-""484R4R5D1 	M:rN   retc                 >    U R                   n U R                  R                  S5      nUc   eU R                  [        R                  :X  a   U R
                  (       a  U R                  R                  5         [        5       R                  (       aQ  U R                  (       d?  [        U R                  5      S:X  a%  U R                  S:X  d   SU R                  -  5       eg g g g [        UR                   ["        R$                  5      (       a!  ['        [(        U R*                  5      Ul        GO[        UR                   ["        R.                  5      (       d  U(       Ga  UR0                  (       Gd  SUl        [        5       R2                  R5                  [7        UR                   5      S 5      nS nUb  UR8                  nU(       a8  Ub5  [        U["        R:                  5      (       a  [=        UR>                  5      nO[=        UR                   5      n[        U5      S:X  a   U R
                  (       a  U R                  R                  5         [        5       R                  (       aQ  U R                  (       d?  [        U R                  5      S:X  a%  U R                  S:X  d   SU R                  -  5       eg g g g U R                  R                  S5      n	 U R                  R                  S5      R                  S5      n
['        ["        R@                  U RB                  U
   5      n[        URD                  5      [        URF                  5      -   nU R                  R                  S	5      n[H        RK                  S
U5        X:X  a  U
n	OrX:  d   eU[        URD                  5      :  a  [7        URD                  U   5      n	O9[7        URF                  U[        URD                  5      -
     RL                  5      n	 U RN                  RQ                  U	/ 5      RS                  U5        U R
                  (       a  U R                  R                  5         [        5       R                  (       aQ  U R                  (       d?  [        U R                  5      S:X  a%  U R                  S:X  d   SU R                  -  5       eg g g g ! [         a    U R	                  U5         U R
                  (       a  U R                  R                  5         [        5       R                  (       aQ  U R                  (       d?  [        U R                  5      S:X  a%  U R                  S:X  d   SU R                  -  5       eg g g g f = f! [         a     GNf = f! U R
                  (       a  U R                  R                  5         [        5       R                  (       aQ  U R                  (       d?  [        U R                  5      S:X  a%  U R                  S:X  d   SU R                  -  5       ef f f f = f)Nr   r   rT   zgot %sTr   r   r   r   znum args seen: %d)*r   r   	get_field
IndexErrorr  r   r   r-   r   r   r  rE   r   rW   r!  r  r  r  r  r   r%   r   class_scoper#   lambda_call_point_deps_done_oncestatement_to_func_symr   idfunc_def_stmtLambdar2   bodyCallast_node_by_idrI   keywordsloggerwarningvaluer   
setdefaultextend)rH   r  rQ   r/  r   return_to_stmtmaybe_lambda_symmaybe_lambda_nodervalsreturn_to_node_idcall_node_id	call_node
total_argsr   s                 rL   _handle_return_transition(DataflowTracer._handle_return_transition  s   Q	H$($>$>!
,0OO,E,E2- "---#--/ r &&##%""==(A-!+GX-GG+ . > #w .22CLLAA-1t<<.* ://<<@U AAA>B
;#'6#?#?#C#Cz++,d$  %)!#/(8(F(F%))5"#4cjjAA01B1G1GHE01E1EFEu:?B &&##%""==(A-!+GX-GG+ . > #G %)OO$=$=/%!#'??#<#<,$i CD ! !%SXXt/B/B</P QI!$Y^^!4s9;M;M7N!NJ$(OO$=$=o$NMNN#6F!2,8),999(3y~~+>>029>>-3P0Q-02 ) 2 2$1C	4G$G!""'%1- ..99:KRPWW &&##%""==(A-!+GX-GG+ . > #O  
 --e4| &&##%""==(A-!+GX-GG+ . > #Oz "  &&##%""==(A-!+GX-GG+ . > #sx   V R> #V $D?V :V B4U4 
V 8U4 V 8U4 <,V >U1V 0U11V 4
V>V VV BXc                     U R                  X5        U[        R                  :X  a  U R                  X#5        U[        R                  :X  a  U R                  X#U5        X l        Xl        g r   )r%  rW   rZ   r  r\   rJ  r   r   )rH   rR   r  rQ   r/  s        rL   state_transition_hook$DataflowTracer.state_transition_hook  sS     	11%DCHH((;CKK**:cB)rN   refc                    [        U [        R                  5      (       a  U R                  n [        U [        R                  5      (       a  U R
                  n [        U [        R                  5      (       a  [        U 5      n U $ r   )r  r  Starredr?  Namer6  AST)rO  s    rL   _partial_resolve_ref#DataflowTracer._partial_resolve_ref  sU    c3;;''))Cc388$$&&Cc377##S'C
rN   targetc                   ^	 U R                   nUR                  n[        5       nUR                  b   UR                  R	                  U5      m	[        T	SU	4S j5      " 5       nU(       a  UR                  nUc  UR                  OUnO-T	R                  5       (       a  UR                  nUR                  n XA   nX1US[        5       4$ ! [         a     Nf = f! [         a    UR                  U   nUR                  n NEf = f)Nis_nonlocalc                     > T R                  5       (       + =(       a'    T R                  5       =(       a    T R                  5       $ r   )	is_globalis_assignedis_free)
target_syms   rL   <lambda>FDataflowTracer._resolve_store_data_for_simple_target.<locals>.<lambda>  s8    
 4 4 66 -"..0-"**,-rN   F)r   f_localsr-   symtablookupr   parent_scoper   rZ  	f_globalsKeyErrorr   )
rH   rV  rQ   scopelutr`   rX  	par_scoper   r]  s
            @rL   %_resolve_store_data_for_simple_target4DataflowTracer._resolve_store_data_for_simple_target  s     --nn<<#"\\008
 &!-   % 2 2I2;2CE..E))++//C!..E	'+C c5#%//    	'//&)C&&E	's*   AC -C 6C 
CC%D ?D c           	      d   U R                  U5      n[        U[        5      (       a  U R                  X25      $  U R                  R                  U5      u  nnnn[        U[$        [&        45      (       a+  U R                  (       a  U R(                  b  U R(                  n
O[        5       R+                  XVU5      n
U
c  UnOUR-                  [        U
5      U5      nUc  UnUUU
UU R.                  R                  U[1        5       5      4$ ! [         Ga    U R                  (       d  e [        U[        R                  5      (       a)  [        UR                  [        R                  5      (       d  e SnUR                  R                  UR                  R                  5      nUc  e [        5       R                   R                  [        U5      5      nUc  e Un[#        U5      n	[        U	[        R                  5      (       a&  UR                  R                  U	R                  5      nOU	nUc  e  GNf = f)NT)rT  r  strri  r   r   re  r   r  	Subscriptr?  rR  r`  r   r6  r-   
namespacesr   dictlistr   retrieve_namespace_attr_or_sub get_earliest_ancestor_containingr   r   )rH   rV  rQ   resolved_targetrf  r   attr_or_subis_subscriptnsslicevalattr_or_sub_objscope_to_uses               rL   resolve_store_data_for_target,DataflowTracer.resolve_store_data_for_target'  s    33F;os++==oUU	 0044_E4 cD$<((55((4
 #77O"fCC,O "05L AA?#\L  L5599/35Q
 	
[  	88fcmm44Jchh= = L..$$V\\__5C{""&&r#w/BzE08H(CHH--#nn00=&" #+	s    D D#H/.H/c                     U R                  U5      n[        U[        5      (       a  U R                  S US4$ U R                  U   u  p#pEX#XE4$ NF)rT  r  rl  r   r   )rH   rV  rf  r   rt  ru  s         rL   resolve_del_data_for_target*DataflowTracer.resolve_del_data_for_targeti  sW     **62fc""00$EE262P2PQW2X/[;44rN   
symbol_refc                 *   [        U[        5      (       a  U/$ U R                  U5      n[        U[        5      (       a  U R                  R                  U/ 5      $ [        U[        5      (       a#  U R                  R                  U5      nUc  / $ U/$ / $ r   )	r  r(   rT  r   r   r   rl  r   lookup_symbol_by_name)rH   r  r/  s      rL   resolve_loaded_symbols%DataflowTracer.resolve_loaded_symbolsr  s     j&))<..z:
j#&&1155j"EE
C((//EEjQC{	uIrN   symbol_refsc                 l    [        5       nU H#  nUR                  U R                  U5      5        M%     U$ r   )r   updater  )rH   r  r*   rO  s       rL   resolve_symbolsDataflowTracer.resolve_symbols  s/    %CNN466s;< rN   sym_for_objobj_namec                    [        U5      n[        5       nUR                  R                  U5      nUbW  UR                  (       aD  UbA  UR
                  Ul        [        UR                  [        5      (       a  UR                  Ul
        U$ UR                  R                  [        UR                  5      5      nUb"  UR                  U5      nS Ul        Ub  X6l
        ORUcC  UR                  U5      nUb  [        UR                  [        5      (       d  Sn	OUR                  n	OUn	[        XS S9nUb(  UR                   H  n
U
R                   (       d  M  U
n  O   UR                  cB  Ub?  UR                  S:w  a/  UR
                  Ul        UR                  c  UR                  Ul
        UR                  c,  US:X  a&   U R"                  R                  R                  Ul        U R(                  R*                  nUR                  c4  Ub1  Ub  X;R,                  ;  a  UR&                  nOU R"                  nXl        U$ ! [$         a    UR&                  Ul         Nvf = f)Nz<unknown namespace>rc  rH   )r6  r-   rn  r   is_anonymouscontaining_scoperc  r  r   rl  
scope_namerK   cloneget_first_full_symbolr%   aliasesis_globally_accessibler   AttributeErrorr   r   rQ   r`  )rH   r   r  r  obj_idr`   rv  r3  first_full_symr  aliasrQ   rc  s                rL   _get_namespace_for_obj%DataflowTracer._get_namespace_for_obj  s    C!!&)>;#:"-">">k..44$/$4$4BMI&&**2cmm+<="
 ""3'B"BO# ( !&!<!<V!D!)N<O<OQT1U1U!6J!/!4!4J%
3>B"$,,///"'K -
 OO#'  F*)::BO}}$ + 0 0??"x6'95"&"3"3"@"@"M"M 1177??"u'8#(F$11#00*O	 " 5"'"4"45s   >%H< <IImodule_or_functionnodeis_loadis_namedc                    [        U[        5      (       a  UnO`[        USS 5      nUc#  [        [        [        USS 5      SS 5      SS 5      n[        R                  R                  [        [        U5      5      nUc  g UR                  nUS;   a  g SnU R                  nSn	S n
UR                  S5      n[        U5       GH?  u  pU(       a  Un	OU	 SU 3n	[        R                  R                  U	5      nUc    g UnU(       a#  U(       d  UR                  S5      (       d  SU S	3n[        5       R                  R                  [        U5      5      nUca  UR!                  UU[#        5       U R$                  R&                  S
SS
[        U[(        R*                  [(        R,                  45      (       + US9	n
O[/        [1        U5      5      n
S
nU[3        U5      S-
  :X  a    O#U
R4                  nUc  [7        X]US9nGM=  UnGMB     U(       aJ  U
c   eU
R8                  (       d4  U R:                  R=                  [        U5      / 5      R?                  U
5        U
$ )Nru   __self__rK   )Nbuiltins__main__Tr:   .<>F)ru  	is_module	propagateimplicitsymbol_noderT   r  ) r  r   r   sysmodulesr   r   rl  rt   r   split	enumerate
startswithr-   r  r6  upsert_symbol_for_namer   r   r  r  Import
ImportFromnextiterr  	namespacer%   is_implicitr   r@  append)rH   r  r  r  r  modulemodule_nameis_first	cur_scopeup_to_componentsymbol
componentsidx	componentsym_namer  symbol_namespaces                    rL   "create_if_not_exists_module_symbol1DataflowTracer.create_if_not_exists_module_symbol  s*    (*55+=F/tDF~  2JE{TX ! [[__T#v%67F>oo8811	#' &&s+
'
3NC"+%4$5Qyk"B[[___5F~ H1D1DS1I1Ixj?fnn((F4G"99E55??!&"#!+D3::s~~2N!OO $ : 
 d7m,Hc*o))%//'%fiP	,	C 4D %%%%%..99"T(BGNNvVrN   obj_attr_or_subc                    U R                   c  g U R                   tnnnnnS U l         UR                  UUSS9n[        R                  SX5        Uca  UR                  UUSS9n	U	c
  [	        5       OU	1n
[        U[        5      nUR                  UUU
U R                  R                  UUU(       + US9nO*UR                  [        U5      :w  a  UR                  U5        U R                  XSS9  U$ )NT)ru  skip_cloned_lookupzfound sym %s in scope %sF)ru  r  r  r  )r  )r   &lookup_symbol_by_name_this_indentationr=  r>  r   r  r   r  r   r  r  r6  update_obj_refr  )rH   r  r  rf  r   attr_or_subscriptru  r^   r   parentparentsis_default_dicts               rL   5_clear_info_and_maybe_lookup_or_create_complex_symbolDDataflowTracer._clear_info_and_maybe_lookup_or_create_complex_symbol  s    ..6 //	
.2+::%# ; 

 	13>;AA!)#( B F
  &~ceF8G(k:O..!11;;)),,  / 	C ZZ2o..///u/U
rN   r  c                    [        U5        [        USS5      n[        XA5        US:X  a0  [        =R                  UR
                  UR                  4-  sl        g g )Nrt   r:   numpy)r   r   r+   r5   typesint32int64)rH   r  r^   r_   modnames        rL   after_importDataflowTracer.after_import8  sK    08&*b1g&g""v||V\\&BB" rN   node_idc                     X l         X l        g r   )r   r   )rH   _objr  _framer^   r_   s         rL   _save_node_idDataflowTracer._save_node_idA  s     *1&18.rN   r  c                |    U R                  U5        U R                  R                  U5        U R                  USS9  g )NFr-  )activate_guardr   addr  )rH   r  _noderQ   r  r^   r_   s          rL   after_loop_iterDataflowTracer.after_loop_iterW  s9     	E"((,,U3%%e5%ArN   c                     Xl         g r   )r   )rH   r   r^   r_   s       rL   after_assign_rhsDataflowTracer.after_assign_rhsl  s
     %(!rN   r  c                 &  ^  T R                   R                  US 5      nUc  g [        [        R                  U5      R
                  n[        UT R                  S9tpx/ n	U Hh  n
[        U
R                  R                  5      S:X  d  M(  U	R                  [        [        U
R                  R                  S   R                  5      5        Mj     T R                  [        U	5      5      T R                   U'   ["        R$                  " U 4S jU	 5       5        g )N)rf  rT   r   c              3   Z   >#    U  H   nTR                   R                  U5      v   M"     g 7fr   )r   r  ).0rO  rH   s     rL   	<genexpr>7DataflowTracer.after_subscript_slice.<locals>.<genexpr>  s,      $
* ))??DD*s   (+)r;  r   r   r  rm  slicer   r   r  rO  chainr  rl  r?  r  r   r   r)   r   )rH   r  r  r_   ___r  
slice_nodeliver^   subscript_live_refsrO  s   `          rL   after_subscript_slice$DataflowTracer.after_subscript_sliceq  s     ""&&w5<#--.44
0d;;
 !C377==!Q&#**4SWW]]15E5K5K+LM  >B=Q=Q#$>
11': 	## $
*$
 	
rN   r  _frame_r  call_contexttop_level_node_idc                   [        UR                  5      n[        U R                  U   [        R
                  5      (       a  U R                  R                  US 5        Ub  U[        5       L a  g [        R                  SXEU5        U R                  X5      nUc  Ub  U R                  R                  U5      nU R                  XUS9nSUR                  ;   nS nUb  UR                  UL a   UR!                  UUS9nU(       d$  U[$        R&                  [$        R(                  4;  aB  U R*                  R                  US5      =(       a    US L=(       a    U(       + U R*                  U'   Ub@  U[$        R&                  [$        R(                  4;   a  U R*                  R-                  US5        [        U5      nU R.                  c  Xpl        U R0                  c  UU l        U R.                  b8  Ub5  U R                  R-                  U R.                  / 5      R3                  U5         [        U[4        5      (       a  [7        U5      n[        U[6        5      (       a   [9        S U 5       5      (       d   Xl        g O'[        U[:        R<                  5      (       d   Xl        g SUR                  ;   a5  [        R                  SUUUUU5        UUUU4U R>                  U'    Xl        g S	UR                  ;   a1  [        R                  S
U5        UUUU4U R@                  U'    Xl        g [        R                  SXU5        UUUUU4U l!        U(       d   Xl        g Uc7  U R                  RD                  (       d  Ub  U R                  RG                  XS9nUca  U RH                  bT  U R                  RK                  U=(       d    S[        U5      -  U[M        5       U RH                  RN                  UUS L SSUS9	nUbD  U R.                  c   eU R                  R-                  U R.                  / 5      R3                  U5        Xl        g ! ["         a    S n GNWf = f! Xl        f = f)Nz%s %s of obj %sr  	subscriptru  Tc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )r  r5   r  )r  vs     rL   r  0DataflowTracer.attrsub_tracer.<locals>.<genexpr>  s%      CTaJq"2"8"899CTs   ')storez.save store data for node id %d: %s, %s, %s, %sdelzsave del data for node id %dzsaved load data: %s, %s, %sz<anonymous_symbol_%d>F)ru  r  r  r  r  )(r6  r?  r  r;  r  r:  r   r   r   r=  r>  r  r   r   r  r   r  	TypeErrorrW   before_attribute_loadbefore_subscript_loadr   r@  r   r   r  rp  tupleallr5   r  r   r   r   is_namespace_scoper  r   r  r   r  )rH   r   r  r  rR   r  r  r  r  r^   r_   value_node_idr  rf  ru  r   r  s                    rL   attrsub_tracerDataflowTracer.attrsub_tracer  sw   0 4::d))-8#((CC**..}dC;#.(%CHPP

 8#7++//9K++Cx+P"ekk1"{#'=BB%!- C  u))))-  
 5599+tL )D)(( 11+>
 5))))- $ 11<<S$GC++3/@,%%-)/D&++7CO**5500"fSkJ	&+T22$)*;$<!+U33 CT   F !&M   13C3I3IJJB !&A %++%D%%  % 	G001BC b !&a %++%=?PQ% 	E../@A N !&M NN-u !3D/  6 !&3 #))<<("//EE F  "t'H'H'T"//FFA 7"S' AE55??!-!)T!1#! $ G 
 &77CCC..9944b&% %K  J !&s>   ,Q $AQ 8 Q  =Q %9Q &*Q C%Q QQQc                 N    U R                   (       d(   S U l        S U l        S U l        U R                  U l        g U R                  c(   S U l        S U l        S U l        U R                  U l        g U R                  c   eU R                  XR                  U   5      nUb5  U R                  R                  U R                  / 5      R                  U5        S U l        S U l        S U l        U R                  U l        g ! S U l        S U l        S U l        U R                  U l        f = fr   )r   r   r   r   r   r   r  r;  r   r@  r  )rH   r   r  r^   r_   
loaded_syms         rL   after_complex_symbol#DataflowTracer.after_complex_symbol  s'   	>** 37D/)-D&/3D, $ = =D ))1 37D/)-D&/3D, $ = =D 33???SS((1J %..9944b&$26D/)-D&/3D, $ = =D 37D/)-D&/3D, $ = =Ds   C< C< 0A%C< <(D$arg_objarg_nodezpyc.Nullc                     U R                   S:  dQ  U R                  [        [        [        [
        [        [        [        [        [        [        [        [        [        4;  a  g  [!        USS9 Vs/ s H  nUR"                  UL d  M  UPM     nn[%        U5      S:X  a  US   R'                  US9$ [(        R*                  $ ! [         a     g f = fs  snf )Nr   Fshould_update_usage_inforT   )	used_node)r   r   api_codeapi_depsapi_has_tagapi_lift
api_mutate	api_rdeps
api_rusersapi_set_tagapi_symbolsapi_timestampapi_unset_tag	api_usersapi_watchpointsr  r2   r   r  r   rW   Null)rH   r  r  r^   r_   r   resolveds          rL   handle_lift_argument#DataflowTracer.handle_lift_argument3  s    
	!!A%):):C * *( ,HuU
Uww'! U 	 

 x=AA;0080DD88O  		
s   A!C 1CC
CCc                      U R                   R                  S5      nUc  g U R                  R	                  U5        SU l        g ! [         a     g f = f)Nr   T)r   r1  r2  r   r  r   )rH   external_calls     rL   _resolve_external_call%DataflowTracer._resolve_external_callU  sY    	 33==>WXM  ""=1/3,  		s   A 
AAarg_node_idkeyis_lastc          	      P   U =R                   S-  sl          U R                  R                  S5      nUc  g U R                  R                  U5      n[        U[        R                  5      (       a  U R                  U R                  L d   eU R                  R                  UR                  5      n	U	cD  U R                  R                  UR                  U[        5       U R                  R                   SUS9  Uc-  UR#                  UU(       a
  [%        USS9O	[        5       45        O-UR'                  UUU(       a
  [%        USS9O	[        5       45        U(       a  U R)                  5         UR*                  S:w  a  [-        USS 5      S	:X  a  [/        U5      $ g ! [         a     g f = f)
NrT   r   T)r  r  Fr  r  rt   z<lambda>)r   r   r1  r2  r;  r   r  r  rR  r   r   r  r6  r  r   r   r  _process_arg_implr2   _process_kwarg_implr%  r  r   r3   )
rH   r  r'  r(  r)  r^   r_   ext_call_candr  arg_syms
             rL   argumentDataflowTracer.argument_  s    	a	 33==>WXM  &&**;7h))$$(E(EEEE''==hkkJG!!88KKE55??! ( 9  ;++ $ -XPUV U	 -- $ -XPUV U
 '')!!Z/T2j@((_  		s   F 
F%$F%function_or_methodmethod_namerH  c                 ,    [        UUUUU5      U l        g r   )r/   r   )rH   r  r   r1  r2  rH  s         rL   _save_external_call_candidate,DataflowTracer._save_external_call_candidate  s      (=(
$rN   c                    [        USS5      R                  U R                  R                  S45      (       a  U R	                  U5        g U R
                  cc  Su  pgp[        UR                  [        R                  5      (       a4  U R                  R                  UR                  R                  5      U l        O'U R
                  Gtn
nnnnn	U
R                  XxS9U l        U(       a  S nOUc  S nO[        U[        5      (       d   eUnU R                  XR                  5      nU R!                  [        USS 5      XaX5        S U l        U R"                  R%                  5          Xl        S S S 5        U R                  U l        [+        UR,                  5      [+        UR.                  5      -   S:X  a  U R1                  5         g g ! , (       d  f       N`= f)Nrv   r:   zInteractiveShell.)NNNNr  r   r   )r   r  r   rv   r  r   r  funcr  rR  r   r  r6  r   rl  r  r4  r   r  r   r   r  rI   r<  r%  )rH   r1  r  rQ   r^   r_   r   r  ru  r  r  _ignoredr2  
module_syms                 rL   before_callDataflowTracer.before_call  s   
 %~r:EE11>>@ST
 
 ))%0..6=S:CL$))SXX..11GG		U # 33!"+"A"A! #B #D K[K/5555+K<<		

 	**Jt,c{	
 /3+$$))+ 2 , 99tyy>C..!3'') 4 ,+s   $G
Gfunction_idc                     U R                   =(       a    X R                  ;  nU(       a  U R                  R                  U5        U$ r   )r   r   r  )rH   r  r<  r^   r_   r/  s         rL   before_function_body#DataflowTracer.before_function_body  s7    %%U+=U=U*U$$((5
rN   retvalrP   c                 4   U R                   (       d  U R                  USS9(       d  g [        U R                  5      S:  a  U R                  R	                  5         S U l        U R                  (       a&  SU l        U R                  S   R                  U5        g g )NrT   )empty_stack_call_depthr   Fr   )	r   _try_reenable_tracingr  r   r   r   r   r   process_return)rH   r@  rP   rQ   r^   r_   s         rL   
after_callDataflowTracer.after_call  s     &&t/I/I! 0J 0
 
 t&&'!+##'')15.//38D0#226: 0rN   c                     U R                   =(       d    U R                  nU R                  R                  5          [	        S [        R
                  U5      U l         S S S 5        g ! , (       d  f       g = fr   )r   r   r   r  r%   	ANONYMOUS)rH   r^   r_   rc  s       rL   before_literalDataflowTracer.before_literal  sR     00QD4Q4Q'',,.(1i))<)D% /..s   !A$$
A2literalc                    U R                   c  g  U R                   R                  U5        [        R                  SU R                   5        SnS n[	        5       n[        XR                  U   5       GHW  u  u  pu  n
n[        U[        R                  5      (       a  [	        5       nUS-  nS nUS:X  aK  U R                  U5      nU(       a1  [        5       R                  R                  US   R                  S 5      OS nUb  UR                  USS9nUb  UR!                  U5        O([#        U5      nU
b  UR%                  [#        U
5      5        U R&                  R)                  [+        U5      S 5        [        U[,        R.                  5      (       d  GM$  U R                   R1                  UU	UU R2                  R4                  SSSS9  GMZ     U R                   U R6                  U'   U R                   R8                  nUR:                  (       a  UR8                  nUR:                  (       a  M  Uc   eUR1                  S	[+        U5      -  UUU R2                  R4                  SSSS
9nU R&                  R=                  U/ 5      R?                  U5        UU R@                  R)                  5         $ ! U R@                  R)                  5         f = f)Nzcreate literal scope %sr   rT   r   Tr  F)ru  r  r  z<literal_sym_%d>)r  r  r  )!r   r  r=  r>  r   r4   r;  r  r  rQ  r  r-   rn  r   r  r  r  r2   r  r   r   r6  r5   r  r  r   r  r   rc  r  r@  r  r   )rH   rK  r  r^   r_   starred_idxstarred_namespace
outer_depsi	inner_objinner_key_nodeinner_val_nodeinner_symbolsstarred_depstarred_symsrc  literal_syms                    rL   after_literalDataflowTracer.after_literal  s    $$,C	-%%44W=NN4d6O6OPK $J E,,W5 !
 nckk::14M1$K48K"a''+'B'B>'R  , !F--11,q/2H2H$O!% *
 )4-TT +$ U  $
 #.%))+6$8$HM%1"))*>~*NO..222n3EtLa!1!7!788--DD!%99CC%)!& #( E ;R =A<U<UD009"&";";"H"HL11+88 111+++&=="R[011;;! > K **55grBII+V&&**,D&&**,s   F J- BJ- ,A&J- -K	key_node_idc                 "    XR                   U'   U$ r   )r   )rH   r   rZ  r^   r_   s        rL   dict_keyDataflowTracer.dict_keyf  s     7:&&{3
rN   r  dict_node_idc                    U R                   R                  US 5      nUc  U$ Uc   eU R                  R                  US 5      n[        U[        R
                  5      (       a  [        U5      Ul        U$ r   )r   r   r   r  r5   r  rl  r  )	rH   r   r  rZ  r^  r^   r_   rf  key_objs	            rL   
dict_valueDataflowTracer.dict_valuel  so     4488M=J&&&0044[$Gg/5566"7|E
rN   elt_node_idindexcontainer_node_idc                n    U R                   R                  US 5      nUc  U$ Ub  [        U5      Ul        U$ r   )r   r   rl  r  )rH   r   rc  rd  re  r^   r_   rf  s           rL   list_or_tuple_elt DataflowTracer.list_or_tuple_elt  s=     4488dK=J"5zE
rN   lambda_node_idr  c           
         / nU R                   U   n[        U[        R                  5      (       d   eUR                  R
                   H#  nUR                  U R                  U5      5        M%     U R                  R                  S[        U5      -  UUU R                  R                  SSUS9n	Xyl        U R                  R                  U/ 5      R!                  U	5        g )Nz<lambda_sym_%d>TF)is_function_defr  r  )r;  r  r  r8  rI   defaultsrA  r  r   r  r6  r   r  r7  r   r@  r  )
rH   r   ri  r  r^   r_   sym_depsr  
kw_defaultr   s
             rL   after_lambdaDataflowTracer.after_lambda  s    
 "">2$

++++)),,JOOD77
CD -663'--77  7 
 !&&11."ELLSQrN   decofunc_node_iddecorator_idx.c                    ^ ^^^ UUUU 4S jnU$ )Nc                   > [        5       n TR                  T   T4UR                  [        U 5      '    T" U 5      UR                  R                  [        U 5      S 5        $ ! [         a*    UR
                  (       a  [        R                  SU 5         Naf = f! UR                  R                  [        U 5      S 5        f = f)Nz$failed to lookup node for func id %s)	r-   r;  deco_metadata_by_obj_idr6  re  r   r=  r!  r   )r7  r`   rq  rs  rr  rH   s     rL   tracing_decorator3DataflowTracer.decorator.<locals>.tracing_decorator  s    FES''5!;--bh7BDz--11"T(DA  S$$$$%KTRS --11"T(DAs   'A" B "1BB'C  )rH   rq  rr  rs  r^   r_   rw  s   ````   rL   	decoratorDataflowTracer.decorator  s    	B 	B ! rN   c                 ~   Xl         [        U[        [        45      (       d  g [	        U[        R
                  U R                  SS9n/ n[        U[        5      (       a  UR                  S[        5       45        [        XPR                  S   R                  -   5       H  u  nu  pxUR                  UUUSSSSS9  M     g )NT)rc  force_allow_iterationr   r   F)ru  r  r  r  )r   r  r  zipr%   rH  r   r  r   r   rI   r  )	rH   r/  r^   r_   rv  before_extrarP  argarg_symss	            rL   after_for_iterDataflowTracer.after_for_iter  s     %(!#	3/0066"&	
 79c9%%CE
+"+..r2777#
A %%!! & #
rN   rO   stmt_idc           
      V    U R                   (       d.  U R                  USU R                  U5      S9(       d	   SU l        g U R                   (       d   eX R                  ;   a'  U R                  U   R
                  (       a	   SU l        g U R                  R                  U5      nUb9  U R                  S SU[        R                  [        [        R                  U5      S9  [        5       R                  nU(       aD  [         R"                  S:  a  [$        R'                  S5        O
[)        5         UR+                  5         [-        5       R/                  5       nUR0                  R3                  UR4                  5        UR4                  R+                  5         SU l        g ! SU l        f = f)NrT   )rB  r  Fr   r  )      z#skipping watchpoint on Python < 3.7)r   rC  r  r   r   finishedr;  r   handle_other_sys_eventsrW   r  r   r  r	  r-   active_watchpointsr  version_infor=  r>  
breakpointr   r$   r   dynamic_writesr  _pending_dynamic_writes)	rH   rO   r  rQ   r^   r_   r	  r  cells	            rL   r  DataflowTracer.after_stmt  s[   	:**43M3M'(&*&@&@&I 4N 4
 . 5:D1- ****111**73<<" 5:D1! &&**73D,,!UCNNd388T>R -  "&!:!:!##f,NN#HIL"((*7'')D&&t'C'CD((..049D1ED1s   6F A F 
DF 	F(r	  c                 b   [        U5      tp#nU Vs1 s H  oUR                  iM     snU-   Vs1 s H  ofR                  5       iM     sn H&  nUb  XpR                  ;   a  M  UR	                  SS9  M(     [        5       R                  n[        5       R                  n	[        5       n
U Hy  nUR                  5       b  M  [        UR                  5      S:w  a  M1  UR                  S   R                  nUR                  X5      nXLd  Ma  X;  d  Mh  U	R                  X5        M{     g s  snf s  snf )NT)refreshrT   r   )r   rO  	to_symbolr   resync_if_necessaryr.   user_nsr-   r   objectr  r  r?  r   r  )rH   r	  r  deadr^   rrO  r   r  r   unavailableref_name	ref_values                rL   _handle_skipped_sub_statements-DataflowTracer._handle_skipped_sub_statements  s    6t<Q?C/Dt!t/Dt/KL/KMMO/KLC{c%C%CC##D#1 M '//v**hC}}*399~"yy|))HH:I+0L33HH  0ELs
   D'D,c           	      *   U R                   (       a  U R                  R                  (       d   eU R                  (       a  U R	                  U5        Ub  [        5       nUR                  R                  S5      nUc  S OUR                  nUbE  [        UR                  R                  U/ 5      5      S::  a  UR                  R                  US 5        UR                  R                  SU[        USS9USS9  U =R                  S-  sl        SU l        U$ )Nr^   rT   Fr  )r  )r   r   rZ  r   r  r-   r   r   r  r  r  rn  r   r  r2   r   )rH   r/  r	  r^   r_   r`   prev_underscore_symprev_underscore_ids           rL   after_module_stmt DataflowTracer.after_module_stmt  s    ""00::::77//5?FE"'"4"4"8"8"=+39L9S9S  #.))*<bABaG  $$%7>55$TEJ 6  	!!Q&!7<4
rN   c                    U R                  5         X l        U R                  [        [        R
                  U R                  U   5      US9nUR                  (       a  g U R                  b  U R                  n[        UR                  [        R                  [        R                  [        R                  [        R                  [        R                  45      (       a  U R!                  S UR"                  U5        X`l        U R$                  (       d5  U R'                  UUR)                  5       S9(       a  U R+                  5         g g g )NrQ   )r  )r  r   _get_or_make_trace_stmtr   r  r	  r;  r  r   r  r  ForAsyncForIfWith	AsyncWithr  r  r   rC  r  r   )rH   rO   r  rQ   r^   r_   r  r   s           rL   before_stmtDataflowTracer.before_stmt.  s   !!(114..w78 2 

 ,,8+/+L+L(,66#,,#--H  &B&J&JER,6)&&4+E+E","B"B"D ,F ,
 &&(	,
&rN   c                 8   [        5       R                  (       aC  U R                  (       a   eU R                  S::  a   [        R                  SU R                  5        U R                  U5      n[        5       R                  (       a  US:  d
   SU-  5       eX R                  :  a  g[        U R                  5      S:X  a  U R                  nOU R                  R                  SSS9nUR                  (       a  g[        5       R                  (       a  U R                  R                  S5        [!        [        U R                  5      5       H'  nU R                  R                  S	U* S9nXR:  d  M%  Us  $    U R"                  U:  a  [        U R                  5      $ g)
Nr   z'expected managed call depth > 0, got %srT   z expected call depth >= 1, got %dr   r   )depthzreenable tracing >>>rn   )r-   r   r   rE   r=  errorrq   r   r  r   r   r1  r  trace_messages_enabledEVENT_LOGGERr>  rangern   )rH   rQ   rE   stmt_in_top_level_frametracer_call_stack_lengthrn   s         rL   )_call_stack_length_for_reenabling_tracing8DataflowTracer._call_stack_length_for_reenabling_tracingG  sS   6....!#FX33E:
6?S$F$SS?===t1$&*&G&G#&*oo&?&?.a '@ '# #++6((%%&<=(-c$//.B(C$"oo77!*B)B 8 O ,// )D :-t''rN   rB  r  c                 p   U R                  U5      nU(       d  US:X  a  g[        US5      nU[        U R                  5      ::  d   e[        U R                  5      U:  a5  U R                  R	                  5         [        U R                  5      U:  a  M5  U R
                  U l        U R                  U l        [        U R                  5      S:X  a	  Ub  X l        [        U R                  5      S:  a5  U R                  R	                  5         [        U R                  5      S:  a  M5  U R                  5         g)Nr   Fr   T)r  r]   r  r   r   r   rE   r   rF   r   r)  )rH   rQ   rB  r  #tracing_reenabled_call_stack_lengths        rL   rC  $DataflowTracer._try_reenable_tracingf  s	    ::5A 	, %)LPR)R.1//
+ 3c$//6JJJJ$//"%HHOO! $//"%HH//#'#A#A t1$)?)K4O$))*Q.##'') $))*Q. 	$$&rN   r  c                     U R                   R                  [        U5      5      nUc+  [        R                  " XS9nX0R                   [        U5      '   U$ )Nr  )r   r   r6  r'   create_and_track)rH   r  rQ   r  s       rL   r  &DataflowTracer._get_or_make_trace_stmt  sL     ++//9>
"33IKJ4>""2i=1rN   c                 $   [        5       R                  (       d  g Uc   e[        R                  " U5      R	                  S5      R                  S5      S   nS[        USS5      -  U-   nU R                  R                  SUR                  X5        g )N
r    
col_offsetz %3d: %10s >>> %s)
r-   r  
astunparser8   stripr  r   r  r>  lineno)rH   rR   r  r  codelines        rL   _maybe_log_eventDataflowTracer._maybe_log_event  s     v,,$$$%%i066t<BB4HKL!<<xG!!!2!2E	
rN   cell_numr  c                    U[         R                  :X  a>  U R                  b1  [        [        R
                  U R                  U R                     5      $  U R                  U   U   nU[         R                  :X  a  [        U[        R                  [        R                  45      (       d  U R                  R                  [        U5      S 5      n[        5       R                   (       aD  ["        R%                  S[        R&                  " U5      Uc  S O[        R&                  " U5      5        UbB  [)        USS 5      U:X  a1  [        U[        R                  [        R                  45      (       a  UnU$ ! [*         aB  n[        5       R                   (       a  U R,                  R/                  SUU5        Ue S nAg S nAff = f)Nznode %s parent %sr  z/got key error for stmt node in cell %d, line %d)rW   r\   r   r   r  r	  r;  stmt_by_lineno_by_module_idrZ   r  r  r  parent_stmt_by_idr   r6  r-   r   r=  infodumpr   re  r  r>  )rH   rR   r  r  r  parent_nodees          rL   _get_stmt_node_for_sys_event+DataflowTracer._get_stmt_node_for_sys_event  se    CKKD$:$:$F $"5"5d6L6L"MNN	88B6JI C00#//B* *
 #4488IM6%%KK++ + 3+9N  +Xt<F";1E1Es0WXX +I 	v!!!!))E
  " 	s   DE2 2
F><8F99F>ret_objc                 .   [        5       R                  U5      u  pxUc   eUS:X  a  g U R                  XGU5      n	U	c   eU R                  X5      n
U R	                  XIU
5         U R
                  R                  S5      nU
R                  U:X  aU  [        5       R                  (       a  U R                  R                  S5        U R                  U5        [        R                  $ Xl	        U R!                  XJX15        g ! [         a    [        U	5      n Nf = f)Nr   r   z disable tracing >>>)r-   get_positionr  r  r  r   r1  r2  r6  node_id_for_last_callr  r  r>  r  rW   r  rM  )rH   r  rP   rQ   rR   r^   r_   r  r  r  r  r   s               rL   handle_callDataflowTracer.handle_call  s
     6..u5###Q;55evN	$$$11)C
e
;		>040G0G0Q0Q31- ++/PPv,,!!))*@A))%088O+L(""5eE  	>
 139-	>s   #C< <DDr  c                R   U R                   (       d  U[        R                  :X  d   e[        5       R	                  U5      u  pUc   eU[        R                  :w  a  U R                  XHU	5      nUc   eU R                  XS5      n
U R                  XEU
5        U R                  XJX15        g r   )	r   rW   r  r-   r  r  r  r  rM  )rH   r  rP   rQ   rR   r  r^   r_   r  r  r  s              rL   r  &DataflowTracer.handle_other_sys_events  s     &&%3>>*AAA6..u5###CNN"99%6RI$$$11)C
e
;""5eErN   )1r   r   r   r   r   r   rE   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rs   r   )T)TFr}  )rt   ru   rv   rw   r1   ast_rewriter_clsrx   rW   r{   r   boolr   rD   r   r   r   r   r
   r	   r   r   rl  r   r   r   propertyr   AugmentationSpecr   r   r   r   r  r
  r'   r   r  r%  r)  r  rJ  rM  staticmethodr   r  rS  rT  r&   r   r(   ri  
AttrSubValrz  r~  r  r  r%   r  r  r  rz   r  r   r:  r   before_attribute_storebefore_attribute_delr  before_subscript_storebefore_subscript_delNodeIdr  after_for_loop_iterafter_while_loop_iterafter_comprehension_ifafter_comprehension_eltafter_dict_comprehension_keyafter_dict_comprehension_valuer  r  skip_when_tracing_disabledr  register_handler	Attributerm  r  after_load_complex_symbolr
  after_argumentr   r!  r%  r   r/  r:  r4  r>  before_lambda_bodyrE  before_dict_literalbefore_list_literalbefore_tuple_literalrI  after_dict_literalafter_list_literalafter_tuple_literalro  rp  r  rX  r\  ra  list_elt	tuple_eltrg  ro  rz  r  r  r	  r  r  r  r  rC  r  r  r  rZ   r  r\   r!  r  r   r   r   s   @rL   r   r      s
   *!">>"(1"	"
HJT	 '95E+F ' ' SWSE3J' #4U3#8L3L-M(M#NO 
3%*		  
 SW	** * #4U3#8L3L-M(M#NO	*
 
#	$* *" G40D0D+E G G)S )201
"
N) NI NRV N0)^^)1:)	)8<d <d <
 7;	;	;/3	;		;TH#TH,5TH<?TH	THl ~~    	 
   
   %S#''(9": uS#X   0 0"+ 0	uc3c&k1	2 0D@
Ccgg-.@
7@@
	uj#tS[8	9@
D5Ccgg-.5	uhsmZ5	65S#''6 9:	f"3uS#v5E/F+G CPVK  RV;;%-f%5;AI#;	;B FF ggF 	F
 F 
&	FP("(*-''(	&	(T 	c../Cz CD C 0C 	OO%%&&$$%%&&$$	

96 9 9
9 	##%%&&'',,..	
	B"+B8;B	B	B 	c223##(C (d ( $ 4( 	c778##
# 
 
t 
 $ 9
( 	%%&&$$%%&&$$	
	 	## #'J&J& CMM3==01J& 	J&
 ~~J& &J& J& "J& 3-J& 
J& $	J&X 	c;;<> >f >4 > =>( 	#,,-##&)gg	%Z(&01	2 $ .@4 	c001##;; ;
 c]; ; 
,	; $ 2;z
$
 c]
  	

 c]
 88
 

  	__##1*(+1*9B1* $ 1*f 	s779O9OPQ 6  R 	cnn-;; ; 	; .;2 	####$$	
 	## $ 	""""##	
 	##I-T4./I-:@I- $I-V 	cll+##C f  $ , 	cnn-## 
   $ .& 	s||S]];<## 
 } " $ =  	c../##RR(+R5>R	R $ 0R( 	cmm,!!+.!?B!	#xS))	*! -!( 	c001# D  2< 	cnn-:s :S : :QU : .:@I388 I I& 	#//0388 (3-  18 	coo.) )s )9 )SW ) /)0y S D 15&+	 !)  $	
 
6*3	
~~
 CHH%
 	

 

$^^$/2$<?$	#((	$L 	chh'$$ $ 	$
 ~~$ 
$z"	#$ ($L 	s{{CMM:; )-FF F 	F
 ~~F CHH%F 
F <FrN   r   )|r  r   loggingr|   r   r  collectionsr   
contextlibr   r  r   r   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   pyccolorW   re   r   ipyflow.analysis.live_refsr   ipyflow.analysis.symbol_refr   ipyflow.annotations.compilerr   ipyflow.api.liftr   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r    r  r!   r  r"   r  r#   r  ipyflow.data_model.cellr$   ipyflow.data_model.namespacer%   ipyflow.data_model.scoper&   ipyflow.data_model.statementr'   ipyflow.data_model.symbolr(   ipyflow.data_model.timestampr)   ipyflow.modelsr*   r  ipyflow.patchesr+   ipyflow.singletonsr,   r-   r.   ipyflow.tracing.external_callsr/   ,ipyflow.tracing.external_calls.base_handlersr0   !ipyflow.tracing.flow_ast_rewriterr1   ipyflow.tracing.symbol_resolverr2   ipyflow.tracing.uninstrumentr3   ipyflow.tracing.utilsr4   ipyflow.typesr5   r6   ipyflow.utils.misc_utilsr7   r  hasattrr  r   r  ObjIdr  SavedStoreDataSavedDelDatarl  SavedComplexSymbolLoadData	getLoggerrt   r=  setLevelERRORr  AugmentationTypeprefixr   r   r   r?   r   ry  rN   rL   <module>r     s   
   	  
 # % 5 5      D A Q - - 3 - 1 / 1 3 7 7 / ; ) 2 * 2 , 2 1 ) ? ? @ L A @ 5 U > 4S)J
	y#z478YZ56"9c:tXc]#RS  
		8	$   $$!!(( ..!!(("  $$!!(("
>+ >B_F& _FrN   