
    <hޟ                       S SK Jr  S SKrS SKrS SKJrJrJr  S SK	J
r
  S SKJrJrJrJr  S SKJr  S SKrSSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  \R>                  (       a
  S SK r S SK!J"r"   " S S\5      r#S%S jr$\ " S S5      5       r%\ " S S5      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" jr-S'S# jr.S(S$ jr/g))    )annotationsN)ConfigParserMissingSectionHeaderErrorParsingError)deepcopy)	dataclassfieldfieldsasdict)Path   )mparser)MesonException)AstConditionLevel)
RawPrinter)FullAstVisitor)build_filename)Literalc                  N   ^  \ rS rSrSSU 4S jjjrSU 4S jjrS	S
S jjrSrU =r$ )DefaultConfigParser   c                "   > [         TU ]  US S9  g )N)
delimitersinterpolation)super__init__)selfr   	__class__s     s/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/mformat.pyr   DefaultConfigParser.__init__   s    JdC    c                   > UR                  5       (       d  [        SU S35      e [        TU ]  USS9  g ! [         a2    U R                  SU R                   S3UR                  SS9-   5         g f = f)NzConfiguration file z
 not foundutf-8encoding[z]
)existsr   r   readr   read_stringdefault_section	read_text)r   filenamer   s     r   read_default DefaultConfigParser.read_default   s~       #6xj
!KLL	cGLGL4( 	cq!5!5 6c:X=O=OY`=O=aab	cs   6 9A21A2c                t    U R                  XUS9nU(       a   UR                  S5      R                  S5      nU$ )Nfallback"')getstrip)r   sectionkeyr1   values        r   getstrDefaultConfigParser.getstr'   s5    !%'!JKK$**3/Er!    ))=:)r   zT.Tuple[str, ...])r,   r   returnNoneN)r6   strr7   rA   r1   T.Optional[str]r>   rB   )	__name__
__module____qualname____firstlineno__r   r-   r9   __static_attributes____classcell__r   s   @r   r   r      s    D Dc r!   r   c                R  ^^ Sm/ mSUU4S jjnUR                  SS5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SS	U5      n[        R                  " S
SU5      n[        R                  " SX#5      nUR                  S5      (       a  SU-   nUS-  n[        R                  " X05      nUc  g[        T5       H5  n [        USUS-    3   5      nTU   S   Us=::  a  TU   S   ::  d  O    gM7     g! [         a       gf = f)z.recursive glob match for editorconfig sectionsr   c                   > SU S   ;   aF  TS-  mU S   R                  S5      u  pTR                  [        U5      [        U5      45        ST S3$ [        R                  " [
        U S   R                  SS5      5      $ )Nz\.\.r   z(?P<numz
>-?[0-9]+),|)splitappendintTcastrA   replace)mlowhighindex
num_rangess      r   curl_replace match_path.<locals>.curl_replace3   sx     qtQJE!

8,ICs3xT34UG:..66#qt||C566r!   .z\.z	(?<!\\)\?z(?<![\\\*])\*(?!\*)z([^/]*)z(?<!\\)\*\*z(.*)z(?<!\\)\[!(.*?[^\\])\]z([^\1])z(?<!\\)\{(.*?[^\\])}/^$Fnumr   T)rT   zre.Matchr>   rA   )rS   resub
startswithsearchrangerP   
ValueError)	r,   patternrY   
pattern_rerT   ivalrW   rX   s	          @@r   
match_pathrj   .   s*   E,.J	7 	7 e,Jc:6J.	:FJ
;J1:zJJ/JJ#:%
#J
		*'Ay5\	a#acUn%Ca=#s>jmA.>> ?    		s   "/D
D&%D&c                     \ rS rSr% \" SS\R                  0S9rS\S'   \" SS\R                  0S9r
S\S'   \" SS\R                  0S9rS\S	'   \" SS\R                  0S9rS
\S'   \" SS\R                  0S9rS\S'   \" SS\R                  0S9rS\S'   \" SS\R                  0S9rS\S'   \" SS\R                  0S9rS\S'   Srg)EditorConfigW   Ngetterdefaultmetadataz#T.Optional[Literal['space', 'tab']]indent_styleT.Optional[int]indent_size	tab_widthz'T.Optional[Literal['lf', 'cr', 'crlf']]end_of_linezKT.Optional[Literal['latin1', 'utf-8', 'utf-8-bom', 'utf-16be', 'utf-16le']]charsetT.Optional[bool]trim_trailing_whitespaceinsert_final_newlinez(T.Optional[T.Union[Literal['off'], int]]max_line_lengthr;   )rC   rD   rE   rF   r	   r   r4   rr   __annotations__getintrt   ru   rv   rw   
getbooleanry   rz   r{   rG   r;   r!   r   rl   rl   W   s    9>dV^`s`w`wUx8yL5y#(K^KeKe@f#gKg!&txI\IcIc>d!eIe;@YacvczczX{;|K8|[`im  zB  DW  D[  D[  y\  \]GX  ]16txYlYwYwNx1y.y-248UhUsUsJt-u*u@Ed^fh{hh  ^A  ABO=  Br!   rl   c                     \ rS rSr% \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9r
S	\S
'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS	\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \" S\R                  SS.S9rS\S'   \S#S j5       rS$S jrS%S  jr\S&S! j5       rS"rg)'FormatterConfigd   NP   )rn   rp   ro   rs   r{   z    rB   	indent_byFrx   space_arraykwargs_force_multiline
wide_colonno_single_comma_functionnativez1T.Optional[Literal['cr', 'lf', 'crlf', 'native']]rv   z  indent_before_commentsTsimplify_string_literalsrz      ru   
sort_filesgroup_arg_valueuse_editor_configc                    [        U 5       Vs0 s H  oR                  UR                  S   _M     nnU " S0 UD6$ s  snf )Nrp   r;   )r
   namerq   )clsfdefaultss      r   rp   FormatterConfig.default   s<    ;A#;G;aFFAJJy11;GX Hs   #;c                    [        U 5      n[        U5      R                  5        H  u  p4Uc  M
  [        X#U5        M     U$ )z.Returns copy of self updated with other config)r   r   itemssetattr)r   config
new_configr7   r8   s        r   updateFormatterConfig.update   s<    d^
 ...0JC 
/ 1 r!   c                H   [        U 5      nUR                  S:X  a   UR                  =(       d    SnUS-  Ul        O=UR                  S:X  a  SUl        O%UR                  (       a  UR                  S-  Ul        UR                  S:X  a  SUl        O+UR                  (       a  [        UR                  5      Ul        UR                  (       a  UR                  Ul        UR                  (       a  UR                  Ul        UR                  (       a  UR                  Ul        U$ )z.Returns copy of self updated with editorconfigspacer    tab	offr   )	r   rr   rt   r   r{   rP   rv   rz   ru   )r   editorconfigr   rt   s       r   with_editorconfig!FormatterConfig.with_editorconfig   s    $$$/&227aK*S0F&&%/#F%%+77#=F''50%&F"))%()E)E%FF"##!-!9!9F,,*6*K*KF'!!+55Fr!   c                j    U R                   S:X  a  gU R                   S:X  a  gU R                   S:X  a  gg )Ncrlfz
lf
cr)rv   )r   s    r   newlineFormatterConfig.newline   s8    v%t#t#r!   r;   )r>   r   )r   r   r>   r   )r   rl   r>   r   )r>   rB   )rC   rD   rE   rF   r	   r   r}   r{   r|   r9   r   r~   r   r   r   r   rv   r   r   rz   ru   r   r   r   classmethodrp   r   r   propertyr   rG   r;   r!   r   r   r   d   si    (-/66(O_ 
 "'/66#"I 
 %*/::"%K! 
 05/::"0, 
 $)/::"$J  
 27/::"2.  FK/66%FKB 
 /4/66!/O 
 27/::!2. 
 .3/::!.* 
 "'/66"I  $)/::!$J  
 )./::")O% 
 +0/::"+'   4  r!   r   c                  @   ^  \ rS rSrSS jrSS jrSU 4S jjrSrU =r$ )	MultilineArgumentDetector   c                    Xl         SU l        g )NFr   is_multiliner   r   s     r   r   "MultilineArgumentDetector.__init__   s    !r!   c                    UR                   (       a"  SUR                   R                  ;   a  SU l        g [        U[        R
                  5      (       a  UR                  (       a  SU l        g g g )N#T)whitespacesr8   r   
isinstancer   
StringNoder   nodes     r   
enter_node$MultilineArgumentDetector.enter_node   sR    t'7'7'='= = $Dg0011d6G6G $D 7H1r!   c                   > UR                   (       a  SU l         U R                   (       a  g U R                  R                  (       a  UR                  (       a  SU l         [        TU ]  U5        g NT)r   r   r   kwargsr   visit_ArgumentNoder   r   r   s     r   r   ,MultilineArgumentDetector.visit_ArgumentNode   sH     $D;;--$++ $D"4(r!   r   r   r   r   mparser.BaseNoder>   r?   r   zmparser.ArgumentNoder>   r?   )	rC   rD   rE   rF   r   r   r   rG   rH   rI   s   @r   r   r      s    "%
) 
)r!   r   c                    ^  \ rS rS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%S jjr
S&S	 jrS'S
 jrS(S jrS)S jrS*U 4S jjrS+S jrS,U 4S jjrS-U 4S jjrS.U 4S jjrS/U 4S jjrS0U 4S jjrS1S jrS2U 4S jjrS3U 4S jjrS4U 4S jjrS5U 4S jjrS6U 4S jjrS7U 4S jjrS8U 4S jjrS9U 4S jjrS:U 4S jjrS'U 4S jjr S;S jr!S r"U =r#$ )<TrimWhitespaces   c                :    Xl         SU l        SU l        SU l        g )NFr    )r   in_block_commentsin_argumentsindent_commentsr   s     r   r   TrimWhitespaces.__init__   s    !&!r!   c                \    U R                  U5        UR                  R                  U 5        g r@   )r   r   acceptr   s     r   visit_default_func"TrimWhitespaces.visit_default_func  s"    %r!   c                   [        U[        R                  5      (       a  g UR                  (       d[  [        R                  " [        R                  " SUR
                  SSSSS5      5      Ul        UR                  UR                  l        g g )N
whitespacer   r   r   r   )r   r   WhitespaceNoder   Tokenr,   condition_levelr   s     r   r   TrimWhitespaces.enter_node  sn    dG2233&55gmmLRVR_R_abdeghjprt6uvD/3/C/CD,  r!   c                    g r@   r;   r   s     r   	exit_nodeTrimWhitespaces.exit_node  s    r!   c                
   UR                   R                  UR                   R                  -   UR                   l        UR                   R                  UR                   l        S Ul         UR                   R                  U 5        g r@   )r   r8   is_continuationr   )r   	from_nodeto_nodes      r   move_whitespaces TrimWhitespaces.move_whitespaces  sc    $-$9$9$?$?'BUBUB[B[$[!.7.C.C.S.S+ $	""4(r!   c                ^    UR                   R                  (       d  SUR                   l        g g Nr   r   r8   r   s     r   add_space_afterTrimWhitespaces.add_space_after  $    %%%(D" &r!   c                   UR                   R                  (       d  SUR                   l        g U(       aK  UR                   R                  R                  S5      (       d   UR                   =R                  S-  sl        g g g Nr   )r   r8   endswith)r   r   forces      r   add_nl_afterTrimWhitespaces.add_nl_after   s]    %%%)D"4++11::4@@""d*" AUr!   c                    UR                  U R                  R                  5      (       a#  US [        U R                  R                  5      *  nU$ r@   )r   r   r   len)r   r8   s     r   dedentTrimWhitespaces.dedent&  s?    >>$++//006C 5 5667Er!   c                H   ^ SU4S jjnTR                   R                  US9  g )Nc                t   > [        U [        R                  5      (       a  U R                  $ [	        TSS5      $ )Nr8   r   )r   r   r   	raw_valuegetattr)argr   s    r   sort_key0TrimWhitespaces.sort_arguments.<locals>.sort_key-  s/    #w1122}}$4"--r!   )r7   )r   r   r>   rA   )	argumentssort)r   r   r   s    ` r   sort_argumentsTrimWhitespaces.sort_arguments+  s    	.
 	)r!   c                x    U R                  U5        SU l        UR                  R                  U 5        SU l        g )NTF)r   r   r   r   r   s     r   visit_EmptyNodeTrimWhitespaces.visit_EmptyNode4  s2    !%%!&r!   c                   UR                   R                  SS9nSUl         U R                  nU Vs/ s H  nSU;   PM
     snS/-   n[        U5       GH  u  pdUR	                  S5      nUR                  5       nUR                  S5      (       a  U=R                   S-  sl         SUl        OfUR                  S5      (       aP  U(       d*  U=R                   U R                  R                  -  sl         OU=R                   U R                  -  sl         U=R                   U-  sl         U(       a9  U(       d  XVS	-      (       d  U R                  (       d  U=R                   S-  sl         SnGM     UR                   R	                  S5      (       a[  U=R                   U R                  -  sl         UR                  (       a*  U=R                   U R                  R                  -  sl         g g g s  snf )
NTkeependsr   r   Fr   \r   r   )r8   
splitlinesr   	enumerater   r5   rb   r   r   r   r   r   r   )r   r   linesr   linewith_commentsrh   has_nls           r   visit_WhitespaceNode$TrimWhitespaces.visit_WhitespaceNode:  sk   

%%t%4
 2216775'A 'GA]]4(F::<Dt$$

c!
'+$%%(JJ$++"D"DDJJJ$"6"66JJJ$J4=1#5T=N=N

d"
 $ ( ::t$$JJ$...J##

dkk333
 $ %! 8s   G*c                   > [         TU ]  U5        UR                  S;   a-  UR                  R                  S:X  a  SUR                  l        g g g )Nz([{r   r   )r   visit_SymbolNoder8   r   r   s     r   r   TrimWhitespaces.visit_SymbolNodeS  sF     &::4#3#3#9#9T#A%'D" $Br!   c                ^  ^ U R                  T5        U R                  R                  (       ao  TR                  (       a6  [	        U4S jS 5       5      (       d  STl        TR                  5       Tl        TR                  (       a  STR                  ;  a  STl        U R                  T5        g )Nc              3  @   >#    U  H  oTR                   ;   v   M     g 7fr@   )r8   ).0xr   s     r   	<genexpr>3TrimWhitespaces.visit_StringNode.<locals>.<genexpr>\  s     ,Rk$**_ks   )r   r3   F@)	r   r   r   r   anyescaper8   
is_fstringr   r   s    `r   visit_StringNode TrimWhitespaces.visit_StringNodeX  so    ;;//  ,Rk,R)R)R$)!![[]
3djj#8"'tr!   c                \   > [         TU ]  U5        U R                  UR                  U5        g r@   )r   visit_UnaryOperatorNoder   r8   r   s     r   r!  'TrimWhitespaces.visit_UnaryOperatorNodee  s$    '-djj$/r!   c                   > [         TU ]  U5        UR                  R                  R                  (       d  SUR                  R                  l        U R                  UR                  U5        g r   )r   r!  operatorr   r8   r   r   s     r   visit_NotNodeTrimWhitespaces.visit_NotNodei  sI    '-}}((...1DMM%%+djj$/r!   c                   > [         TU ]  U5        U R                  UR                  5        U R                  UR                  5        U R                  UR                  U5        g r@   )r   visit_BinaryOperatorNoder   leftr$  r   rightr   s     r   r(  (TrimWhitespaces.visit_BinaryOperatorNodeo  sH    (.TYY'T]]+djj$/r!   c                Z  > [         TU ]  U5        U R                  UR                  U5        UR                  R
                  R                  (       a  SUR                  l        UR                  R                  (       al  UR                  R                  (       dQ  U R                  R                  (       a6  U R                  UR                  5        U R                  UR                  5        UR                  R                  (       d'  U R                  UR                  UR                  5        g g r   )r   visit_ArrayNoder   rbracketlbracketr   r8   argsr   r   r   r   r   r   s     r   r-  TrimWhitespaces.visit_ArrayNodeu  s    %dmmT2==$$**%)DII"99tyy'='=$++BYBY  /  +yy""!!$--; #r!   c                   > [         TU ]  U5        U R                  UR                  U5        UR                  R
                  R                  (       a  SUR                  l        g g r   )	r   visit_DictNoder   rcurllcurlr   r8   r0  r   r   s     r   r3  TrimWhitespaces.visit_DictNode  sH    t$djj$/::!!''%)DII" (r!   c                   U R                  U5        UR                  (       a*  SU l        UR                  R                  U 5        SU l        O?[        R
                  " [        R                  " SUR                  SSSSS5      5      Ul        SUR                  l        UR                   H  nUR                  U 5        M     U R                  U5        UR                  (       a   U R                  UR                  S   U5        OvUR                  R                  UR                  R                  -   UR                  l        SUR                  l        SU l        UR                  R                  U 5        SU l        UR                  S:X  a+  U R                  R                   (       a  U R#                  USS9  UR                  U R                  R$                  -  nU(       a0  UR                  (       a  UR                  =R                  U-  sl        UR                  S S  H"  nUR                  =R                  U-  sl        M$     g )	NTFr   r   r   r   )r   )r   pre_whitespacesr   r   r   r   r   r,   block_indentr  r   r   r8   r   r   r   rz   r   r   )r   r   rh   indentr  s        r   visit_CodeBlockNode#TrimWhitespaces.visit_CodeBlockNode  s   %)D"  ''-%*D"#*#9#9'--VZVcVcefhiklntvx:y#zD ,0)AHHTN t::!!$**R.$7%)%9%9%?%?$BRBRBXBX%XD")+D  &%)D"##D)%*D"1$)I)Id$/%%(=(==djj  &&&0&JJsOD""f," $r!   c                \   > [         TU ]  U5        U R                  UR                  U5        g r@   )r   visit_IndexNoder   r.  r   s     r   r?  TrimWhitespaces.visit_IndexNode  s$    %dmmT2r!   c                   > [         TU ]  U5        U R                  UR                  U5        UR                  R
                  R                  (       a  SUR                  l        g g r   )	r   visit_MethodNoder   rparlparr   r8   r0  r   r   s     r   rB   TrimWhitespaces.visit_MethodNode  sH     &dii.99  &&%)DII" 'r!   c                  > UR                   R                  S:X  Ga  U R                  R                  (       a  U R	                  UR
                  5        [        UR
                  R                  5      S:X  a  UR
                  R                  (       d  UR
                  R                  S   n[        U[        R                  5      (       a_  UR                  R                  (       a3  UR                  R                  R                  R                  5       (       d  UR
                  Ul        [        TU ]A  U5        U R#                  UR$                  U5        UR&                  R                  R                  (       a  SUR
                  l        g g )Nfilesr   r   T)	func_namer8   r   r   r   r0  r   r   r   r   r   	ArrayNoder/  r   r5   r   visit_FunctionNoder   rC  rD  r   )r   r   r   r   s      r   rJ  "TrimWhitespaces.visit_FunctionNode  s    >>7*{{%%##DII.499&&'1,TYY5E5Eii))!,c7#4#455<<333<<;S;S;Y;Y;_;_;a;a$'HH	"4(dii.99  &&%)DII" 'r!   c                   > [         TU ]  U5        U R                  UR                  5        U R                  UR                  5        U R                  UR                  U5        g r@   )r   visit_AssignmentNoder   var_namer$  r   r8   r   s     r   rM  $TrimWhitespaces.visit_AssignmentNode  sH    $T*T]]+T]]+djj$/r!   c                  > [         TU ]  U5        U R                  UR                  5        U R                  UR                  S   5        UR
                   H  nU R                  U5        M     U R                  UR                  5        UR                  R                  =R                  UR                  U R                  R                  -  -  sl	        SUR                  R                  l        U R                  UR                  U5        g )Nr8  T)r   visit_ForeachClauseNoder   foreach_varnamescommascolonblockr   r8   r   r   r   r:  r   
endforeach)r   r   commar   s      r   rQ  'TrimWhitespaces.visit_ForeachClauseNode  s    '-T]]+T]]2./[[E  ' !TZZ(

$$(<(<t{{?T?T(TT$.2

+doot4r!   c                  > [         TU ]  U5        U R                  UR                  U5        UR                   HC  nUR
                  =R                  UR                  U R                  R                  -  -  sl        ME     [        UR                  [        R                  5      (       aK  UR                  R
                  =R                  UR                  U R                  R                  -  -  sl        g g r@   )r   visit_IfClauseNoder   endififsr   r8   r   r   r   r   	elseblockr   ElseNode)r   r   if_noder   s      r   r[  "TrimWhitespaces.visit_IfClauseNode  s    "4(djj$/xxG%%)=)=@U@U)UU%  dnng&6&677NN&&,,0D0Dt{{G\G\0\\, 8r!   c                  > [         TU ]  U5        U R                  UR                  5        SU l        U R                  UR                  U5        SU l        UR                  S-   UR                  l        SUR                  l	        g NTFr   )
r   visit_IfNoder   if_r   r   rV  r   r   r:  r   s     r   rd  TrimWhitespaces.visit_IfNode  sm    T"TXX&!%djj$/!&+/+?+?!+C((,%r!   c                   > [         TU ]  U5        SU l        U R                  UR                  U5        SU l        UR
                  S-   UR                  l        SUR                  l        g rc  )r   visit_ElseNoder   r   rV  r   r   r:  r   s     r   rh  TrimWhitespaces.visit_ElseNode  s[    t$!%djj$/!&+/+?+?!+C((,%r!   c                4  > [         TU ]  U5        U R                  UR                  5        U R                  UR                  5        U R                  UR
                  5        U R                  UR                  5        U R                  UR                  U5        g r@   )	r   visit_TernaryNoder   	conditionquestionmark	trueblockrU  r   
falseblockr   s     r   rk  !TrimWhitespaces.visit_TernaryNode  sn    !$'T^^,T../T^^,TZZ(doot4r!   c                f  > UR                   (       d>  [        U R                  5      nUR                  U5        UR                   (       a  SUl         U =R                  S-  sl        [
        TU ]  U5        U =R                  S-  sl        UR                  (       d-  UR                  (       d  UR                  R                  U 5        g [        UR                  5      [        UR                  5      [        UR                  5      -   :H  nU(       a  UR                  S   nOBUR                  (       a"  UR                  R                  5        H  nM     OUR                  S   nU R                  WU5        UR                   (       d-  SUR                  R                  ;  a  SUR                  l        g g g )NTr   r8  r   r   )r   r   r   r   r   r   r   r   r   r   r   rT  valuesr   r8   )r   r   ml_detectorhas_trailing_comma	last_noder   s        r   r   "TrimWhitespaces.visit_ArgumentNode  s;     3DKK@KKK$''$(!Q"4(Q~~dkk##D) !-T^^1Ds4;;GW1WWBI[[![[//1	 2 r*Ii.  S0@0@0F0F%F%'D" &G r!   c                L   U R                  U5        UR                  R                  UR                  R                  :g  nU(       a)  U =R                  U R
                  R                  -  sl        UR                  R                  U 5        UR                  R                  U 5        U(       a  U R                  UR                  R                  R                  5      UR                  R                  l        U R                  U R                  5      U l        UR                  R                  (       a?  SUR                  R                  R                  ;   a  U R                  UR                  5        UR                  R                  U 5        U R                  UR                  U5        g r   )r   rD  linenorC  r   r   r   r   innerr   r   r8   r   r   )r   r   r   s      r   visit_ParenthesizedNode'TrimWhitespaces.visit_ParenthesizedNode  s   yy''499+;+;;  DKK$9$99 		

$+/;;tzz7M7M7S7S+TDJJ""(#';;t/C/C#DD yy$$1F1F1L1L)L!!$**-		dii.r!   )r   r   r   r   r   r   )r   r   r   r   r>   r?   )F)r   r   r   boolr>   r?   )r8   rA   r>   rA   r   r   zmparser.EmptyNoder>   r?   r   zmparser.WhitespaceNoder>   r?   )r   zmparser.SymbolNoder>   r?   r   zmparser.StringNoder>   r?   )r   zmparser.UnaryOperatorNoder>   r?   )r   zmparser.NotNoder>   r?   )r   zmparser.BinaryOperatorNoder>   r?   r   zmparser.ArrayNoder>   r?   r   zmparser.DictNoder>   r?   )r   zmparser.CodeBlockNoder>   r?   )r   zmparser.IndexNoder>   r?   r   zmparser.MethodNoder>   r?   r   zmparser.FunctionNoder>   r?   )r   zmparser.AssignmentNoder>   r?   )r   zmparser.ForeachClauseNoder>   r?   )r   zmparser.IfClauseNoder>   r?   )r   zmparser.IfNoder>   r?   )r   zmparser.ElseNoder>   r?   )r   zmparser.TernaryNoder>   r?   r   zmparser.ParenthesizedNoder>   r?   )$rC   rD   rE   rF   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r%  r(  r-  r3  r<  r?  rB  rJ  rM  rQ  r[  rd  rh  rk  r   rz  rG   rH   rI   s   @r   r   r      s    "&D))+
*'42(
000
<*-@3**$05]--5(</ /r!   r   c                     ^  \ rS rS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U 4S
 jjrSS jrSrU =r$ )ArgumentFormatteri,  c                :    Xl         SU l        SU l        SU l        g Nr   F)r   levelindent_afteris_function_argumentsr   s     r   r   ArgumentFormatter.__init__.  s    
!%*"r!   c                ^    UR                   R                  (       d  SUR                   l        g g r   r   r   s     r   r   !ArgumentFormatter.add_space_after4  r   r!   c                *   UR                   R                  (       a  UR                   R                  S:X  a  SUR                   l        UR                  U-   U R                  R                  -  nU(       a   UR                   =R                  U-  sl        g g )Nr   r   )r   r8   r   r   r   )r   r   r;  r   s       r   r   ArgumentFormatter.add_nl_after8  sp    %%)9)9)?)?3)F%)D"))F2dkk6K6KK	""i/" r!   c                6   U R                  U5        UR                  R                  (       aT  U =R                  S-  sl        UR                  R                  (       a$  U R                  UR                  U R                  S9  UR                  R                  U 5        SU l        UR                  R                  U 5        UR                  R                  (       a  U =R                  S-  sl        UR                  R                  U 5        U R                  U5        g Nr   r;  F)r   r0  r   r  r   r   r/  r   r  r.  r   r   s     r   r-  !ArgumentFormatter.visit_ArrayNode?  s    99!!JJ!OJyy""!!$--

!CT"%*"		99!!JJ!OJT"tr!   c                6   U R                  U5        UR                  R                  (       aT  U =R                  S-  sl        UR                  R                  (       a$  U R                  UR                  U R                  S9  UR                  R                  U 5        SU l        UR                  R                  U 5        UR                  R                  (       a  U =R                  S-  sl        UR                  R                  U 5        U R                  U5        g r  )r   r0  r   r  r   r   r5  r   r  r4  r   r   s     r   r3   ArgumentFormatter.visit_DictNodeM  s    99!!JJ!OJyy!!$**TZZ!@

$%*"		99!!JJ!OJ

$tr!   c                   U R                  U5        UR                  R                  U 5        UR                  R                  =(       a     UR                  R                  R                  nU(       a  U =R
                  S-  sl        UR                  R                  (       a9  U =R
                  S-  sl        U R                  UR                  U R
                  S9  SU l
        UR                  R                  U 5        UR                  R                  (       a  U =R
                  S-  sl        U(       a  U =R
                  S-  sl        U R                  U5        g Nr   r  T)r   source_objectr   r   r   r  r0  r   r   rD  r  r   )r   r   is_conts      r   rB  "ArgumentFormatter.visit_MethodNode[  s    !!$'$$00cT5G5G5S5S5c5cJJ!OJ99!!JJ!OJdii

;%)"		99!!JJ!OJJJ!OJtr!   c                   U R                  U5        UR                  R                  (       a9  U =R                  S-  sl        U R	                  UR
                  U R                  S9  SU l        UR                  R                  U 5        UR                  R                  (       a  U =R                  S-  sl        U R                  U5        g r  )	r   r0  r   r  r   rD  r  r   r   r   s     r   rJ  $ArgumentFormatter.visit_FunctionNodel  s    99!!JJ!OJdii

;%)"		99!!JJ!OJtr!   c                T   UR                   R                  SS9nU(       Ga  UR                  U R                  -   U R                  R
                  -  nUR                  (       a  SOUR                  S5      Ul         U HI  nSU;   a+  UR                  U5      (       d  U=R                   U-  sl         U=R                   U-  sl         MK     U R                  (       aM  UR                   R                  SU R                  R
                  45      (       a  U=R                   U-  sl         g g g g )NTr  r   r   r   r   )r8   r	  r   r  r   r   r:  poprb   r  r   )r   r   r  r;  r  s        r   r  &ArgumentFormatter.visit_WhitespaceNodew  s    

%%t%4**TZZ74;;;P;PPF#00eiilDJ$;tv'>'>JJ&(J

d"
    TZZ%8%8$@U@U9V%W%W

f$
 &X  r!   c                l  > U R                   n[        TU ]	  U5        UR                   H  nU R	                  U5        M     U R
                  R                  (       a$  UR                   H  nU R	                  U5        M     [        UR                  5      [        UR                  5      -   nUR                  =(       a    [        UR                  5      U:H  nUR                  (       Ga  SnUS:X  a"  U(       a  U R
                  R                  (       + nU(       a  U(       d  [        R                  " [        R                  " SUR                   SSSSS5      5      nUR"                  Ul        [        R$                  " [        R                  " SUR                   SSSSS5      5      Ul        UR                  R)                  U5        O)U(       a"  U(       d  UR                  R+                  S	5        Sn	U R
                  R,                  (       Ga  UR                  S S	  GH  n
S
n[/        U
[        R0                  5      (       as  U
R2                  R5                  S5      (       aS  UR                  U	S-      n[/        U[        R0                  5      (       a"  UR2                  R5                  S5      (       d  SnU(       a  U R	                  UR                  U	   5        OBU	[        UR                  5      :  a)  U R7                  UR                  U	   U R8                  5        U	S-  n	GM     UR                  U	S	  H  nU R7                  XR8                  5        M      UR                  (       d  UR                  (       a  U R7                  XR8                  S-
  5        OU(       aa  UR                  S	   R&                  (       a(  UR                  S	   R&                  R2                  (       d  UR                  R+                  S	5        UR                   H  nU R	                  U5        M     U R;                  U5        g )NTr   rX  r   r   rL   r   r   r8  Fz--)r  r   r   colonsr   r   r   r   r   r   rT  r   r   r   
SymbolNoder   r,   r   r   r   rO   r  r   r   r   r8   rb   r   r  r   )r   r   r  rU  r7   arguments_countrt  
need_commarX  	arg_indexr   
group_argsnext_argr   s                r   r   $ArgumentFormatter.visit_ArgumentNode  s    $ : :"4([[E  ' ! ;;!!{{$$S) # dnn-DKK0@@![[PS-=-PJ!#(=!%!E!EE
"4**7==$--QRTUWXZ`be+fg(,(<(<%$+$:$:7==W[WdWdfgijlmouwy;z${!""5)#J#I{{***>>#2.C!&J!#w'9'9::syy?S?STX?Y?Y#'>>)a-#@%h0B0BCCHNNLeLefjLkLk)-J!,,T[[-CD"S%55))$++i*@$**MNI / Yr2!!%4 3~~!!$

Q7 "4;;r?+F+F4;;WY?KfKfKlKl#$$U+ % 	tr!   c                   U R                  U5        SUR                  R                  R                  ;   nU(       a  U R                  nSU l        UR                  R                  U 5        UR                  R                  U 5        U(       a  WU l        UR                  R                  U 5        U R                  U5        g )Nr   T)	r   rD  r   r8   r  r   ry  rC  r   )r   r   r   current_indent_afters       r   rz  )ArgumentFormatter.visit_ParenthesizedNode  s    tyy44:::#'#4#4  $D		

$ 4D		tr!   )r   r  r  r  r   r   )r   r   r;  rP   r>   r?   r  r  r  r  r~  r   r  )rC   rD   rE   rF   r   r   r   r-  r3  rB  rJ  r  r   rz  rG   rH   rI   s   @r   r  r  ,  s;    +)0"	
%5n r!   r  c                     ^  \ rS rS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S
 jrSS jrSS jrSU 4S jjrSS jrSS jrSrU =r$ )ComputeLineLengthsi  c                T    Xl         / U l        SU l        / U l        X l        SU l        g r  )r   lengthslengthargument_stackr  need_regenerate)r   r   r  s      r   r   ComputeLineLengths.__init__  s*    $&<>
$r!   c                    U R                  U5        [        US5      (       d   eU =R                  [        [	        UR
                  5      5      -  sl        U R                  U5        g )Nr8   )r   hasattrr  r   rA   r8   r   r   s     r   r   %ComputeLineLengths.visit_default_func  sH    tW%%%%s3tzz?++tr!   c                   UR                  S5      n[        US   5      nUSS  HV  nU R                  U-   U R                  R                  -  =(       d    U R                  R                  nX5[        U5      -   -  nMX     U$ )z(Compute line length, including tab stopsr   r   r   N)rN   r   r  r   ru   )r   r  partsline_lengthp
tab_lengths         r   r   ComputeLineLengths.len  su    

4 %(mqrA;;48M8MMgRVR]R]RgRgJA..K  r!   c                .   UR                  SS9nU H  nUR                  S5      (       aC  U R                  R                  U R                  U R                  U5      -   S-
  5        SU l        M\  U =R                  U R                  U5      -  sl        M     g )NTr  r   r   r   )r	  r   r  rO   r  r   )r   r8   r  r  s       r   count_multiline"ComputeLineLengths.count_multiline  ss      $ /D}}T""##DKK$((4.$@1$DEtxx~- r!   c                :    U R                  UR                  5        g r@   )r  r8   r   s     r   r  'ComputeLineLengths.visit_WhitespaceNode  s    TZZ(r!   c                H    U R                  U5        U R                  U5        g r@   )r   r   r   s     r   r  "ComputeLineLengths.visit_EmptyNode  s    tr!   c                    U R                  U5        U =R                  [        UR                  5      -  sl        U R	                  U5        g r@   )r   r  r   r   r   r   s     r   visit_NumberNode#ComputeLineLengths.visit_NumberNode  s1    s4>>**tr!   c                   U R                  U5        UR                  (       a  U =R                  S-  sl        UR                  (       aF  U =R                  S-  sl        U R	                  UR
                  5        U =R                  S-  sl        O1U =R                  U R                  UR                  5      S-   -  sl        U R                  U5        g )Nr         )	r   r  r  r   r  r8   r   r   r   r   s     r   r  #ComputeLineLengths.visit_StringNode  s    ??KK1KKK1K  ,KK1KKK488DNN3a77Ktr!   c                    U R                  U5        U =R                  [        S5      -  sl        U R                  U5        g )Ncontinuer   r  r   r   r   s     r   visit_ContinueNode%ComputeLineLengths.visit_ContinueNode  s,    s:&tr!   c                    U R                  U5        U =R                  [        S5      -  sl        U R                  U5        g )Nbreakr  r   s     r   visit_BreakNode"ComputeLineLengths.visit_BreakNode	  s,    s7|#tr!   c                ,   [        U5      (       a  UR                  (       dr  U R                  U R                  R                  :  aM  [        U R
                  5      U R                  :  a  U R
                  U R                     OUnSUl        SU l        g g g g r   )r   r   r  r   r{   r  r  r  )r   r   r   s      r   split_if_needed"ComputeLineLengths.split_if_needed  ss    t99T..4;;A\A\3\589L9L5MPTPZPZ5Z$%%djj1`dC#C#'D  4].9r!   c                   > U R                   R                  U5        [        TU ]  U5        U R	                  U5        U R                   R                  S5        g )Nr8  )r  rO   r   r   r  r  r   s     r   r   %ComputeLineLengths.visit_ArgumentNode  sF    ""4("4(T"#r!   c                    U R                  U5        UR                  R                  U 5        UR                  R                  U 5        UR                  R                  U 5        U R                  UR                  5        U R                  U5        g r@   )r   r/  r   r0  r.  r  r   r   s     r   r-  "ComputeLineLengths.visit_ArrayNode  sb    T"		T"TYY'tr!   c                    U R                  U5        UR                  R                  U 5        UR                  R                  U 5        UR                  R                  U 5        U R                  UR                  5        U R                  U5        g r@   )r   r5  r   r0  r4  r  r   r   s     r   r3  !ComputeLineLengths.visit_DictNode"  sb    

$		

$TYY'tr!   )r  r   r  r  r  r  )r   r   r  rP   r   )r  rA   r>   rP   )r8   rA   r>   r?   r~  r}  )r   zmparser.NumberNoder>   r?   r  )r   zmparser.ContinueNoder>   r?   )r   zmparser.BreakNoder>   r?   r   r  r  )rC   rD   rE   rF   r   r   r   r  r  r  r  r  r  r  r  r   r-  r3  rG   rH   rI   s   @r   r  r    sN    %.)


($ r!   r  c                  6   ^  \ rS rSrSS jrSU 4S jjrSrU =r$ )SubdirFetcheri+  c                    Xl         / U l        g r@   current_dirsubdirs)r   r  s     r   r   SubdirFetcher.__init__-  s    &%'r!   c                  > UR                   R                  S:X  a  UR                  R                  (       a  [	        UR                  R                  S   [
        R                  5      (       aK  UR                  R                  S   R                  nU R                  R                  U R                  U-  5        [        TU ]-  U5        g )Nsubdirr   )rH  r8   r0  r   r   r   r   r  rO   r  r   rJ  )r   r   r  r   s      r   rJ   SubdirFetcher.visit_FunctionNode1  s    >>8+yy""z$))2E2Ea2H'J\J\']'],,Q/55##D$4$4v$=>"4(r!   r  )r  r   r  )rC   rD   rE   rF   r   rJ  rG   rH   rI   s   @r   r  r  +  s    () )r!   r  c                  <    \ rS rSrSS jrS	S jrS
S jrSS jrSrg)	Formatteri9  c                    X0l         X l        U R                  U5      U l        U R                  U l        [        5       U l        / U l        g r@   )fetch_subdirsr   load_configurationr   current_configr   r  r  )r   configuration_filer   r  s       r   r   Formatter.__init__;  s>    *!2--.@A"kk6%'r!   c                V   [        5       nU[        S5      :X  a  [        S5      e UR                  5       nUR
                   GH  nUS-  nUR                  5       (       d  M   [        SS9nUR                  U5        UR                  5        Vs/ s H&  n[        UR                  5       U5      (       d  M$  UPM(     nn[        U5       Hb  n	[        XiR                  S 5      b  M  U	R                  S   n
U H1  n U
" XgU	R                  S S	9nUc  M  [#        X)R                  U5        M3     Md     UR%                  UR&                  SSS	9(       d  GM    U$    U$ ! [         a    [        SU S35      ef = fs  snf ! [          a$  n[        S
U	R                   SU SU 35      UeS nAff = f)NSTDINzBUsing editorconfig with stdin requires --source-file-path argumentzUnable to resolve path for "r2   z.editorconfig)r<   )r   rn   r0   zInvalid type for key "z" in "z" file:
rootF)rl   r   r   resolveFileNotFoundErrorparentsr'   r   r-   sectionsrj   as_posixr
   r   r   rq   re   r   r~   r*   )r   source_filer   source_file_pathr  editorconfig_filecpr6   r  r   rn   r8   es                r   load_editor_configFormatter.load_editor_configD  s   $w-' !eff	P*224 "))A !O 3$++--$7BOO-./1{{}l}G
;K_K_Kacj@k}HlF^2vvt,8H-'G| &rAFFT J (6  ( $ }}R//%}HH5 *4 ; ! 	P #?}A!NOO	P m & |,/EaffXVTeSffopqor-stz{{|s/   E #E55E59E:E2:
F(	F#	#F(	c                   [        5       nU(       a  [        5       n UR                  U5        [        [        UR                  5       5      R                  S [        U5       5       5      5      nU(       a!  [	        SSR                  U5       SU S35      e[        U5       HJ  nUR                  S   n U" X3R                  UR                  S S	9nUc  M4  [!        X&R                  U5        ML     UR"                  (       a  SU l        U$ ! [         a  n[	        SU SU 35      UeS nAff = f! [         a.  n[	        S
[        U5       SUR                   SU< S35      eS nAff = f)Nz$Unable to parse configuration file "z":
c              3  8   #    U  H  oR                   v   M     g 7fr@   )r   )r  r   s     r   r  /Formatter.load_configuration.<locals>.<genexpr>u  s     =]nffns   zUnknown config keys: "z, z" in configuration file "r2   rn   r0   zError parsing "z", option "z", error: "T)r   r   r-   r   r   sortedsetr   
differencer
   joinrq   r*   r   re   rA   r   r   )	r   r  r   r  r  
extra_keysr   rn   r8   s	            r   r  Formatter.load_configurationl  s|    "$&Bp 23  BKKM 2 = ==]fU[n=] ]^J$'=dii
>S=TTm  oA  nB  BC  &D  E  EF^H-i"2'9'9166DQE $FFFE2 $ '')-&)   p$'KL^K__cdecf%ghnoop " i()#.@*A)B+affXU`ab`eefgi iis/   D
 5D.

D+D&&D+.
E&8)E!!E&c                   UR                   U l        [        R                  5       U l        U R
                  (       a/  U R                  R                  U R                  U5      5      U l        U R                  R                  U R                  5      U l        [        R                  " XR                  5       5      R                  5       nU R                  (       a7  [        U R                  5      nUR!                  U5        UR"                  U l        UR!                  [%        5       5        ['        S5       H  nUR!                  [)        U R                  5      5        UR!                  [+        U R                  5      5        [-        U R                  U5      nUR!                  U5        UR.                  (       a  M    O   [1        5       nUR!                  U5        UR2                  $ )N   )parentr  r   rp   r  r   r   r  r   r   r   Parserr  parser  r  r   r  r   rd   r   r  r  r  r   result)r   coder  astsubdir_fetcherr  cllprinters           r   formatFormatter.format  sV   &---557!!"&"5"5"G"GH_H_`kHl"mD"1188EnnT#7#7#9:@@B*4+;+;<NJJ~&)11DL

$&'1XEJJt':':;<JJ()<)<=>$T%8%8%@CJJsO&&&  ,

7~~r!   )r   r  r  r  r  r   N)r  T.Optional[Path]r   r|  r  r|  )r  r   r>   rl   )r  r  r>   r   )r  rA   r  r   r>   rA   )	rC   rD   rE   rF   r   r  r  r  rG   r;   r!   r   r  r  9  s    (&P8r!   r  c                f   U R                  5       nUR                  SSSSS9  UR                  SSSSS9  U R                  S	S
SSS9  U R                  SSS[        SS9  U R                  SSSSSS9  U R                  SS[        SS9  U R                  S[        SS9  U R                  SS[        SS9  g ) Nz-qz--check-only
store_truez6exit with 1 if files would be modified by meson format)actionhelpz-iz	--inplacezformat files in-placez-rz--recursivez;recurse subdirs (requires --check-only or --inplace option)z-cz--configurationmeson.formatz$read configuration from meson.format)metavartyper  z-ez--editor-configFz,try to read configuration from .editorconfig)r  rp   r  z-oz--outputz.output file (implies having exactly one input))r  r  z--source-file-pathz$path to use, when reading from stdinsources*zmeson source files)nargsr  r  )add_mutually_exclusive_groupadd_argumentr   )parserinplace_groups     r   add_argumentsr$    s   779MnE  
 k$  
 mJ  
 3	   ;	   j=  
 3  
 !	  r!   c                    U  HD  nUR                  5       R                   H#  nUS-  nUR                  5       (       d  M  Us  s  $    MF     g )Nr  )r  r  is_file)r  src_filer
  targets       r   get_meson_formatr)    sF    &&(00Fn,F~~ 1 
 r!   c                N   U R                   (       a$  [        U R                  5      S:w  a  [        S5      eU R                  (       a-  U R
                  (       d  U R                  (       d  [        S5      e[        U R                  5      S:H  =(       aG    U R                  S   R                  S:H  =(       a$    U R                  S   R                  [        5       :H  nU R                  (       a  U(       a  [        S5      eU R
                  (       a  U(       a  [        S5      eU R                  (       a  U(       d  [        S5      eU(       a-  U R                  (       a  U R                  (       d  [        S	5      eU R                  R                  5       =(       d    [        [        5      /nU R                  (       d  [        U5      U l        [!        U R                  U R                  U R                  5      nU(       Ga  UR#                  S5      nUR%                  5       (       a	  U[        -  n U(       a=  U R                  =(       d    [        S
5      n[&        R(                  R+                  5       nOUR-                  SS9n UR1                  XT5      nU R                  (       a  UR3                  UR4                  5        U R
                  (       aA   UR7                  SSUR8                  R:                  S9 nUR=                  U5        S S S 5        O~U R                  (       a  XW:w  a  gOfU R                   (       aK   U R                   R7                  SSUR8                  R:                  S9 n	U	R=                  U5        S S S 5        O
[?        USS9  U(       a  GM  g! [.         a  n[        SU 35      UeS nAff = f! , (       d  f       N:= f! [.         a  n[        SU 35      UeS nAff = f! , (       d  f       Nl= f! [.         a  n[        SU R                    35      UeS nAff = f)Nr   z8--output argument implies having exactly one source filezE--recursive argument requires either --inplace or --check-only optionr   -z7--recursive argument is not compatible with stdin inputz5--inplace argument is not compatible with stdin inputz?--source-file-path argument is only compatible with stdin inputzKusing --editor-config with stdin input requires --source-file-path argumentr  r#   r$   zUnable to read from w)r%   r   zUnable to write to r   )end) outputr   r  r   	recursiveinplace
check_onlyr   r
  r   r  editor_configcopyr   configurationr)  r  r  is_dirsysstdinr(   r+   IOErrorr  extendr  openr  r   writeprint)
options
from_stdinr  	formatterr'  r  r  	formattedsfofs
             r   runrC    s/   ~~#goo.!3WXX'//W5G5GdeeW__%*uwq/A/F/F#/MuRYRaRabcRdRkRkosouRuJZVWW:TUU
^__g++G4L4Ljkk#OO002LtN7K6LG   0 9'//1F1FHYHYZI
;;q>??.0H	K"33DtG}yy~~'))7); $$T4	NN9,,-??N]]3)BZBZBbBb]cgiHHY' dc   !^^T^^((w	H`H`HhHh(imoHHY' ji
 )$G 'J 5  	K #7z!BCJ	K dc N$':8*%EFAMN ji T$':7>>:J%KLRSSTs   ,AN 0N %O
 4N9O
 9/O< (O+:O< 
N6"N11N69
OO
 O
 

O(O##O(+
O95O< 9O< <
P$PP$)r,   rA   rf   rA   r>   r|  )r"  zargparse.ArgumentParserr>   r?   )r  zT.List[Path]r>   r  )r=  zargparse.Namespacer>   rP   )0
__future__r   r`   typingrQ   configparserr   r   r   r3  r   dataclassesr   r	   r
   r   pathlibr   r6  r   r   mesonlibr   ast.postprocessr   ast.printerr   ast.visitorr   environmentr   TYPE_CHECKINGargparsetyping_extensionsr   r   rj   rl   r   r   r   r  r  r  r  r$  r)  rC  r;   r!   r   <module>rQ     s    # 	  N N  8 8  
  $ . # ' '??), (&R 	B 	B 	B | | |~) )4k/n k/\	Y Yx` `F)N )h hV,\<r!   