+
    UBi                    r   ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
t
^ RIHt ^RIHtHtHt ^RIHt ^RIHtHtHtHtHtHtHtHtHtHtHt ^R	IHt ^R
I H!t!H"t"H#t#H$t$H%t% ^RIH&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3 ]Ph                  '       d+   ^RI5H6t6 ^RI H7t7 ^RIH8t8H9t9H:t: ^RIH;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtB ]P                  ! R4      tD]P                  ! R4      tER R ltF]	 ! R R4      4       tG]	 ! R R]4      4       tH]	 ! R R]4      4       tIR R ltJ ! R R4      tK ! R R]4      tLR# )     )annotationsN)defaultdict)	dataclass)Path)mparsermesonlibmlog)environment)MesonInterpreterObjectInterpreterBaseInvalidArgumentsBreakRequestContinueRequestDisablerdefault_resolve_keyis_disabledUnknownValueUndefinedVariableInterpreterObject)flatten)StringHolderBooleanHolderIntegerHolderArrayHolder
DictHolder)ArgumentNodeArithmeticNode	ArrayNodeAssignmentNodeBaseNode	EmptyNodeIdNode
MethodNodeNotNodePlusAssignmentNodeTernaryNode
SymbolNodeTokenFunctionNode)
AstVisitorInterpreter)
SubProjectTYPE_var	TYPE_nvar)AndNodeComparisonNodeForeachClauseNodeIfClauseNode	IndexNodeOrNodeTestCaseClauseNode
UMinusNode_T_Vc                    V ^8  d   QhRRRR/# )   valstrreturnr'    )formats   "?/usr/lib/python3.14/site-packages/mesonbuild/ast/interpreter.py__annotate__rB   N   s     ; ; ; ;    c                6    \        \        R R ^ ^ ^ RV 4      4      # ) r   r   )r'   r(   )r<   s   &rA   _symbolrG   N   s    eBAq!VS9::rC   c                  D    ] tR t^Rt$ R]R&   R]R&   R R ltR R ltRtR	# )
IntrospectionFiler=   subdirrelc                    V ^8  d   QhRRRR/# )r;   root_dirr   r>   r?   )r@   s   "rA   rB   IntrospectionFile.__annotate__W   s     = =D =T =rC   c                	d    WP                   ,          V P                  ,          P                  4       # N)rJ   rK   resolve)selfrM   s   &&rA   to_abs_pathIntrospectionFile.to_abs_pathW   s!    ;;&1::<<rC   c                   V ^8  d   QhRR/# )r;   r>   intr?   )r@   s   "rA   rB   rN   Z   s     F F# FrC   c                	n    \        V P                  P                  V P                  V P                  34      # rP   )hash	__class____name__rJ   rK   rR   s   &rA   __hash__IntrospectionFile.__hash__Z   s&    T^^,,dkk488DEErC   r?   N)rZ   
__module____qualname____firstlineno____annotations__rS   r\   __static_attributes__r?   rC   rA   rI   rI   R   s    K	H=F FrC   rI   c                  T    ] tR t^^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   RtR# )IntrospectionDependencyT.Union[str, UnknownValue]nameT.Union[bool, UnknownValue]requiredz"T.Union[T.List[str], UnknownValue]versionboolhas_fallbackconditionalr)   noder?   NrZ   r^   r_   r`   ra   rb   r?   rC   rA   rd   rd   ^   s&    
$$))//
rC   rd   c                      ] tR t^ht$ 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tR# )IntrospectionBuildTargetr=   rf   machineidtypename
defined_inrJ   rg   build_by_default	installedzT.List[str]outputsT.List[BaseNode]source_nodesr    extra_filesT.Dict[str, TYPE_var]kwargsr)   rm   r?   Nrn   r?   rC   rA   rp   rp   h   sJ    
ILGMOK11**""!!
rC   rp   c                    V ^8  d   QhRRRR/# )r;   srcT.Union[BaseNode, UnknownValue]r>   rj   r?   )r@   s   "rA   rB   rB   x   s     C C8 CT CrC   c                    \        V \        4      ;'       d"    V P                  P                  R9  ;'       g    \        V \        4      # )files>   r   get_variable)
isinstancer)   	func_namevaluer#   )r~   s   &rA   is_ignored_edger   x   sJ    sL)bbcmm.A.AIb.b  C  Cgqru  xB  hC  CrC   c                  \    ] tR t^{t$ R]R&   R]R&   R R ltR R ltR R	 ltR
 R ltRt	R# )DataflowDAGzVT.DefaultDict[T.Union[BaseNode, UnknownValue], T.Set[T.Union[BaseNode, UnknownValue]]]src_to_tgtstgt_to_srcsc                   V ^8  d   QhRR/# r;   r>   Noner?   )r@   s   "rA   rB   DataflowDAG.__annotate__   s     , ,$ ,rC   c                	V    \        \        4      V n        \        \        4      V n        R # rP   )r   setr   r   r[   s   &rA   __init__DataflowDAG.__init__   s    &s+&s+rC   c               $    V ^8  d   QhRRRRRR/# )r;   sourcer   targetr>   r   r?   )r@   s   "rA   rB   r      s$     - -> -Hg -lp -rC   c                	    V P                   V,          P                  V4       V P                  V,          P                  V4       R # rP   )r   addr   )rR   r   r   s   &&&rA   add_edgeDataflowDAG.add_edge   s4     $$V, $$V,rC   c               $    V ^8  d   QhRRRRRR/# )r;   srcsz&T.Set[T.Union[BaseNode, UnknownValue]]reverserj   r>   r?   )r@   s   "rA   rB   r      s#      D t X~ rC   c                	   VP                  4       pVP                  4       pV'       d   \        4       pV'       d4   V F,  pVP                  R  V P                  V,           4       4       K.  	  MEV F?  p\	        V4      '       d   K  VP                  R V P
                  V,           4       4       KA  	  VP                  V4       TpK  V# )c              3  L   "   T F  p\        V4      '       d   K  Vx  K  	  R # 5irP   )r   ).0r~   s   & rA   	<genexpr>(DataflowDAG.reachable.<locals>.<genexpr>   s     `.Cs?[^K_ss.Cs   $
$c              3  $   "   T F  qx  K  	  R # 5irP   r?   )r   tgts   & rA   r   r      s     D.Css.Cs   )copyr   updater   r   r   )rR   r   r   	reachableactivenewr   r~   s   &&&     rA   r   DataflowDAG.reachable   s    IIK	:=%C!CJJ`d.>.>s.C`` " "C&s++ JJDd.>.>s.CDD " S!FrC   c               $    V ^8  d   QhRRRRRR/# )r;   r~   r   r   r>   z/T.List[T.List[T.Union[BaseNode, UnknownValue]]]r?   )r@   s   "rA   rB   r      s(     
 
"A 
Kj 
  p_ 
rC   c                	   a W.3.p. pV'       dl   VP                  4       w  poWR8X  d   VP                  S4       \        V4      '       d   KE  VP                  V3R  lV P                  V,           4       4       Ks  V# )c              3  :   <"   T F  qSV.,           3x  K  	  R # 5irP   r?   )r   r   paths   & rA   r   -DataflowDAG.find_all_paths.<locals>.<genexpr>   s     N8Mtse|,8Ms   )popappendr   extendr   )rR   r~   r   queuepathscurr   s   &&&   @rA   find_all_pathsDataflowDAG.find_all_paths   sf    u		IC}T"s##LLN8H8H8MNNrC   )r   r   N)
rZ   r^   r_   r`   ra   r   r   r   r   rb   r?   rC   rA   r   r   {   s'    gggg,-&
 
rC   r   c                     a  ] tR t^tRMR V 3R llltR R ltR R ltR R	 ltR
 V 3R lltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R lt]R3R  R! lltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 lt R: R; lt!R< R= lt"R> R? lt#R@ RA lt$RB RC lt%RNRD RE llt&RF RG lt'RH V 3RI llt(RJ V 3RK llt)RLt*V ;t+# )OAstInterpreterNc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r;   source_rootr=   rJ   
subprojectr-   subproject_direnvzenvironment.EnvironmentvisitorszT.Optional[T.List[AstVisitor]]r?   )r@   s   "rA   rB   AstInterpreter.__annotate__   sE     U UC U U* U^a Uh U  Lj UrC   c                	j  < \         SV `  WW4V4       Ve   TM. V n        . V n        \	        \
        4      V n        \	        \
        4      V n        \        4       V n	        / V n
        RV n        R\        4       R\        4       R\        4       R\        4       /V n        V P                  P                  / RV P                   bRV P                   bRV P                   bR	V P                   bR
V P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   b/ RV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bRV P                   bR V P                   bR!V P                   bR"V P                   bR#V P                   bR$V P                   bR%V P                   bR&V P"                  bR'V P                   bC/ R(V P                   bR)V P                   bR*V P                   bR+V P                   bR,V P                   bR-V P                   bR.V P$                  bR/V P&                  bR0V P(                  bR1V P*                  bR2V P                   bR3V P                   bR4V P                   bR5V P                   bR6V P                   bR7V P                   bR8V P                   bCR9V P                   R:V P                   R;V P                   R<V P                   R=V P                   R>V P                   R?V P                   R@V P                   /C4       R # )ANFmesonhost_machinebuild_machinetarget_machineprojecttest	benchmarkinstall_headersinstall_maninstall_datainstall_subdirinstall_symlinkinstall_emptydirconfiguration_dataconfigure_filefind_programinclude_directoriesadd_global_argumentsadd_global_link_argumentsadd_project_argumentsadd_project_dependenciesadd_project_link_argumentsmessage	generatorerrorrun_commandassertr   
dependency
get_option
join_pathsr
   importvcs_tagadd_languagesdeclare_dependencyr   
executablestatic_libraryshared_librarylibrarybuild_targetcustom_target
run_targetrJ   set_variabler   unset_variableis_disableris_variabledisablerjarwarningshared_moduleoptionboth_librariesadd_test_setupsubdir_donealias_targetsummaryrangestructured_sourcesdebug)superr   r   nestingr   listcur_assignmentsall_assignment_nodesr   dataflow_dagfuncvalstaintedr   predefined_varsfuncsr   func_do_nothing
func_filesfunc_subdirfunc_set_variablefunc_get_variablefunc_unset_variable)rR   r   rJ   r   r   r   r   rY   s   &&&&&&&rA   r   AstInterpreter.__init__   s   j#N$,$8b$&r}  C  sDP[\`Pa! (M13\^LN\^ln	 
 	

 ;9d&:&: ;!4#7#7;&(<(<; -d.B.B; )$*>*>	;
 *4+?+?; ,T-A-A; -d.B.B; .t/C/C; 01E1E; ,T-A-A; *4+?+?; 1$2F2F; 243G3G; 78L8L; 3D4H4H;  6t7K7K!;" 89M9M#;$ %d&:&:%;& '(<(<';( #D$8$8);* )$*>*>+;, $T%9%9-;. ()=)=/;0 ()=)=1;2 ()=)=3;4 ()=)=5;6 )$*>*>7;8 $T%9%99;: %d&:&:;;< +D,@,@=;> 01E1E?;@ #DOOA;B ()=)=C;D ,T-A-AE;F ,T-A-AG;H %d&:&:I;J *4+?+?K;L +D,@,@M;N ()=)=O;P $T%5%5Q;R *4+A+AS;T *4+A+AU;V ,T-E-EW;X )$*>*>Y;Z )$*>*>[;\ &t';';];^ !$"6"6_;` %d&:&:a;b +D,@,@c;d $T%9%9e;f ,T-A-A+T-A-A($*>*>)4+?+?$d&:&:"D$8$8/1E1E"D$8$8u; ;	rC   c               $    V ^8  d   QhRRRRRR/# )r;   argsT.Anyr|   r>   zT.Tuple[T.Any, T.Any]r?   )r@   s   "rA   rB   r     s"      5 % <Q rC   c                	    W3# rP   r?   )rR   r  r|   s   &&&rA   _unholder_argsAstInterpreter._unholder_args  s
    |rC   c                    V ^8  d   QhRRRR/# )r;   resr  r>   r?   )r@   s   "rA   rB   r     s      e  rC   c                	    V# rP   r?   )rR   r  s   &&rA   
_holderifyAstInterpreter._holderify  s    
rC   c               (    V ^8  d   QhRRRRRRRR/# )	r;   rm   r    r  T.List[TYPE_var]r|   r{   r>   r   r?   )r@   s   "rA   rB   r     s+      H 4D Nc ht rC   c                	    \        4       # rP   )r   )rR   rm   r  r|   s   &&&&rA   r  AstInterpreter.func_do_nothing  s
    ~rC   c                   V ^8  d   QhRR/# r   r?   )r@   s   "rA   rB   r     s      d rC   c                	   < \         SV `  4        V P                   F  pV P                  P	                  V4       K   	  R # rP   )r   load_root_meson_filer   astaccept)rR   irY   s   & rA   r  #AstInterpreter.load_root_meson_file  s,    $&AHHOOA rC   c               (    V ^8  d   QhRRRRRRRR/# 	r;   rm   r    r  r  r|   r{   r>   r   r?   )r@   s   "rA   rB   r     s1     Z Z Z0@ ZJ_ Zdh ZrC   c                	   V P                  V4      p\        V4      ^8w  g   \        V^ ,          \        4      '       g&   \        P
                  P                  RV R24       R# V P                  V P                  V^ ,          4      w  rEV'       g8   \        P
                  P                  RP                  V^ ,          4      4       R# V P                  V P                  W@P                  4      '       gT   \        P                  P                  V\        P                   4      p\        P
                  P                  RV R24       R# R# )   zUnable to evaluate subdir(z!) in AstInterpreter --> Skipping
Nz?Trying to enter {} which has already been visited --> Skipping
zUnable to find build file z --> Skipping
)flatten_argslenr   r=   sysstderrwrite_resolve_subdirr   r@   _evaluate_subdirr   osr   joinr
   build_filename)rR   rm   r  r|   rJ   is_newbuildfilenames   &&&&   rA   r  AstInterpreter.func_subdir  s      &t9>DGS!9!9JJ9$?abc--d.>.>QHJJ_ffgklmgnop$$T%5%5v}}MMGGLL1K1KLMJJ9-XY NrC   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r;   objr    method_namer=   r  r  r|   r{   r>   r  r?   )r@   s   "rA   rB   r     s6      X C GW av   |A rC   c                	   \         P                  ! W4P                  4       4       F%  p\        V\        4      '       g   K  \	        4       u # 	  \        V\
        4      '       d4   \        V\        P                  ! R V 4      4      P                  W#V4      pV# \        V\        4      '       d4   \        V\        P                  ! R V 4      4      P                  W#V4      pV# \        V\        4      '       d4   \        V\        P                  ! R V 4      4      P                  W#V4      pV# \        V\        4      '       d4   \        V\        P                  ! R V 4      4      P                  W#V4      pV# \        V\         4      '       d4   \#        V\        P                  ! R V 4      4      P                  W#V4      pV# \	        4       # r+   )	itertoolschainvaluesr   r   r=   r   Tcastmethod_callrj   r   rV   r   r   r   dictr   )rR   r4  r5  r  r|   argresults   &&&&&  rA   inner_method_call AstInterpreter.inner_method_call  sd   ??49C#|,,#~% : c3!#qvvmT'BCOOP[cijF  T"""3}d(CDPPQ\djkF  S!!"3}d(CDPPQ\djkF  T"" aff]D&ABNN{bhiF
 	 T""QVVM4%@AMMkaghF   >!rC   c                    V ^8  d   QhRRRR/# )r;   rm   zmparser.MethodNoder>   r   r?   )r@   s   "rA   rB   r   2  s     
" 
" 2 
"t 
"rC   c                	@   VP                   pV P                  V4       V P                  V4      pVP                  P                  pV P                  VP                  4      w  rV\        WV4      '       d   \        4       pMV P                  W4WV4      pWpP                  V&   R # rP   )source_objectevaluate_statementnode_to_runtime_valuerf   r   reduce_argumentsr  r   r   r@  r  )rR   rm   	invocabler4  r5  r  r|   r  s   &&      rA   r<  AstInterpreter.method_call2  s~    &&		*((3iioo..tyy9t$$*C((4HC!drC   c                    V ^8  d   QhRRRR/# )r;   rm   zmparser.StringNoder>   r   r?   )r@   s   "rA   rB   r   >  s      %7 D rC   c                	    R # rP   r?   rR   rm   s   &&rA   evaluate_fstringAstInterpreter.evaluate_fstring>  s    rC   c                    V ^8  d   QhRRRR/# )r;   r   zmparser.ArrayNoder>   r   r?   )r@   s   "rA   rB   r   A  s     ) )+< ) )rC   c                	b    VP                   P                   F  pV P                  V4       K  	  R # rP   )r  	argumentsrE  )rR   r   r>  s   && rA   evaluate_arraystatement&AstInterpreter.evaluate_arraystatementA  s$    88%%C##C( &rC   c                    V ^8  d   QhRRRR/# )r;   r   r   r>   r   r?   )r@   s   "rA   rB   r   E  s     + + +4 +rC   c                	r    V P                  VP                  4       V P                  VP                  4       R # rP   rE  leftrightrR   r   s   &&rA   evaluate_arithmeticstatement+AstInterpreter.evaluate_arithmeticstatementE  &    )		*rC   c                    V ^8  d   QhRRRR/# )r;   r   r7   r>   r   r?   )r@   s   "rA   rB   r   I  s     + +J +4 +rC   c                	<    V P                  VP                  4       R # rP   rE  r   rY  s   &&rA   evaluate_uminusstatement'AstInterpreter.evaluate_uminusstatementI      		*rC   c                    V ^8  d   QhRRRR/# )r;   rm   r&   r>   r   r?   )r@   s   "rA   rB   r   L  s     1 1[ 1T 1rC   c                	    \        V\        4      '       g   Q hV P                  VP                  4       V P                  VP                  4       V P                  VP
                  4       R # rP   )r   r&   rE  	condition	trueblock
falseblockrL  s   &&rA   evaluate_ternaryAstInterpreter.evaluate_ternaryL  sK    $,,,,//0rC   c                    V ^8  d   QhRRRR/# )r;   rm   zmparser.DictNoder>   r   r?   )r@   s   "rA   rB   r   R  s     ' '+; ' 'rC   c                	    VP                   P                  P                  4        F'  w  r#V P                  V4       V P                  V4       K)  	  R # rP   )r  r|   itemsrE  )rR   rm   kvs   &&  rA   evaluate_dictstatement%AstInterpreter.evaluate_dictstatementR  s=    II$$**,DA##A&##A& -rC   c                    V ^8  d   QhRRRR/# )r;   rm   r4   r>   r   r?   )r@   s   "rA   rB   r   W  s     , ,i ,D ,rC   c                	r    V P                  VP                  4       V P                  VP                  4       R # rP   )rE  iobjectindexrL  s   &&rA   evaluate_indexing AstInterpreter.evaluate_indexingW  s&    -

+rC   c               (    V ^8  d   QhRRRRRRRR/# )	r;   r  zmparser.ArgumentNodekey_resolverz#T.Callable[[mparser.BaseNode], str]duplicate_key_errorzT.Optional[str]r>   zT.Tuple[T.List[T.Any], T.Any]r?   )r@   s   "rA   rB   r   [  s3     / /*/ B/ &5	/
 //rC   c                	   VP                    F  pV P                  V4       K  	  VP                  P                  4        F  pV P                  V4       K  	  \	        V\
        4      '       dn   / pVP                  P                  4        F  w  rxWV! V4      &   K  	  VP                  4       '       d   \        R 4      hV P                  VP                   4      V3# V P                  V4      / 3# )z9All keyword arguments must be after positional arguments.)
rQ  rE  r|   r9  r   r   rl  incorrect_orderr   r&  )	rR   r  rx  ry  r>  r   r|   keyr<   s	   &&&&     rA   rG  AstInterpreter.reduce_arguments[  s     >>C##C( "[['')E##E* *dL))F KK--/,/|C() 0##%%&'bcc$$T^^4f<<$$T*B..rC   c                    V ^8  d   QhRRRR/# )r;   rm   r1   r>   r   r?   )r@   s   "rA   rB   r   o  s     , , ,4 ,rC   c                	r    V P                  VP                  4       V P                  VP                  4       R # rP   rV  rL  s   &&rA   evaluate_comparison"AstInterpreter.evaluate_comparisono  s&    		*

+rC   c                    V ^8  d   QhRRRR/# )r;   r   r0   r>   r   r?   )r@   s   "rA   rB   r   s  s     + + +T +rC   c                	r    V P                  VP                  4       V P                  VP                  4       R # rP   rV  rY  s   &&rA   evaluate_andstatement$AstInterpreter.evaluate_andstatements  r\  rC   c                    V ^8  d   QhRRRR/# )r;   r   r5   r>   r   r?   )r@   s   "rA   rB   r   w  s     + + +4 +rC   c                	r    V P                  VP                  4       V P                  VP                  4       R # rP   rV  rY  s   &&rA   evaluate_orstatement#AstInterpreter.evaluate_orstatementw  r\  rC   c                    V ^8  d   QhRRRR/# )r;   r   r$   r>   r   r?   )r@   s   "rA   rB   r   {  s     + + +T +rC   c                	<    V P                  VP                  4       R # rP   r_  rY  s   &&rA   evaluate_notstatement$AstInterpreter.evaluate_notstatement{  rb  rC   c                    V ^8  d   QhRRRR/# )r;   rm   r    r>   z
T.Set[str]r?   )r@   s   "rA   rB   r   ~  s     ?@ ?@( ?@z ?@rC   c                	   \        V\        P                  4      '       dF   VP                   Uu0 uF  q"P                  kK  	  upV P                  VP                  4      ,          # \        V\        P                  4      '       d@   \        4       pVP                   F#  pVP                  V P                  V4      4       K%  	  V# \        V\        \        34      '       dA   \        VP                  P                  .4      V P                  VP                  4      ,          # \        V\        4      '       d   \        4       # \        V\        4      '       dJ   \        4       pVP                   P"                   F#  pVP                  V P                  V4      4       K%  	  V# \        V\        P$                  4      '       dz   \        4       pVP                   P&                  P)                  4        FE  w  rgVP                  V P                  V4      4       VP                  V P                  V4      4       KG  	  V# \        V\*        4      '       d   \        4       pVP                   P"                   F#  pVP                  V P                  V4      4       K%  	  VP                   P&                  P-                  4        F#  pVP                  V P                  V4      4       K%  	  V# \        V\.        4      '       d   V P                  VP0                  4      pVP                   P"                   F#  pVP                  V P                  V4      4       K%  	  VP                   P&                  P-                  4        F#  pVP                  V P                  V4      4       K%  	  V# \        V\2        4      '       d<   V P                  VP4                  4      V P                  VP6                  4      ,          # \        V\        P8                  \        P:                  \        P<                  \        P>                  \        P@                  34      '       d   \        4       # \        V\        PB                  4      '       d   \        VPD                  \F        4      '       d   \        4       pM%V P                  VPD                  P                  4      pVPH                   F#  pVP                  V P                  V4      4       K%  	  V# \        V\        PJ                  4      '       d<   V P                  VPL                  4      V P                  VPN                  4      ,          # \        V\        PP                  4      '       d<   V P                  VPR                  4      V P                  VP                  4      ,          # \        V\        PT                  \        PV                  \        PX                  34      '       d<   V P                  VP4                  4      V P                  VP6                  4      ,          # \        V\        PZ                  4      '       d   V P                  VP                  4      # \        V\        P\                  4      '       d\   V P                  VPR                  4      V P                  VP^                  4      ,          V P                  VP`                  4      ,          # \        V\        Pb                  4      '       d   V P                  VP                  4      # \        V\        Pd                  4      '       d   V P                  VPf                  4      # \h        Pj                  ! R 4      hu upi )Unhandled node type)6r   r   r2   varnamesr   find_potential_writesblockCodeBlockNoder   linesr   r   r%   var_namer"   r   r  rQ  DictNoder|   rl  r)   r9  r#   rD  r   rW  rX  
NumberNode
StringNode	BreakNodeBooleanNodeContinueNoder3   	elseblockr!   ifsr4   rs  rt  IfNodere  r1   r5   r0   r$   r&   rf  rg  r7   ParenthesizedNodeinnerr   MesonBugException)	rR   rm   elretliner>  rm  rn  r   s	   &&       rA   r  $AstInterpreter.find_potential_writes~  sT   dG5566'+}}5}HH}58R8RSWS]S]8^^^g3344%C



455d;< #J~/ABCC++,-0J0J4::0VVVf%%5Li((%Cyy**

455c:; +Jg..//%C		((..0

455a89

455a89 1 Jl++%Cyy**

455c:; +yy''..0

455c:; 1Jj)),,T-?-?@Cyy**

455c:; +yy''..0

455c:; 1Jn----dii84;U;UVZV`V`;aaaw1173E3EwGXGXZaZmZmov  pD  pD  E  F  F5Lg2233$..)44e001E1EFXX

455a89 Jg//00--dll;d>X>XY]YcYc>dddgnn----dnn=@Z@Z[_[e[e@fffw55w~~wWXX--dii84;U;UVZV`V`;aaagoo..--djj99g1122--dnn=@Z@Z[_[i[i@jjmq  nH  nH  IM  IX  IX  nY  Y  Yg0011--djj99g7788--djj99(()>??{ 6s   ]-c                    V ^8  d   QhRRRR/# )r;   rm   r2   r>   r   r?   )r@   s   "rA   rB   r     s     T T%6 T4 TrC   c                	   V P                  V4      pV FG  pV P                  V,          P                  V P                  P	                  4       \        4       34       KI  	   V P                  VP                  4       V FG  pV P                  V,          P                  V P                  P	                  4       \        4       34       KI  	  R #   \         d     L\\         d     Lhi ; irP   )
r  r   r   r   r   r   evaluate_codeblockr  r   r   )rR   rm   assesasss   &&  rA   evaluate_foreachAstInterpreter.evaluate_foreach  s    **40C  %,,dll.?.?.A<>-RS 	##DJJ/
 C  %,,dll.?.?.A<>-RS 	  	 		s    C
 
C$C$ C$#C$c                    V ^8  d   QhRRRR/# )r;   rm   r3   r>   r   r?   )r@   s   "rA   rB   r     s     Q Q Q QrC   c           	     	   V P                   P                  ^ 4       VP                   F=  pV P                  VP                  4       V P                   R;;,          ^,          uu&   K?  	  \        VP                  \        4      '       g&   V P                  VP                  P                  4       V P                   P                  4        V P                   EF  p. pV P                  V4      p\        V\        4      '       g   VP                  V4       V P                  V,           F;  w  rg\        V4      \        V P                   4      8  g   K*  VP                  V4       K=  	  V P                  V,           UUu. uF-  w  rh\        V4      \        V P                   4      8:  g   K*  Wh3NK/  	  uppV P                  V&   \        V4      ^8  g-   \        V4      ^ 8  g   EK  \        V\        4      '       g   EK&  \        4       p	V F  p
V P                  P                  W4       K   	  V P                  V,          P                  V P                   P!                  4       V	34       EK  	  R# u uppi )r   N)r   r   r  r  r  r   r  r!   r   r   get_cur_value_if_definedr   r'  r   r   r   r   )rR   rm   r   r  potential_valuesoldvalr   r   rn  uvpvs   &&         rA   evaluate_ifAstInterpreter.evaluate_if  s   AA##AGG,LL!  $..)44##DNN$8$89,,H!228<Ff&788 ''/"&"6"6x"@"@w<#dll"33$++E2 #A PTOcOcdlOm  .TOm|qtu|q}  BE  FJ  FR  FR  BS  rSlwlOm  .TD  *#$q(S1A-BQ-F:V\^oKpKp!^*B%%..r6 +$$X.55t||7H7H7JB6OP - .Ts   :'I+&I+c               (    V ^8  d   QhRRRRRRRR/# 	r;   rm   r    r  r  r|   r{   r>   r  r?   )r@   s   "rA   rB   r     s+     	 	x 	/? 	I^ 	ch 	rC   c                	    . pV Fu  p\        V\        4      '       d(   VP                  \        V P                  V4      4       K@  \        V\
        4      '       d   VP                  \        4       4       Kq  \        h	  V# rP   )r   r=   r   rI   rJ   r   	TypeError)rR   rm   r  r|   r  r>  s   &&&&  rA   r  AstInterpreter.func_files  s]    @BC#s##

,T[[#>?C..

<>*  
rC   c                    V ^8  d   QhRRRR/# )r;   r  r=   r>   z2T.Union[BaseNode, UnknownValue, UndefinedVariable]r?   )r@   s   "rA   rB   r     s     
 
 
9k 
rC   c                	   WP                   9   d   V P                   V,          # \        4       p\        V P                  V,          4       FK  w  r4\	        V P
                  4      \	        V4      8  g   K*  V P
                  R \	        V4       V8X  g   KI  Tp M	  \        V\        4      '       d   V P                  '       d   \        4       # V# rP   )	r  r   reversedr   r'  r   r   r  r   )rR   r  r  r   r   s   &&   rA   r  'AstInterpreter.get_cur_value_if_defined  s    +++''11BSBU&t';';H'EFNG4<< CL0T\\-3w<5PT[5[ G c,--$,,,>!
rC   c                    V ^8  d   QhRRRR/# )r;   r  r=   r>   r   r?   )r@   s   "rA   rB   r     s     
 
c 
.M 
rC   c           
     	   V P                  V4      p\        V\        4      '       d   \        P                  ! \        V P                  P                  4      \        \        P                  ! 4       4      4      p\        P                  ! V R V P                  P                   R V P                  P                   RV R24       \        4       # V# ):z8 will always crash if executed, since a variable named `z` is not defined)r  r   r   r	   get_relative_pathr   current_nodefilenamer-  getcwdr   linenocolnor   )rR   r  r  r   s   &&  rA   get_cur_valueAstInterpreter.get_cur_value  s    ++H5c,--))$t/@/@/I/I*JDQSQZQZQ\L]^DLLD64#4#4#;#;"<Ad>O>O>U>U=V  WO  PX  OY  Yi  j  k
  >!
rC   c                    V ^8  d   QhRRRR/# )r;   rm   z)T.Union[UnknownValue, BaseNode, TYPE_var]r>   r  r?   )r@   s   "rA   rB   r   #  s$     o@ o@*S o@X] o@rC   c           
     	   \        V\        P                  \        P                  \        P                  34      '       d   VP
                  # \        V\        P                  4      '       d)   VP                  '       d   \        4       # VP
                  # \        V\        4      '       d!   V Uu. uF  q P                  V4      NK  	  up# \        V\        4      '       d5   VP                  P                   Uu. uF  q P                  V4      NK  	  up# \        V\        P                  4      '       dX   VP                  P                  P                  4        UUu/ uF&  w  r4V P                  V4      V P                  V4      bK(  	  upp# \        V\         4      '       dn   \#        V P$                  P&                  V,          4      ^8X  g   Q h\)        \+        V P$                  P&                  V,          4      4      pV P                  V4      # \        V\,        \.        34      '       dC   V P0                  V,          p\        V\2        \4        34      '       d   V# V P                  V4      # \        V\6        4      '       Ed   V P                  VP8                  4      pV P                  VP:                  4      p\        V\        4      '       d    \        V\        4      '       d
   Wx.,           # \        V\        4      '       d!   \        V\        4      '       d   V.V,           # \        V\        4      '       g   \        V\        4      '       d   \        4       # VP<                  R8X  d   \        V\2        4      '       dF   \        V\2        4      '       d0   VP?                  4       p	VP                  4        F	  w  r4WIV&   K  	  V	# \        V\        4      '       d"   \        V\        4      '       g   V.pWx,           # Wx,           # VP<                  R8X  d	   Wx,
          # VP<                  R8X  d	   Wx,          # VP<                  R8X  d   \        V\@        4      '       d   \        V\@        4      '       d	   Wx,          # \        V\4        4      '       dF   \        V\4        4      '       d0   \B        PD                  PG                  Wx4      PI                  RR4      # EMVP<                  R8X  d5   \        V\@        4      '       d   \        V\@        4      '       d	   Wx,          # EM\        V\        \J        \L        \N        \4        \P        \@        34      '       d   V# \        V\        PR                  4      '       du   V P                  VPT                  4      p
V P                  VPV                  4      p\        V
\        4      '       g   \        V\        4      '       d   \        4       # W,          # \        V\        PX                  4      '       d   V P                  VP8                  4      pV P                  VP:                  4      p\        V\        4      '       g   \        V\        4      '       d   \        4       # VPZ                  R8X  d   Wx8H  # VPZ                  R	8X  d   Wx8g  # VPZ                  R
8X  d   Wx9   # VPZ                  R8X  d   Wx9  # EM\        V\        P\                  4      '       d   V P                  VP^                  4      p\        V\        4      '       d   \        4       # VRJ d   V P                  VP`                  4      # VRJ d   V P                  VPb                  4      # EMO\        V\        Pd                  4      '       dy   V P                  VP8                  4      pV P                  VP:                  4      p\        V\        4      '       g   \        V\        4      '       d   \        4       # T;'       g    T# \        V\        Pf                  4      '       dy   V P                  VP8                  4      pV P                  VP:                  4      p\        V\        4      '       g   \        V\        4      '       d   \        4       # T;'       d    T# \        V\        Ph                  4      '       dT   V P                  VP
                  4      p\        V\        4      '       d   V# \        V\@        \j        34      '       d   V) # M\        V\        Pl                  4      '       dR   V P                  VP
                  4      p\        V\        4      '       d   V# \        V\P        4      '       d   V'       * # M;\        V\        Pn                  4      '       d   V P                  VPp                  4      # \r        Pt                  ! R4      hu upi u upi u uppi )r%  r   submuldiv\/modz==z!=innotinTFr  );r   r   r  r  r  r   
is_fstringr   r   rF  r   r  rQ  r  r|   rl  r"   r'  r   r   nextiterr#   r)   r  r=  r=   r   rW  rX  	operationr   rV   r-  r   r.  replacerp   rI   rd   rj   r4   rs  rt  r1   ctyper&   re  rf  rg  r5   r0   r7   floatr$   r  r  r   r  )rR   rm   xrm  rn  r<   funcvalrW  rX  r  rs  rt  conds   &&           rA   rF  $AstInterpreter.node_to_runtime_value#  s   dW//1D1DgFXFXYZZ::g0011#~%zz!d##;?@4a..q14@@i((;?99;N;NO;Na..q1;NOOg..//]a]f]f]m]m]s]s]uv]uUYUVD..q143M3Ma3PP]uvvf%%t((44T:;q@@@tD--99$?@AC--c22z<899mmD)G'D#;//11'::n----dii8D..tzz:E$%%*UL*I*Ig~%%&&:dL+I+Iv~%$--E<1P1P#~%~~&dD))j.E.E))+C %!"A !.JdD))%eT22!&<'|#5(|#5(|#5(dC((Zs-C-C=(c**z%/E/E77<<4<<T3GG5(dC((Zs-C-C<'|-EGXZqsvx|  B  C  D  DKg//0000>G..tzz:E'<00Jul4S4S#~%>!g4455--dii8D..tzz:E$--E<1P1P#~%zzT!}$t#}$t#}$w&(( 'g1122--dnn=D$--#~%t|11$..AAu}11$//BB gnn----dii8D..tzz:E$--E<1P1P#~%==5 goo..--dii8D..tzz:E$--E<1P1P#~%>>E!g0011,,TZZ8C#|,,
#U|,,t -goo..,,TZZ8C#|,,
#t$$w %g7788--djj99(()>??M AOvs   .g8g,gc                    V ^8  d   QhRRRR/# )r;   rm   r   r>   r   r?   )r@   s   "rA   rB   r     s     D D~ D$ DrC   c                	   \        V\        4      '       g   Q hV P                  VP                  4       V P                  VP
                  P                  ,          P                  V P                  P                  4       VP                  34       V P                  VP
                  P                  ,          P                  V4       R # rP   )
r   r   rE  r   r   r  r   r   r   r   rL  s   &&rA   
assignmentAstInterpreter.assignment  s    $////

+T]]00188$,,:K:K:Mtzz9Z[!!$--"5"56==dCrC   c                    V ^8  d   QhRRRR/# )r;   rm   r%   r>   r   r?   )r@   s   "rA   rB   r     s     7 7(: 7t 7rC   c                	   \        V\        4      '       g   Q hV P                  VP                  4       V P	                  VP
                  P                  4      p\        V\        4      '       d   \        4       pM-\        P                  ! R V\        R4      VP                  R7      pV P                  VP
                  P                  ,          P                  V P                  P                  4       V34       V P                  VP
                  P                  ,          P                  V4       V P                  P!                  W#4       V P                  P!                  VP                  V4       R# )r   +)r  rW  operatorrX  N)r   r%   rE  r   r  r  r   r   r   rG   r   r   r   r   r   r   r   )rR   rm   lhsnewvals   &&  rA   evaluate_plusassign"AstInterpreter.evaluate_plusassign  s    $ 23333

+  !4!45c<((!^F++e#PWX[P\dhdndnoFT]]00188$,,:K:K:Mv9VW!!$--"5"56==dC""3/""4::v6rC   c               (    V ^8  d   QhRRRRRRRR/# r#  r?   )r@   s   "rA   rB   r     s+     ' 'h '6F 'Pe 'jn 'rC   c                	   \        V\        4      '       g   Q h\        VP                  P                  4      '       d   \        R 4      h\        VP                  P                  4      ^8w  d   \        R4      hV^ ,          pVP                  P                  ^,          p\        V\        4      '       d   V P                  V4       RV n
        R# \        V\        4      '       g   Q h\        \        \        RR^ ^ ^ RV4      4      V\        R4      R7      p\        \!        V4      4      Vn        V P                  V4       R# )z)set_variable accepts no keyword argumentsz6set_variable requires exactly two positional argumentsTNrE   =)r  r   r  rF   )r   r)   rj   r  r|   r   r'  rQ  r   rE  r  r=   r   r"   r(   rG   rr   ast_id)rR   rm   r  r|   r  r   equivs   &&&&   rA   r   AstInterpreter.func_set_variable  s    $----		  !!"#NOOtyy""#q("#[\\7		##A&h--##E*DL(C((((uRQ1fh/W(X`epwx{p|}2e9~&rC   c               (    V ^8  d   QhRRRRRRRR/# r  r?   )r@   s   "rA   rB   r     s+     	 	h 	6F 	Pe 	jo 	rC   c                	   \        V\        4      '       g   Q hV^ ,          p\        V\        4      '       d   \        4       pM)\        V\        4      '       g   Q hV P	                  V4      pV P
                  P                  WQ4       V# )r   )r   r)   r   r=   r  r   r   )rR   rm   r  r|   r  r<   s   &&&&  rA   r	   AstInterpreter.func_get_variable  sn    $----7h--3?>Ch,,,,$$X.C""3-
rC   c               (    V ^8  d   QhRRRRRRRR/# r#  r?   )r@   s   "rA   rB   r     s1     K K K8H KRg Klp KrC   c                	   \        V\        4      '       g   Q h\        VP                  P                  4      '       d   \        R 4      h\        VP                  P                  4      ^8w  d   \        R4      hV^ ,          p\        V\        4      '       g   Q hV P                  V,          P                  V P                  P                  4       V34       R# )z+unset_variable accepts no keyword argumentsz8unset_variable requires exactly one positional argumentsN)r   r)   rj   r  r|   r   r'  rQ  r=   r   r   r   r   )rR   rm   r  r|   r  s   &&&& rA   r
  "AstInterpreter.func_unset_variable  s    $----		  !!"#PQQtyy""#q("#]^^7(C((((X&--t||/@/@/BD.IJrC   c               (    V ^8  d   QhRRRRRRRR/# )	r;   	root_pathr   rJ   r=   nodesrx   r>   z"T.List[T.Union[str, UnknownValue]]r?   )r@   s   "rA   rB   r     s.     / /$ / /L\ /  bD /rC   c                	   aa R  VV3R llp\        V Uu. uF  qPP                  V4      NK  	  up4      pV Uu. uF
  qt! V4      NK  	  up# u upi u upi )c                    V ^8  d   QhRRRR/# )r;   r~   z-T.Union[str, IntrospectionFile, UnknownValue]r>   re   r?   )r@   s   "rA   rB   =AstInterpreter.nodes_to_pretty_filelist.<locals>.__annotate__  s     	  	 I 	 Nh 	 rC   c                H  < \        V \        4      '       d?   \        P                  P	                  \        P                  P                  SSV 4      4      # \        V \        4      '       d   \        V P                  S4      4      # \        V \        4      '       d   V # \        hrP   )
r   r=   r-  r   normpathr.  rI   rS   r   r  )r~   r  rJ   s   &rA   
src_to_abs;AstInterpreter.nodes_to_pretty_filelist.<locals>.src_to_abs  so    #s##ww''Y(LMMC!2333??9566C..
rC   )r   rF  )rR   r  rJ   r  r  snrtvalsr  s   &ff&    rA   nodes_to_pretty_filelist'AstInterpreter.nodes_to_pretty_filelist  sV    	  	  !(RW(XRWB)C)CB)GRW(X Y'-.v!
1v.. )Y.s
   AAc               $    V ^8  d   QhRRRRRR/# )r;   args_rawz)T.Union[TYPE_nvar, T.Sequence[TYPE_nvar]]include_unknown_argsrj   r>   r  r?   )r@   s   "rA   rB   r     s(      %N fj   xH rC   c           
     	   \        V\        4      '       d   TpMV.p. pV F  p\        V\        4      '       d;   V P                  V4      pVe$   \        V\        4      '       g   V.pWF,          pKQ  KS  \        V\        \
        \        \        \        \        34      '       g	   V'       d   WE.,          pK  \        h	  V# rP   )r   r   r    rF  r=   rj   rV   r  r   rI   NotImplementedError)rR   r  r	  r  flattened_argsr   resolveds   &&&    rA   r&  AstInterpreter.flatten_args  s    h%%D:D <> A!X&&55a8'%h55$,:".N ( AT3|EVWXX\p#%))  rC   c                    V ^8  d   QhRRRR/# )r;   rm   r6   r>   zDisabler | Noner?   )r@   s   "rA   rB   r     s     4 4&8 4_ 4rC   c                	.    \        V P                  R 7      # ))r   )r   r   rL  s   &&rA   evaluate_testcase AstInterpreter.evaluate_testcase  s    4??33rC   c                    V ^8  d   QhRRRR/# )r;   r   zmparser.BaseNoder>   zT.Optional[InterpreterObject]r?   )r@   s   "rA   rB   r     s     3 3&6 3;X 3rC   c                	  < \        VR 4      '       d   VP                  P                   F  pV P                  P	                  W!4       K   	  VP                  P
                  P                  4        F   w  r4V P                  P	                  WA4       K"  	  R Ff  p\        W4      '       g   K  \        \        W4      \        P                  4      '       g   Q hV P                  P	                  \        W4      V4       Kh  	  \        V\        P                  4      '       d8   V P                  P	                  V P                  VP                  4      V4       R# \        SV `=  V4      # )r  N)rD  rW  rX  rl  rs  rt  re  )hasattrr  rQ  r   r   r|   rl  r   getattrr   r    r"   r  r   r   rE  )rR   r   r>  rm  rn  attrrY   s   &&    rA   rE  !AstInterpreter.evaluate_statement  s   3xx))!!**34 *--/!!**12 0`Ds!!!'#"4g6F6FGGGG!!**73+=sC a c7>>**&&t'9'9#))'DcJ7-c22rC   c                    V ^8  d   QhRRRR/# )r;   rm   zmparser.FunctionNoder>   r  r?   )r@   s   "rA   rB   r     s      "6 5 rC   c                	J   < \         SV `  V4      pVe   W P                  V&   V# rP   )r   function_callr  )rR   rm   r  rY   s   && rA   r  AstInterpreter.function_call  s(    g#D)?"%MM$
rC   )r   r   r   r  r   r  r  r   rP   )F),rZ   r^   r_   r`   r   r  r  r  r  r  r@  r<  rM  rR  rZ  r`  rh  ro  ru  r   rG  r  r  r  r  r  r  r  r  r  r  rF  r  r  r  r	  r
  r  r&  r  rE  r  rb   __classcell__)rY   s   @rA   r   r      s    U Un 
Z&
")++1'
, EX7;	/(,+++?@BTQ.	

Ro@bD7'"	K/043 3  rC   r   )M
__future__r   r-  r(  typingr:  collectionsr   dataclassesr   r7  pathlibr   rE   r   r   r	   r
   interpreterbaser   r   r   r   r   r   r   r   r   r   r   interpreterbase.helpersr   interpreterr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   TYPE_CHECKINGvisitorr*   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   TypeVarr8   r9   rG   rI   rd   rp   r   r   r   r?   rC   rA   <module>r)     s   # 	 
  # !   & &     .    " ???#)AA	 	 	 YYt_YYt_; F F F 4   5  C- -^b	_ b	rC   