???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
i,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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dnZejj	 d  Z
d5ejdd6  Zd7ejdd6  Ze jjejZe jjejZe jjejZe jjejZdadZd8d9 ZejrLe jjeejZnee j Ze jd:krej  j!doree jj"eeeZd=e j#kree j#d= Zd>d? Z$e%ed@dZ&e&re jd:kre&j  j!dpre jje jje&Z&dqdBdCZ'e'dDZ(e(r,x&drD ]Z)dGee) d2< dHee) dI< q
W dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dsdTdUZ/dVd Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4dtd_dZ5d`d Z6dad Z7dbd Z8e- ddDfdcd	Z9e- ddDfdddZ:ded Z;dfd Z<dgd
 Z=dhd Z>didj Z?dkdl Z@eAdmkre@  dS )u    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/{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ntnt_user
posix_userosx_framework_userr   r   r   r   r   r   r   z%d.%d   z%d%dc             C   s"   yt | S  tk
r   | S X d S )N)r   OSError)path r    !/usr/lib64/python3.6/sysconfig.py_safe_realpathc   s    r"   r   \pcbuild\win32\pcbuild\amd64Z_PYTHON_PROJECT_BASEc             C   s.   x(dD ] }t jjt jj| d|rdS qW dS )N
Setup.distSetup.localModulesTF)r%   r&   )osr   isfilejoin)dfnr    r    r!   _is_python_source_dirx   s    
r-   _homeFc             C   s   | rt rtt S ttS )N)	_sys_homer-   _PROJECT_BASE)
check_homer    r    r!   is_python_build   s    r2   Tr   r   z{srcdir}/Includez{projectbase}/.r   c             C   sd   y| j f |S  tk
r^   y| j f tjS  tk
rX } ztd| W Y d d }~X nX Y nX d S )Nz{%s})formatKeyErrorr(   environAttributeError)s
local_varsvarr    r    r!   _subst_vars   s    r:   c             C   s4   | j  }x&|j D ]\}}||kr$q|| |< qW d S )N)keysitems)target_dict
other_dicttarget_keyskeyvaluer    r    r!   _extend_dict   s
    rB   c             C   sf   i }|d kri }t |t  xDt|  j D ]4\}}tjdkrHtjj|}tjjt	||||< q*W |S )Nposixr   )rC   r   )
rB   r   _INSTALL_SCHEMESr<   r(   namer   
expandusernormpathr:   )schemevarsresr@   rA   r    r    r!   _expand_vars   s    
rK   c               C   s   t jdkrdS t jS )NrC   r   )r(   rE   r    r    r    r!   _get_default_scheme   s    
rL   c              C   s   t jjdd } dd }t jdkrBt jjdp.d}| r8| S ||dS tjdkr|td	}|r|| r`| S |dd
|dtjd d  S | r| S |ddS d S )NPYTHONUSERBASEc              W   s   t jjt jj|  S )N)r(   r   rF   r*   )argsr    r    r!   joinuser   s    z_getuserbase.<locals>.joinuserr   APPDATA~PythondarwinPYTHONFRAMEWORKLibraryz%d.%dr   z.local)r(   r5   getrE   sysplatformr   version_info)env_baserO   base	frameworkr    r    r!   _getuserbase   s"    



r]   c             C   sZ  dd l }|jd}|jd}|jd}|d kr2i }i }i }t| dd}|j }	W d Q R X x|	D ]}
|
jds`|
j dkr|q`|j|
}|r`|jd	d
\}}|j }|jdd}d|kr|||< q`yt	|}W n$ t
k
r   |jdd||< Y q`X |||< q`W t|j }d}x
t|dkrxt|D ]}|| }|j|}|j|}|rv|rv|j |j k rp|n|}n|r|n|}|d k	r|jd	}d}||krt|| }n||krd}nx|tjkrtj| }n`||kr0|jdr
|dd  |kr
d}n$d| |krd}nt|d|  }nd ||< }|r||j d  }|d |j  | | }d|kr~|||< n~yt	|}W n" t
k
r   |j ||< Y n
X |||< |j| |jdr|dd  |kr|dd  }||kr|||< n|||< |j| q,W qW x.|j D ]"\}}t|tr&|j ||< q&W |j| |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$$$CFLAGSLDFLAGSCPPFLAGSTFPY_   )rd   re   rf   )recompileopen	readlines
startswithstripmatchgroupreplaceint
ValueErrorlistr;   lentuplesearchstartstrr(   r5   endremover<   
isinstanceupdate)filenamerI   ri   _variable_rx_findvar1_rx_findvar2_rxdonenotdoneflineslinemnvtmpv	variablesrenamed_variablesrE   rA   m1m2founditemafterkr    r    r!   _parse_makefile   s    	


















r   c              C   sd   t rtj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jtd| dS )NMakefileabiflagszconfig-%s%sconfig
_multiarchz-%sr   )_PYTHON_BUILDr(   r   r*   r/   r0   hasattrrW   _PY_VERSION_SHORTr   implementationr   r   )config_dir_namer    r    r!   r   L  s    
c            	   C   s(   t jjddjtjtjttjdddS )N_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r   ra   )abirX   	multiarch)	r(   r5   rV   r3   rW   r   rX   getattrr   r    r    r    r!   _get_sysconfigdata_nameY  s
    r   c           ,   C   s  dd l } i }t }yt|| W nJ tk
rj } z.d| }t|drR|d|j  }t|W Y d d }~X nX t }y"t|}t|| W d Q R X W nJ tk
r } z.d| }t|dr|d|j  }t|W Y d d }~X nX t	r|d |d< t
 }dtjkr$dd l}|j|}	||	_|	tj|< dt tf }
ttd	rF|
d
7 }
tj|
dd tjj|
|d }t|ddd(}|jd |jd | j ||d W d Q R X tdddd}|j|
 W d Q R X d S )Nr   z.invalid Python installation: unable to open %sstrerrorz (%s)LDSHARED	BLDSHAREDrS   zbuild/lib.%s-%sgettotalrefcountz-pydebugT)exist_okz.pywutf8)encodingzB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )streamzpybuilddir.txtascii)pprintr   r   r   r   r   r   rk   r   r   r   rW   rX   types
ModuleTypebuild_time_varsmodulesr   r   r(   makedirsr   r*   write)r   rI   makefileemsgconfig_hr   rE   r   module
pybuilddirdestfiler    r    r!   _generate_posix_varsb  sL    






r   c             C   s0   t  }t|t t dgd}|j}| j| d S )Nr   r   )r   
__import__globalslocalsr   r}   )rI   rE   _tempr   r    r    r!   _init_posix  s    r   c             C   sV   t d| d< t d| d< t d| d< d| d< d	| d
< t| d< tjjttj| d< d S )Nr   LIBDESTr   
BINLIBDESTr   	INCLUDEPYz.pyd
EXT_SUFFIXz.exeEXEVERSIONBINDIR)r   _PY_VERSION_SHORT_NO_DOTr(   r   dirnamer"   rW   
executable)rI   r    r    r!   _init_non_posix  s    r   c       	      C   s   |d kri }dd l }|jd}|jd}xx| j }|s8P |j|}|r|jdd\}}yt|}W n tk
rv   Y nX |||< q*|j|}|r*d||jd< q*W |S )Nr   z"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rb   r   )ri   rj   readlinero   rp   rr   rs   )	fprI   ri   	define_rxundef_rxr   r   r   r   r    r    r!   r     s*    




c              C   sB   t r,tjdkr"tjjtptd} q4tp(t} ntd} tjj| dS )Nr   PCr   zpyconfig-64.h)r   r(   rE   r   r*   r/   r0   r   )inc_dirr    r    r!   r     s    

c               C   s   t ttS )N)rv   sortedrD   r    r    r    r!   r     s    c               C   s   t S )N)_SCHEME_KEYSr    r    r    r!   r	     s    c             C   s   |rt | |S t|  S d S )N)rK   rD   )rH   rI   expandr    r    r!   r
     s    
c             C   s   t ||||  S )N)r
   )rE   rH   rI   r   r    r    r!   r     s    c              G   s|  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
< yt	j
t d< W n tk
r   dt d< Y nX tjdkrtt  tjdkrtt  t jd}|d k	r|t d< t t d< t jdt}tjdkrtrtjjt }tjj||}ntjjt }t|t d< t	jdkrFdd l}|jt  | rtg }x| D ]}|jt j| qVW |S t S d S )Nprefixexec_prefix
py_versionpy_version_shortpy_version_nodotinstalled_baser[   installed_platbaseplatbaseprojectbaser   ra   r   rC   r   SOuserbasesrcdirrS   r   )_CONFIG_VARS_PREFIX_EXEC_PREFIX_PY_VERSIONr   r   _BASE_PREFIX_BASE_EXEC_PREFIXr0   rW   r   r6   r(   rE   r   r   rV   r]   r   r   r   r   r*   r"   rX   _osx_supportcustomize_config_varsappend)rN   r   r   r[   r   valsrE   r    r    r!   r     sP    






c             C   s*   | dkrdd l }|jdtd t j| S )Nr   r   z SO is deprecated, use EXT_SUFFIXr   )warningswarnDeprecationWarningr   rV   )rE   r   r    r    r!   r   P  s    c              C   s  t jdkrnd} tjj| }|d(kr(tjS tjjd|}tj|t|  | j }|dkr\dS |dkrhdS tjS t jd	kstt d
 rtjS dt j	krt j	d S t j
 \}}}}}|j jdd}|jdd}|jdd}|d d dkrd||f S |d d dkrV|d dkrd}dt|d d |dd  f }ddd}	|d|	tj  7 }n|d d d krtd||f S |d d d!krd"|||f S |d d# d$krd$}dd l}
|
jd%}|j|}|r|j }n2|d d# d&krdd l}|jt |||\}}}d'|||f S ))Nr   z bit (rb   )amd64z	win-amd64itaniumzwin-ia64rC   uname_PYTHON_HOST_PLATFORM/ra    _-   linuxz%s-%ssunosr   5solarisz%d.%srh   r   32bit64bit)il    z.%s   irixaixz%s-%s.%s   cygwinz[\d.]+rS   z%s-%s-%s)r(   rE   rW   versionfindrX   ru   lowerr   r5   r   rq   rr   maxsizeri   rj   ro   rp   r   get_platform_osxr   )r   ijlookosnamehostreleaser  machinebitnessri   rel_rer   r   r    r    r!   r   \  sZ    


 



c               C   s   t S )N)r   r    r    r    r!   r     s    c             C   sJ   xDt t|j D ]0\}\}}|dkr2td|   td||f  qW d S )Nr   z%s: z
	%s = "%s")	enumerater   r<   print)titler   indexr@   rA   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"Paths	Variables)
rW   argvr   r  r   r   rL   r  r
   r   r    r    r    r!   _main  s    
r  __main__)r   r   r   r   r   r   r   )r#   r$   )r#   r$   )F)r   r   )N)N)Br(   rW   Zos.pathr   r   __all__rD   r   r  splitr   rY   r   r   r   rG   r   r   base_prefixr   r   r   base_exec_prefixr   r   
_USER_BASEr"   r   r   r0   getcwdrE   r  endswithr*   r5   r-   r   r/   r2   r   rH   r:   rB   rK   rL   r]   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[
