
    eg                    j   d dl mZ d dlZd dl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	mZ ddl	mZ ddlmZ dd	lmZmZmZmZmZmZmZmZ dd
lmZ ddlmZmZ ddlmZm Z m!Z! ddl"m#Z#m$Z$m%Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddlm9Z9m:Z: ddl;m<Z<m=Z= ej|                  rjd dl?m@Z@mAZA ddl	mBZB ddlmCZCmDZD ddlmEZE ddl"mFZF ddlGmHZH ddlImJZJmZK ddlLmMZMmNZN  G d de@      ZO G d deJ      ZP G d d eK      ZQej                  e=d!f   ZSd"d#hZTeTj                  e       eTd$d%hz  ZTe,D  cg c]  } | j                  d&vs|  c} ZW G d' d!e      ZX e5d(eYe*f      ZZ e5d"e[d)*      Z\ e5d#e[d)d+,      Z] e5d"e[e*f      Z^ G d- d.e(d!         Z_ G d/ d0e
      Z`d2d1Zayc c} w )3    )annotationsN   )ExtensionModule
ModuleInfo   )mesonlib)mlog)UserFeatureOption)known_shmod_kwargsCustomTargetCustomTargetIndexBuildTargetGeneratedListStructuredSourcesExtractedObjectsSharedModule)NotFoundDependency)get_dep_identifierfind_external_dependency)BasicPythonExternalProgrampython_factory_PythonDependencyBase)extract_required_kwargpermitted_dependency_kwargs
primitives)_ExternalProgramHolder)NoneTypePRESERVE_PATH_KWSHARED_MOD_KWS)	noPosargsnoKwargspermittedKwargsContainerTypeInfoInvalidArgumentstyped_pos_argstyped_kwargs	KwargInfo
FeatureNewFeatureNewKwargsdisablerIfNotFound)MachineChoice	OptionKey)ExternalProgramNonExistingExternalProgram)	TypedDictNotRequired)ModuleState)BuildData)
Dependency)Interpreter)BuildTargetSource)ExtractRequiredr   )TYPE_varTYPE_kwargsc                  ,    e Zd ZU ded<   ded<   ded<   y)PyInstallKwT.Optional[bool]purestrsubdirT.Optional[str]install_tagN__name__
__module____qualname____annotations__     ;/usr/lib/python3/dist-packages/mesonbuild/modules/python.pyr;   r;   1   s    $$rH   r;   c                  ,    e Zd ZU ded<   ded<   ded<   y)FindInstallationKwbooldisablerzT.List[str]modulesr<   r=   NrB   rG   rH   rI   rK   rK   7   s    rH   rK   c                      e Zd ZU ded<   y)ExtensionModuleKwzNotRequired[T.Optional[str]]r?   NrB   rG   rH   rI   rP   rP   =   s    ,,rH   rP   PythonExternalProgramr?   limited_apiname_prefixname_suffix>   rS   rT   c                  :     e Zd ZU i Zded<   dd fdZddZ xZS )rQ   zT.ClassVar[T.Dict[str, bool]]run_bytecompilec                    t         |          }|r.| j                  |d      | _        | j                  |d      | _        |S )Nplatlibpurelib)supersanity	_get_pathrX   rY   )selfstateret	__class__s      rI   r[   zPythonExternalProgram.sanityR   s;    gn>>%;DL>>%;DL
rH   c                &   | j                   d   |   dd  }|s|S t        j                  d|j                  | dd            }|r.|j	                  dd      rt        j                  d| d	      |S |j                  dd      }|d
k(  r| j                   d   rdnd}|dk(  r2t        j                  j                  | j                   d   d   |      }|S |dk(  r6| j                   d   st        j                  d      | j                   d   |   }|S )Ninstall_pathsr   r>   dirpythonmoduleinstall_envzpython.z1dir and python.install_env are mutually exclusiveautois_venvvenvsystem	variablesprefixzDpython.install_env cannot be set to "venv" unless you are in a venv!sysconfig_paths)
infoTcast
get_optionis_user_defined_optionr   MesonExceptionospathjoin)r]   r^   keyrel_pathvaluerg   s         rI   r\   zPythonExternalProgram._get_pathY   s!   99_-c2126Oue..#c{8.LM++M(+K--u<m.nooL&&}X&F& $(IIi$8&hK("ww||DIIk$:8$DhOH  F"99Y'--.tuuyy!23C8HrH   N)r^   T.Optional['ModuleState']returnrL   )r^   r|   rx   r>   r}   r>   )rC   rD   rE   rV   rF   r[   r\   __classcell__r`   s   @rI   rQ   rQ   K   s    
 68O27rH   r=    defaultz1.3.0r   sincec                      e Zd Zd#dZ ee       edeeej                  e
eeeeef       edgeeeddid$d                     Zd%dZd&dZe eed	hz         ed
dd	g      ed'd                            Z edeej                  f       edeee edee fd            	 	 	 	 d(d              Z!e edee      d)d              Z"d*dZ#ee$d+d              Z% ede      e$d,d              Z& edee'g      e$d-d              Z( ede      e$d,d              Z) edee'g      e$d-d              Z*ee$ e+d d!      d+ fd"                     Z, xZ-S ).PythonInstallationc                   t        j                  | ||       |j                  }| j                  j                  j
                  j                  t        j                  d            }t        |t              sJ d       |d   | _        |d   | _        |d   | _        |d   | _        |j                  | _        t         j"                  j%                  ||j&                        | _        t         j"                  j%                  ||j*                        | _        |d   | _        |d   | _        |d	   | _        |d
   | _        | j6                  j9                  | j:                  | j<                  | j>                  | j@                  | jB                  | jD                  | jF                  | jH                  | jJ                  | jL                  | jN                  d       y )Nrm   for mypyrl   suffixlimited_api_suffixpathsversionplatformis_pypylink_libpython)extension_module
dependencyinstall_sourcesget_install_dirlanguage_versionfoundhas_pathget_pathhas_variableget_variablerv   )(r   __init__ro   interpreterenvironmentcoredatarr   r   r,   
isinstancer>   rl   r   r   r   r=   ru   rv   rw   rX   platlib_install_pathrY   purelib_install_pathr   r   r   r   methodsupdateextension_module_methoddependency_methodinstall_sources_methodget_install_dir_methodlanguage_version_methodfound_methodhas_path_methodget_path_methodhas_variable_methodget_variable_methodpath_method)r]   rd   r   ro   rm   s        rI   r   zPythonInstallation.__init__y   s{   ''fkB{{!!--66AA(BTBTU]B^_&#&2
2&k*8n"&';"<']
KK	$&GGLL$H!$&GGLL$H!IZ(I"#34 $ < <00#::#:: $ < <&&,,,, 44 44$$
 	rH   zpython.extension_module)varargsallow_unknownTc                   d|v r|d   5t        d      |j                  d      xs d}| j                  d|      |d<   | j                  }t	        j
                  |d      }t        d |D        d       }|t| j                  i       }|j                         st	        j                  d      |j                  |       t        j                  d	d
| j                  d| j                         |j                  d      }| j                  j                   j"                  j%                  t'        dd            }|dk7  r|r| j(                  }| j+                  ||j,                        }	d|	 }
t	        j
                  |d      }|j                  |
       ||d<   t	        j
                  |d      }|j                  |
       ||d<   |d   }| j                  j                   j"                  j.                  |   }t1        d |j3                         D              r!t5        j4                  |      }|j7                  | j8                  d       |j                         st	        j                  d      |j;                  |       |j                  |       |j,                  j=                  dd      }d| d}d| d}t	        j
                  |d      }| j                  j                   j"                  j>                  t'        d         j@                  }|r|j                  |       n|j                  |       ||d<   ||d<   |jC                  dd      \  }}|d   |z   |d   f}d|d <   ||d!<   |d"   dk(  r1| jD                  s t	        jF                  | j,                  d#      rd$|d"<   | j                  jI                  | j                  ||tJ              S )%Ninstall_dirr?   z1"subdir" and "install_dir" are mutually exclusiver   Fdependenciesc              3  B   K   | ]  }t        |t              s|  y wr{   )r   r   ).0deps     rI   	<genexpr>z=PythonInstallation.extension_module_method.<locals>.<genexpr>   s     XcCAV1WcXs   Python dependency not foundzGpython_installation.extension_module with implicit dependency on pythonz0.63.0z$use python_installation.dependency()rR   allow_limited_apird   re   z-DPy_LIMITED_API=c_argscpp_argsnativec              3  B   K   | ]  }|j                         d k(    yw)msvcN)get_id)r   compilers     rI   r   z=PythonInstallation.extension_module_method.<locals>.<genexpr>   s     R88??$.Rs   T)rR   z2Python dependency supporting limited API not found.z/NODEFAULTLIB:pythonz_d.libz.lib	link_argsdebugr   r   rS   rT   gnu_symbol_visibilityz>=3.9inlineshidden)&r$   pop_get_install_dir_implr   r   extract_as_listnext_dependency_method_implr   rt   appendr(   
single_use
subprojectcurrent_noder   r   r   rr   r,   r   &_convert_api_version_to_py_version_hexr   	compilersanyvaluescopyfind_libpy_windowsenvremovereplaceoptionsrz   rsplitr   version_comparebuild_targetr   )r]   argskwargsr?   target_suffixnew_depspydeplimited_api_versionr   limited_api_version_hexlimited_api_definition
new_c_argsnew_cpp_argsfor_machiner   
pydep_copypyver#python_windows_debug_link_exception%python_windows_release_link_exceptionnew_link_argsis_debugsplits                         rI   r   z*PythonInstallation.extension_module_method   s    F"h+&'Z[[
 ZZ)/RF$($>$>uf$MF=!++FNCXXXZ^_=004E;;=--.KLLOOE"!!"k"*DOO=c"&"3"35 %jj7 ,,88AALLYWjs{M|}"$): 33M&*&Q&QReglgtgt&u#'89P8Q%R"!11&(CJ45)F8#33FJGL 67!-F: !*K((44==GGTIRy?O?O?QRR!YYu-
--dhhD-I!'')"112fgg&
+--c268LUGSY6Z3:NugUY8Z5 ( 8 8 M++77@@HHSZI[\bb!(()LM!(()NO&3{#!)~  -33C;}Q%a) "} -})*b0!9!9$,,!P.=F*+,,T->->fl[[rH   c                   t        j                  d      }|j                  |      }|st        d| d      t	        j
                  |d      rt        d| d      t	        j
                  |d|z         rt        d| d	| d
      |j                  d      }t        |d         }t        |d         }dj                  ||      S )Nz[0-9]\.[0-9]{1,2}zPython API version invalid: "z".z<3.2z$Python Limited API version invalid: z (must be greater than 3.2)>z%Python Limited API version too high: z (detected )r   r   r   z0x{:02x}{:02x}0000)	recompile	fullmatchr$   r   r   r   intformat)r]   api_versiondetected_versionpython_api_version_formatdecimal_matchversion_componentsmajorminors           rI   r   z9PythonInstallation._convert_api_version_to_py_version_hex   s    $&JJ/C$D!1;;KH"%B;-r#RSS##K8"%I+Vq#rss##K7G1GH"%J;-Wbcsbttu#vww(..s3&q)*&q)*#**5%88rH   c                   | j                   j                  |      }t        | j                         |      }| j                   j                  j
                  |   j                  |      }||S |j                         }d|d<   t        | j                   j                  ||| j                        }t        d| j                   j                  ||      }| j                   j                  j
                  |   j                  ||       |S )NFrequiredrd   )r   machine_from_native_kwargr   
_full_pathr   depsgetr   r   r   held_objectr   put)r]   r   r   
identifierr   
new_kwargs
candidatess          rI   r   z*PythonInstallation._dependency_method_impl  s    &&@@H'(96B
'',,[9==jI?J[[]
!&
:#D$4$4$@$@+z[_[k[kl
&x1A1A1M1Mz[ef!!&&{377
CH
rH   embedzpython_installation.dependencyz0.53.0c                l   t        || j                        \  }}}|r_t        j                  dt        j                  d      dt        j                  |      d       t        d| j                  j                        S | j                  |      }|r%|j                         st        j                  d      |S )Nr4   rd   zskipped: featuredisabledr   )r   r   r	   logboldr   r   r   r   r   r   rt   )r]   r   r   r	  r   featurer   s          rI   r   z$PythonInstallation.dependency_method  s    
 '=VT__&U#(GHH\499X#68JDIIV]L^`jk%h0@0@0L0LMM..v6C		--.KLLJrH   install_dataz#python_installation.install_sourcesrA   z0.60.0)r   c           
     V   d| j                   j                  | j                  <   |d   xs d}|d   |d   n| j                  }| j	                  ||d         }| j
                  j                  | j
                  j                  |d         |t        j                         d |d|d   	      S )
NTrA   python-runtimer=   r?   r   rd   preserve_path)renametaginstall_data_typer  )
r  rV   r   r=   r   r   install_data_implsource_strings_to_filesr   FileMode)r]   r   r   r  r=   r   s         rI   r   z)PythonInstallation.install_sources_method   s     :>((6]#7'7!'!;vf~00vh7GH1144T!W=# 1	 2 3 	3rH   zpython_installation.install_dirc                    d| j                   j                  | j                  <   |d   |d   n| j                  }| j	                  ||d         S )NTr=   r?   )r  rV   r   r=   r   )r]   r   r   r=   s       rI   r   z)PythonInstallation.get_install_dir_method4  sN     :>((6!'!;vf~))$x0@AArH   c                    |r| j                   }d}n| j                  }d}t        j                  t        j
                  j                  ||      t        j
                  j                  ||            S )N{py_purelib}{py_platlib})r   r   P_OBJOptionStringru   rv   rw   )r]   r=   r?   basenames        rI   r   z(PythonInstallation._get_install_dir_impl;  sW    ,,D!D,,D!D!!"'',,tV"<bggll4QW>XYYrH   c                    | j                   S r{   )r   r]   r   r   s      rI   r   z*PythonInstallation.language_version_methodE  s     ||rH   zpython_installation.has_pathc                $    |d   | j                   v S Nr   )r   r   s      rI   r   z"PythonInstallation.has_path_methodJ  s     Aw$**$$rH   zpython_installation.get_pathoptargsc                n    |\  }}	 | j                   |   S # t        $ r ||cY S t        | d      w xY w)Nz is not a valid path name)r   KeyErrorr$   )r]   r   r   	path_namefallbacks        rI   r   z"PythonInstallation.get_path_methodO  sR     #	8	L::i(( 	L#"i[0I#JKK	L    44z python_installation.has_variablec                $    |d   | j                   v S r"  )rl   r   s      rI   r   z&PythonInstallation.has_variable_methodZ  s     Aw$..((rH   z python_installation.get_variablec                n    |\  }}	 | j                   |   S # t        $ r ||cY S t        | d      w xY w)Nz is not a valid variable name)rl   r&  r$   )r]   r   r   var_namer(  s        rI   r   z&PythonInstallation.get_variable_method_  sR     "(	O>>(++ 	O#"hZ/L#MNN	Or)  zPython module path methodz0.50.0c                $    t         |   ||      S r{   )rZ   r   )r]   r   r   r`   s      rI   r   zPythonInstallation.path_methodj  s     w"400rH   )rd   z'PythonExternalProgram'r   'Interpreter')r   z'T.Tuple[str, T.List[BuildTargetSource]]r   rP   r}   z'SharedModule')r   r>   r   r>   r}   r>   )r   r9   r}   r4   )r   T.List['TYPE_var']r   'TYPE_kwargs'r}   z'Dependency')r   z,T.Tuple[T.List[T.Union[str, mesonlib.File]]]r   'PyInstallKw'r}   z'Data')r   r/  r   r1  r}   r>   )r=   rL   r?   r>   r}   zP_OBJ.OptionString)r   r/  r   r0  r}   r>   )r   zT.Tuple[str]r   r0  r}   rL   )r   z$T.Tuple[str, T.Optional['TYPE_var']]r   r0  r}   z
'TYPE_var').rC   rD   rE   r   r"   
mod_kwargsr%   r>   r   Filer   r   r   r   r   r   r&   _MOD_KWARGS_DEFAULTABLE_SUBDIR_KW_LIMITED_API_KWr   r   r   r*   r   r)   r    r   _PURE_KW
_SUBDIR_KWr   r'   r   r   r   r   r!   r   r   objectr   r   r   r(   r   r~   r   s   @rI   r   r   x   sO   < Z -sS(--Q]_pr  BS  Ue  gr  =s  t+wkw;QwSbwrvwU\ x t !U\n9   0G9<=67)L	  M > 	 NS(--,@A--#xA
3'4
39?
3 B
3 3XzJB K B
Z    2C8%  9% 2C&JL  KL 6<)  =) 6fXNO  OO +X61 7  1rH   r   c                       e Zd Z edd      Zd fdZddZddZedd       Z	ddZ
e ed	eg
       ed	 edeefd       ededd       ed eee      dg d      ej+                  dd            	 	 	 	 dd                     Z xZS )PythonModulerd   z0.46.0c                    t         |   |       i | _        | j                  j	                  d| j
                  i       y )Nfind_installation)rZ   r   installationsr   r   r=  )r]   r   r`   s     rI   r   zPythonModule.__init__u  s:    %;=!7!7
 	rH   c                2	   | j                   j                  }g }| j                   j                  j                  j	                  t        j                  dd            }|dk(  r|S t        t        j                  j                               s|S |j                         }g }ddd}|j                  D ]  } ||j                        s|j                  |j                  t        j                   j#                  |j$                  |j&                  t        j                   j)                  |j*                              f        |j,                  D ]d  } ||j.                        s|j                  |j.                  t        j                   j#                  |j$                  |j0                        f       f |j2                  D ]e  } ||j.                  d      s|j                  |j.                  t        j                   j#                  |j$                  |j0                        f       g dd l}	t        j                   j#                  | j                   j                  j7                         d      }
t9        |
d	      5 }|j;                  |	j<                  j?                  d
d             d d d        | j@                  j                         D ]  }tC        |t              s|j                  |jD                  d      s2tG        jH                  d|      }d|jD                  d    d}g }|D ]  \  }}|jK                  t        j                   j#                  |j$                  |jL                        t        j                   j#                  |j$                  |jN                        f      s~|j                  |        t9        t        j                   j#                  | j                   j                  j7                         |      dd      5 }tQ        jR                  ||       d d d        |jT                  |
|tW        |      gz   }|jY                  |dd|jN                  |jL                  d      }|j                  |        |S # 1 sw Y   xY w# 1 sw Y   sxY w)Nbytecompilerd   re   c                R    | j                  d      xr | j                  d      xs |S )N)r  r  z.py)
startswithendswith)fisdirs     rI   should_appendz8PythonModule._get_install_scripts.<locals>.should_append  s)     << @AbqzzRWGXGa\abrH   Tr   zpycompile.pywbzmesonbuild.scriptsr   rQ   zpython-z-installed.jsonwzutf-8)encodingr  )
py_purelib
py_platlib)verboser  installdir_map)F)rF  rL   )-r   backendr   r   rr   r   r,   r   rQ   rV   r   create_install_datatargetsout_namer   ru   rv   rw   rm   outdirbasenamefnamedatainstall_path_nameinstall_pathinstall_subdirsimportlib.resourcesget_scratch_diropenwrite	resourcesread_binaryr>  r   ro   rp   rq   rC  rX   rY   jsondumpcommandr>   get_executable_serialisation)r]   rO  r_   optlevelinstalldatapy_filesrG  td	importlib	pycompilerE  imanifestmanifest_jsonr  cmdscripts                     rI   _get_install_scriptsz!PythonModule._get_install_scripts|  s   ""**##//88CCHDVDVWdmuDvwr>J(88??ABJ113	c
 $$ 	uAQZZ(RWW\\+:L:LahhXZX_X_XhXhijipipXq-r st	u !! 	iAQ001!4!4bggll;CUCUWXWeWe6f gh	i ,, 	iAQ00$7!4!4bggll;CUCUWXWeWe6f gh	i 	#GGLL!1!1!=!=!M!M!OQ_`	)T" 	[aGGI''334H.YZ	[ ##**, 	#A!238I8I!&&QZJ[8\FF2A6$QVVI%6$7G "' 3GD!||RWW\\+2D2Daii%PRTRYRYR^R^_j_q_qsts|s|R}$~%,,T23 "'',,t'7'7'C'C'S'S'UW_`bepwx 0|}IImQ/0ii9hH"FF ==c4Ue\]\e\euvu~u~M > A

6"	# 
%	[ 	[0 0s   8,R R R
R	c                V    |j                   j                  | j                                y r{   )install_scriptsextendrp  )r]   bs     rI   postconf_hookzPythonModule.postconf_hook  s    	  !:!:!<=rH   c                @   | j                  d      sy t        j                  d      sy d| dd   }d|ddg}t        j                  |      \  }}}|j                         }t        j                  j                  |      r t        j                  j                  |d      S y )N)python2python3py-   -cz;import sysconfig; print(sysconfig.get_config_var('BINDIR'))rd   )
rC  shutilwhichr   
Popen_safestripru   rv   existsrw   )name_or_pathverrn  _stdout	directorys         rI   _get_win_pythonpathz PythonModule._get_win_pythonpath  s    &&'=>||D!,qr"#$S$ ]^**3/61LLN	77>>)$77<<	844rH   r   c                b   |st        dt        j                        }nt        j                  ||      }t        ||      }|j                         s4t        j                         r | j                  |      }||}t        |      }|j                         s'|dv r#t        j                  |d      }t        ||      }|j                         rP|j                  |      r|S | d}|rt        j                  |      t        j                  ||j                         t        |j                        S )Nrx  )ext_prog>   rw  rx  rd   z1 is not a valid python or it is missing distutils)location)rQ   r   python_commandr-   
from_entryr   
is_windowsr  r[   rt   r	   warningr   r.   r  )	r]   r^   display_namer  r   rd   
tmp_python
pythonpath	sanitymsgs	            rI   _find_installation_implz$PythonModule._find_installation_impl  s    *9h6M6MNF(33L,OJ*<*MF<<>h&9&9&;!55lC
)#-L2<@F <<>l6L&L,77hO
.|jQ<<>}}U#%h&WX	"11)<<LLU5G5GH)&++66rH   zpython.find_installationr#  Tr   rM   Fz0.49.0r   rN   z0.51.0)listifyr   r   z0.64.0c           
     4   t        dd      }t        ||j                  |      \  }}}|j                  j	                  t
        j                  d      xs g }|d   }	|	xs d}
|s|	|	g}|r|d   nd }|rOt        j                  d|xs ddt        j                  d      dt        j                  |      d	       t               S | j                  j                  |      }|s#| j                  ||
||      }|| j                  |<   |d
   }g }g }|j                         rd|rb|D ]]  }t!        j"                  |j$                  dd| gz         ^}}|j&                  dk7  r|j)                  |       M|j)                  |       _ d|j*                  g}|r/|j)                  dj-                  dj/                  |                   |j)                  d       |j                         rQ|sO|j1                  t        j2                  d      dj-                  dj/                  |j$                              g       n$|j)                  t        j                  d             |r1|j)                  d       |j)                  dj/                  |             t        j                  |  |j                         s?|r(t!        j4                  dj-                  |xs d            t        |j*                        S |rO|r8t!        j4                  dj-                  |xs ddj/                  |                  t        |j*                        S t7        |t8              sJ d       t;        j:                  |      }|d   |_        |j>                  jA                  |jB                  d   d       |S )Nz-Passing "feature" option to find_installationz0.48.0rd   r   Programzfound:NOz(disabled by:r   rN   r|  zimport z({})z, YES zmodules:z{} not foundz{} is missing modules: {}r   r=   r   F)#r(   r   r   r   lookup_binary_entryr+   HOSTr	   r
  redr  r.   r>  r  r  r   r   r  rb  
returncoder   r  r   rw   rs  greenrt   r   rQ   r   r=   rV   
setdefaultro   MesonBugException)r]   r^   r   r   feature_checkr	  r   r  npr(  r  r  rd   want_modulesfound_modulesmissing_modulesmodpr  msgs                       rI   r=  zPythonModule.find_installation  s.    ##RT\]&<VUEUEUWd&e#(G  ++??@R@RT\]cac7+8h*B "r!uHHY 8(DHHTNTceienenovewy|}-//##''511%|U]^F/5D|,i(%'')<<>l# . ++NNWSE?+,-A <<1$#**3/!((-. ,5fkk*BJJv}}TYY|%<=>

8<<>/JJ

5)6==&..9Q+RSTJJtxx~&JJz"JJtyy/0#||~--n.C.CLD\T\.]^^-fkk::--.I.P.PQ]Qiaikoktkt  vE  lF  /G  H  H-fkk::f&;<HjH<YYv&F .FK""--fkk).DeLMrH   )r   r.  r}   None)r}   z(T.List[mesonlib.ExecutableSerialisation])rt  r2   r}   r  )r  r>   r}   r@   )
r^   'ModuleState'r  r>   r  r>   r   rL   r}   MaybePythonProg)r^   r  r   zT.Tuple[T.Optional[str]]r   z'FindInstallationKw'r}   r  )rC   rD   rE   r   INFOr   rp  ru  staticmethodr  r  r*   r%   r>   r&   r'   rL   r
   r#   listr7  evolver=  r~   r   s   @rI   r;  r;  q  s    h)D/b>  7B .>"*t%67F*dEB).tS94QS[cdH5Ek"6Ek;JEk ? EkrH   r;  c                d    t        |       }|j                  j                  t        t               |S r{   )r;  r   append_holder_maprQ   r   )r   r  s     rI   
initializer  3  s'    
{
#COO%%&;=OPJrH   )r   r.  r}   r;  )b
__future__r   r   r`  ru   r}  r   typingrp   r   r   r   r   r	   r   r
   buildr   r   r   r   r   r   r   r   r   r   dependencies.detectr   r   dependencies.pythonr   r   r   r   r   r   r   r  interpreter.interpreterobjectsr   interpreter.type_checkingr   r   r   interpreterbaser    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   programsr-   r.   TYPE_CHECKINGtyping_extensionsr/   r0   r1   r2   r3   r4   r5   interpreter.interpreterr6   interpreter.kwargsr7   SharedModuleKwinterpreterbase.baseobjectsr8   r9   r;   rK   rP   Unionr  r2  r   r  r4  rQ   rL   r7  r>   r8  r6  r5  r   r;  r  )ks   0rI   <module>r     s   # ! ! !  )   ( W  W  W - N c c b b C R R   
 0 B??8#));TC%i %_ -N - gg8:QQRO &
 
  $ % 
}m, ,
(YQAFF:X,XqY%6 %P VdH-.xb1
M3'J"8c8_= v1/0GH v1rk? kDW Zs   ?F0F0