
    4bhj|                     l   	 d dl Z d dlZd dlZd dlmZ g dZdhZ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dddddd	d
dddddddddddddZe j                  dk(  r	ed   ed<   ned   ed<   d Z	 e	       duZ
e
r!e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(z  Zd!Zej                  j                         d    Zej                  d     d)ej                  d*    Zej                  d     ej                  d*    Ze j$                  j'                  ej(                        Ze j$                  j'                  ej,                        Z ej0                         Zdad+adZd,Zd-Zd.Zd/ Z ejB                  r,e j$                  jE                   e ejB                              Z#n e  e jH                               Z# e%ed0d      Z&e&re&Z#e j                  dk(  r" e e#      jO                   e e d1            reZ#d2e jP                  v r e e jP                  d2         Z#dVd3Z) e)       Z*e*rd4D ]  Z+ee+   Z+e+d5   e+d6<   d7e+d5<   d8e+d9<    [+d: Z,d; Z-d< Z.d= Z/d> Z0d? Z1dWdAZ2dB Z3dC Z4dD Z5dE Z6dF Z7dVdGZ8dH Z9dI Z:dJ Z; e1       dd@fdKZ< e1       dd@fdLZ=dM Z>dN Z?dO Z@dP ZAdQ ZBdR ZCdS ZDdT ZEeFdUk(  r eE        yy)X    N)realpath)get_config_h_filenameget_config_varget_config_varsget_makefile_filenameget_pathget_path_names	get_pathsget_platformget_python_versionget_scheme_namesparse_config_hMACOSX_DEPLOYMENT_TARGETz6{installed_base}/{platlibdir}/python{py_version_short}z0{platbase}/{platlibdir}/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz>{platbase}/{platlibdir}/python{py_version_short}/site-packagesz;{installed_base}/include/python{py_version_short}{abiflags}z?{installed_platbase}/include/python{py_version_short}{abiflags}z
{base}/binz{base})stdlib
platstdlibpurelibplatlibincludeplatincludescriptsdataz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scripts)posix_prefix
posix_homent
posix_venvnt_venvr   r   venvr   c            	         t         j                  j                  dd       } | r| S t        j                  dv ry d }t         j
                  dk(  r,t         j                  j                  d      xs d} ||d      S t        j                  dk(  rPt        j                  r@ |dd	t        j                  t        j                  d
    dt        j                  d          S  |dd      S )NPYTHONUSERBASE>   wasivxworks
emscriptenc                  t    t         j                  j                  t        j                  j                  |        S N)ospath
expanduserjoin)argss    3/opt/python-3.12.12/usr/lib/python3.12/sysconfig.pyjoinuserz_getuserbase.<locals>.joinuserw   s$    ww!!"'',,"566    r   APPDATA~PythondarwinLibraryr   .   z.local)r%   environgetsysplatformname
_frameworkversion_info)env_baser+   bases      r*   _getuserbaser=   n   s    zz~~.5H ||887 
ww$zz~~i(/Ch''
||xCNNY++A./q1A1A!1D0EFH 	H C""r,   z({userbase}/Python{py_version_nodot_plat}z6{userbase}/Python{py_version_nodot_plat}/site-packagesz0{userbase}/Python{py_version_nodot_plat}/Includez0{userbase}/Python{py_version_nodot_plat}/Scriptsz
{userbase})r   r   r   r   r   r   r   z0{userbase}/{platlibdir}/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packages)nt_user
posix_userosx_framework_userr2   r3   Fz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c                 <    	 t        |       S # t        $ r | cY S w xY wr$   )r   OSError)r&   s    r*   _safe_realpathrC      s%    ~ s   
 _homez\PCbuild_PYTHON_PROJECT_BASEc                     | dd l }|j                  dt        d       dD ]F  }t        j                  j                  t        j                  j                  t        d|            sF y y)	Nr   zThe check_home argument of sysconfig.is_python_build is deprecated and its value is ignored. It will be removed in Python 3.15.   )
stacklevel)SetupzSetup.localModulesTF)warningswarnDeprecationWarningr%   r&   isfiler(   _PROJECT_BASE)
check_homerK   fns      r*   is_python_buildrR      s^    5  	 	
 '77>>"'',,}iDE ' r,   )r   r   r   headersz{srcdir}/Includez{projectbase}/.r   c                     	  | j                   di |S # t        $ rE}	  | j                   di t        j                  cY d }~S # t        $ r t	        |       d w xY wd }~ww xY w)N )formatKeyErrorr%   r4   AttributeError)s
local_varsvars      r*   _subst_varsr\      se    5qxx%*%% 5	5188)bjj)) 	5 C5*4	55s%    	A"AA"AAA"c                 h    | j                         }|j                         D ]  \  }}||v r|| |<    y r$   )keysitems)target_dict
other_dicttarget_keyskeyvalues        r*   _extend_dictre     s<    ""$K &&(
U+ C )r,   c                 f   i }|i }t        |t                      t        j                  dk(  r|ddiz  }t        |    j                         D ]b  \  }}t        j                  dv rt        j                  j                  |      }t        j                  j                  t        ||            ||<   d |S )Nr   
platlibdirlib)posixr   )
re   r   r%   r8   _INSTALL_SCHEMESr_   r&   r'   normpathr\   )schemevarsresrc   rd   s        r*   _expand_varsro     s    
C|()	ww$ |U++&v.446
U77o%GG&&u-E77##Kt$<=C 7 Jr,   c                      t         j                  dk(  rddddS t        j                  dk(  rt        j                  rddddS ddddS )	Nr   r   r>   )prefixhomeuserr0   r   r@   r?   )r%   r8   r6   r7   r9   rU   r,   r*   _get_preferred_schemesrt   !  s\    	ww$ 
 	

 ||xCNN$ (
 	
 ! r,   c                     | dk(  r"t         j                  t         j                  k7  ryt               |    }|t        vrt        | d|d      |S )Nrq   r   z
 returned z., which is not a valid scheme on this platform)r6   rq   base_prefixrt   rj   
ValueError)rc   rl   s     r*   get_preferred_schemerx   5  sZ    
h3::8#%c*F%%gZz *  
 	
 Mr,   c                      t        d      S )Nrq   )rx   rU   r,   r*   get_default_schemerz   A  s    ))r,   Tc                    	 dd l }|i }i }i }t        | t        j                         d      5 }|j	                         }d d d        D ]  }|j                  d      s|j                         dk(  r(|j                  t        |      }	|	sA|	j                  dd      \  }
}|j                         }|j                  dd      }d	|v r|||
<   	 |
t        v rt        t        |      }|||
<    t        |j                               }d
}t!        |      dkD  rt#        |      D ]  }||   }|j%                  t&        |      }|j%                  t(        |      }|r(|r&|j+                         |j+                         k  r|n|}	n|r|n|}	|	.|	j                  d      }
d}|
|v rt-        ||
         }no|
|v rd}nh|
t.        j0                  v rt.        j0                  |
   }nB|
|v r7|j                  d      r
|dd  |v rd}n#d|
z   |v rd}nt-        |d|
z            }ndx||
<   }|s||	j3                         d  }|d |	j+                          z   |z   }d	|v r|||<   8	 |t        v rt        t        |      }|||<   |j5                  |       |j                  d      s{|dd  |v s|dd  }||vs|||<   |r|||<   |j5                  |        t!        |      dkD  r|j7                         D ])  \  }}t9        |t,              s|j                         ||<   + |j;                  |       |S # 1 sw Y   xY w# t        $ r |j                  dd	      ||
<   Y w xY w# t        $ r |j                         ||<   Y 
w xY w)Nr   surrogateescape)encodingerrors# r3   rG   z$$$)CFLAGSLDFLAGSCPPFLAGSTFPY_   )reopenr6   getfilesystemencoding	readlines
startswithstripmatch_variable_rxgroupreplace_ALWAYS_STRrw   intlistr^   lentuplesearch_findvar1_rx_findvar2_rxstartstrr%   r4   endremover_   
isinstanceupdate)filenamerm   keep_unresolvedr   donenotdoneflineslinemnvtmpv	variablesrenamed_variablesr8   rd   m1m2founditemafterks                          r*   _parse_makefiler   E  s    |DG	h!:!:!<&
(+,
( ??34::<2#5HH\4(771a=DAq	A99T2&Dd{
	 K'((AA
  DG- 2 W\\^$I :
i.1
)$DDME</B</Bb((*rxxz1BrB"}GGAJ9tAw<D'\!E"**_::a=D++.QR$55!g- %  #4	?3 &('DGd!!%%'(OE!*1779-4u<Ee|(-/#{2&0 0$'JE */DJ!((.??51 H(99#'8D#4/-2T

 #!&DJ   &A % i.1
H 

1aggiDG 
 	KKK_
( 
(, " 3iic2DG3x  * 7).DJ7s/   L1L>M#1L;>M M #NNc                  x   	 t         r$t        j                  j                  t        d      S t        t        d      rdt         t        j                   } nd} t        t        j                  d      r | dt        j                  j                   z  } t        j                  j                  t        d      | d      S )NMakefileabiflagszconfig-config
_multiarch-r   )_PYTHON_BUILDr%   r&   r(   rO   hasattrr6   _PY_VERSION_SHORTr   implementationr   r   )config_dir_names    r*   r   r     s    *ww||M:66sJ#$5#6s||nE"s!!<0Qs11<<=>>77<<*OZHHr,   c            	          t        t        j                  dd      } t        j                  j                  ddt        j                   dt        j                   d|        S )Nr   r   _PYTHON_SYSCONFIGDATA_NAME_sysconfigdata__)getattrr6   r   r%   r4   r5   r   r7   )	multiarchs    r*   _get_sysconfigdata_namer     sL    **L"=I::>>$
#,,qa	{C r,   c                  @   	 dd l } i }t               }	 t        ||       t               }	 t        |d      5 }t        ||       d d d        t        r|d   |d	<   t               }d
t        j                  v r/dd l}|j                  |      }	||	_        |	t        j                   |<   dt#                dt$         }
t	        t        d      r|
dz  }
t'        j(                  |
d       t&        j*                  j-                  |
|dz         }t        |dd      5 }|j/                  d       |j/                  d       | j                  ||       d d d        t        ddd      5 }|j/                  |
       d d d        y # t        $ r3}d| }t	        |d      r| d|j
                   d}t        |      d }~ww xY w# 1 sw Y   zxY w# t        $ r3}d| }t	        |d      r| d|j
                   d}t        |      d }~ww xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   z,invalid Python installation: unable to open strerrorz ()zutf-8)r}   LDSHARED	BLDSHAREDr0   z
build/lib.r   gettotalrefcountz-pydebugT)exist_okz.pywutf8zB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )streamzpybuilddir.txt)pprintr   r   rB   r   r   r   r   r   r   r   r6   r7   types
ModuleTypebuild_time_varsmodulesr   r   r%   makedirsr&   r(   write)r   rm   makefileemsgconfig_hr   r8   r   module
pybuilddirdestfiles               r*   _generate_posix_varsr     s   ED$&H$' %&H(W-1d# .  ,[ #$D3<<!!$'!%"Dln-Q/@.ABJs&'j 
KK
T*ww||Ju5H	hf	-	 * 	+	$%d1%	 
. 
f	5	
 
6	5i  <XJG1j!EAJJ<q)Ccl	 .- <XJG1j!EAJJ<q)Ccl	F 
.	- 
6	5s]   E= G	 F<G	 6H"H=	F9.F44F9<GG	 		H.H  HHHc                     	 t               }t        |t               t               dgd      }|j                  }| j                  |       y )Nr   r   )r   
__import__globalslocalsr   r   )rm   r8   _tempr   s       r*   _init_posixr     s>    A"$DtWY3D2EqIE++OKK r,   c                 F   	 dd l }t        d      | d<   t        d      | d<   t        d      | d<   	 |j                         d   | d<   d	| d
<   t        | d<   t
        j                  j                  t        t        j                              | d<   d| d<   y # t        $ r Y Xw xY w)Nr   r   LIBDESTr   
BINLIBDESTr   	INCLUDEPY
EXT_SUFFIXz.exeEXEVERSIONBINDIRr   TZPATH)_impr   extension_suffixes
IndexError_PY_VERSION_SHORT_NO_DOTr%   r&   dirnamerC   r6   
executable)rm   r   s     r*   _init_non_posixr   !  s    5x(DO!,/D +D "446q9\ DK.DOWW__^CNN%CDDNDN  s   B 	B B c                    	 |i }dd l }|j                  d      }|j                  d      }	 | j                         }|s	 |S |j                  |      }|r5|j	                  dd      \  }}	 |t
        v rt        t        |      }|||<   n'|j                  |      }|rd||j	                  d      <   # t        $ r Y 9w xY w)Nr   z"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
r3   rG   )r   compilereadliner   r   r   rw   r   )	fprm   r   	define_rxundef_rxr   r   r   r   s	            r*   r   r   8  s     |

@AIzzCDH
{{} K OOD!771a=DAq#$$F DGt$A#$QWWQZ #   s   +B2 2	B>=B>c                      	 t         r?t        j                  dk(  r%t        j                  j	                  t
        d      } nt
        } nt        d      } t        j                  j	                  | d      S )Nr   PCr   z
pyconfig.h)r   r%   r8   r&   r(   rO   r   )inc_dirs    r*   r   r   Z  sK    (77d?ggll=$7G#G=)77<<..r,   c                  4    	 t        t        t                    S r$   )r   sortedrj   rU   r,   r*   r   r   f  s    6()**r,   c                      	 t         S r$   )_SCHEME_KEYSrU   r,   r*   r	   r	   k  s    4r,   c                 2    	 |rt        | |      S t        |    S r$   )ro   rj   )rl   rm   expands      r*   r
   r
   p  s$    
 FD))''r,   c                 $    	 t        |||      |    S r$   )r
   )r8   rl   rm   r  s       r*   r   r   |  s     VT6*400r,   c                  Z   i a t        j                  j                  t        j
                        } t        j                  j                  t        j                        }| t         d<   |t         d<   t        t         d<   t        t         d<   t        t         d<   t        t         d<   | t         d<   t        t         d<   |t         d	<   t        t         d
<   t        j                  t         d<   	 t        j                  t         d<   	 t        j                   j#                  dd      t         d<   t        j$                  dk(  r&t'        t                t        j(                  t         d<   t        j$                  dk(  rt+        t                t,        rt/               t         d<   t         j1                  dt              }t        j$                  dk(  rut2        rHt        j                  j5                  t7                     }t        j                  j9                  ||      }n't        j                  j5                  t7                     }t;        |      t         d<   t        j<                  dk(  rdd l}|jA                  t                da!y # t        $ r dt         d<   Y w xY w# t        $ r dt         d<   Y w xY w)Nrq   exec_prefix
py_versionpy_version_shortpy_version_nodotinstalled_baser<   installed_platbaseplatbaseprojectbaserg   r   r   r2   py_version_nodot_platr   VPATHri   userbasesrcdirr0   r   T)"_CONFIG_VARSr%   r&   rk   r6   rq   r  _PY_VERSIONr   r   _BASE_PREFIX_BASE_EXEC_PREFIXrO   rg   r   rX   winverr   r8   r   _vpathr   _HAS_USER_BASEr=   r5   r   r   r   r(   rC   r7   _osx_supportcustomize_config_vars_CONFIG_VARS_INITIALIZED)_PREFIX_EXEC_PREFIXr  r<   r  s        r*   _init_config_varsr    s   L ggszz*G77##COO4L$L".L!,L'8L#$'?L#$%1L!""L):L%&+L"/L!$L&#&<<Z 303

0B0B30K,- 
ww$% #

W	ww'L! $0>Z  h6F	ww' 77??#8#:;DWW\\$/F WW__%:%<=F+F3L ||x**<8  $W  &#%Z &
  302,-3s$   'I; ?'J ;JJJ*)J*c                     	 t         s t        5  t        
t                d d d        nRt        d   t        j
                  j                  t        j                        k7  rt        5  da t                d d d        | r/g }| D ]&  }|j                  t        j                  |             ( |S t        S # 1 sw Y   @xY w# 1 sw Y   LxY w)Nr<   F)r  _CONFIG_VARS_LOCKr  r  r%   r&   rk   r6   rq   appendr5   )r)   valsr8   s      r*   r   r     s     $
 #!#  277#3#3CJJ#??"+0(!# # DKK((./ /  #"s   B1%B=1B:=Cc                 6    	 t               j                  |       S r$   )r   r5   )r8   s    r*   r   r     s    
   &&r,   c                  J   	 t         j                  dk(  rsdt        j                  j	                         v rydt        j                  j	                         v rydt        j                  j	                         v ryt        j
                  S t         j                  dk7  st        t         d	      st        j
                  S d
t         j                  v rt         j                  d
   S t        j                         \  } }}}}| j	                         j                  dd      } |j                  dd      }|j                  dd      }| d d dk(  r|  d| S | d d dk(  rB|d   dk\  rd} t        |d         dz
   d|dd   }ddd}|d|t        j                      z  }n| d d dk(  rddlm}  |       S | d d dk(  r;d} dd l}|j                  d       }|j!                  |      }	|	r=|	j#                         }n,| d d d!k(  r$dd l}
|
j'                  t)               | ||      \  } }}|  d| d| S )"Nr   amd64z	win-amd64z(arm)z	win-arm32z(arm64)z	win-arm64ri   uname_PYTHON_HOST_PLATFORM/r    r   r      linuxsunosr   5solarisr   r2   rG   32bit64bit)il    aix)aix_platform   cygwinz[\d.]+r0   )r%   r8   r6   versionlowerr7   r   r4   r%  r   r   maxsize_aix_supportr1  r   r   r   r   r  get_platform_osxr   )osnamehostreleaser4  machinebitnessr1  r   rel_rer   r  s              r*   r   r     s(   * 
ww$ckk''))ckk''))))++||	ww'W!5|| "**,zz122 /1hhj+FD'7G \\^##C,Fooc3'Gooc3'GbqzW (!G9%%	w	1:FWQZ1,-Qwqr{m<G #*wGG73;;/011G	u	-~	x	I&LL!ggiG	x	#/#@#@,;,=,2GW$F  XQwiq	**r,   c                      t         S r$   )r   rU   r,   r*   r   r   J  s    r,   c                     	 dd l }	 |j                  t        |       xs |j                  t        |       }|r@|j	                         \  }}| d| |j                  |j                  d            z   | |d  z   } n	 | S t)Nr   r3   )r   r   r   r   spanr5   r   )rY   rm   r   r   begr   s         r*   expand_makefile_varsrC  N  s|      IIlA&D"))L!*DJS#!C488AGGAJ//!CD'9AH r,   c                     t        t        |j                                     D ]-  \  }\  }}|dk(  rt        |  d       t        d| d| d       / y )Nr   z: 	z = "")	enumerater   r_   print)titler   indexrc   rd   s        r*   _print_dictrK  h  sQ    (

)=>|UA:UG2,3%tE7!$%  ?r,   c                  B   	 dt         j                  v rt                y t        dt	                d       t        dt                d       t        dt                d       t                t        dt                      t                t        dt                      y )Nz--generate-posix-varszPlatform: "rF  zPython version: "zCurrent installation scheme: "Paths	Variables)
r6   argvr   rH  r   r   rz   rK  r
   r   rU   r,   r*   _mainrP  o  s    4#((*	K'q
)*	0231
56	*+=+?*@
BC	G%	G_./r,   __main__r$   )NT)Gr%   r6   	threadingos.pathr   __all__r   rj   r8   r=   r  r   r4  splitr  r:   r   r   r&   rk   rv   r  base_exec_prefixr  RLockr  r  r  
_USER_BASEr   r   r   rC   r   r   rO   getcwdr   	_sys_homer   r4   rR   r   rl   r\   re   ro   rt   rx   rz   r   r   r   r   r   r   r   r   r   r	   r
   r   r  r   r   r   r   rC  rK  rP  __name__rU   r,   r*   <module>r\     s   3 	 
     KHFSIM
 0)&&48	
 )"---1#	
8 KHFSIM
 )"---1#	
}H V 77d?/	:V/=V
#, ., ADOOII  ILNND'  .1<<D' ) ># kk!!$''*+1S-=-=a-@,AB !..q1233C3CA3F2GH ww0GG$$S%9%9: #IOO%   
 5/- >>GGOON3>>$BCM #9299;/M
 C$'	M77d? m$//l^9568$ RZZ'"2::.D#EFM"  !0
 "&)"9-y.y 1} 1 	5!$(	*}@
I=~!.D	/+

 ()T 	( -.T$ 1@$F%P'O+d4&0 z	G r,   