
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    Ò‰bb@a  ã                   @   s   d dl Z d dlZd dlmZmZ ddddddd	d
dddg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,d,d-d*d$d%œd.œZd%Zej	 
¡ d  Zd/ejdd0…  Zd1ejdd0…  Ze j ej¡Ze j ej¡Ze j ej¡Ze j ej¡ZdadZd2d3„ Zej�rRe j eejƒ¡Znee  ¡ ƒZe j d4k�rŽe !¡  "d5¡�rŽee j #eee¡ƒZd6e j$k�r¨ee j$d6 ƒZd7d8„ Z%e&ed9dƒZ'e j d4k�ràd:d;„ Z(e(eƒZe(e'ƒZ'did=d>„Z)e)d?ƒZ*e*�rd@D ]Z+dAee+ dB< dCee+ dD< �qüdEdF„ Z,dGdH„ Z-dIdJ„ Z.dKdL„ Z/dMdN„ Z0djdOdP„Z1dQd„ Z2dRdS„ Z3dTdU„ Z4dVdW„ Z5dXdY„ Z6dkdZd„Z7d[d„ Z8d\d„ Z9d]d„ Z:e/ƒ dd?fd^d	„Z;e/ƒ dd?fd_d„Z<d`d„ Z=dad„ Z>dbd
„ Z?dcd„ Z@ddde„ ZAdfdg„ ZBeCdhk�rüeBƒ  dS )lé    N)ÚpardirÚ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_hZMACOSX_DEPLOYMENT_TARGETz/{installed_base}/lib64/python{py_version_short}z){platbase}/lib64/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz7{platbase}/lib64/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}/Scriptsz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez+{userbase}/Python{py_version_nodot}/Scriptsz
{userbase})r   r   r   r   r   r   r   z){userbase}/lib64/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz7{userbase}/lib64/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packagesz{userbase}/include)Úposix_prefixÚ
posix_homeÚntZnt_userZ
posix_userZosx_framework_userú%d.%dé   z%d%dc                 C   s(   z
t | ƒW S  tk
r"   |  Y S X d S ©N)r   ÚOSError)Úpath© r   ú./opt/alt/python38/lib64/python3.8/sysconfig.pyÚ_safe_realpathi   s    
r!   r   )z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEc                 C   s,   dD ]"}t j t j | d|¡¡r dS qdS )N)ZSetupzSetup.localZModulesTF)Úosr   ÚisfileÚjoin)ÚdÚfnr   r   r    Ú_is_python_source_dir~   s    r'   Ú_homec                 C   s0   | r,t j | ¡ t j t j td¡¡¡r,tS | S )NZPCbuild)r"   r   ÚnormcaseÚ
startswithr$   Ú_PREFIX)r%   r   r   r    Ú_fix_pcbuild‡   s
    ÿr,   Fc                 C   s   | rt rtt ƒS ttƒS r   )Ú	_sys_homer'   Ú_PROJECT_BASE)Z
check_homer   r   r    Úis_python_build�   s    r/   T)r   r   z{srcdir}/Includer   z{projectbase}/.r   c                 C   sn   z| j f |ŽW S  tk
rh   z| j f tjŽW  Y S  tk
rb } ztd| ƒd ‚W 5 d }~X Y nX Y nX d S )Nz{%s})ÚformatÚKeyErrorr"   ÚenvironÚAttributeError)ÚsZ
local_varsÚvarr   r   r    Ú_subst_varsœ   s    r6   c                 C   s0   |   ¡ }| ¡ D ]\}}||kr"q|| |< qd S r   )ÚkeysÚitems)Ztarget_dictZ
other_dictZtarget_keysÚkeyÚvaluer   r   r    Ú_extend_dict¥   s
    r;   c                 C   sb   i }|d kri }t |tƒ ƒ t|   ¡ D ]4\}}tjdkrFtj |¡}tj t	||ƒ¡||< q(|S )N)Úposixr   )
r;   r   Ú_INSTALL_SCHEMESr8   r"   Únamer   Ú
expanduserÚnormpathr6   )ÚschemeÚvarsÚresr9   r:   r   r   r    Ú_expand_vars­   s    
rD   c                   C   s   t jdkrdS t jS )Nr<   r   )r"   r>   r   r   r   r    Ú_get_default_schemeº   s    
rE   c                  C   sz   t j dd ¡} | r| S dd„ }t jdkrBt j d¡p6d}||dƒS tjdkrptjrp|dd	tjd
tjd d…  ƒS |ddƒS )NÚPYTHONUSERBASEc                  W   s   t j t jj| Ž ¡S r   )r"   r   r?   r$   )Úargsr   r   r    ÚjoinuserÈ   s    z_getuserbase.<locals>.joinuserr   ÚAPPDATAú~ÚPythonÚdarwinÚLibraryr   r   z.local)r"   r2   Úgetr>   ÚsysÚplatformÚ
_frameworkÚversion_info)Úenv_baserH   Úbaser   r   r    Ú_getuserbaseÃ   s    


ÿrU   c              	   C   s`  dd l }| d¡}| d¡}| d¡}|d kr2i }i }i }t| dd��}| ¡ }	W 5 Q R X |	D ]¦}
|
 d¡s^|
 ¡ dkrzq^| |
¡}|r^| d	d
¡\}}| ¡ }| dd¡}d|kr¾|||< q^z|t	krÌt
‚t|ƒ}W n$ t
k
rú   | dd¡||< Y q^X |||< q^t| ¡ ƒ}d}t|ƒdk�r&t|ƒD �]ò}|| }| |¡}| |¡}|�rv|�rv| ¡ | ¡ k �rp|n|}n|�r€|n|}|d k	�r| d	¡}d}||k�r´t|| ƒ}nˆ||k�rÄd}nx|tjk�rÜtj| }n`||k�r0| d¡�r
|dd … |k�r
d}n$d| |k�rd}nt|d|  ƒ}nd ||< }|�r|| ¡ d … }|d | ¡ … | | }d|k�r~|||< nŒz|t	k�rŽt
‚t|ƒ}W n" t
k
�rº   | ¡ ||< Y n
X |||< | |¡ | d¡�r|dd … |k�r|dd … }||k�r|||< n|||< | |¡ �q,�q| ¡ D ]"\}}t|tƒ�r.| ¡ ||< �q.| |¡ |S )Nr   z"([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_]*)}Úsurrogateescape)Úerrorsú#Ú é   r   z$$ú$)ZCFLAGSZLDFLAGSZCPPFLAGSTFZPY_é   )ÚreÚcompileÚopenÚ	readlinesr*   ÚstripÚmatchÚgroupÚreplaceÚ_ALWAYS_STRÚ
ValueErrorÚintÚlistr7   ÚlenÚtupleÚsearchÚstartÚstrr"   r2   ÚendÚremover8   Ú
isinstanceÚupdate)ÚfilenamerB   r]   Z_variable_rxZ_findvar1_rxZ_findvar2_rxZdoneZnotdoneÚfÚlinesÚlineÚmÚnÚvZtmpvZ	variablesZrenamed_variablesr>   r:   Zm1Zm2ÚfoundÚitemZafterÚkr   r   r    Ú_parse_makefileÖ   s¢    	












ÿ



ÿ


r|   c                  C   sd   t rtj tptd¡S ttdƒr0dttj	f } nd} ttj
dƒrP| dtj
j 7 } tj tdƒ| d¡S )NZMakefileÚabiflagszconfig-%s%sZconfigÚ
_multiarchz-%sr   )Ú_PYTHON_BUILDr"   r   r$   r-   r.   ÚhasattrrO   Ú_PY_VERSION_SHORTr}   Úimplementationr~   r   )Zconfig_dir_namer   r   r    r   W  s    
c                
   C   s(   t j ddjtjtjttjddƒd�¡S )NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r~   rY   )ZabirP   Z	multiarch)	r"   r2   rN   r0   rO   r}   rP   Úgetattrr‚   r   r   r   r    Ú_get_sysconfigdata_named  s    ýÿr„   c               
   C   sÊ  dd l } i }tƒ }zt||ƒ W nJ tk
rj } z,d| }t|dƒrR|d|j  }t|ƒ‚W 5 d }~X Y nX tƒ }z"t|ƒ�}t||ƒ W 5 Q R X W nJ tk
rÞ } z,d| }t|dƒrÆ|d|j  }t|ƒ‚W 5 d }~X Y nX t	rð|d |d< t
ƒ }dtjk�r$dd l}| |¡}	||	_|	tj|< dtƒ tf }
ttd	ƒ�rF|
d
7 }
tj|
dd� tj |
|d ¡}t|ddd��(}| d¡ | d¡ | j ||d� W 5 Q R X tdddd��}| |
¡ W 5 Q R X d S )Nr   z.invalid Python installation: unable to open %sÚstrerrorz (%s)ZLDSHAREDZ	BLDSHAREDrL   zbuild/lib.%s-%sZgettotalrefcountz-pydebugT)Úexist_okz.pyÚwÚutf8)ÚencodingzB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )Ústreamzpybuilddir.txt)Úpprintr   r|   r   r€   r…   r   r_   r   r   r„   rO   rP   ÚtypesÚ
ModuleTypeÚbuild_time_varsÚmodulesr   r�   r"   Úmakedirsr   r$   Úwrite)r‹   rB   ZmakefileÚeÚmsgZconfig_hrs   r>   rŒ   ÚmoduleZ
pybuilddirZdestfiler   r   r    Ú_generate_posix_varsm  sL    






r•   c                 C   s0   t ƒ }t|tƒ tƒ dgdƒ}|j}|  |¡ d S )NrŽ   r   )r„   Ú
__import__ÚglobalsÚlocalsrŽ   rq   )rB   r>   Z_temprŽ   r   r   r    Ú_init_posix¬  s    r™   c                 C   sf   dd l }tdƒ| d< tdƒ| d< tdƒ| d< | ¡ d | d< d	| d
< t| d< tj ttj	ƒ¡| d< d S )Nr   r   ZLIBDESTr   Z
BINLIBDESTr   Z	INCLUDEPYÚ
EXT_SUFFIXz.exeZEXEZVERSIONZBINDIR)
Ú_impr   Úextension_suffixesÚ_PY_VERSION_SHORT_NO_DOTr"   r   Údirnamer!   rO   Ú
executable)rB   r›   r   r   r    Ú_init_non_posix´  s    r    c           	      C   s®   |d kri }dd l }| d¡}| d¡}|  ¡ }|s6qª| |¡}|rŒ| dd¡\}}z|tkrbt‚t|ƒ}W n tk
r€   Y nX |||< q(| |¡}|r(d|| d¡< q(|S )Nr   z"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rZ   r   )r]   r^   Úreadlinerb   rc   re   rf   rg   )	ÚfprB   r]   Z	define_rxZundef_rxru   rv   rw   rx   r   r   r    r   Å  s,    




c                  C   sB   t r,tjdkr"tj tptd¡} q4tp(t} ntdƒ} tj | d¡S )Nr   ZPCr   zpyconfig-64.h)r   r"   r>   r   r$   r-   r.   r   )Zinc_dirr   r   r    r   ç  s    

c                   C   s   t ttƒƒS r   )rj   Úsortedr=   r   r   r   r    r   ó  s    c                   C   s   t S r   )Ú_SCHEME_KEYSr   r   r   r    r	   ø  s    c                 C   s   |rt | |ƒS t|  S d S r   )rD   r=   )rA   rB   Úexpandr   r   r    r
   ý  s    
c                 C   s   t |||ƒ|  S r   )r
   )r>   rA   rB   r¥   r   r   r    r   	  s    c                  G   sx  t d k�rFi a tt d< tt d< tt d< tt d< tt d< tt d< tt d< tt d< tt d	< tt d
< zt	j
t d< W n tk
rˆ   dt d< Y nX tjdkrœtt ƒ tjdkr®tt ƒ t  d¡}|d k	rÈ|t d< tƒ t d< t  dt¡}tjdk�rt�rtj tƒ ¡}tj ||¡}ntj tƒ ¡}t|ƒt d< t	jdk�rFdd l}| t ¡ | �rpg }| D ]}| t  |¡¡ �qT|S t S d S )NÚprefixÚexec_prefixZ
py_versionZpy_version_shortZpy_version_nodotZinstalled_baserT   Zinstalled_platbaseZplatbaseZprojectbaser}   rY   r   r<   rš   ÚSOÚuserbaseÚsrcdirrL   r   )Ú_CONFIG_VARSr+   Ú_EXEC_PREFIXÚ_PY_VERSIONr�   r�   Ú_BASE_PREFIXÚ_BASE_EXEC_PREFIXr.   rO   r}   r3   r"   r>   r    r™   rN   rU   r   r   rž   r   r$   r!   rP   Ú_osx_supportZcustomize_config_varsÚappend)rG   r¨   rª   rT   r°   Zvalsr>   r   r   r    r     sP    





c                 C   s*   | dkrdd l }| dtd¡ tƒ  | ¡S )Nr¨   r   z SO is deprecated, use EXT_SUFFIXr   )ÚwarningsÚwarnÚDeprecationWarningr   rN   )r>   r²   r   r   r    r   ^  s    c            
      C   sÎ  t jdkrFdtj ¡ krdS dtj ¡ kr.dS dtj ¡ kr@dS tjS t jdksZtt d	ƒs`tjS d
t jkrtt jd
 S t  ¡ \} }}}}|  ¡  	dd¡} | 	dd¡}| 	dd¡}| d d… dkrÊd| |f S | d d… dk�r,|d dk�rÀd} dt
|d ƒd |dd … f }dddœ}|d|tj  7 }n”| d d… dk�rLd| ||f S | d d … d!k�rŽd!} dd l}| d"¡}| |¡}|�rÀ| ¡ }n2| d d … d#k�rÀdd l}	|	 tƒ | ||¡\} }}d$| ||f S )%Nr   Zamd64z	win-amd64z(arm)z	win-arm32z(arm64)z	win-arm64r<   ÚunameZ_PYTHON_HOST_PLATFORMú/rY   ú Ú_ú-é   Zlinuxz%s-%sZsunosr   Ú5Zsolarisz%d.%sr\   r   Z32bitZ64bit)iÿÿÿl   ÿÿÿÿ z.%sZaixz%s-%s.%sé   Úcygwinz[\d.]+rL   z%s-%s-%s)r"   r>   rO   ÚversionÚlowerrP   r€   r2   rµ   rd   rg   Úmaxsizer]   r^   rb   rc   r°   Zget_platform_osxr   )
ZosnameZhostÚreleaser¾   ÚmachineZbitnessr]   Zrel_rerv   r°   r   r   r    r   j  sT    


 



  þ
c                   C   s   t S r   )r�   r   r   r   r    r   º  s    c                 C   sF   t t| ¡ ƒƒD ]0\}\}}|dkr0td|  ƒ td||f ƒ qd S )Nr   z%s: z
	%s = "%s")Ú	enumerater£   r8   Úprint)Útitler   Úindexr9   r:   r   r   r    Ú_print_dict¾  s    rÇ   c                   C   sf   dt jkrtƒ  d S tdtƒ  ƒ tdtƒ  ƒ tdtƒ  ƒ tƒ  tdtƒ ƒ tƒ  tdt	ƒ ƒ d S )Nz--generate-posix-varszPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ	Variables)
rO   Úargvr•   rÄ   r   r   rE   rÇ   r
   r   r   r   r   r    Ú_mainÅ  s    
rÉ   Ú__main__)F)N)N)Dr"   rO   Zos.pathr   r   Ú__all__re   r=   r¤   r¾   Úsplitr­   rR   r�   r�   r   r@   r¦   r+   Úbase_prefixr®   r§   r¬   Úbase_exec_prefixr¯   r«   Z
_USER_BASEr!   rŸ   rž   r.   Úgetcwdr>   r¿   Úendswithr$   r2   r'   rƒ   r-   r,   r/   r   rA   r6   r;   rD   rE   rU   r|   r   r„   r•   r™   r    r   r   r   r	   r
   r   r   r   r   r   rÇ   rÉ   Ú__name__r   r   r   r    Ú<module>   sü   õÿöøøù
ù
ùÌ?ÿ
		
 	?
"MP
