
    <hc                    b   % S SK Jr  SSKJrJrJrJrJrJr  SSK	J
r
JrJr  SSKJrJr  SSKJr  S SKJrJrJr  SSKJrJr  S S	KJr  SS
KJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  SSK(J)r)  S SK*r*S SK+r+S SK,r,S SK-r-S SK.r.S SK/r0S SK1J2r2  \0Rf                  (       a  S SK4r4S SK4J5r5J6r6  SSKJ7r7   " S S\5      r8SES jr9 " S S5      r: " S S5      r; " S S\;5      r< " S S\;5      r= " S S\;5      r> " S S\;5      r? " S S \?5      r@ " S! S"\?5      rA\BSS#S$/4\C0 S4S%.\BSS4\BSS4\BS/ S&Q4\C0 S4S'.\BSS4\BS/ S(Q4\D/ S4\BS)S4\BS*/ S+Q4S,.S-.rES.\FS/'   \<\<\=\<\=\=\@\@S0.\=\<\A\=\A\=\=\=\<\<\=S1.\@\<\@\<\<S2.S3.rG " S4 S55      rHS6S7S8S9S:S;S<S=.rISFS> jrJSGS? jrKSGS@ jrLSGSA jrMSGSB jrN\K\K\L\M\M\N\NSC.rOSHSD jrPg)I    )annotations   )IntrospectionInterpreterBUILD_TARGET_FUNCTIONSAstConditionLevelAstIDGeneratorAstIndentationGenerator
AstPrinter)IntrospectionBuildTargetIntrospectionDependency_symbol)UnknownValueTV_func)flatten)MesonExceptionsetup_vsenvrelpath)mlogenvironment)wraps)Token	ArrayNodeArgumentNodeArithmeticNodeAssignmentNodeBaseNode
StringNodeBooleanNodeElementaryNodeIdNodeFunctionNodePlusAssignmentNode)IntrospectionEncoderN)Path)ArgumentParser_FormatterClass)AnsiDecoratorc                      \ rS rSrSrg)RewriterException    N)__name__
__module____qualname____firstlineno____static_attributes__r+       t/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/rewriter.pyr)   r)      s    r1   r)   c           	     Z   U R                  SS[        SSSS9  U R                  SSS	S
SS9  U R                  SSSS	S
SS9  U R                  SSSS9nUR                  SS/SUS9nUR                  SSSSSS9  UR                  SS [        S   S!   S"   S#S$S%9  UR                  SS&S'9  UR                  S(/ S)QS*S+9  UR                  S,S-S.S/9  UR                  S0S1US29nUR                  S([        S0   S(   S"   S*S+9  UR                  S3[        [        R                  5       5      S4S+9  UR                  S5S6S'9  UR                  S0S-S7S/9  UR                  S8S9/S:US9nUR                  S([        S;   S(   S"   S*S+9  UR                  S<S-S=S/9  UR                  S>S?/S@US9nUR                  SASBS'9  g )CNz-sz--sourcedir.SRCDIRzPath to source directory.)typedefaultmetavarhelpz-Vz	--verbose
store_trueFzEnable verbose output)actionr7   r9   z-Sz--skip-errorsskipzSkip errors instead of aborting)destr;   r7   r9   r6   zRewriter commandszRewrite command to execute)r=   titledescriptiontargettgtzModify a target)aliasesr9   formatter_classz--subdir subdirzASubdirectory of the new target (only for the "add_target" action))r7   r=   r9   z--typetgt_typetarget_type   
executablez<Type of the target to add (only for the "add_target" action))r=   choicesr7   r9   zName or ID of the target)r9   	operationaddrm
add_target	rm_targetadd_extra_filesrm_extra_filesinfozAction to execute)rJ   r9   sources*zSources to add/remove)nargsr9   kwargszModify keyword arguments)r9   rC   functionzFunction type to modifyidz<ID of the function to modify (can be anything for "project")zPairs of keyword and valuedefault-optionsdefz"Modify the project default optionsdefault_optionsoptionsz(Key, value pairs of configuration optioncommandcmdz Execute a JSON array of commandsjsonzJSON string or file to execute)add_argumentstradd_subparsers
add_parserrewriter_keyslistrewriter_func_kwargskeys)parser	formatter
subparsers
tgt_parser	kw_parser
def_parser
cmd_parsers          r2   add_argumentsrp   #   si   
m#sH[vw
k,Tkl
oF<Y^  fG  H&&F:M[w&xJ &&x%GXjs&tJD*bx  OR  SH:}X?VWd?efg?hr~!_  aH+EFK  2G!4  6IS7NO %%h5Oaj%kI;h0G0TUV0W 3  5:t4H4M4M4O/P 9  ;4&de835QR &&'85'Pt  GP&  QJK?P1QR]1^_`1a!4  6IS7ab &&y5'Hj  }F&  GJF)IJr1   c                  4    \ rS rSr% S\S'   SS jrS	S jrSrg)
RequiredKeysF   T.Dict[str, T.Any]rh   c                    Xl         g Nrh   )selfrh   s     r2   __init__RequiredKeys.__init__I   s    	r1   c                b   ^ ^ [        T5      SUU 4S jj5       n[        R                  " SU5      $ )Nc                 $  > [        U 5      S:  d   eU S   nT	R                  R                  5        H  u  p4US   nUS   nUS   nX2;  a-  Ub  XbU'   O%[        SR	                  UTR
                  5      5      e[        X#   U5      (       d:  [        SR	                  X5R
                  [        X#   5      R
                  5      5      eUc  M  [        U[        5      (       d   eX#   U;  d  M  [        SR	                  X7X#   5      5      e   T" U 0 UD6$ )NrH   r   r   z$Key "{}" is missing in object for {}z8Invalid type of "{}". Required is {} but provided was {}zCInvalid value of "{}": Possible values are {} but provided was "{}")	lenrh   itemsr)   formatr,   
isinstancer6   rf   )
wrapped_argswrapped_kwargsr_   keyvaltypr7   rJ   frx   s
           r2   wrapped&RequiredKeys.__call__.<locals>.wrappedM   s   |$)))q/C IIOO-!fa&a&>*#*C/0V17QZZ1HJ J!#(C00+,f-3VCtCH~G^G^-_a a&%gt4444xw./0u17ch1OQ Q! .$ l5n55r1   r   )r   T.Anyr   r   returnr   )r   Tcast)rx   r   r   s   `` r2   __call__RequiredKeys.__call__L   s,    	q	6 
	6. vvi))r1   rw   N)rh   rt   )r   r   r   r   )r,   r-   r.   r/   __annotations__ry   r   r0   r+   r1   r2   rr   rr   F   s    
*r1   rr   c                      \ rS rSr% S\S'   SSS jjr\SSS jj5       r\SS j5       rSS jr	SS	 jr
SS
 jrSS jrSS jrSrg)	MTypeBaseg   r   nodeNc                    Uc  U R                  5       U l        OXl        S U l        U R                  5        H&  n[	        U R                  U5      (       d  M   X l        M(     g rv   )new_noder   	node_typesupported_nodesr   )rx   r   is      r2   ry   MTypeBase.__init__j   sI    <DII%%'A$))Q''!" (r1   c                    [        S5      e)Nz0Internal error: new_node of MTypeBase was calledr)   clsvalues     r2   r   MTypeBase.new_nodet   s       RSSr1   c                    / $ rv   r+   r   s    r2   r   MTypeBase.supported_nodesy   	     	r1   c                    U R                   S L$ rv   )r   rx   s    r2   
can_modifyMTypeBase.can_modify~   s    ~~T))r1   c                    U R                   $ rv   r   r   s    r2   get_nodeMTypeBase.get_node   s    yyr1   c                    [         R                  " S[         R                  " [        U 5      R                  5      S5        g )NzCannot add a value of type--> skippingr   warningboldr6   r,   rx   r   s     r2   	add_valueMTypeBase.add_value   s'    1499T$Z=P=P3QSabr1   c                    [         R                  " S[         R                  " [        U 5      R                  5      S5        g )NzCannot remove a value of typer   r   r   s     r2   remove_valueMTypeBase.remove_value   '    4diiT
@S@S6TVder1   c                    [         R                  " S[         R                  " [        U 5      R                  5      S5        g )NzCannot remove a regex in typer   r   r   s     r2   remove_regexMTypeBase.remove_regex   r   r1   )r   r   rv   r   zT.Optional[BaseNode]r   r   r   r   r   zT.List[type])r   boolr   r   r   r   r   None)r,   r-   r.   r/   r   ry   classmethodr   r   r   r   r   r   r   r0   r+   r1   r2   r   r   g   sR    
N# T T  *cffr1   r   c                  \   ^  \ rS rSrSSU 4S jjjr\SSS jj5       r\S	S j5       rSrU =r	$ )
MTypeStr   c                $   > [         TU ]  U5        g rv   superry   rx   r   	__class__s     r2   ry   MTypeStr.__init__       r1   c                R    Uc  Sn[        [        SSSSSS [        U5      5      5      $ )NrD   stringr   r   r   rb   r   s     r2   r   MTypeStr.new_node   s,    =E%"aAtSZHIIr1   c                    [         /$ rv   r   r   s    r2   r   MTypeStr.supported_nodes   
    |r1   r+   rv   r   r   zT.Optional[str]r   r   r   
r,   r-   r.   r/   ry   r   r   r   r0   __classcell__r   s   @r2   r   r      s7      J J
  r1   r   c                  \   ^  \ rS rSrSSU 4S jjjr\SSS jj5       r\S	S j5       rSrU =r	$ )
	MTypeBool   c                $   > [         TU ]  U5        g rv   r   r   s     r2   ry   MTypeBool.__init__   r   r1   c                H    [        [        SSSSSS [        U5      5      5      $ NrD   r   )r   r   r   r   s     r2   r   MTypeBool.new_node   s"    5RAq$UDEEr1   c                    [         /$ rv   )r   r   s    r2   r   MTypeBool.supported_nodes   s
    }r1   r+   rv   r   r   r   r   r   s   @r2   r   r      s7      F F  r1   r   c                  \   ^  \ rS rSrSSU 4S jjjr\SSS jj5       r\S	S j5       rSrU =r	$ )
MTypeID   c                $   > [         TU ]  U5        g rv   r   r   s     r2   ry   MTypeID.__init__   r   r1   c                R    Uc  Sn[        [        SSSSSS [        U5      5      5      $ r   r    r   rb   r   s     r2   r   MTypeID.new_node   s,    =EeBAq!T3u:>??r1   c                    [         /$ rv   r    r   s    r2   r   MTypeID.supported_nodes   	    xr1   r+   rv   r   r   r   r   r   s   @r2   r   r      s7      @ @
  r1   r   c                     ^  \ rS rSr% S\S'   SSU 4S jjjr\SSS jj5       r\SS j5       rSS jr	\
SS j5       r\
SS	 j5       rSS
 jr\SS j5       r\SS j5       rSS jrSS jrSS jrSS jrSrU =r$ )	MTypeList   r   r   c                $   > [         TU ]  U5        g rv   r   r   s     r2   ry   MTypeList.__init__   r   r1   c                "   Uc  / nO&[        U[        5      (       d  U R                  U5      $ [        [	        SSSSSS S5      5      nU Vs/ s H  o0R                  U5      PM     snUl        [        [        S5      U[        S5      5      $ s  snf )NrD   r   [])r   rf   _new_element_noder   r   	argumentsr   r   )r   r   argsr   s       r2   r   MTypeList.new_node   s    =EE4((((//E"b!Q4<=<ABEq//2EBtWS\:: Cs   Bc                    [        S5      e)Nz9Internal error: _new_element_node of MTypeList was calledr   r   s     r2   r   MTypeList._new_element_node   s       [\\r1   c                    [        U R                  [        5      (       d>  U R                  nU R                  5       U l        U/U R                  R                  l        g g rv   )r   r   r   r   r   r   )rx   tmps     r2   _ensure_array_nodeMTypeList._ensure_array_node   s@    $))Y//))CDI(+uDIINN$ 0r1   c                    gNFr+   r   r   s     r2   _check_is_equalMTypeList._check_is_equal        r1   c                    gr  r+   r   regexs     r2   _check_regex_matchesMTypeList._check_regex_matches   r  r1   c                    [        U R                  [        5      (       aP  [        U R                  R                  R
                  5      S:X  a#  U R                  R                  R
                  S   $ U R                  $ )Nr   r   )r   r   r   r}   r   r   r   s    r2   r   MTypeList.get_node   sQ    dii++499>>++,1yy~~//22yyr1   c                    / $ rv   r+   r   s    r2   supported_element_nodes!MTypeList.supported_element_nodes   r   r1   c                2    [         /U R                  5       -   $ rv   )r   r  r   s    r2   r   MTypeList.supported_nodes   s    {S88:::r1   c                h   [        U[        5      (       d  U/nU R                  5         U H  n[        U R                  S5      (       d   e[        U R                  R
                  [        5      (       d   eU R                  R
                  =R                  U R                  U5      /-  sl        M     g )Nr   )	r   rf   r   hasattrr   r   r   r   r   )rx   r   r   s      r2   r   MTypeList.add_value   s    %&&GE!A499f----diinnl;;;;IINN$$)?)?)B(CC$ r1   c                  ^^^ SUUU4S jjn[        T[        5      (       d  T/mU R                  5         [        U R                  S5      (       d   e[        U R                  R
                  [        5      (       d   e/ nU R                  R
                  R                   H  mU" T5      (       a  M  UT/-  nM     X@R                  R
                  l        g )Nc                8   > T H  nT" TU5      (       d  M    g   gNTFr+   )r   j
equal_funcr   r   s     r2   check_remove_node3MTypeList._remove_helper.<locals>.check_remove_node   s"    a##  r1   r   )r   r   r   r   )r   rf   r   r  r   r   r   r   )rx   r   r  r  removed_listr   s    ``  @r2   _remove_helperMTypeList._remove_helper   s    	 	 %&&GE!tyy&))))$))..,7777))A$Q''# * $0		 r1   c                :    U R                  XR                  5        g rv   )r  r  r   s     r2   r   MTypeList.remove_value  s    E#7#78r1   c                :    U R                  XR                  5        g rv   )r  r
  )rx   r	  s     r2   r   MTypeList.remove_regex
  s    E#<#<=r1   r   rv   r   )r   zT.Optional[T.List[T.Any]]r   r   r   r   r   r   r   r   rb   r   r   r   r   r	  rb   r   r   r   r   zT.List[T.Type]r   )r   r   r  z T.Callable[[T.Any, T.Any], bool]r   r   )r	  rb   r   r   )r,   r-   r.   r/   r   ry   r   r   r   r   staticmethodr  r
  r   r  r   r   r  r   r   r0   r   r   s   @r2   r   r      s    
O  ; ; ] ]-       ; ;D0$9> >r1   r   c                     ^  \ rS rSrSS	U 4S jjjr\S
S j5       r\SS j5       r\SS j5       r	\SS j5       r
SrU =r$ )MTypeStrListi  c                $   > [         TU ]  U5        g rv   r   r   s     r2   ry   MTypeStrList.__init__  r   r1   c                H    [        [        SSSSSS [        U5      5      5      $ )Nr   rD   r   r   r   s     r2   r   MTypeStrList._new_element_node  s"    %"aAtSZHIIr1   c                ^    [        U [        5      (       a  [        U R                  U:H  5      $ gr  )r   r   r   r   r  s     r2   r  MTypeStrList._check_is_equal  s&    dJ''

e+,,r1   c                r    [        U [        5      (       a"  [        R                  " XR                  5      S L$ gr  r   r   rematchr   r  s     r2   r
  !MTypeStrList._check_regex_matches  *    dJ''88E::.d::r1   c                    [         /$ rv   r   r   s    r2   r  $MTypeStrList.supported_element_nodes!  r   r1   r+   rv   r   )r   rb   r   r   r%  r&  r'  r,   r-   r.   r/   ry   r   r   r(  r  r
  r  r0   r   r   s   @r2   r*  r*    s_      J J  
  
  r1   r*  c                     ^  \ rS rSrSS	U 4S jjjr\S
S j5       r\SS j5       r\SS j5       r	\SS j5       r
SrU =r$ )MTypeIDListi%  c                $   > [         TU ]  U5        g rv   r   r   s     r2   ry   MTypeIDList.__init__&  r   r1   c                H    [        [        SSSSSS [        U5      5      5      $ r   r   r   s     r2   r   MTypeIDList._new_element_node)  s"    eBAq!T3u:>??r1   c                ^    [        U [        5      (       a  [        U R                  U:H  5      $ gr  )r   r    r   r   r  s     r2   r  MTypeIDList._check_is_equal-  s&    dF##

e+,,r1   c                r    [        U [        5      (       a"  [        R                  " XR                  5      S L$ gr  r2  r  s     r2   r
   MTypeIDList._check_regex_matches3  r6  r1   c                    [         /$ rv   r   r   s    r2   r  #MTypeIDList.supported_element_nodes9  r   r1   r+   rv   r   )r   rb   r   r    r%  r&  r'  r9  r   s   @r2   r;  r;  %  s_      @ @  
  
  r1   r;  setdelete)rK   r]   )rF  rG  rM   remover   rS   rX   rY   rK   rW   )src_addsrc_rm	target_rm
target_addextra_files_addextra_files_rmrS   rD   rI   )both_librariesrI   jarlibraryshared_libraryshared_modulestatic_library)r@   rK   rT   rE   rG   r\   rW   r@   zT.Dict[str, T.Dict[str, T.Any]]re   )languagemethodnativenot_found_messagerequiredstaticversionmodules)build_by_defaultbuild_rpathdependenciesgui_app	link_withexport_dynamicimplibinstallinstall_dirinstall_rpathpie)r\   meson_versionlicensesubproject_dirr]  )
dependencyr@   projectc                  @   \ rS rSr% S\S'   SSS jjrSS jrS S jrSS jrS!S jr	SS	 jr
S"S
 jrS#S jrS$S jr\" \S   5      S%S j5       r\" \S   5      S%S j5       rS&S jrS'S jrS(S jrS)S jrS*S jrS+S jr\" \S   5      S%S j5       rS%S jrSS jrSrg),Rewriterir  z+T.Optional[T.Dict[str, T.Dict[str, T.Any]]]	info_dumpc           	         Xl         [        USU[        5       [        5       [	        5       /S9U l        X0l        / U l        / U l        / U l	        U R                  U R                  U R                  S.U l        S U l        g )NrD   visitorsrV  )	sourcedirr   r   r	   r   interpreterskip_errorsmodified_nodesto_remove_nodesto_add_nodesprocess_default_optionsprocess_kwargsprocess_target	functionsrq  )rx   ru  	generatorrw  s       r2   ry   Rewriter.__init__u  s    "3Ir9ZhZj  mD  mF  HY  H[  Z\  ]&0213.0#;;))))

 r1   c           	        [         R                  " S[         R                  " [        R                  R                  U R                  [        R                  5      5      5        U R                  R                  5         [         R                  " S[         R                  " U R                  R                  S   5      5        [         R                  " S[         R                  " U R                  R                  S   5      5        g )NzAnalyzing meson file:z  -- Project:descriptive_namez  -- Version:r]  )r   logr   ospathjoinru  r   build_filenamerv  analyzeproject_datacyanr   s    r2   analyze_mesonRewriter.analyze_meson  s    ($))BGGLLQ\QkQk4l*mn  "$))D,<,<,I,IJ\,]"^_$))D,<,<,I,I),T"UVr1   c                    U R                   c  0 U l         XR                   ;  a  0 U R                   U'   X0R                   U   U'   g rv   )rq  )rx   cmd_typecmd_iddatas       r2   add_infoRewriter.add_info  s<    >>!DN>>)')DNN8$+/x (r1   c                    U R                   c  g [        R                  R                  [        R
                  " U R                   S[        S95        g )NrH   )indentr   )rq  sysstdoutwriter`   dumpsr#   r   s    r2   
print_infoRewriter.print_info  s3    >>!

DNN1BVWXr1   c                    U R                   (       a,  [        R                  " S5      [        R                  " S5      4$ [        R                  " S5      [        R                  " S5      4$ )Nz-->skippingaborting)rw  r   r  yellowredr   s    r2   on_errorRewriter.on_error  sE    99U#T[[%<<<yy*!555r1   c                <    U R                   (       a  g [        S5      e)Nz Rewriting the meson.build failed)rw  r   r   s    r2   handle_errorRewriter.handle_error  s    ?@@r1   c                    / nU R                   R                  U    HL  n[        U[        5      (       a  M  [        U[        5      (       d   eUR                  UR                  5        MN     U$ rv   )rv  all_assignment_nodesr   r"   r   appendr   )rx   varnameassigned_valuesasss       r2   all_assignmentsRewriter.all_assignments  sa    ##88AC#122c>2222""399-	 B
 r1   r@   c           	        U R                   R                   H  nXR                  :X  d  M  Us  $    / nU R                   R                   H%  nXR                  :X  d  M  UR	                  U5        M'     U(       dd  U R                  U5      nU Vs/ s H  oPR                   R                  U5      PM     nnU Vs/ s H  n[        U[        5      (       d  M  UPM     nnU(       d  g [        U5      S:X  a  US   $ [        R                  " S[        R                  " U5      5        U HX  n[        R                  " S[        R                  " UR                  5      S[        R                  " UR                  5      5        MZ     [        R                  " S/U R                  5       Q76   U R                  5         g s  snf s  snf )Nr   r   z#There are multiple targets matchingz  -- Target namezwith IDz1Please try again with the unique ID of the target)rv  targetsrY   namer  r  node_to_runtime_valuer   r   r}   r   errorr   r  r  )rx   r@   r   potential_tgtspotenial_tgts_1els         r2   find_targetRewriter.find_target  sR   !!))A~ * !!))A%%a( * "226:OTcdTcb//EEbITcOd+:g?RjMe>fb?Ng A%!!$$JJ<dii>OP#

-tyy/@)TYYWXW[W[_] $JJJ]T]]_] egs   $F88F=F=c                   / nU R                   R                   H&  nUR                  U:X  d  M  UR                  U5        M(     [	        U5      S:H  nU(       ao  U R                  U5      nU Vs/ s HQ  n[        U[        5      (       d  M  UR                  R                  S:X  d  M6  U R                   R                  U5      PMS     nnU(       d  g [	        U5      S:X  a  US   $ [        R                  " S[        R                  " U5      5        U H  n[        R                  " SU5        M     U(       a%  [        R                  " S/U R                  5       Q76   U R                  5         g s  snf )Nr   rm  r   z(There are multiple dependencies matchingz  -- Dependency namez0Please try again with the name of the dependency)rv  ra  r  r  r}   r  r   r!   	func_namer   r  r   r  r   r  r  )rx   rm  potential_depsr   checking_varnamespotential_deps1r  s          r2   find_dependencyRewriter.find_dependency  sW   !!..Avv#%%a( /  /14"22:>OSb  kSbRfpqs  vB  gCH  HJ  HT  HT  HZ  HZ  ^j  HjHd..DDRHSbN  k A%!!$$JJA499ZCXY#

115 $ 

M`PTP]P]P_` ks   -E+
E+&E+r\   c                   SSSSUS   R                  5        Vs/ s H  o" S3PM	     sn0S.nU R                  U5        US   S	:w  a  g S
US'   / US   S'   U R                  R                  n0 UR                  R                  5        VVs0 s H  u  pV[        U5      U_M     snnEUR                  R                  5        VVs0 s H  u  pV[        U5      U_M     snnEUR                  R                  5        VVs0 s H  u  pV[        U5      U_M     snnEUR                  R                  5        VVs0 s H  u  pV[        U5      U_M     snnEUR                  R                  5        VVs0 s H  u  pV[        U5      U_M     snnEn[        US   R                  5       5       H  u  pX;  aL  [        R                  " S[        R                  " U5      /U R                  5       Q76   U R                  5         MV   Xx   R                  U	5      n	US   S==   U SU	 3/-  ss'   M     U R                  U5        g s  snf s  snnf s  snnf s  snnf s  snnf s  snnf ! [         at  n
[        R                  " S[        R                  " U5      [        R                  " [        U
5      5      /U R                  5       Q76   U R                  5          S n
A
GM2  S n
A
ff = f)Nrn  /r   r\   r]   z=.*rI  rK   rF  rM   rW   zUnknown optionszUnable to set=)rh   r|  rv  coredataoptstorer~   rb   sortedr   r  r   r  r  validate_valuer   r  )rx   r_   x
kwargs_cmdcdatakvr]   r   r   es              r2   r{   Rewriter.process_default_options  s    "'!s9~7J7J7L#M7L!cI7L#M	*

 	J' {u$"'
;24
8./  ))
%*^^%9%9%;<%;TQs1vqy%;<
%*^^%9%9%;<%;TQs1vqy%;<
 &+^^%9%9%;<%;TQs1vqy%;<
 &+^^%9%9%;<%;TQs1vqy%;<	

 &+^^%9%9%;<%;TQs1vqy%;<
 s9~3356HC!

,diinOt}}O!!#l11#6 x !233%q7GG3 7 	J'I $N =<<<< " 

?DIIcNDHHSV<L_t}}_!!#s<   H=
II<I5I.I>I  
K*A(KKrW   c                b   [         R                  " S[         R                  " US   5      S[         R                  " SUS   -   S-   5      5        US   [        ;  a9  [         R
                  " SUS   /U R                  5       Q76   U R                  5       $ [        US      nS nS nUS   S:X  a}  SS	1R                  US   15      (       a>  [         R
                  " S
US   -   S-   /U R                  5       Q76   U R                  5       $ U R                  R                  nUR                  nOyUS   S:X  a4  U R                  US   5      nU(       a  UR                  nUR                  nO<US   S:X  a3  U R                  US   5      nU(       a  UR                  nUR                  nU(       d  [         R
                  " S5        [        U[         5      (       d   e[        U["        5      (       d   eUR$                  R'                  5        VVs0 s H+  u  px[(        R*                  " [,        U5      R.                  U_M-     n	nnUS   S:X  a  0 n
[1        U	R'                  5       5       H  u  pS X'   [        U[2        5      (       a  UR.                  X'   M.  [        U[4        5      (       d  ME  / nUR                  R6                   H+  nS n[        U[2        5      (       a  UR.                  nX/-  nM-     XU'   M     U R9                  SSR;                  US   US   5      U
5        g Sn[1        US   R'                  5       5       GH  u  pX;  aL  [         R
                  " S[         R                  " U5      /U R                  5       Q76   U R                  5         MW  US   S:X  ac  X;  a.  [         R                  " S[         R                  " U5      S5        M  [         R                  " S[         R                  " U5      S5        X	 GOUS   S:X  aa  [         R                  " S[         R                  " U5      S[         R<                  " [?        U5      5      5        X+   RA                  U5      X'   GOX;  a  S X'   X+   " X   5      nURC                  5       (       d/  [         R                  " S[         R                  " U5      S5        GM  [?        U5      nUS   S:X  aS  [         R                  " S [         R<                  " U5      S[         R                  " U5      5        URE                  U5        OUS   S!:X  aS  [         R                  " S"[         R<                  " U5      S#[         R                  " U5      5        URG                  U5        O[US   S$:X  aR  [         R                  " S%[         R<                  " U5      S#[         R                  " U5      5        URI                  U5        URK                  5       X'   US&-  nGM     U	R'                  5        VVs0 s H   u  px[-        [M        S'S'SSSS U5      5      U_M"     snnUl        UR$                  R'                  5        H  u  pxURN                  Ul'        M     US:  a'  X0RP                  ;  a  U =RP                  U/-  sl(        g g g s  snnf s  snnf )(NzProcessing function typerX   zwith id'rY   zUnknown function typern  r  z//z>The ID for the function type project must be "/" or "//" not ""r@   rm  z Unable to find the function noderK   rS   rW   z{}#{}r   zCannot modify unknown kwargrG  z  -- Keyzis already deletedz  -- Deletingzfrom the kwargsrF  z  -- Settingtoz  -- Skippingz#because it is too complex to modifyrM   z  -- AddingrH    -- Removingfromr   z!  -- Removing all values matchingr   rD   ))r   r  r   r  rg   r  r  r  
isdisjointrv  project_noder   r  r   r  r   r!   r   rW   r~   r   r   r    r   r  r   r   r   r  r   r  rb   r   r   r   r   r   r   r   levelrx  )rx   r_   
kwargs_defr   arg_nodetmp_tgttmp_depr  r  rW   	info_datar   r   	data_listr   elementnum_changedmodifierval_strs                      r2   r|  Rewriter.process_kwargs
  s   +TYYs:-GTXT]T]^adghldm^mps^sTtuz?"66JJ.JR$--/R$$&&)#j/:
 z?i'
 T{%%s4yk22

[^abf^ggjmm  Aptp}p}p  A((**##00DyyH_(&&s4y1G||99_,**3t95G||99JJ9:$----(L11119A9N9N9PQ9P!&&#))1,9PQ {v%,.I"6<<>2!%	c>22%(YYINY// "I XX//"&%a88&'ggG!Y.		 0
 &/cN 3 MM(GNN3z?CI$NPYZ s8}2245HC$

8$))C.[4==?[!!#;8+$HHZ39MN$))C.:KLK[!U*3t{{3s8?TU(o66s; $"&FK%?6;7**,,HH_diin>cd c({#u,HH]DKK,@$		RUW&&s+%1HH_dkk'.BFDIIVYN[))#.%7HH@$++gBVX^`d`i`ijm`no))#. '//11KU 6Z SYR^R^R`aR`$!6%B1aq"ABAER`aOO))+DAggAG ,?t+>+>>D6)  ??O RH bs   2Z%'Z+c                    U R                   R                  R                  5        H$  u  p#U H  nUR                  U:X  d  M  Us  s  $    M&     g rv   )rv  r  r~   r   )rx   r   r  r  r  s        r2   find_assignment_nodeRewriter.find_assignment_nodex  sD    $$99??ADA99$J  B r1   c                   U R                   R                  R                  U1S5      nU Vs/ s H<  n[        U[        5      (       d  M  UR
                  R                  [        ;   d  M:  UPM>     nn[        U5      S:H  $ s  snf )NFr   )	rv  dataflow_dag	reachabler   r!   r  r   r   r}   )rx   	candidateaffectedr  affected_targetss        r2   affects_no_other_targets!Rewriter.affects_no_other_targets  sn    ##00::I;N'/x!:a3NASTS^S^SdSdh~S~Ax#$)) @s   A?	A?)A?c                   [        [        R                  " 5       5      nU R                  R                  R                  X!5      nU(       d   e[        U5      S:  a  g U[        S US    5       5      R                  -  R                  $ )Nr   c              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7frv   )r   r!   .0r  s     r2   	<genexpr>%Rewriter.get_relto.<locals>.<genexpr>  s     RljL6Q11ls   (	(r   )
r$   r  getcwdrv  r  find_all_pathsr}   nextfilenameparent)rx   target_noder   cwd	all_pathss        r2   	get_reltoRewriter.get_relto  sm    299;$$11@@S	 yy>AdRilRR[[[cccr1   c                B  ^ ^ US;   d   eUS:X  a  [        TR                  5      nO7US:X  a1  TR                  c  [        5       nOTR                  1nTR                  n[	        [
        R                  " 5       5      nU[
        R                  R                  TR                  R                  5      -  nUT R                  R                  -  n	T R                  R                  R                  WS5      n
U
 Vs1 s H"  n[        U[        [         45      (       d  M   UiM$     nnU Vs1 s H  nT R#                  U5      (       d  M  UiM     nnSU U4S jjnU Vs1 s H  o" U5      (       a  M  UiM     nnU Vs1 s H$  nT R%                  TR                  U5      c  M"  UiM&     nnS nSn['        U5      S:  am  ['        U Vs1 s H  n[        U[         5      (       d  M  UiM     sn5      S:  a)  U Vs1 s H  n[        U[         5      (       d  M  UiM     nn[)        US S	9nGOUS:X  a  TR                  nGOUS:X  Ga  [!        [+        S
5      [-        [/        SWR                  SSSS S5      5      [+        S5      5      nT R                  R                  R1                  UTR                  5        [3        [/        SUR                  SSSS S5      5      nUT R4                  ;  a  T =R4                  U/-  sl        TR                  R6                  R9                  SS 5      c  SnUnOSnTR                  R6                  R9                  SS 5      nTR                  R6                  R:                  R=                  5        VVs0 s H0  u  nn[        U[2        5      (       a  UR>                  S:X  a  M-  UU_M2     snnTR                  R6                  l        [A        SU[+        S5      U5      nUUR6                  R:                  U'   T R%                  TR                  U5      n[C        U Vs/ s H  nT R                  RE                  U5      PM      sn5      nUS:X  a  SnOUS:X  a  Sn/ n/ nU Vs/ s HR  n[        U[F        5      (       a  M  [        U[H        5      (       a  X-  RK                  5       OURM                  U	5      PMT     nn[O        [        U5      5       GH  n[	        U5      n[
        R                  RQ                  U5      (       a  [	        U5      nOU	U-  nUU;   a8  [R        RT                  " SW[R        RV                  " [I        U5      5      S5        M  [R        RT                  " SWRY                  5       [R        RV                  " [I        U5      5      S[R        RZ                  " UR                   SUR\                   35      5        UR_                  U5        T R                  R`                  TR                     n[        U[b        5      (       d   e[e        UU5      n[f        Rh                  " US5      Rk                  5       n[/        SUR                  SSSS U5      nU[m        U5      /-  nGM     [        U[        [         45      (       d   eUR6                  n U =Rn                  U-  sl7        X;  a  XN/-  nUT R4                  ;  a  U(       d  T =R4                  U/-  sl        g g g s  snf s  snf s  snf s  snf s  snf s  snf s  snnf s  snf s  snf )N   rJ  rN  rJ  rN  Tc                   > TR                   R                  R                  U TR                  5      nU H$  nU H  n[	        U[
        5      (       d  M      g   M&     gr  )rv  r  r  r   r   r   )r  r  r  r  rx   r@   s       r2   path_contains_unknowns9Rewriter.add_src_or_extra.<locals>.path_contains_unknowns  sQ    ((55DDYPVP[P[\I!B!"l33#  " r1   Fr   c                2    U R                   U R                  4$ rv   )linenocolnor  s    r2   <lambda>+Rewriter.add_src_or_extra.<locals>.<lambda>  s    QXXqww4Gr1   r   r   rD   z[]r   r   extra_filesrM   +Sourcez
Extra filez  -- z.is already defined for the target --> skippingz  -- Adding at:unicode_escaper  r   r   r   )8rF  source_nodesr  r   r$   r  r  r  dirnamer  rv  source_rootr  r  r   r!   r   r  r  r}   minr   r   r   add_edger    rx  r   get_kwarg_or_defaultrW   r~   r   r   r   r  r   rb   resolveto_abs_pathr  isabsr   r  greenlowerr  r  r  funcvalsr   r   codecsencodedecoder   r   )!rx   opr@   newfilesto_sort_nodesoldtgt_functionr  target_dir_abssource_root_abscandidates1r  candidates2r  chosennew_kwarg_flagextra_files_idnodenew_extra_files_nodeold_extra_filesr  r  newfiles_reltosnold_src_listr  	to_appendadded_newfnewf
mocktargetr  tokenr  s!   ` `                              r2   add_src_or_extraRewriter.add_src_or_extra  s,   3333?:=f>Q>Q:RC$$!!)e))*)/L299;rwwv{{/C/CDD 0 0 < <<&&33==c4H$ #.Z+QAi?X1Yq+Z #.R+Q1N1Nq1Qq+R	 	 #.O+Q5KA5Nq+O"-\+QQ1Oq+\37{a{G{!jI.FA{GH1L*5R+QAy9Qq+R *GHF9_[[F$$ws|\%LDYDY[\^_abdhjn:o-pryz}r~F ))2266;;G!'h8M8MqRSUVX\^k(l!m4#6#66##~5#{{44]DIQ!%'-$!%"(++"2"2"G"GW["\<BKK<L<L<S<S<Y<Y<[  +Y<[DAqdnoprxdydy~  F  F  JW  W41a4<[  +Y  ''5e_gVYl\b'c$;OL$$%78V<&-dg.hdg^`t/?/?/U/UVX/Ydg.h&i?D$$D	 {G  k  {Guv  OY  Z[  ]i  Ojp*Q:L:L+446RSR_R_`oRpp  {G  kCM*E;Dww}}T""Dz&-|#$

3t9(=?opHH^TZZ\4::c$i3H$[[FOO#4Afmm_!EFHLL))226;;?Jj*BCCCC 40D=='78??AD(FOOQ1dDIE*U+,,I) +, &<";<<<<;;i' &X%M ,,,^F8+ 6D,W [ S P\ HR. +Y /i ksf   5[3[3$[8[8[=+[=7!\\ \\2\\?,\/\(%\-\
<\c                p   / n[        U[        5      (       aP  [        UR                  R                  5      nUR
                  R                  [        ;   a  UR                  S5        U$ [        U[        5      (       a  UR                  R                  nU$ [        U[        5      (       a  UR                  nU$ )Nr   )r   r!   rf   r   r   r  r   r   popr   r   )rx   nr   s      r2   arg_list_from_nodeRewriter.arg_list_from_node   s    a&&(()D{{  $::
 	 9%%66##D  <((;;Dr1   c                  ^ ^^^ TS;   d   e[        [        R                  " 5       5      nUT R                  R                  -  mSUU UU4S jjnTS:X  a  SnOTS:X  a  SnU GH[  nU" U5      u  pU	c/  [
        R                  " SW[
        R                  " U5      S5        M@  T R                  U
5      (       d/  [
        R                  " S	W[
        R                  " U5      S
5        M  [        U	[        [        45      (       d  [        eU	R                  n[
        R                  " SW[
        R                  " U5      S[
        R                  " U
R                    SU
R"                   35      5        UR$                  R'                  U
5        X;  a  XI/-  nU	T R(                  ;  d  GME  T =R(                  U	/-  sl        GM^     g )N   rK  rO  c                  > TS:X  aT  TR                   R                  R                  [        TR                  5      S5      R                  TR                  15      nO7TS:X  a1  TR                   R                  R                  TR                  1S5      nW H  n[        U[        5      (       a  M  TR                  TR                  U5      nUc  M;  TR                  U5       Hp  n[        U[        5      (       d  M  [        R                  R                  X4R                   -  5      [        R                  R                  TU -  5      :X  d  Mk  X$4s  s  $    M     g)NrK  TrO  )NN)rv  r  r  rF  r  unionr   r  r   r   r  r9  r   r  r  normpathr   )	srcnodesr   reltor  r  rx   r#  r@   s	        r2   	find_node+Rewriter.rm_src_or_extra.<locals>.find_node2  s   X~((55??FDWDW@XZ^_eegmgrgrfst''((55??ASAS@TVZ[a..v{{A6$!44Q7%a44!ww//@BGGDTDTUdgjUjDkk'(t 8  r1   rK  sourcerO  z
extra filez  -- Unable to findzin the targetz  -- Removing thezis too compilicatedr  r  r  )r@  rb   r   z5T.Tuple[T.Optional[BaseNode], T.Optional[StringNode]])r$   r  r  rv  r  r   r   r  r  r   r!   r   NotImplementedErrorr   r  r  r  r  r   rH  rx  )rx   r  r@   to_be_removedr  r  rC  r  r   rootstring_noder  r#  s   ```         @r2   rm_src_or_extraRewriter.rm_src_or_extra,  sv   1111299; 0 0 < <<	 	  >D##DA )!D|2D$**Q-Y00==0$

1G\]d\9$=>>)) yyHHH_dDJJqM6[[K$8$8#9;;M;M:N!OPR%%k2 ('4...##v-##/ r1   c                  ^ ^^^^ [         R                  " S[         R                  " US   5      S[         R                  " US   5      5        T R	                  US   5      mTcV  US   S:w  aM  [         R
                  " S[         R                  " US   5      /T R                  5       Q76   T R                  5       $ S,U U4S jjnTb  US    Vs/ s H
  o2" U5      PM     snUS'   / nUS   S;   a  T R                  US   TUS   U5        GOUS   S	;   a  T R                  US   TUS   U5        GOUS   S:X  Ga  TbN  [         R
                  " S
[         R                  " US   5      S/T R                  5       Q76   T R                  5       $ [        R                  " SSUS   5      nUS   S:X  a  US-   OSnUS-   n[        R                  R                  [        R                  " 5       T R                   R"                  US   [$        R&                  5      n[)        [+        SUSSSS S5      5      n	[-        [/        S5      U	[/        S5      5      n
[)        [+        SUSSSS S5      5      n[1        [3        [+        SUSSSSS5      5      [/        S5      U[/        S5      5      n[5        [3        [+        SUSSSSU5      5      [/        S5      U5      nUS    Vs/ s H  n[7        [+        SUSSSS U5      5      PM     snU	l        U
/Ul        [)        [+        SUSSSS S5      5      n[1        [3        [+        SUSSSSUS   5      5      [/        S5      U[/        S5      5      n[5        [3        [+        SUSSSSU5      5      [/        S5      U5      n[7        [+        SUSSSS US   5      5      [3        [+        SUSSSS U5      5      /Ul        UR;                  [=        5       5        UR;                  [=        5       5        T =R>                  UU/-  sl        GOUS   S:X  a  T RA                  TRB                  5      nUc  TRB                  nT =RD                  U/-  sl"        [         R                  " S [         RF                  " US   5      S![         RH                  " URJ                   S"URL                   35      5        GOJUS   S#:X  Ga@  [O        [        R                  " 5       5      nUT R                   R"                  -  nT R                   RQ                  UTRR                  TRT                  5      nT R                   RQ                  UTRR                  TRV                  (       a  TRV                  /O/ 5      nU Vs/ s H&  n[Y        U[Z        5      (       a  S$O[]        UU5      PM(     nnU Vs/ s H&  n[Y        U[Z        5      (       a  S$O[]        UU5      PM(     nnTR^                  UUS%.nT Ra                  STRb                  U5        U GH9  nS-S& jmS.U4S' jjmS/U4S( jjm[Y        U[0        5      (       aR  URd                  Rf                  [h        ;   a4  URj                  R8                  S)S  nURj                  R8                  S   /nOURj                  R8                  n/ nU Vs/ s H  n[Y        U[6        5      (       a  M  UPM     nnU Vs/ s H  n[Y        U[6        5      (       d  M  UPM     nn[m        UU4S* jS+9nUU-   [n        Rp                  " [n        Rr                  [t           U5      -   URj                  l        GM<     g s  snf s  snf s  snf s  snf s  snf s  snf )0NzProcessing targetr@   rK   rM  zUnknown targetc                  > [         R                  R                  [         R                  R                  TR                  TR
                  5      5      n[         R                  R                  U 5      (       a  [         R                  R                  X5      $ [         R                  R                  U 5      (       d  U $ [         R                  R                  [         R                  R                  U 5      U5      $ rv   )	r  r  abspathr  ru  rE   r  r   exists)r@  rE   rx   r@   s     r2   
rel_source+Rewriter.process_target.<locals>.rel_sourcei  s    WW__RWW\\$..&--%PQFww}}S!!wws33WW^^C((
77??277??3#7@@r1   rT   r  r<  zCan not add targetzbecause it already existsz[- ]_rG   rI   _exe_lib_sourcesrE   r   r   rD   r   r   rY   )r   r   files()r  rL  z  -- Removing targetr
  r  rS   unknown)r  rT   r  c                b    U R                  5       (       a  [        U 5      $ U R                  5       $ rv   )isdigitintr  )texts    r2   convert(Rewriter.process_target.<locals>.convert  s!    $(LLNNs4yD

Dr1   c                j   > [         R                  " SU 5       Vs/ s H  nT" U5      PM     sn$ s  snf )Nz([0-9]+))r3  split)r   cr^  s     r2   alphanum_key-Rewriter.process_target.<locals>.alphanum_key  s,    ,.HHZ,EF,Eq
,EFFFs   0c                   > [        U R                  S5      5       VVs/ s H!  u  pU R                  S5      U:*  T" U5      4PM#     snn$ s  snnf )Nr  )	enumeratera  count)r   idxr  rc  s      r2   path_sorter,Rewriter.process_target.<locals>.path_sorter  sG    OXY\YbYbcfYgOhiOhVS33.Q@Ohiiis   (Ar   c                (   > T" U R                   5      $ rv   )r   )r  ri  s    r2   r  )Rewriter.process_target.<locals>.<lambda>  s    K4Hr1   r  )r@  rb   r   rb   )r]  rb   r   zT.Union[int, str])r   rb   r   zT.List[T.Union[int, str]])r   rb   r   z0T.List[T.Tuple[bool, T.List[T.Union[int, str]]]]);r   r  r   r  r  r  r  r  r4  rJ  r3  subr  r  r  r  rv  r  r   r  r   r   r   r   r!   r    r   r   r   acceptr	   rz  r  r   ry  r  r  r  r  r$   nodes_to_pretty_filelistrE   r  r  r   r   r   r  r  rY   r  r   r   r   r  r   r   Listr   ) rx   r_   rP  r  r  id_base	target_id	source_idr  src_arg_nodesrc_arr_nodesrc_far_nodesrc_fun_nodesrc_ass_nodetgt_arg_nodetgt_fun_nodetgt_ass_node	to_remover  r#  src_listextra_files_list	test_datar   src_argstarget_namerY  rT   rc  r^  ri  r@   s    `                           @@@@r2   r}  Rewriter.process_target`  s   $diiH&>TYYWZ[fWgMhi!!#h-0>c+.,>JJ'3x=)ATDMMOT$$&&	A 	A 58^D^jm^DC	NBD{==!!#k"2FC	NMZ!==  [!163y>=Y-!

/3x=1IKfyimivivixy((**ffWc3x=9G,/,>,,N&(TZI*,Iww||BIIK1A1A1M1MsS[}^i^x^xyH (h!Q4QS(TUL$WS\<NL'h!Q4QS(TUL'uT8Q1fV]/^(_ahilamo{  ~E  FI  ~J  KL)&tXq!QPVXa1b*celmpeqs  ALgjktgu%vgubcjx1aQRTXZ[1\&]gu%vL"&2^L" (h!Q4QS(TUL'uT8Q1fVYZgVh/i(jlstwlx  {G  IP  QT  IU  VL)&tXq!QPVXa1b*celmpeqs  AL58Q1dCMRSuXxAq$	JK&L"
  7 9: 7 9:,!==,"&";";FKK"HI "KK	  YK/ HH+TZZH-F[[I$6$6#7q9I9I8J!KLN ' ryy{#C!D$4$4$@$@@O''@@RXR_R_agatatuH#//HHZ`ZgZg  BH  BT  BTjpj|j|i}  Z\   ]kstksfgZ<%@%@	gaQ`FaaksHt tD   E  tDnoZ<-H-H	gVWYhNi i  tD   E #/I
 MM(FIIy9 AEGj !\**q{{/@/@DZ/Z66++AB/ vv//2366++ 4<(^HqJqR\D]HG(^6>*\h*QPZB[1hG*\W*HIG*W4qvvaffX>NPW7XXAFF' M E4 &wB u  E4 )_*\s0   ]$]6-])-]#] ]])]c           	         SU;  a  [        S5      eUS   U R                  ;  a?  [        SR                  US   [        U R                  R	                  5       5      5      5      eU R                  US      " U5        g )Nr6   zCommand has no key "type"z0Unknown command "{}". Supported commands are: {})r)   r~  r   rf   rh   )rx   r_   s     r2   processRewriter.process  so    #$?@@v;dnn,#$V%+VCKdnn>Q>Q>S9T%UW Ws6{#C(r1   c           	       ^^ [        S U R                   5       5      (       d   e[        S U R                   5       5      (       d   e[        S U R                   5       5      (       d   e[        S U R                   5       5      (       d   eU R                   Vs/ s H  oSS.PM	     nnX R                   Vs/ s H  oSS.PM	     sn-  n[        US S	S
9nX R                   Vs/ s H  oSS.PM	     sn-  n/ nU H  nSnUS   S:X  d	  US   S:X  aa  [        5       n[        R                  " [        US   5      R                  U5        UR                  5         UR                  R                  5       n[        R                  " [        US   5      R                  UUS   US   S.nX7/-  nM     0 mU H  nUS   T;   a  M  [        R                  R!                  [        R                  " ["        US   5      5      nSn	[        R                  R%                  U5      (       d  ['        USSS9    S S S 5        ['        USS9 n
U
R)                  5       n	S S S 5        U	R+                  S	5      nSn/ nU H  nX/-  nU[-        U5      -  nM     UU	US.T[        R                  " ["        US   5      '   GM      SUU4S jjmU Hl  nUS   S;   a
  T" U5        M  US   S:X  d  M!  T[        R                  " ["        US   5         S==   [        R                  " ["        US   5      S-   -  ss'   Mn     TR/                  5        H\  u  nn[0        R2                  " S[0        R4                  " U5      5        ['        US   SSS9 n
U
R7                  US   5        S S S 5        M^     g s  snf s  snf s  snf ! , (       d  f       GN= f! , (       d  f       GNw= f! , (       d  f       M  = f)Nc              3     #    U  H7  n[        US 5      =(       a    [        US5      =(       a    [        US5      v   M9     g7fr  r  r  Nr  r  s     r2   r  )Rewriter.apply_changes.<locals>.<genexpr>  s5     xdw_`71h'ZGAw,?ZGAzDZZdw   ?Ac              3     #    U  H7  n[        US 5      =(       a    [        US5      =(       a    [        US5      v   M9     g7fr  r  r  s     r2   r  r    s5     ydx_`71h'ZGAw,?ZGAzDZZdxr  c              3  N   #    U  H  n[        U[        [        45      v   M     g 7frv   )r   r   r!   r  s     r2   r  r    s!     YEX:a)\!:;;EXs   #%c              3  X   #    U  H   n[        U[        [        [        45      v   M"     g 7frv   )r   r   r   r!   r  s     r2   r  r    s$     jUiPQ:a)^\!JKKUis   (*modify)r   r;   rN   c                    [         R                  " [        U S   5      R                  [         R                  " [        U S   5      R                  4$ )Nr   )r   r   r   r  r  r  s    r2   r  (Rewriter.apply_changes.<locals>.<lambda>  s:    qvvh&	7R7Y7Y[\[a[abjlmntlu[v[|[|6}r1   T)r   reverserM   rD   r;   r   filerb   r   r;   r  wutf-8encodingr   )r  rawoffsetsc                `  > TU S      S   nTU S      S   nU S   nUR                   S-
  nUR                  nX   U-   nUn[        U[        [        45      (       a  XR
                  S-
     UR                  -   nO[        U[        5      (       a  U S   S:X  a}  [        UR                  [        [        45      (       a%  T	" U S   SUR                  SS	.5        TU S      S   nX'   S
:w  a  US-  nX'   S
:w  a  M  US-  nX'   S;   a  US-  nX'   S;   a  M  US U U S   -   X'S  -   TU S      S'   g )Nr  r  r  r   r   r;   rN   rD   r  r  >   	
 rb   )	r  r  r   r   r!   
end_lineno	end_colnor   r   )
r   r  r  r   linecolstartendrV  remove_nodes
           r2   r  +Rewriter.apply_changes.<locals>.remove_node  sV   AfI&y1G&	"5)CV9D;;?D**CMC'EC$L 9::oo12T^^C D.11akT6Idjj9l*CDD62tzz]a bc&	*51Ch#o1HC h#oqh"331HC h"33 '*&5kAeH&<s4y&HE!F)U#r1   >   rN   r  r  rb   r  	Rewritingr  )r   rt   r   r   )allrx  ry  r  rz  r
   r   r   r   rn  post_processresultstripr  r  r  realpathrb   rO  openread
splitlinesr}   r~   r   r  r  r  )rx   r  
work_nodesstr_listr   new_dataprinterr  fpathfdatafpm_linesoffsetline_offsetsr  r   r   rV  r  s                    @@r2   apply_changesRewriter.apply_changes  s}   xdhdwdwxxxxxydhdxdxyyyyyYTEXEXYYYYYjUYUiUijjjjj?C?R?RS?R!H5?R
S<P<PQ<PqT2<PQQ
J,}  HL  M
=N=NO=NU3=NOO
 AH{h&!H+*>$,x6+227;$$&">>//1x63<<&	H+	D H   %'AyE!GG$$QVVC6%;<EE77>>%((%w7 8eg."	 / &&t,GFL(#a&  
 '-E!&&ai()) 6	I 	I0 A{..A8%affS!F),-e4sAeH8MPT8TT4	  HCHH[$++c"23c&k39RU$ :9 &e TQO8 87..f :9s6   N%;N*(N/1N4OO4
O	
O	
O'	)r~  rq  rv  rx  rw  ru  rz  ry  N)ninjaF)ru  rb   r  rb   rw  r   r$  )r  rb   r  rb   r  dictr   r   )r   z%T.Tuple[AnsiDecorator, AnsiDecorator])r  rb   r   T.List[BaseNode])r@   rb   r   z$T.Optional[IntrospectionBuildTarget])rm  rb   r   z#T.Optional[IntrospectionDependency])r_   rt   r   r   )r   r   r   zT.Optional[AssignmentNode]r  )r  r   r   r   r   r$   )
r  rb   r@   r   r  T.List[str]r  (T.List[T.Union[FunctionNode, ArrayNode]]r   r   )r8  r   r   r  )
r  rb   r@   r   rG  r  r  r  r   r   )r,   r-   r.   r/   r   ry   r  r  r  r  r  r  r  r  rr   re   r{  r|  r  r  r  r4  r9  rJ  r}  r  r  r0   r+   r1   r2   rp  rp  r  s    ::W0Y
6
A
62 - 123+( 4+(Z -)*k* +k*Z*
	dN,b
2.h -)*kY +kYZ)[%r1   rp  rJ  rK  rM  rL  rN  rO  rS   rL   c                    0 n[        U 5      n U H  n[        U5      X'   M     U$ ! [         a    [        S5      ef = f)Nz;in_list parameter of list_to_dict must have an even length.)iterr  StopIteration	TypeError)in_listr  itr   s       r2   list_to_dictr  =  sS    F	gBWA RFI	  M  WUVVWs   ' =c                    SU R                   [        U R                     U R                  U R                  U R
                  S./$ )Nr@   )r6   r@   rK   rT   rE   rG   )r@   target_operation_maprK   rT   rE   rF   r]   s    r2   generate_targetr  J  s@    ..)'*;*;<??..''  r1   c                v    SU R                   U R                  U R                  [        U R                  5      S./$ )NrW   )r6   rX   rY   rK   rW   )rX   rY   rK   r  rW   r  s    r2   generate_kwargsr  T  s9    $$jj&&w~~.  r1   c                J    SU R                   [        U R                  5      S./$ )Nr\   )r6   rK   r]   )rK   r  r]   r  s    r2   generate_def_optsr  ]  s)    !&&0  r1   c                T   [         R                  R                  U R                  5      (       a  [	        U R                  SS9 n[
        R                  " [
        R                  [
        R                  [        [
        R                  4      [        R                  " U5      5      sS S S 5        $ [
        R                  " [
        R                  [
        R                  [        [
        R                  4      [        R                  " U R                  5      5      $ ! , (       d  f       g = f)Nr  r  )r  r  rO  r`   r  r   r   rp  Dictrb   Anyloadloads)r]   r  s     r2   generate_cmdr  d  s    	ww~~gll##',,1R66!&&QUU
!34diimD 21 vvaffQVVCJ/0$**W\\2JKK 21s   A!D
D')r@   rA   rW   rZ   r[   r^   r_   c           
     ,   [         R                  " S5        U R                  (       d  [         R                  " 5          [	        5         [        U R                  U R                  S9nUR                  5         U R                  c-  [         R                  " S5         [         R                  " 5         g[        U R                     " U 5      n[        U[        5      (       d  [        S5      e[!        U5       H  u  p4[        U["        5      (       d  [        S5      eUR%                  U5        UR'                  5         U[)        U5      S-
  :X  a    Os/ Ul        / Ul        / Ul        [1        UR                  SUR2                  R4                  [7        5       [9        5       [;        5       /S9Ul        UR                  5         M     UR=                  5          [         R                  " 5         g	! [>         a  nUeS nAff = f! [         R                  " 5         f = f)
NT)rw  zNo command specifiedr   zCommand is not a listzCommand is not an objectrD   rs  r   ) r   redirectverbose	set_quietr   rp  ru  r<   r  r6   r  set_verbosecli_type_mapr   rf   r  rf  objectr  r  r}   rx  ry  rz  r   rv  backendr   r	   r   r  	Exception)r]   rewritercommandsr   r_   r  s         r2   runr  v  s   MM$??#G--7<<H <<JJ-.8 	5  -g6(D))344)FAc6** :;;S!""$CMA%%&(H#')H$$&H!#;H<N<NPRT\ThThTpTp  M  O  Qh  Qj  l}  l  ~@  $AH ""$ *  	 	   	s+   AG( 0D!G( (
G92G44G99G< <H)ri   r%   rj   r&   r   r   )r  r  r   zT.Dict[str, str])r]   argparse.Namespacer   zT.List[T.Dict[str, T.Any]])r]   r  r   r\  )Q
__future__r   astr   r   r   r   r	   r
   ast.interpreterr   r   r   interpreterbaser   r   interpreterbase.helpersr   mesonbuild.mesonlibr   r   r   rD   r   r   	functoolsr   mparserr   r   r   r   r   r   r   r   r   r    r!   r"   mintror#   r`   r  r3  r  r  typingr   pathlibr$   TYPE_CHECKINGargparser%   r&   r'   r)   rp   rr   r   r   r   r   r   r*  r;  rb   r  rf   re   r   rg   rp  r  r  r  r  r  r  r  r  r+   r1   r2   <module>r     sL   # J  J W W 2 , D D   q  q  q  q (        ??8#	 	
!KF* *B'f 'fRy 
	 
i S>	 S>j9 0) 4 4%!23"d#
 $%D$4![\T"	 d#4!~"d#D/\  ,S  T2. , %	 &# #! (!"1 B
% 
%D 
(& L ((r1   