
    e                        d dl mZ ddlmZmZ ddlmZmZ ddlm	Z	 d dl
Zd dlZej                  r
ddlmZmZmZ dd	Zdd
ZddZdddZy)    )annotations   )mesonlibmparser   )InterpreterExceptionInvalidArguments)
UserOptionN)TYPE_varTYPE_kwargs
SubProjectc                   t        | t        j                        r)t        | j                  t              sJ | j                  gS t        | t
        j                  j                        s| gS g }| D ]j  }t        |t              rt        |      }||z   }$t        |t        j                        r|j                  |j                         Z|j                  |       l |S N)
isinstancer   BaseStringNodevaluestrcollectionsabcSequencelistflattenappend)argsresultarests       D/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/helpers.pyr   r      s    $../$**c***

|dKOO445v!#F a1:Dd]F7112MM!''"MM! M    c           	         dfd| D cg c]
  } |       c}|j                         D ci c]  \  }}| |       c}}fS c c}w c c}}w )Nc                2   t        | t              r| D cg c]
  } |       c}S t        | t              r*| j                         D ci c]  \  }}| |       c}}S t        | t        j
                        r| j                         S | S c c}w c c}}w r   )r   r   dictitemsr   SecondLevelHolderget_default_object)argxkvresolvers       r   r*   z.resolve_second_level_holders.<locals>.resolver-   s{    c4 ),-AHQK--c4 /2yy{;tq!Ax{N;;c8556))++
 .;s   BB)r&   
'TYPE_var'returnr+   )r#   )r   kwargsr'   r(   r)   r*   s        @r   resolve_second_level_holdersr.   ,   sG     "&&AHQK&FLLN(SDAqHQK(SSS&(Ss
   AAc                d    t        | t        j                        st        d      | j                  S )NzInvalid kwargs format.)r   r   IdNoder   r   )keys    r   default_resolve_keyr2   7   s&    c7>>*"#;<<99r   c                   t        | t              r
|rd|  dS | S t        | t              r| rdS dS t        | t              rt        |       S t        | t              r-ddj                  | D cg c]  }t        ||d       c}      z  S t        | t              r\| j                         D cg c]-  \  }}dj                  t        ||d      t        ||d            / }}}ddj                  |      z  S t        | t              r3d	d
lm} |j                  dd|       t        | j                         |      S t        d      c c}w c c}}w )N'truefalsez[%s]z, Tz{} : {}z{%s}r   )
FeatureNewzUser option in string formatz1.3.0zSValue other than strings, integers, bools, options, dictionaries and lists thereof.)r   r   boolintr   joinstringifyUserArgumentsr"   r#   formatr
   
decoratorsr7   
single_useprintable_valuer	   )r   
subprojectquoter'   r(   r)   lr7   s           r   r;   r;   <   s>   $#4&{--	D$	v*7*	D#	4y	D$			X\"]ST#9!Z#N"]^^^	D$	W[WaWaWceOSqRS 4Q
DI4Q
DIK e e		!$$	D*	%*<gzR%d&:&:&<jII
p
qq #^es   ,E
,2E)r   z'T.Union['TYPE_var', T.List['TYPE_var']]r,   T.List['TYPE_var'])r   rC   r-   z'TYPE_kwargs'r,   z*T.Tuple[T.List['TYPE_var'], 'TYPE_kwargs'])r1   zmparser.BaseNoder,   r   )F)r   r   r@   r   rA   r8   r,   r   )
__future__r    r   r   
exceptionsr   r	   coredatar
   collections.abcr   typingTTYPE_CHECKINGbaseobjectsr   r   r   r   r.   r2   r;    r   r   <module>rN      s>    #   > !  ??>>"	T
rr   