
    jT                       S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKr	SSK
JrJr  SSKJrJrJrJrJr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  SSKJr  SSK J!r!  SSK"J#r#  \	RH                  (       a&  S SK%J&r&  SSKJ'r'  SSKJ(r(  SSKJ)r)   " S S\&5      r*\r+O\,r+ " S S\5      r- " S S\5      r. " S S\!5      r/ " S S\+5      r0 " S S\\05      r1 " S  S!\\05      r2 " S" S#\\05      r3 S)     S*S$ jjr4\4\S%'   \" S&\Rj                  \Rl                  \Rn                  /\-S'9=\S&'   r8\" S(\Rj                  \Rl                  /\.S'9=\S('   r9g)+    )annotationsN)Path   )mesonlibmlog   )process_method_kwDependencyExceptionDependencyMethodsDependencyTypeNameExternalDependencySystemDependency)ConfigToolDependency)packages)DependencyFactory)ExtraFrameworkDependency)PkgConfigDependency)detect_cpu_family)ExternalProgram)	OptionKey)	TypedDict)DependencyGenerator)Environment)MachineChoicec                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   Srg)PythonIntrospectionDict   zT.Dict[str, str]install_pathsboolis_pypyis_venvis_freethreadedlink_libpythonsysconfig_pathspathsstrplatformsuffixlimited_api_suffix	variablesversion N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r,       /mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/dependencies/python.pyr   r      sE    ''))##r3   r   c                  :   ^  \ rS rSrS/rSrSrSU 4S jjrSrU =r	$ )Pybind11ConfigToolDependency0   zpybind11-configTz--pkgconfigdirc                z   > [         TU ]  XU5        U R                  (       d  g U R                  S/S5      U l        g )Nz
--includescompile_argssuper__init__is_foundget_config_valuer9   selfnameenvironmentkwargs	__class__s       r4   r<   %Pybind11ConfigToolDependency.__init__;   s3    F3}} 11<..Qr3   r9   rA   r&   rB   r   rC   T.Dict[str, T.Any])
r-   r.   r/   r0   toolsallow_default_for_crossskip_versionr<   r2   __classcell__rD   s   @r4   r6   r6   0   s&    E # $LR Rr3   r6   c                  2   ^  \ rS rSrS/rSU 4S jjrSrU =r$ )NumPyConfigToolDependencyB   znumpy-configc                z   > [         TU ]  XU5        U R                  (       d  g U R                  S/S5      U l        g )Nz--cflagsr9   r:   r?   s       r4   r<   "NumPyConfigToolDependency.__init__F   s3    F3}} 11:,Or3   rF   rG   )r-   r.   r/   r0   rI   r<   r2   rL   rM   s   @r4   rO   rO   B   s    EP Pr3   rO   c                  J   ^  \ rS rSr  S SU 4S jjjrSS jrS	S jrSrU =r$ )
BasicPythonExternalProgramM   c                   > Uc  [         TU ]  XSS9  O6Xl        UR                  U l        UR                  U l        S U l        SU l        0 SSSS0 0 SSS0 SS.U l        SU l        g )NT)commandsilentz	--versionFsentinelz0.0)r   r    r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   )	r;   r<   rA   rW   pathcached_versionversion_arginfopure)r@   rA   rW   ext_progrD   s       r4   r<   #BasicPythonExternalProgram.__init__N   s    GT4@I#++DL DI"&D*D  $#!" ",0
	 	r3   c                    U R                   S:X  a  [        R                  " US5      $ U R                   S:X  a  [        R                  " US5      $ g)Npython2z< 3.0python3>= 3.0T)rA   r   version_compare)r@   r+   s     r4   _check_version)BasicPythonExternalProgram._check_versionm   sC    99	!++GW==YY)#++GX>>r3   c                   SS K nUR                  R                  SS5       nU R                  5       [	        U5      /-   n[
        R                  R                  5       nSUS'   [        R                  " X4S9u  pVnS S S 5         [        R                  " W5      nUb6  U R#                  US
   5      (       a  [$        R&                  " SU5      U l        gg! , (       d  f       N_= f! [        R                   a    S n[        R                  " S[	        WR                  5      UR                   4-  5        [        R                  " S5        [        R                  " W5        [        R                  " S	5        [        R                  " W5         Nf = f)Nr   zmesonbuild.scriptszpython_info.pystdlibSETUPTOOLS_USE_DISTUTILS)envz.Could not introspect Python (%s): exit code %dzProgram stdout:
zProgram stderr:
r+   r   TF)importlib.resources	resourcesrZ   get_commandr&   osenvironcopyr   
Popen_safejsonloadsJSONDecodeErrorr   debugargs
returncoderf   Tcastr]   )	r@   	importlibfcmdrk   pstdoutstderrr]   s	            r4   sanity!BasicPythonExternalProgram.sanityt   s6    	#  %%&:<LMQR""$Ax/C**//#C.6C*+ ( 3 3C AAv	 N	::f%D  3 3DO D D8$?DI) NM ## 	DJJG3qvv;XYXdXdJeefJJ*+JJvJJ*+JJv	s   ACC# 
C #B&FF)r[   rW   r]   rA   rZ   r^   r\   )NN)rA   r&   rW   T.Optional[T.List[str]]r_   zT.Optional[ExternalProgram])r+   r&   returnr   )r   r   )	r-   r.   r/   r0   r<   rf   r   r2   rL   rM   s   @r4   rT   rT   M   s*    EI9=6 > r3   rT   c                  J    \ rS rSrS	S jrS
S jrSS jrSS jrSSS jjrSr	g)_PythonDependencyBase   c                8   X l         UR                  S   U l        UR                  S   U l        UR                  S   U l        UR                  S   U l        UR                  S   U l        UR                  S   U l        UR                  S   =(       d    UU l        S U l        [        R                  " U R                  S5      (       a  S	U l        OS
U l        [        R                  " 5       (       a)  U R                  (       a  U =R                  S/-  sl        g g g )Nr+   r'   r*   r%   r    r"   r#   rd      r   z-DPy_GIL_DISABLED)embedr]   r+   r'   r*   r%   r    r"   r#   r   re   major_version
is_windowsr9   )r@   python_holderr   s      r4   r<   _PythonDependencyBase.__init__   s    
)..y9%**:6&++K8"''0
$)))4,112CD ,001ABKe26	##DLL(;;!"D!"D
   T%9%9"5!66 &: r3   c                   U R                   (       aR  U R                  S:X  a  SnOSn[        R                  R	                  U R
                  R                  S5      S5      nU/nOSSU R                   3nSU R
                  ;   a  X R
                  S   -  nSU R
                  ;   a  X R
                  S   -  n/ nU R                  R                  X!U5      nUb  XPl
        S	U l        g g )
Nr   zpypy3-czpypy-cbasebinpython	DEBUG_EXTABIFLAGST)r    r   ro   rZ   joinr*   getr+   clib_compilerfind_library	link_argsr=   )r@   rB   libnamelibdirlibdirslargss         r4   
find_libpy _PythonDependencyBase.find_libpy   s    <<!!Q&#"WW\\$.."4"4V"<eDFhGt||n-Gdnn,>>+66T^^+>>*55G""//gN"N DM r3   c                X   U R                   R                  S5      (       aM  SU R                   ;   a  gSU R                   ;   a  gSU R                   ;   a  g[        SU R                   < S35      eU R                   S:X  a  gU R                   S	;   a  gU R                   S
;   a  g[        S5      e)Nmingwx86_64i686x86aarch64z)MinGW Python built with unknown platform z, please file a bugwin32>   win64	win-amd64>   	win-arm64z1Unknown Windows Python platform {self.platform!r})r'   
startswithr
   )r@   s    r4   get_windows_python_arch-_PythonDependencyBase.get_windows_python_arch   s    ==##G,,4==(4==(dmm+ ),UVZVcVcUffy*z{{]]g%]]44]]m+!"UVVr3   c                   U R                   R                  S5      (       Ga  U R                  R                  S5      nU R                  R                  S5      nU R                  R                  SS5      nU R                  (       a  [        S5      SU S3-  nGOyU(       a  US	   nU R                  5       nUR                  S
:X  ac  US:X  a  US:X  a  [        S5      nGO4US:X  a  [        SU S35      nGOU R                  (       a  [        SU S35      nGO[        SU S35      nGOU R                  (       a1  [        S5      SU S3-  n[        S5      S-  S-  S-  S-  SU S3-  nO0[        S5      SU S3-  n[        S5      S-  S-  S-  S-  SU S3-  nU R                  R                  R                  R                  [        S5      5      n[        U[        5      (       d   eU R                  R                  R                  R                  [        S5      5      nU=(       d    US:H  n	Sn
[        S5      U R                  R                  R                  ;   a7  U R                  R                  R                  R!                  S5      nUS;   a  Sn
U	(       a  [        S5      S-  S-  S-  S-  SU S3-  nU	(       aQ  U
(       aJ  U R                  R                  S5      (       d*  ["        R$                  " [&        R(                  " S5      5        [        U R                  R                  S 5      5      U-  nOU R                   R                  S!5      (       a  U R                  (       a?  U(       a  U R                  R                  S"5      nOZU R                  R                  S#5      nO>U(       a  U R                  R                  S$5      nOU R                  R                  S%5      n[        U R                  R                  S&5      5      U-  nO[*        R,                  " S'5      eUR/                  5       (       d/  ["        R0                  " S(R3                  [        U5      5      5        g [        U5      /$ ))Nwinpy_version_nodotpy_version_shortimplementation_lowerr   libs	libpythonz.ar   gccpypyz3.8zlibpypy3-c.dlllibpypyz-c.dllzt.dllz.dllzt.libz..libz.lib	buildtyperv   Fb_vscrt>   mddmtdfrom_buildtypestatic_from_buildtypeTz	debug/libz_d.libPy_DEBUGau                              Using a debug build type with MSVC or an MSVC-compatible compiler
                            when the Python interpreter is not also a debug build will almost
                            certainly result in a failed build. Prefer using a release build
                            type or a debug Python interpreter.
                            base_prefixr   ABI3DLLLIBRARYLIBRARYABI3LDLIBRARY	LDLIBRARYLIBDIRzDOn a Windows path, but the OS doesn't appear to be Windows or MinGW.z#Could not find Python3 library {!r})r'   r   r*   r   staticr   get_compileridr"   rk   coredataoptstoreget_value_forr   
isinstancer&   	get_valuer   warningtextwrapdedentr   MesonBugExceptionexistslogformat)r@   limited_apivernumverdot	imp_lowerlibpathcompr   rv   is_debug_buildvscrt_debugvscrtr   r   s                 r4   get_windows_link_args+_PythonDependencyBase.get_windows_link_args   s   ==##E**^^''(:;F^^''(:;F**+A8LI{{v,9VHB)??#AYF((*77e# F*v"&'7"8"f,"&'?"@//&*VF85+A&BG&*VF84+@&AG++"&v,6&1G"G"&v,2"62">2"F3"OTZ[aZbbgRh"h"&v,6&1F"F"&v,2"62">2"F3"OTZ[aZbbfRg"g !% 1 1 : : H HS^I_ `I%i5555 HH--66DDYwEWXE%*%Bi7.BN"'K +txx/@/@/I/II $ 1 1 : : D DY O $]]*.K%!%f"!5"!="!E)!TY_`f_ggmWn!nw%+dnn>P>PQ[>\>\X__ 6  &! " t~~))-89GCC]]%%g..{{"nn001ABG"nn00;G"nn00AG"nn00=Gt~~))(34w>C,,WY Yzz||HH:AA#c(KLCzr3   c                    U R                  5       n[        UR                  R                  R                  5      nXS:w  aD  [        R                  " S[        R                  " U R                  5      SU SU 35        SU l        gU R                  U5      nUc  SU l        gX`l        SU l        g! [         a0  n[        R                  " [	        U5      5        SU l         SnAgSnAff = f)zc
Find python3 libraries on Windows and also verify that the arch matches
what we are building for.
FNNeedzfor z, but found T)r   r
   r   r   r&   r=   r   r   	compilershostboldrA   r   r   )r@   rk   r   pyarchearchr   s          r4   find_libpy_windows(_PythonDependencyBase.find_libpy_windows"  s    
	113F
 !!7!7!<!<=>HHVTYYtyy1T$|F83TU!DM**;7=!DM # 	HHSV!DM	s   B. .
C(8&C##C()r   r]   r=   r"   r    r   r#   r   r%   r'   r*   r+   N)r   'BasicPythonExternalProgram'r   r   )rB   'Environment'r   Noner   r&   )r   r   r   r   F)rk   r   r   r   r   r   )
r-   r.   r/   r0   r<   r   r   r   r   r2   r,   r3   r4   r   r      s#    7:!*W$JX r3   r   c                  .    \ rS rSr S     SS jjrSrg)PythonPkgConfigDependencyi:  c                D   U(       a  [         R                  " SU< S35        O[         R                  " SU< S35        [        R                  " XX#5        [        R                  XUR                  SS5      5        U(       a5  U R                  (       d$  [         R                  " SU R                   S35        U R                  (       d-  [        R                  " U R                  S5      (       a  / U l        U R                  R                  R                  R                  5       (       ax  S	U R                   ;   ag  U R                   S	   nUR#                  S
5      (       aA  U =R                  SU-   /-  sl        U R$                  b  U =R$                  SU-   /-  sl        g g g g g )NzSearching for z via pkgconfig lookup in LIBPCz/ via fallback pkgconfig lookup in default pathsr   Fz"python-zT" could not be found in LIBPC, this is likely due to a relocated python installationz< 3.8PYTHONFRAMEWORKPREFIXz/Applications/Xcode.app/z-Wl,-rpath,)r   rv   r   r<   r   r   r=   r+   r#   r   re   r   rk   machinesr   	is_darwinr*   r   raw_link_args)r@   rA   rB   rC   installationlibpcframework_prefixs          r4   r<   "PythonPkgConfigDependency.__init__<  sR    JJx/MNOJJx/^_`$$TE&&t6::gu;UVJJ$,,  0D  E  F ""x'?'?g'V'VDN 88!!++--2IT^^2[#~~.EF**+EFF=3C#C"DD%%1&&=;K+K*LL& 2 G 3\-r3   )r   Nr   )
rA   r&   rB   r   rC   rH   r   r   r   r   r-   r.   r/   r0   r<   r2   r,   r3   r4   r   r   :  s.      %M+M;WMM Mr3   r   c                  &    \ rS rSr    SS jrSrg)PythonFrameworkDependencyiX  c                ~    [         R                  " XX#5        [        R                  XUR                  SS5      5        g )Nr   F)r   r<   r   r   )r@   rA   rB   rC   r   s        r4   r<   "PythonFrameworkDependency.__init__Z  s-     ))$kJ&&t6::gu;UVr3   r,   NrA   r&   rB   r   rC   rH   r   r   r   r,   r3   r4   r   r   X  s    W+W;WWr3   r   c                  :    \ rS rSr    SS jr\SS j5       rSrg)PythonSystemDependencyi`  c                   [         R                  " XX#5        [        R                  XUR                  SS5      5        U R                  R                  S5      (       a,  SSSU R                  R                  S5      /U l        SU l        OUU R                  (       a=  [        R                  " 5       (       a  U R                  USS	9  OU R                  U5        OSU l        U R                  R                  S
5      n[        R                  " U R                  R                  S5      U R                  R                  S5      SU 3-   U R                  R                  S5      /5      nU =R                   U Vs/ s H  ow(       d  M  SU-   PM     sn-  sl        [        R                  " 5       (       a`  U R#                  5       R%                  S5      (       a<  [        R&                  " U R(                  S5      (       a  U =R                   S/-  sl        U R*                  R-                  SSX R                   S9S   (       d  SU l        g g s  snf )Nr   Fzios-z
-frameworkPythonz-FprefixT)r   r   	INCLUDEPYincludez/../../../include/python$platincludez-I64z<3.12z-DMS_WIN64=zPython.h )
extra_argsr   )r   r<   r   r   r'   r   r*   r   r=   r#   r   r   r   r   
OrderedSetr%   r9   r   endswithre   r+   r   
has_header)r@   rA   rB   rC   r   r   	inc_pathsrZ   s           r4   r<   PythonSystemDependency.__init__b  s   !!$kB&&t6::gu;UV
 ==##F++*HdDNN<N<Nx<XYDN DM  ""$$'''G, DM ##$67''NN{+JJNN9%*CF8(LLJJNN=))+ ,	
 	iHid4kdTkiHH   T%A%A%C%L%LT%R%RW_WoWoptp|p|  F  XG  XG-0!!,,Z[UfUf,ghij!DM k Is   4
I	Ic                     g)N	sysconfigr,   r,   r3   r4   	log_tried PythonSystemDependency.log_tried  s    r3   )r=   r   Nr   r   )r-   r.   r/   r0   r<   staticmethodr  r2   r,   r3   r4   r   r   `  s,    $"+$";W$"L  r3   r   c           	       ^ [        [        R                  [        R                  1U5      nUR	                  SS5      n/ nUS LnUc*  [        S[        R                  5      nUR                  5         UR                  S   R	                  S5      =(       d    UR                  S   n[        R                  U;   Ga   U(       a  UR                  S   R	                  S5      mU(       a+  [        R                  " UR                  S   S5      (       a  S	OS
n	SU U	 3n
    SU4S jjn[        R                  Ul        UR                  [        R                  " XXU5      5         UR                  [        R                  " [        XX#5      5        O+UR                  [        R                  " [         SX5      5        [        R                  U;   a,  UR                  [        R                  " ["        SXU5      5        [        R$                  U;   a^  UR'                  5       n[        R                  " US5      (       a  S/US'   UR                  [        R                  " [(        SXU5      5        U$ )Nr   Frc   r*   	LDVERSIONr+   LIBPCz>=3.8z-embedr  zpython-c                x  > T(       d  [        [        S5      U0 5      nSUl        U$ [        R                  R                  SS 5      n[        R                  R                  SS 5      nT[        R                  S'    [        XX#S5      SS jnU" SU5        U" SU5        $ ! SS jnU" SU5        U" SU5        f = f)N	pkgconfigr   PKG_CONFIG_LIBDIRPKG_CONFIG_PATHTc                ~    Ub  U[         R                  U '   g U [         R                  ;   a  [         R                  U 	 g g N)ro   rp   )rA   values     r4   set_env?python_factory.<locals>.wrap_in_pythons_pc_dir.<locals>.set_env  s3     ,/4BJJt,!RZZ/ "

4 0 0r3   )rA   r&   r  r&   r   r   )r   r   rA   ro   rp   popr   )	rA   rk   rC   r   emptyold_pkg_libdirold_pkg_pathr  
pkg_libdirs	           r4   wrap_in_pythons_pc_dir.python_factory.<locals>.wrap_in_pythons_pc_dir  s    !./A+/NPSUWXE!)EJ L!#0CT!J!zz~~.?F2<

./	=4TVZ[1
 /@-|<1
 /@-|<s   <B   B9r   z>= 3z/Library/Frameworksr%   r  )
rA   r&   rk   r   rC   rH   r   r   r   z'ExternalDependency')r	   r   	PKGCONFIGSYSTEMr   rT   r   python_commandr   r]   re   r   r  append	functoolspartialr   r   EXTRAFRAMEWORKrq   r   )rk   for_machinerC   r   methodsr   
candidatesfrom_installationpkg_version	pkg_embedpkg_namer%  nkwargsr$  s                @r4   python_factoryr6    s   
  !2!<!<>O>V>V WY_`GJJw&E02J$D01)X=T=TU##K044[Aa\EVEVW`EaK""g-%**;7;;GDJ$)h.F.F|GXGXYbGcel.m.msuI i[9H=5Q=Vj=. 0I/R/R",i//0FRU_klm !!)"3"34Mx^d"sti//0CYPS\]7*)++,BHc[ghi''72++-##K88 !66GG)++,ExQT_klmr3   rc   pybind11)configtool_classnumpyr  )
rk   r   r.  z'MachineChoice'rC   rH   r   z(T.Optional['BasicPythonExternalProgram']r   zT.List['DependencyGenerator']):
__future__r   r+  rs   ro   r   pathlibr   typingry   r  r   r   r   r	   r
   r   r   r   r   
configtoolr   detectr   factoryr   	frameworkr   r  r   rB   r   programsr   optionsr   TYPE_CHECKINGtyping_extensionsr   r   r   r   r   _Baseobjectr6   rO   rT   r   r   r   r   r6  r'  CONFIG_TOOLCMAKEpybind11_factorynumpy_factoryr,   r3   r4   <module>rK     s|   # $ $    F  F ,  & / * + & ??+,)()  EER#7 R$P 4 P@ @FhE hTM 35J M<W 8:O W*-/D *\ MQB-B!IBUrBH % *;  "3"?"?ARAXAXY1+  ' %6  "3"?"?@.%  Mr3   