
    -Ph1z                    f   U d dl mZ 	 d dlmZ d dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlZd dlZddlmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddl m!Z! ddlm"Z" ddl#m$Z$m%Z%m&Z&m'Z' ej(        rd dl)Z)ddl*m+Z+ ddl#m,Z, dtdZ-dudZ.dvdZ/ G d d          Z0	 	 	 dwdxd Z1dyd$Z2dzd(Z3d{d,Z4d|d.Z5d}d1Z6d~d3Z7dd7Z8dd9Z9ddd<Z:dd>Z;ddAZ<ddCZ=ddEZ>ddGZ?ddKZ@ddLZAddNZBddPZCddRZDddTZEdd\ZFddd_ZGdddbZHddddZIddeZJg ZKdeLdf<   ddhZMddiZNddjZOddmZPdddsZQdS )    )annotations)redirect_stdoutN)PathPurePath   )buildmesonliboptionscoredata)IntrospectionInterpreterBUILD_TARGET_FUNCTIONSAstConditionLevelAstIDGeneratorAstIndentationGeneratorAstJSONPrinter)backends)
Dependency)environment)ObjectHolder)	OptionKey)FunctionNode	ArrayNodeArgumentNode
StringNode)Interpreter)BaseNodeinfo_dirstrreturnc                B    t           j                            | d          S )Nmeson-info.jsonospathjoin)r   s    Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/mintro.pyget_meson_info_filer'   %   s    7<<"3444    c                     dS )Nz1.0.0 r*   r(   r&   get_meson_introspection_versionr+   (   s    7r(   T.List[str]c                 
    ddgS )Nz>=1.0z<2.0r*   r*   r(   r&   (get_meson_introspection_required_versionr.   +   s    Vr(   c                      e Zd Z	 	 ddd
ZdS )IntroCommandNdescr   func/T.Optional[T.Callable[[], T.Union[dict, list]]]no_bdGT.Optional[T.Callable[[IntrospectionInterpreter], T.Union[dict, list]]]r   Nonec                6    |dz   | _         || _        || _        d S )N.)r1   r2   r4   )selfr1   r2   r4   s       r&   __init__zIntroCommand.__init__/   s!     3J		


r(   )NN)r1   r   r2   r3   r4   r5   r   r6   )__name__
__module____qualname__r:   r*   r(   r&   r0   r0   .   s7         JNbf      r(   r0   r   T.Optional[cdata.CoreData]	builddataT.Optional[build.Build]backendT.Optional[backends.Backend]'T.Mapping[str, IntroCommand]'c                    rlrj                                                                                                                                                              j        nd xxt          j        dt          dt                    fdt          dfd          fdt          d	 fd
t                    fdt          dfd          fdt          d fd          fdt          d fdt                    fdt          dt                    fdt          dfd          fdt          dfd          fdt          dfd          fd t          d!fd"t                    fd#t          d$fd%t                    fd&t          d'fd(          fg          S ))NastzDump the AST of the meson file)r4   
benchmarkszList all benchmarksc                 "    t                     S N)list_benchmarks)benchmarkdatas   r&   <lambda>z/get_meson_introspection_types.<locals>.<lambda>E   s    XeHfHf r(   )r2   buildoptionszList all build optionsc                 "    t                     S rH   )list_buildoptionsr   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>F   s    M^_gMhMh r(   )r2   r4   buildsystem_filesz(List files that make up the build systemc                 $    t                     S rH   )list_buildsystem_files)r?   interpreters   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>G   s$    dz  |E  GR  eS  eS r(   	compilerszList used compilersc                 "    t                     S rH   )list_compilersrO   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>H   s    ~V^G_G_ r(   dependencieszList external dependenciesc                 $    t                     S rH   )	list_deps)rA   r   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>I   s    QZ[celQmQm r(   scan_dependenciesz2Scan for dependencies used in the meson.build file	installedz(List all installed files and directoriesc                 "    t                     S rH   )list_installedinstalldatas   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>K   s    \jkv\w\w r(   install_planz;List all installed files and directories with their detailsc                 "    t                     S rH   )list_install_planr^   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>L   s!      sD  EP  sQ  sQ r(   machinesz2Information about host, build, and target machinesc                 "    t                     S rH   )list_machinesr?   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>M   s    ers|e}e} r(   projectinfozInformation about projectsc                 "    t                     S rH   )list_projinforf   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>N   s    P]^gPhPh r(   targetszList top level targetsc                 &    t                     S rH   )list_targets)rA   r?   r_   s   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>O   s    U^`kmtHuHu r(   testszList all unit testsc                 "    t                     S rH   )
list_teststestdatas   r&   rK   z/get_meson_introspection_types.<locals>.<lambda>P   s    :hCWCW r(   )create_test_serialisationget_benchmarks	get_testscreate_install_datarS   collectionsOrderedDictr0   dump_astlist_buildoptions_from_sourcelist_deps_from_sourcelist_projinfo_from_sourcelist_targets_from_source)r   r?   rA   rJ   r_   rS   rq   s   ```@@@@r&   get_meson_introspection_typesr}   7   s     69 699):R:R:T:TUU44Y5H5H5J5JKK1133)1555; "	=XNNNO	|$9@f@f@f@fgggh	&>EhEhEhEh  qN  O  O  O  	P	l+U  ]S  ]S  ]S  ]S  ]S  T  T  T  	U	l#8?_?_?_?_```a	&BImImImImIm  vK  L  L  L  	M	l+_g|}}}~	l#MTwTwTwTwxxxy	&c  kQ  kQ  kQ  kQ  R  R  R  	S	\"V]}]}]}]}~~~	%AHhHhHhHh  qJ  K  K  K  	L	L!9@u@u@u@u@u@u  ~V  W  W  W  	X	,4;W;W;W;WXXXY$   r(   parserargparse.ArgumentParserr6   c                   t                      }|                                D ]=\  }}d|                    dd          z   }|                     |d|d|j                   >|                     dt          t          j                  dd	d
           |                     dddddd           |                     dddddd           |                     dddddd           |                     dddd           d S )Nz--_-
store_trueF)actiondestdefaulthelpz	--backendrA   ninjaz8The backend to use for the --buildoptions introspection.)choicesr   r   r   z-az--allallz Print all available information.z-iz--indentindentzEnable pretty printed JSON.z-fz--force-object-output
force_dictz]Always use the new JSON format for multiple entries (even for 0 and 1 introspection commands)builddir?r8   zThe build directory)nargsr   r   )r}   itemsreplaceadd_argumentr1   sortedr
   backendlist)r~   intro_typeskeyvalflags        r&   add_argumentsr   U   sP   /11K%%'' _ _Sckk#s+++DCUXU]^^^^
VG4G-H-HybiW  Y Y Y
glPU?  A A A
jHV[:  < < <
5lQ]gl|  ~ ~ ~

#sAVWWWWWr(   intrr   T.Dict[str, T.Any]c                `    t                      }| j                            |           |j        S rH   )r   rE   acceptresult)r   printers     r&   rx   rx   e   s)    GHOOG>r(   r_   backends.InstallDataT.Dict[str, str]c                   i }| | j         D ]z}t          j                            | j        |j        t          j                            |j                            |t          j                            | j        |j                  <   {| j	        D ]4}t          j                            | j        |j
                  ||j        <   5| j        D ]W}t          j                            | j        |j
        t          j                            |j                            ||j        <   X| j        D ]4}t          j                            | j        |j
                  ||j        <   5| j        D ]4}t          j                            | j        |j
                  ||j        <   5| j        D ]T}t          j                            |j                  }t          j                            | j        |j
        |          ||<   U|S rH   )rj   r#   r$   r%   prefixoutdirbasenamefname	build_dirdatainstall_pathheadersmaninstall_subdirssymlinksname)r_   restisr   s         r&   r]   r]   j   s   
C$ 	V 	VA[/27;K;KAG;T;TUU [2AG<<==! 	K 	KA',,{'91>JJCKK$ 	e 	eA',,{'91>27K[K[\]\bKcKcddCKK 	K 	KA',,{'91>JJCKK, 	K 	KA',,{'91>JJCKK% 	W 	WAw''//HGLL);Q^XVVCMMJr(   6T.Dict[str, T.Dict[str, T.Dict[str, T.Optional[str]]]]c                <    d fd j         D             i} j         j         j         j        d                                D ]\  }}|D ]}|j        p|}|j        }|dk    rBt          j	        
                    |t          j	                            |j	                            }||j        pd |j        pd d}|dk    r2|j        pg g f\  }}	t          |	          |d<   t          |          |d<   |                    |i           ||<   |||         |j	        <   Ќ|S )	Nrj   c                    i | ]L}t           j                            j        |j                  |j        |j        pd |j        pd |j        pd dMS )N)destinationtag
subprojectinstall_rpath)	r#   r$   r%   r   r   out_namer   r   r   ).0targetr_   s     r&   
<dictcomp>z%list_install_plan.<locals>.<dictcomp>   sq     
 
 
  GLL.==%z)T$/74!'!5!=	@ @
 
 
r(   )r   r   r   r   r   )r   r   r   r   exclude_dirsexclude_files)rj   r   r   r   r   r   	data_typeinstall_path_namer#   r$   r%   r   r   r   excludelistget)
r_   planr   	data_listr   r   r   entryr   r   s
   `         r&   rb   rb   }   su    
 
 
 
 &-
 
 

DD  &&6	 
 egg/ /Y  	/ 	/D-#I $ 6i$&GLL1BBGDTDTUYU^D_D_$`$`!  1x'4"o5 E '''.2l.Fr2h+|(,\(:(:n%)-m)<)<o&"hhy"55DO).DODI&&%	/( Kr(   cdata.CoreDatasubdirc                `    | j                             t          d                    dk    rdS |S )Nlayoutflatz	meson-out)optstoreget_value_forr   )r   r   s     r&   get_target_dirr      s0    &&y':':;;vEE{r(   kT.List[T.Dict[str, T.Union[bool, str, T.List[T.Union[str, T.Dict[str, T.Union[str, T.List[str], bool]]]]]]]c                   g }t          | j                  dfd}| j        D ] |d                   } |d                   }t          | j        d                   |d	         d
         d         d         fdd         D             d         dd         g g d |D             g dgg d |D             d d         dgz  }|S )N	node_listT.List[BaseNode]r   T.List[Path]c                l   g }| D ]}g }t          |t                    rBt          |j        j                  }|j        j        t          v r|                    d           n>t          |t                    r|j        j        }nt          |t                    r|j        }|D ]t}t          |t                    r5t          |j        t                    sJ |t          |j                  gz  }Lt          |t                    r|t          |          gz  }ufd|D             }d |D             }|S )Nr   c                ,    g | ]}d          z  |z  S )r   r*   )r   xr   root_dirs     r&   
<listcomp>zDlist_targets_from_source.<locals>.nodes_to_paths.<locals>.<listcomp>   s'    777ax!H+%)777r(   c                6    g | ]}|                                 S r*   )resolver   r   s     r&   r   zDlist_targets_from_source.<locals>.nodes_to_paths.<locals>.<listcomp>   s     (((qqyy{{(((r(   )
isinstancer   r   args	arguments	func_namevaluer   popr   r   r   r   r   )r   r   nr   jr   r   s        r&   nodes_to_pathsz0list_targets_from_source.<locals>.nodes_to_paths   sG    	% 	%A%'D!\** #AF,--;$(>>>HHQKKKAy)) #v'A|,, #{ % %a,, %%ags33333DMM?*CC3'' %DGG9$C% 877773777((C(((
r(   sourcesextra_filesr   r   idtype
defined_inc                P    g | ]"}t           j                            |          #S r*   r"   )r   r   r   s     r&   r   z,list_targets_from_source.<locals>.<listcomp>   s)    GGGQfa00GGGr(   outputsbuild_by_defaultunknownmachinec                ,    g | ]}t          |          S r*   r   r   s     r&   r   z,list_targets_from_source.<locals>.<listcomp>       444qCFF444r(   )languager   compiler
parametersr   generated_sourcesc                ,    g | ]}t          |          S r*   r   r   s     r&   r   z,list_targets_from_source.<locals>.<listcomp>   r   r(   r[   )r   r   r   r   filenamer   target_sourcesdependsr   r   r[   )r   r   r   r   )r   source_rootrj   r   r   )r   tlistr   r   extra_fr   r   r   s        @@@r&   r|   r|      sA   y{ED$%%H      , \   .9.. .=!122q{;;fID'fIL/GGGG!I,GGG !"4 5%Y< 44G444%'     44G444;%
 
  	* Lr(   build.Buildbackends.BackendT.List[T.Any]c                   g }| j                                         | j                                         i |j        D ]R}t          j                            |j                  }t          t          |j
        |j        |                    g|<   S|j        D ]}t          j                            |j                  }	 t          j                            |j                           |<   |                             t          t          |j
        |j        |                               # t"          $ r Y w xY w|                                                                 D ]\  }}t)          |t*          j                  st/          d          t1          | j         j        |j                  |                                ||                                t          j                            t          j                            |j        t           j                            fd|                                 D             |j!        |"                    ||          fd|j#        D             |j$        pd d tK          |dg           D             d tK          |dg           D             d}	tK          |d	d           }
|
|
&                                |	d	<   tK          |d
d           }|||	d
<   |rI|'                                r5d|	d<   fd|                                 D             }d |D             |	d<   nd|	d<   |                    |	           |S )NzxThe target object in `builddata.get_targets()` is not of type `build.Target`. Please file a bug with this error message.c                R    g | ]#}t           j                            |          $S r*   r"   )r   r   r   r   s     r&   r   z list_targets.<locals>.<listcomp>   s+    ZZZi;;ZZZr(   c           	         g | ]J}t           j                            t           j                            |j        |j                            KS r*   )r#   r$   normpathr%   r   r   r   r   src_dirs     r&   r   z list_targets.<locals>.<listcomp>  s@    sss[\BG,,RW\\'18QW-U-UVVsssr(   c                    g | ]	}|j         
S r*   r   )r   ds     r&   r   z list_targets.<locals>.<listcomp>  s    RRRQVRRRr(   external_depsc                6    g | ]}|                                 S r*   get_idr   libs     r&   r   z list_targets.<locals>.<listcomp>  s     TTT

TTTr(   rW   )r   r   r   r   r   r   r   r   r   rW   r   vs_module_defswin_subsystemTr[   c                >    g | ]}                     |d g          S rH   )r   )r   r   install_lookuptables     r&   r   z list_targets.<locals>.<listcomp>  s,    TTT!&**1tf55TTTr(   c                    g | ]	}|D ]}|
S r*   r*   )r   sublistr   s      r&   r   z list_targets.<locals>.<listcomp>  s%    $K$K$K77$K$KaQ$K$K$K$Kr(   install_filenameF)(r   get_build_dirget_source_dirrj   r#   r$   r   r   r   r   r   r   r   r   r   appendr   KeyErrorget_targetsr   r   r   TargetRuntimeErrorr   r   r   get_basenameget_typenamer  r%   build_filenameget_outputsr   get_introspection_datar   r   getattrrelative_nameshould_install)r?   r_   rA   r   r   r   r   idnamer   r   r  r  ifnr   r  r   r  s                @@@@r&   rl   rl      s   E%3355I#2244G   ` `7##AG,,),Xk6H!(T\-]-])^)^(_H%%!   7##AF++	,?@P@PQRQY@Z@Z,[))00Xk>PRSR`bj5k5k1l1lmmmm 	 	 	D	 &113399;;    &%,// 	[   Z  [  [  [	 5 >NN''))''))'**27<<P[Pj+k+kllZZZZZVEWEWEYEYZZZ & 7%<<VVLLssss`f`rsss +3tRRWV_b-Q-QRRRTTPR0S0STTT
 
 !)94@@%"0">">"@"@A>>$!.Ao 	#60022 	#!AkNTTTTv?Q?Q?S?STTTC$K$Kc$K$K$KA !!"AkNQLs   A.D22
D?>D?9T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]c                Z    d | j         d         D             }t          | j        |          S )Nc                    g | ]
}|d          S r  r*   )r   r   s     r&   r   z1list_buildoptions_from_source.<locals>.<listcomp>  s    GGG1V9GGGr(   subprojects)project_datarN   r   )r   r+  s     r&   ry   ry     s/    GGd&7&FGGGKT]K888r(   r+  T.Optional[T.List[str]]c                x    g |pg }t          t          j                  }t          d          t          d          h}i }i }i } j                                        D ]]\  }}||v r|||<   ||v r|||<    j                            |          r*|||<   |j        s|D ]}	|||                    |	          <   ^d fd
}
 |
|d            |
 fd j                                        D             d            |
 fd j                                        D             d            |
 fdt           j                                        d           D             d            |
|d           dd |
 fd j                                        D             d            |
|d           S )N	errorlogsstdsplitr   opts@T.Union[options.MutableKeyedOptionDictType, options.OptionStore]sectionr   r   r6   c           	     ,   t          |                                           D ]o\  }}t          |          |j        |j                            |          r|j                                        ndd}t          |t          j
                  rd}nt          |t          j                  rd}nt          |t          j                  r|                                |d<   d}nt          |t          j        t          j        f          rd}nbt          |t          j                  rd}|                                }|r||d<   n*t#          d	t%          t'          |                              ||d
<   |j        |d<                       |           qd S )Nany)r   r   r4  r   stringbooleanr   combointegerarrayzUnknown option type: r   description)r   r   r   r   r   is_per_machine_optionr   get_lower_case_namer   r
   UserStringOptionUserBooleanOptionUserComboOptionprintable_choicesUserIntegerOptionUserUmaskOptionUserStringArrayOptionr  reprr   r<  r  )	r2  r4  r   optoptdicttypestrcr   optlists	          r&   add_keysz#list_buildoptions.<locals>.add_keys3  s   tzz||,, 	$ 	$HC"3xx#)GOGXGnGnorGsGs"~#+"A"A"C"C"Cy~@ @G#w788 M"C!:;; M#C!899 M%(%:%:%<%<	"!C'";W=T!UVV M#C!>?? M!))++ +)*GI&"#:DcOOLLL%GFO%(_GM"NN7####+	$ 	$r(   corec                P    i | ]"\  }}j                             |          ||#S r*   )r   is_backend_optionr   kvr   s      r&   r   z%list_buildoptions.<locals>.<dictcomp>L  s6    ccctq!H<M<_<_`a<b<bcacccr(   rA   c                P    i | ]"\  }}j                             |          ||#S r*   )r   is_base_optionrP  s      r&   r   z%list_buildoptions.<locals>.<dictcomp>M  s6    ```tq!H<M<\<\]^<_<_`a```r(   basec                P    i | ]"\  }}j                             |          ||#S r*   )r   is_compiler_optionrP  s      r&   r   z%list_buildoptions.<locals>.<dictcomp>O  sX      	D  	D  	D$!Q[c[l[[  AB  \C  \C  	DA  	D  	D  	Dr(   c                    | d         j         S )Nr   )r   )r   s    r&   rK   z#list_buildoptions.<locals>.<lambda>O  s    !A$, r(   r   r   	directoryr   r   c                Z    | j         J | j         dk    r|                     d           S | S )N r1  )r   evolverY  s    r&   project_option_key_to_intronamez:list_buildoptions.<locals>.project_option_key_to_intronameT  s6    ~)))>R:::...
r(   c                b    i | ]+\  }}j                             |           |          |,S r*   )r   is_project_option)r   rQ  rR  r   r^  s      r&   r   z%list_buildoptions.<locals>.<dictcomp>Z  sX     _ _ _!Qx7H7Z7Z[\7]7]_--a00! _ _ _r(   usertest)r2  r3  r4  r   r   r6   )r   r   r   r   )
setr
   BUILTIN_DIR_OPTIONSr   r   r   is_builtin_optionyieldingr]  r   )r   r+  dir_option_namestest_option_namesdir_optionstest_optionscore_optionsrQ  rR  r   rL  rK  r^  s   `          @@r&   rN   rN     s   IKG#K7677";//":..0 79K79L79L!'')) 	= 	=1   KNN###LOO0033 	=LO: =$ = =A;<LQ!7!788$ $ $ $ $ $ $0 H\6"""Hccccx06688cccenoooH````x06688```bhiiiH 	D  	D  	D  	D&!2!8!8!:!:@V@VWWW  	D  	D  	D   H[+&&&    H _ _ _ _ _"+1133_ _ _`fh h hH\6"""Nr(   r  c                     t          h d          }g }t          j                   D ];\  }}|                     fd|                    |          D                        <|S )N>   meson.optionsmeson_options.txtmeson.buildc              3     K   | ]B}t           j                            t           j                            |                    V  Cd S rH   )r#   r$   relpathr%   )r   frootr  s     r&   	<genexpr>z.find_buildsystem_files_list.<locals>.<genexpr>d  s_       B B T1(=(=wGG B B B B B Br(   )	frozensetr#   walkextendintersection)r  build_filesfilelistr   filesrs  s   `    @r&   find_buildsystem_files_listr|  _  s    QQQRRKH''** B Ba B B B B B!,!9!9%!@!@B B B 	B 	B 	B 	BOr(   rS   r   c                    | j                                         t          |                                          }fd|D             }|S )Nc                T    g | ]$}t          |                                          %S r*   )r   as_posixr  s     r&   r   z*list_buildsystem_files.<locals>.<listcomp>k  s/    BBBA!$$--//BBBr(   )r   r  r   get_build_def_files)r?   rS   rz  r  s      @r&   rR   rR   h  sN    #2244GK335566HBBBBBBBHOr(   *T.Dict[str, T.Dict[str, T.Dict[str, str]]]c                r   i }dD ]}i ||<   t          | j        |                                          D ]\  }}|                                |                                |                                |j        |                                |j        |j	        |
                                d||         |<   |S )N)hostr   )r   exelistlinker_exelistfile_suffixesdefault_suffixversionfull_version	linker_id)r#  rT   r   r  get_exelistget_linker_exelistr  get_default_suffixr  r  get_linker_id)r   rT   r   r   r   s        r&   rV   rV   n  s    <>I$  	'")(*<g"F"F"L"L"N"N 
	 
	Hhoo''#//11"*"="="?"?!)!7"*"="="?"?#+ ( 5%3355	, 	,Igx((
	 r(   'T.List[T.Dict[str, T.Union[str, bool]]]c                p    g }| j         D ]*}g d|fd|                                D             gz  }+|S )N)r   requiredr  has_fallbackconditionalc                $    i | ]\  }}|v 	||S r*   r*   )r   rQ  rR  keyss      r&   r   z)list_deps_from_source.<locals>.<dictcomp>  s$    <<<TQ!t))Aq)))r(   )rW   r   )r   r   r   r  s      @r&   rz   rz     s^    68F > >
 
 
 	<<<<QWWYY<<<==Mr(   .T.List[T.Dict[str, T.Union[str, T.List[str]]]]c                z   i }dfdddfd}| j         j                                        D ])}|                                r ||          ||j        <   *j        j                                        D ]\  }}t          |t                    r|j
        }t          |t                    rk|                                rW|j        |v r:t          j        d||j                 d                                       |            |||          ||j        <   t          |                                          S )Nsrc_fileyT.Union[mesonlib.FileOrString, build.CustomTarget, build.StructuredSources, build.CustomTargetIndex, build.GeneratedList]r   r,   c                   t          | t                    r| gS t          | t          j                  r!|                     j        j                  gS t          | t          j        t          j	        t          j
        f          r|                                 S t          | t          j                  r fd|                                 D             S t          j        dt          |            d          )Nc                0    g | ]} |          D ]}|S r*   r*   r   r   rr  _src_to_strs      r&   r   z2list_deps.<locals>._src_to_str.<locals>.<listcomp>  s.    JJJ!;;q>>JJaAJJJJr(   zInvalid file type r8   )r   r   r	   Fileabsolute_path
source_dirr   r   CustomTargetCustomTargetIndexGeneratedListr!  StructuredSourcesas_listMesonBugExceptionr   )r  r  rA   s    r&   r  zlist_deps.<locals>._src_to_str  s    h$$ 	:h.. 	S**7+=w?PQQRRh!3U5LeNa bcc 	*'')))h 788 	KJJJJx//11JJJJ()Od8nn)O)O)OPPPr(   r	  r   varnameT.Optional[str]r   c                   | j         | j        |                                 |                                 |                                 fd|                                 D             fd|                                 D             fd|                                 D             d | j        D             d t          | dg           D             |r|gng dS )Nc                Z    g | ]'}|                     j        j                  D ]}|(S r*   )to_string_listr  r   )r   idirsr   rA   s      r&   r   z5list_deps.<locals>._create_result.<locals>.<listcomp>  sj      $N  $N  $N%QVQeQefmfx  {B  {L  RM  RM  $N  $NAA  $N  $N  $N  $Nr(   c                0    g | ]} |          D ]}|S r*   r*   r  s      r&   r   z5list_deps.<locals>._create_result.<locals>.<listcomp>  s.    KKKaKKNNKKqKKKKr(   c                0    g | ]} |          D ]}|S r*   r*   r  s      r&   r   z5list_deps.<locals>._create_result.<locals>.<listcomp>  s/    SSS!KKPQNNSSqASSSSr(   c                    g | ]	}|j         
S r*   r  )r   es     r&   r   z5list_deps.<locals>._create_result.<locals>.<listcomp>  s    888QV888r(   c                6    g | ]}|                                 S r*   r  r  s     r&   r   z5list_deps.<locals>._create_result.<locals>.<listcomp>  s     LLL

LLLr(   	libraries)r   r   r  compile_args	link_argsinclude_directoriesr   r   rW   r   meson_variables)
r   	type_nameget_versionget_compile_argsget_link_argsget_include_dirsget_sourcesget_extra_filesext_depsr#  )r	  r  r  rA   s     r&   _create_resultz!list_deps.<locals>._create_result  s    FK}}..00** $N  $N  $N  $N13E3E3G3G  $N  $N  $NKKKK1==??KKKSSSSq'8'8':':SSS88QZ888LL;0K0KLLL,3;yy
 
 	
r(   r  )r  r  r   r,   rH   )r	  r   r  r  r   r   )depsr  valuesfoundr   rS   	variablesr   r   r   held_objectr   Tcastr  r   )r   rA   r   r  r	  r  holderr  s    `     @r&   rY   rY     ss   BDF	Q 	Q 	Q 	Q 	Q 	Q 	Q
 
 
 
 
 
 
 
 ]&&(( / /7799 	/+^A..F16N".8>>@@ @ @fl++ 	@"A!Z(( @QWWYY @6V##F=&.9J*KLLSST[\\\\%3^Aw%?%?F16N   r(   rq   "T.List[backends.TestSerialisation]ET.List[T.Dict[str, T.Union[str, int, T.List[str], T.Dict[str, str]]]]c                   g }| D ]}i }t          |j        t                    r	|j        g}n|j        }||j        z   |d<   t          |j        t
          j                  r|j                            i           |d<   n
|j        |d<   |j        |d<   |j	        |d<   |j
        |d<   |j        |d<   |j        |d<   |j        |d<   t          |j                  |d	<   |j        |d
<   |j        |d<   |                    |           |S )Ncmdenvr   workdirtimeoutsuiteis_parallelpriorityprotocolr   extra_paths)r   r   r   cmd_argsr  r	   EnvironmentVariablesget_envr   r  r  r  r  r  r  r   r  r  )rq   r   r   tor   s        r&   get_test_listr    s   TVF  LNags## 	WIEEGEAJ&5	aeX:;; 	b))BuIIBuIV6
	9	9g7M=:QZ:	9M=bMr(   c                     t          |           S rH   r  rp   s    r&   ro   ro     s    """r(   	benchdatac                     t          |           S rH   r  )r  s    r&   rI   rI     s    ###r(   ,T.Dict[str, T.Dict[str, T.Union[str, bool]]]c                
   i }dD ]}}t          | j        j        |          }t          j        |          ||<   |j        ||         d<   |                                ||         d<   |                                ||         d<   ~|S )N)r  r   r   	is_64_bit
exe_suffixobject_suffix)r#  r   rc   dataclassesasdictr  get_exe_suffixget_object_suffix)r?   rc   mr   s       r&   re   re     s    =?H( C C)/8!<<!(11#*#4K $+$:$:$<$<L!'.'@'@'B'BO$$Or(   @T.Dict[str, T.Union[str, T.List[str], T.List[T.Dict[str, str]]]]c                N   | j         | j        | j        | j                 j        d | j        | j                 j        D             | j        d}g }| j                                        D ]8\  }}||| j        	                    |          d}|
                    |           9||d<   |S )Nc                (    g | ]}|d          j         S )r   )r   )r   rr  s     r&   r   z!list_projinfo.<locals>.<listcomp>  s    kkk!A$*kkkr(   )r  descriptive_namelicenselicense_filessubproject_dir)r   r  r  r+  )project_versionproject_namedep_manifestr  r  r  r+  r   projectsr   r  )r?   r   r+  rQ  rR  rJ  s         r&   ri   ri     s    ,%2))*@AIkki.DYE[.\.jkkk#2P PF K%++--  1 ) 2 6 6q 9 9
 

 	1'F=Mr(   3T.Dict[str, T.Union[str, T.List[T.Dict[str, str]]]]c                <   | j         }t          |          }d |D             }| j        d         D ]L}t          j                            | j        |d                   fd|D             |d<   fd|D             }M|| j        d<   | j        | j        d<   | j        S )Nc                L    g | ]!}t           j                            |          "S r*   )r#   r$   r  r   s     r&   r   z-list_projinfo_from_source.<locals>.<listcomp>  s(    000QRWa  000r(   r+  r   c                >    g | ]}|                               |S r*   
startswithr   r   basedirs     r&   r   z-list_projinfo_from_source.<locals>.<listcomp>  s*    !L!L!Lall76K6K!L!!L!L!Lr(   rP   c                >    g | ]}|                               |S r*   r  r  s     r&   r   z-list_projinfo_from_source.<locals>.<listcomp>  s*    ???qg)>)>????r(   r  )r   r|  r,  r#   r$   r%   r  )r   	sourcedirr{  r   r  s       @r&   r{   r{     s     I'	22E00%000E}- @ @',,t2AfI>>!L!L!L!LU!L!L!L
????E???-2D)**.*=D&'r(   r
   argparse.Namespaceresults6T.Sequence[T.Tuple[str, T.Union[dict, T.List[T.Any]]]]r   T.Optional[int]intc                D   |s| j         st          d           dS t          |          dk    r7| j         s0t          t          j        |d         d         |                     n;i }|D ]}|d         ||d         <   t          t          j        ||                     dS )NzNo command specifiedr   r   r   )r   printlenjsondumps)r
   r  r   outr   s        r&   print_resultsr    s     
.7- 
.$%%%q	W		7#5	djAv6667777 	 	A!C!IIdjV,,,---1r(   r   r  c                N    d}|  t           j                            | |          }|S )Nz
meson-infor"   )r   infodirs     r&   get_infodirr    s'    G',,x11Nr(   r
  kindc                R    t           j                            | |sdnd| d          S )Nr!   intro-.jsonr"   )r
  r  s     r&   get_info_filer    s9    7<<15O));OD;O;O;OQ Q Qr(   T.Anyc                    t          t          | |          d          5 }t          j        |          cd d d            S # 1 swxY w Y   d S )Nutf-8encoding)openr  r  load)r
  r  fps      r&   load_info_filer    s    	mGT**W	=	=	= y}}                 s   AAAc           
     $   d}t          | j                  }| j        %t          j                            | j        |          }| j        rdnd }g }| j        dk    rdn| j        d d         }t                      }dt          j                            | j                  | j        fv rt          t          j
                  5  t          j        | j                  }|J t          |d|j        t!                      t#                      t%                      g          }|                                 d d d            n# 1 swxY w Y   |                                D ]@\  }	}
| j        st-          | |	d          r|
j        s%||	|
                    |          fgz  }At1          | ||          S 	 t3          |          }|                    d	i                               d
i                               dd          }n# t6          $ r t          j                            |          rt          j                            |          st;          d           n/t;          d                    t?          |                               Y dS w xY wtA                      }|D ]P}tC          j"        ||          s9t;          d                    |d                    |                                dS Q|                                D ]\  }}|j#        s| j        st-          | |d          s&	 ||t3          ||          fgz  }># t6          $ r5 t;          d                    t?          ||                               Y  dS w xY wt1          | ||          S )Nzmeson-private   ro  r8   ir\  )visitorsFintrospectionr  fullz0.0.0zyCurrent directory is not a meson build directory.
Please specify a valid build dir or change the working directory to it.zIntrospection file {} does not exist.
It is also possible that the build directory was generated with an old
meson version. Please regenerate it in this case.r   zFIntrospection version {} is not supported. The required version is: {}z and z%Introspection file {} does not exist.)$r  r   r#   r$   r%   r   r}   r   r   sysstderrr   get_backend_from_namerA   r   r   r   r   r   analyzer   r   r#  r4   r  r  r   FileNotFoundErrorisdirr  formatr  r.   r	   version_comparer2   )r
   datadirr
  r   r  r  r   rA   r   r   r   raw
intro_versvers_to_checkr   rR  s                   r&   runr+    s2   G'*++G#',,w/99.*QQdFBDG'=88g>NtPSt>TI/11K))'*:;;W=MNNNSZ(( 	 	4W_EEG&&&+Ir7<UcUeUeg~  hA  hA  CT  CV  CV  UW  X  X  XDLLNNN		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $))++ 	0 	0HCK e(D(D SY ciioo.//GGWgv666W%%WW_b1155iDDHHQXYY

   w}}W%% 	fRW]]7-C-C 	f \ ] ] ] ]  FFLf][bMcMcFdFdf f f qq =>>M  '
A66 	 06*gll=&A&ABBD D D 11		 !!## 	 	1v 	{ 	77Au#=#= 		N7A66788GG  	 	 	9@@wXYAZAZ[[\\\111	 '6222s9   A1D>>EE0AG> >BJ	J	(L??:M>=M>updated_introspection_files
intro_infoc                   | D ]\  }}t           j                            |d| d          }t           j                            |d          }t          |dd          5 }t	          j        ||d           |                                 d d d            n# 1 swxY w Y   t          j        ||           t          	                    |           d S )	Nr  r  tmp_dump.jsonwr  r     r  )
r#   r$   r%   r  r  dumpflushr   r,  r  )r-  r   r  r   out_filetmp_filer  s          r&   write_intro_infor6  [  s     1 1
d7<<*>4*>*>*>??7<</::(C'222 	bIdBq))))HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
8X&&&#**400001 1s   ,BB	B	c                   | j                                         }t          || |          }g }|                                D ]'\  }}|j        s|||                                fgz  }(t          || j         j                   d S )N)r   r?   rA   )r   get_coredatar}   r   r2   r6  r   )r?   rA   r   r   r-  r   r   s          r&   generate_introspection_filer9  e  s    $1133H/Y`ghhhKEGJ%%'' * *Sx 	SXXZZ())

Z!6!?@@@@@r(   c                J    dt          |           fg}t          ||           d S )NrL   )rN   r6  )r   r   r-  s      r&   update_build_optionsr;  q  s2    	*8445J Z*****r(   r  T.Dict[str, T.Union[str, int]]c                *   |                      d          }| t          t          |          dk    r|d         nd          t          t          |          dk    r|d         nd          t          t          |          dk    r|d         nd          dS )Nr8   r   r   r1  )r  majorminorpatch)splitr   r  )r  	vers_lists     r&   split_version_stringrC  x  s    c""IS^^a%7%7Yq\\Q??S^^a%7%7Yq\\Q??S^^a%7%7Yq\\Q??	  r(   Ferrorsr   build_files_updatedboolc                   | j         j        }t          |          }t                      }i }|                                D ] \  }}|j        sd| d|t          v d||<   !t          t          j	                  | j         
                                | j                                         |dt          t                                |d|d}	|rd|	d<   d	 |D             |	d
<   nd|	d<   t          j                            |d          }
t!          |
dd          5 }t#          j        |	|           |                                 d d d            n# 1 swxY w Y   t          j        |
|           d S )Nr  r  )fileupdated)sourcer   info)r  information)meson_versiondirectoriesr  rE  Terrorc                Z    g | ](}t          |t                    r|nt          |          )S r*   )r   r   r   s     r&   r   z)write_meson_info_file.<locals>.<listcomp>  s1    "W"W"W1
1c(:(:#F11A"W"W"Wr(   
error_listFr/  r0  r  r  )r   r   r'   r}   r   r2   r,  rC  cdatar  r  r  r+   r#   r$   r%   r  r  r2  r3  r   )r?   rD  rE  r   	info_filer   r-  r   rR  	info_datar5  r  s               r&   write_meson_info_filerU    s   $-H#H--I/11KJ!!## 
 
1v 	%Q%%%77
 

1 .em<<+::<<*88::
 
 ,,K,M,MNN%
 
  3 I  #!	'"W"WPV"W"W"W	,"	' w||Ho66H	hg	.	.	. "	)R   



               Jx#####s   *EEE)r   r   r   r   )r   r   )r   r,   )NNN)r   r>   r?   r@   rA   rB   r   rC   )r~   r   r   r6   )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   rA   r   r   r   )r   r   r   r(  rH   )r   r   r+  r-  r   r(  )r  r   r   r,   )r?   r   rS   r   r   r,   )r   r   r   r  )r   r   r   r  )r   r   rA   r   r   r  )rq   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   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   r6   )r?   r   rA   r   r   r6   )r   r   r   r   r   r6   )r  r   r   r<  )F)r?   r   rD  r   rE  rF  r   r6   )R
__future__r   
contextlibr   rv   r  r  r#   pathlibr   r   r  typingr  r\  r   r	   r
   r   rR  rE   r   r   r   r   r   r   rA   r   rW   r   r   interpreterbaser   r   mparserr   r   r   r   TYPE_CHECKINGargparserS   r   r   r'   r+   r.   r0   r}   r   rx   r]   rb   r   r|   rl   ry   rN   r|  rR   rV   rz   rY   r  ro   rI   re   ri   r{   r  r  r  r  r+  r,  __annotations__r6  r9  r;  rC  rU  r*   r(   r&   <module>r_     s   # " " " " " "+ ' & & & & &          				 " " " " " " " " 



     9 9 9 9 9 9 9 9 9 9 9 9 N  N  N  N  N  N  N  N  N  N  N  N  N  N  N  N       $ $ $ $ $ $       ) ) ) ) ) )       F F F F F F F F F F F F? "OOO((((((!!!!!!5 5 5 5              JNGKJN    <X X X X    
   &' ' ' 'R   4 4 4 4l5 5 5 5n9 9 9 9@ @ @ @ @D         "   *! *! *! *!X   2# # # #$ $ $ $      &          Q Q Q Q Q    93 93 93 93v ,.  - - - -1 1 1 1
A 
A 
A 
A+ + + +   '$ '$ '$ '$ '$ '$ '$r(   