
    <h2.                       S SK Jr  S SK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JrJrJrJrJr  SS
KJrJr  \R*                  (       a  SSKJrJr  SSKJr  S SKJrJr  SSKJr  \R:                  \\\R@                  \\4   \RB                  \   4   r"\" S\\\\RF                  \RB                  \      \$\RF                  \%   \RF                  \%   \"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\RZ                  5      r.\R^                  " S5      r0 " S  S!5      r1g)"    )annotationsN   )options)mesonlib)	OptionKey)mparser)mlog)
FeatureNewFeatureDeprecatedtyped_pos_argstyped_kwargsContainerTypeInfo	KwargInfo)NoneTypein_set_validator)TYPE_varTYPE_kwargs)
SubProject)	TypedDictLiteral)OptionStoreFuncOptionArgs)typedescriptionyieldchoicesvalueminmax
deprecatedc                       \ rS rSr% S\S'   Srg)
StringArgs$   strr    N__name__
__module____qualname____firstlineno____annotations____static_attributes__r%       z/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/optinterpreter.pyr"   r"   $   s    
r-   r"   c                       \ rS rSr% S\S'   Srg)BooleanArgs'   boolr   r%   Nr&   r%   r-   r.   r0   r0   '   s    r-   r0   c                  *    \ rS rSr% S\S'   S\S'   Srg)	ComboArgs*   r$   r   T.List[str]r   r%   Nr&   r%   r-   r.   r4   r4   *   s    
r-   r4   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)	IntegerArgs.   intr   zT.Optional[int]r   r   r%   Nr&   r%   r-   r.   r8   r8   .   s    
r-   r8   c                  *    \ rS rSr% S\S'   S\S'   Srg)StringArrayArgs3   z%T.Optional[T.Union[str, T.List[str]]]r   r6   r   r%   Nr&   r%   r-   r.   r<   r<   3   s    44r-   r<   c                  *    \ rS rSr% S\S'   S\S'   Srg)FeatureArgs7   z&Literal['enabled', 'disabled', 'auto']r   r6   r   r%   Nr&   r%   r-   r.   r?   r?   7   s    55r-   r?   c                      \ rS rSrSrg)OptionException<   r%   N)r'   r(   r)   r*   r,   r%   r-   r.   rB   rB   <   s    r-   rB   z[^a-zA-Z0-9_-]c                     \ rS rSrS5S jrS6S jrS7S jrS8S jrS9S jr\	" S\
" S\S	\" 1 S
k5      S9\
" S\SS9\
" S\\\" \\5      \" \\5      4SS\S0S9\
" S\\R$                  SS9S	S9\" S\5      S:S j5       5       r\	" S\
" S\SS95      S;S j5       r\	" S\
" S\\4S	S \S0S95      S<S  j5       r\	" S!\
" S\\45      \
" S"\" \\SS#9S	S$95      S=S% j5       r\	" S&\
" S\\4S	\S'0\S(9\
" S)\\45      \
" S*\\45      5      S>S+ j5       r\	" S,\
" S\" \\5      \\45      \
" S"\" \\5      / S95      S?S- j5       r\	" S.\
" S\S/\" 1 S0k5      S195      S@S2 j5       rS3rg4)AOptionInterpreterC   c                    0 U l         X l        U R                  U R                  U R                  U R
                  U R                  U R                  S.U l        Xl	        g )N)stringbooleancombointegerarrayfeature)
r   
subprojectstring_parserboolean_parsercombo_parserinteger_parserstring_array_parserfeature_parseroption_typesoptionstore)selfrV   rN   s      r.   __init__OptionInterpreter.__init__D   sW    ;=$((**&&**--**R
 'r-   c           	     R    [        USS9 nUR                  5       nS S S 5         [
        R                  " WU5      R                  5       n[        U[
        R                  5      (       d(  [        S5      nUR                  5       Ul        Xl        UeUR                   H  n Xpl        U R                  U5        M     g ! , (       d  f       N= f! [         a"  n[        R                  " SU< SU 35      eS nAff = f! [        R                   a  nXl        UeS nAff = f! [        R                   a/  nUR                  Ul        UR                   Ul        Xl        UeS nAf["         a9  n[        R                  " [%        U5      UR                  UR                   US9eS nAff = f)Nzutf-8)encodingzMalformed option file z failed to parse as unicode: zOption file is malformed.)linenocolnofile)openreadUnicodeDecodeErrorr   MesonExceptionr   Parserparser^   
isinstanceCodeBlockNoderB   r\   linescurrent_nodeevaluate_statementr]   	Exceptionr$   )rW   option_filefcodeeastmecurs           r.   processOptionInterpreter.processQ   sj   	tkG4vvx 5	..{399;C #w4455 ;<Azz|AH FG99C
R$'!'',  54! 	t)),B;/Qnopnq*rss	t && 	!GH	 ** ::))$ R--F3::SYY[R RRsn   
C B>C %C> "D">
CC C 
C;C66C;>DDD"F&6*E  F&-4F!!F&c                   [        U[        5      (       a  U$ [        U[        R                  5      (       a  U R	                  UR
                  5      $ [        U[        R                  [        R                  [        R                  45      (       a  UR                  $ [        U[        R                  5      (       a5  UR                  R                   Vs/ s H  o R	                  U5      PM     sn$ [        U[        R                  5      (       ax  0 nUR                  R                  R                  5        HL  u  pE[        U[        R                  5      (       d  [!        S5      eU R	                  U5      X4R                  '   MN     U$ [        U[        R"                  5      (       af  U R	                  UR                  5      n[        U[$        [&        45      (       d  [!        S5      e[(        R*                  " SSU R,                  5        U* $ [        U[        R.                  5      (       ad  U R	                  UR                  5      n[        U[0        5      (       d  [!        S5      e[(        R*                  " SSU R,                  5        U(       + $ [        U[        R2                  5      (       a  U R	                  UR4                  5      nU R	                  UR6                  5      nUR8                  S:X  a*  [        U[        5      (       a  [        U[        5      (       d  [!        S5      e[(        R*                  " S	S
U R,                  5        Xx-   $ [!        S5      es  snf )Nz(Dictionary keys must be a string literalzToken after "-" is not a numberz%negative numbers in meson_options.txtz0.54.1z$Token after "not" is not a a booleanz%negation ("not") in meson_options.txtaddz:Only string concatenation with the "+" operator is allowedz)string concatenation in meson_options.txtz0.55.0z;Arguments may only be string, int, bool, or array of those.)re   r$   r   ParenthesizedNodereduce_singleinner
StringNodeBooleanNode
NumberNoder   	ArrayNodeargs	argumentsDictNodekwargsitemsrB   
UMinusNoder:   floatr
   
single_userN   NotNoder2   ArithmeticNodeleftright	operation)	rW   argcurargdkvreslrs	            r.   rw   OptionInterpreter.reduce_singlen   s~   c3Jc74455%%cii00g00'2E2EwGYGYZ[[99W..//=@XX=O=OP=O6&&v.=OPPW--..A--/!!W%7%788)*TUU!//2''
 0 HW//00$$SYY/CcC<00%&GHH!!"I8UYUdUde4KW__--$$SYY/Cc4((%&LMM!!"I8UYUdUde7NW3344""388,A""399-AMMU*z!S/A/AjQRTWFXFX%&bcc!!"MxY]YhYhi5L!"_``9 Qs   Mc                   UR                  5       (       a  [        S5      eUR                   Vs/ s H  o R                  U5      PM     nn0 nUR                  R                  5        HY  n[        U[        R                  5      (       d  [        S5      eUR                  U   nU R                  U5      XER                  '   M[     X44$ s  snf )Nz9All keyword arguments must be after positional arguments.z&Keyword argument name is not a string.)
incorrect_orderrB   r~   rw   r   keysre   r   IdNoder   )rW   r}   r   reduced_pos
reduced_kwkeyas          r.   reduce_arguments"OptionInterpreter.reduce_arguments   s    !!!"]^^:>..I.3))#..I
;;##%Cc7>>22%&NOOC A$($6$6q$9Jyy!	 &
 && Js   Cc                   [        U[        R                  5      (       d  [        S5      eUR                  R
                  nUS:w  a  [        S5      eU R                  UR                  5      u  p4U R                  X45        g )Nz/Option file may only contain option definitionsoptionz3Only calls to option() are allowed in option files.)	re   r   FunctionNoderB   	func_namer   r   r}   func_option)rW   noder   posargsr   s        r.   ri   $OptionInterpreter.evaluate_statement   si    $ 4 455!"STTNN((	 !"WXX 11$))<)r-   r   r   T>   rL   rJ   rH   rI   rM   rK   )required	validatorr    )defaultr    Fz0.60.0z0.63.0)r   sincesince_valuesr   z0.45.0)r   r   )allow_unknownc                @   US   n[         R                  U5      b  [        S5      e[        R                  " U5      R                  U R                  S9nU R                  R                  U5      (       a  [        SU-  5      eUS   nU R                  U   nUS   =(       d    UnUR                  5        VV	s0 s H  u  pUS;  d  M  X_M     n
nn	U" X7US   US	   4U
5      nX@R                  ;   a  [        R                  " S
U S35        XR                  U'   g s  sn	nf )Nr   z9Option names can only contain letters, numbers or dashes.)rN   zOption name %s is reserved.r   r   >   r   r   r    r   r   r    zOption z already exists.)optname_regexsearchrB   r   from_stringevolverN   rV   is_reserved_namerU   r   r   r	   deprecation)rW   r}   r   opt_namer   opt_typeparserr   r   r   n_kwargsopts               r.   r   OptionInterpreter.func_option   s#   * 7)5!"]^^##H-444P,,S11!"?("JKK&>""8,]+7x &,\\^ P^TQ NN AD^ P XVG_f\>R,SU]^,,wxj0@ABSPs   7DDzstring optionr   c                8    [         R                  " XUS   /UQ76 $ Nr   )r   UserStringOptionrW   namer   r}   r   s        r.   rO   OptionInterpreter.string_parser   s     
 ''6'?RTRRr-   zboolean optionc                @    [        U [        5      (       d  U S;   a  S $ S$ )N>   truefalsez(boolean options must have boolean values)re   r2   )xs    r.   <lambda>OptionInterpreter.<lambda>   s+    
1d(;(;qDU?U  !F  \F  !Fr-   )1.1.0zuse a boolean, not a string)r   r   deprecated_valuesc                <    Uu  pV[         R                  " XUS   XVS9$ )Nr   )yieldingr    )r   UserBooleanOption)rW   r   r   r}   r   r   r    s          r.   rP    OptionInterpreter.boolean_parser   s&      $((F7OV^vvr-   zcombo optionr   )allow_empty)r   c                b    US   nUS   nUc  US   S   n[         R                  " XU/UQ7SU06$ )Nr   r   r   )r   UserComboOptionrW   r   r   r}   r   r   r   s          r.   rQ   OptionInterpreter.combo_parser   sI     #w=9%a(E&&t%X$XPWXXr-   zinteger option)r   zuse an integer, not a string)r   r   	convertorr   r   c                L    [         R                  " XUS   /UQ7US   US   S.6$ )Nr   r   r   )	min_value	max_value)r   UserIntegerOptionr   s        r.   rR    OptionInterpreter.integer_parser   sA     ((vgi15iAGZ`afZgi 	ir-   zstring array optionc           	     6   US   nUS   b  US   OUn[        U[        5      (       aU  UR                  S5      (       a&  [        SS5      R	                  U R
                  5        O[        R                  " SU-   5      e[        R                  " XUUUS   US   S	9$ )
Nr   r   [zString value for array optionz1.3.0z Value does not define an array: r   r   )r   r   r    )
re   r$   
startswithr   userN   r   rb   r   UserStringArrayOptionr   s          r.   rS   %OptionInterpreter.string_array_parser  s     ##)'?#>wGeS!!$$!"A7KOOPTP_P_`--.PSX.XYY,,u!WAw	  	 r-   zfeature optionauto>   r   enableddisabled)r   r   c                8    [         R                  " XUS   /UQ76 $ r   )r   UserFeatureOptionr   s        r.   rT    OptionInterpreter.feature_parser  s     
 ((F7OSdSSr-   )rh   rU   r   rV   rN   N)rV   z'OptionStore'rN   z'SubProject'returnNone)rk   r$   r   r   )r   zT.Union[str, mparser.BaseNode]r   z
'TYPE_var')r}   zmparser.ArgumentNoder   z"T.Tuple['TYPE_var', 'TYPE_kwargs'])r   zmparser.BaseNoder   r   )r}   zT.Tuple[str]r   z'FuncOptionArgs'r   r   )
r   r$   r   r$   r}   T.Tuple[bool, _DEPRECATED_ARGS]r   r"   r   options.UserOption)
r   r$   r   r$   r}   r   r   r0   r   r   )
r   r$   r   r$   r}   r   r   r4   r   r   )
r   r$   r   r$   r}   r   r   r8   r   r   )
r   r$   r   r$   r}   r   r   r<   r   r   )
r   r$   r   r$   r}   r   r   r?   r   r   )r'   r(   r)   r*   rX   rr   rw   r   ri   r   r   r$   r   r2   r   dictlistr   DEFAULT_YIELDINGr   r   rO   rP   r   rQ   r:   rR   rS   rT   r,   r%   r-   r.   rE   rE   C   sH   'R:$aL
'* &'de		
 	-b13)$46Gc6RSx	
 	'4)A)AR#& Hc"  #'( * '3+S	S 3K F"$LM	
	w	w 'C?+).tSeLW[\
Y
Y #J"$MN	
 	%#x)%#x)ii '-dC8#xHI).tS92F
 
  '3:JKj:klT	Tr-   rE   )2
__future__r   retypingTr   r   r   r   r   r	   interpreterbaser
   r   r   r   r   r   interpreter.type_checkingr   r   TYPE_CHECKINGr   r   r   typing_extensionsr   r   r   Unionr2   r$   DictList_DEPRECATED_ARGSOptionalobjectr:   r   r"   r0   r4   r8   r<   r?   rb   rB   compiler   rE   r%   r-   r.   <module>r      s,   # 	       v v A??6+4$wwtS!&&c*:AFF3KGH/::affSk*zz#zz#&	2
 	NY i I i 
) i 
	h-- 	 

+,XT XTr-   