
    <h                        S SK Jr  S SKrS SKrS SKrSSKJr  SSKJ	r	  \R                  (       a  SSKJr  SSKJr   " S S	\R                  5      r " S
 S5      rSS jr " S S5      rg)    )annotationsN   )mparser)MesonException)StrOrBytesPath)ElementaryOptionValuesc                  J   ^  \ rS rSrSU 4S jjrSSU 4S jjjrS	S jrSrU =r$ )
CmdLineFileParser   c                $   > [         TU ]  S/S S9  g )N=)
delimitersinterpolation)super__init__)self	__class__s    w/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/machinefile.pyr   CmdLineFileParser.__init__   s     	SE>    c                "   > [         TU ]  X5      $ N)r   read)r   	filenamesencodingr   s      r   r   CmdLineFileParser.read   s    w|I00r   c                    U$ r    )r   	optionstrs     r   optionxformCmdLineFileParser.optionxform   s    r   r   )returnNone)utf-8)r   z7T.Union['StrOrBytesPath', T.Iterable['StrOrBytesPath']]r   zT.Optional[str]r"   T.List[str])r   strr"   r&   )	__name__
__module____qualname____firstlineno__r   r   r    __static_attributes____classcell__)r   s   @r   r
   r
      s    ?
1 1 r   r
   c                  2    \ rS rSrSS jrSS jrS	S jrSrg)
MachineFileParser    c                :   [        5       U l        SSS.U l        0 U l        U H  n [	        USS9 nUR                  5       nS S S 5        WR                  SU5      nUR                  S	[        R                  R                  U5      5      n U R                  R                  XS5        M     U R                  R                  S5      (       a*  U R                  R!                  U R#                  S5      5        U R                  R                  5        H)  nUS:X  a  M  U R#                  U5      U R                  U'   M+     g ! , (       d  f       GN= f! [         a  n[        SU< SU 35      eS nAff = f! [        R                   a  n[        S
U 35      eS nAff = f)NTF)TrueFalser$   )r   zMalformed machine file z failed to parse as unicode: z@GLOBAL_SOURCE_ROOT@z	@DIRNAME@zMalformed machine file: 	constants)r
   parserr3   sectionsopenr   UnicodeDecodeErrorr   replaceospathdirnameread_stringconfigparserErrorhas_sectionupdate_parse_section)r   r   	sourcedirfnamefcontentess           r   r   MachineFileParser.__init__!   se   ')GKV[>\JLEj%'2affhG 3
 oo&<iHGook277??53IJGE''7  ;;"";//NN!!$"5"5k"BC%%'AK#2215DMM! (! 32% j$'>uiGdefdg%hiij  %% E$'?s%CDDEsL   
ED=EE3=
E	EE
E0E++E03FFFc           
        U R                   R                  5       U l        0 nU R                  R	                  U5       H  u  p4SU;   d  SU;   d  SU;   d  SU;   a  [        SU< S35      eUR                  SS5      n [        R                  " US	5      R                  5       nUR                  (       d  [        S
5      eU R                  UR                  S   5      nXbU'   X`R                  U'   M     U$ ! [
         a!  n[        SU< S[        U5       S35      eS nAf[         a&  n[        SUR                  S   < SU< S35      eS nAff = f)N 	'"zMalformed variable name z in machine file.\z\\machinefilezvalue cannot be emptyr   z)Malformed value in machine file variable z: .zUndefined constant z in machine file variable )r3   copyscoper4   itemsr   r8   r   Parserparselines_evaluate_statementr&   KeyErrorargs)r   rG   sectionentryvalueastresrF   s           r   rA    MachineFileParser._parse_section=   sG   ^^((*
79 KK--a0LEe|tu}uu$'?yHY%Z[[MM$/EnnnUM:@@Byy()@AA..syy|<
 !EN #JJu 1   " g$'PQVPYY[\_`a\b[ccd%eff n$':166!9-Gabgajjk%lmmns%   =AC44
E>DE'!EEc                N   [        U[        R                  5      (       a  UR                  $ [        U[        R                  5      (       a  UR                  $ [        U[        R
                  5      (       a  UR                  $ [        U[        R                  5      (       a  U R                  UR                  5      $ [        U[        R                  5      (       ai  UR                  R                   Vs/ s H  o R                  U5      PM     nn[        S U 5       5      (       d   S5       e[        R                  " SU5      $ [        U[        R                  5      (       a  U R                   UR                     $ [        U[        R"                  5      (       a  U R                  UR$                  5      nU R                  UR&                  5      nUR(                  S:X  a]  [        U[*        5      (       a  [        U[*        5      (       a  XE-   $ [        U[,        5      (       a  [        U[,        5      (       a  XE-   $ OYUR(                  S:X  aI  [        U[*        5      (       a4  [        U[*        5      (       a  [.        R0                  R3                  XE5      $ [5        S5      es  snf )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   )
isinstancer&   ).0rG   s     r   	<genexpr>8MachineFileParser._evaluate_statement.<locals>.<genexpr>]   s     51az!S))1s   zfor mypyr%   adddivzUnsupported node type)rb   r   
StringNoder\   BooleanNode
NumberNodeParenthesizedNoderW   inner	ArrayNoderY   	argumentsallTcastIdNoderR   ArithmeticNodeleftright	operationr&   listr9   r:   joinr   )r   nodeargalrs         r   rW   %MachineFileParser._evaluate_statementR   s   dW//11::g1122::g0011::g7788++DJJ77g//00:>)):M:MN:M3))#.:MAN51555AzA566-++gnn--::djj))g4455((3A((4A~~&a%%*Q*<*<5La&&:a+>+>5L5(a%%*Q*<*<77<<--455! Os   3J")r3   r4   rR   r5   N)r   r%   rB   r&   r"   r#   )rG   r&   r"   z#T.Dict[str, ElementaryOptionValues])ry   zmparser.BaseNoder"   r   )r'   r(   r)   r*   r   rA   rW   r+   r   r   r   r.   r.       s    68*6r   r.   c                0    [        X5      nUR                  $ r   )r.   r5   )r   rB   r4   s      r   parse_machine_filesr   n   s    y4F??r   c                      \ rS rSrSS jrSrg)MachineFileStores   c                \    [        Ub  UO/ U5      U l        [        Ub  UO/ U5      U l        g r   )r   nativecross)r   native_filescross_files
source_dirs       r   r   MachineFileStore.__init__t   s0    ),:R,XZ\fg(8OUWYcd
r   )r   r   N)r   T.Optional[T.List[str]]r   r   r   r&   )r'   r(   r)   r*   r   r+   r   r   r   r   r   s   s    er   r   )r   r%   rB   r&   r"   z0T.Dict[str, T.Dict[str, ElementaryOptionValues]])
__future__r   typingrp   r=   r9    r   mesonlibr   TYPE_CHECKINGcoredatar   optionsr   ConfigParserr
   r.   r   r   r   r   r   <module>r      sV   
 #   	  $??(/11 L6 L6\
e er   