???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dFR  ã                
   @   sÂ   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Ze  e¡Z	G dd„ dƒZ
ddd„Zddd„Zed	kr¾d
Zzeƒ  d ZW n4 ek
r² Z zede ejd W 5 dZ[X Y nX e e¡ dS )é    Nc                   @   s†   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zej	dkrHddd„Z
n
ddd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) Ú
EnvBuilderFNc                 C   s(   || _ || _|| _|| _|| _|| _d S ©N©Úsystem_site_packagesÚclearÚsymlinksÚupgradeÚwith_pipÚprompt)Úselfr   r   r   r   r	   r
   © r   ú%/usr/lib64/python3.8/venv/__init__.pyÚ__init__+   s    zEnvBuilder.__init__c                 C   sx   t j |¡}|  |¡}| j}d| _|  |¡ |  |¡ | jrF|  |¡ | j	s`|  
|¡ |  |¡ |rtd| _|  |¡ d S )NFT)ÚosÚpathÚabspathÚensure_directoriesr   Úcreate_configurationÚsetup_pythonr	   Ú
_setup_pipr   Úsetup_scriptsÚ
post_setup)r   Úenv_dirÚcontextZtrue_system_site_packagesr   r   r   Úcreate4   s    





zEnvBuilder.createc                 C   s\   t  |¡D ]L}t j ||¡}t j |¡s4t j |¡r@t  |¡ q
t j |¡r
t 	|¡ q
d S r   )
r   Úlistdirr   ÚjoinÚislinkÚisfileÚremoveÚisdirÚshutilZrmtree)r   r   Úfnr   r   r   Úclear_directoryN   s    zEnvBuilder.clear_directoryc                 C   sŽ  dd„ }t j |¡r$| jr$|  |¡ t ¡ }||_t j |¡d |_	| j
d k	rT| j
n|j	}d| |_
||ƒ tj}t j t j |¡¡\}}||_||_||_tjdkrÀd}d}	t j |dd	¡}
n(d
}d}	t j |ddtjd d…  d	¡}
t j ||	¡ |_}||ƒ ||
ƒ tjdkrXt jdkrXtjdkrXt j |d¡}t j |¡sXt  d|¡ t j ||¡ |_}||_t j ||¡|_||ƒ |S )Nc                 S   s@   t j | ¡st  | ¡ n$t j | ¡s0t j | ¡r<td|  ƒ‚d S )NzUnable to create directory %r)r   r   ÚexistsÚmakedirsr   r   Ú
ValueError)Údr   r   r   Úcreate_if_needed^   s    z7EnvBuilder.ensure_directories.<locals>.create_if_neededé   z(%s) Zwin32ZScriptsZIncludeÚLibzsite-packagesÚbinZincludeÚlibzpython%d.%dé   l        ÚposixÚdarwinÚlib64)r   r   r$   r   r#   ÚtypesÚSimpleNamespacer   ÚsplitÚenv_namer
   ÚsysÚ_base_executabler   Ú
executableÚ
python_dirZ
python_exeÚplatformr   Úversion_infoZinc_pathÚmaxsizeÚnameÚsymlinkÚbin_pathÚbin_nameÚenv_exe)r   r   r(   r   r
   r7   ÚdirnameZexenameZbinnameZincpathZlibpathr   Z	link_pathÚbinpathr   r   r   r   V   sL    



þÿzEnvBuilder.ensure_directoriesc              	   C   s˜   t j |jd¡ |_}t|dddj}| d|j ¡ | jrBd}nd}| d| ¡ | d	t	j
d d
…  ¡ | jd k	rŠ| d| j›d¡ W 5 Q R X d S )Nz
pyvenv.cfgÚwúutf-8)Úencodingz
home = %s
ÚtrueZfalsez"include-system-site-packages = %s
zversion = %d.%d.%d
é   z	prompt = Ú
)r   r   r   r   Zcfg_pathÚopenÚwriter8   r   r5   r:   r
   )r   r   r   ÚfZinclr   r   r   r   Š   s    	
zEnvBuilder.create_configurationÚntc                 C   s~   | j  }|sjz6tj |¡s@|r4t tj |¡|¡ nt ||¡ W n& tk
rh   t d||¡ d}Y nX |rzt	 
||¡ d S )NúUnable to symlink %r to %rT)r   r   r   r   r=   ÚbasenameÚ	ExceptionÚloggerÚwarningr!   Úcopyfile)r   ÚsrcÚdstÚrelative_symlinks_okZ
force_copyr   r   r   Úsymlink_or_copy    s    
zEnvBuilder.symlink_or_copyc                 C   s\  t j |¡ot j |¡ }| jr€|s€t j |¡s€z,|rLt  t j |¡|¡ nt  ||¡ W d S  tk
r~   t	 
d||¡ Y nX t j t j |¡¡\}}t j t j t¡dd|| ¡}t d¡sÎt j |¡s$| d¡rìd| }|d d… }|dkrúd}n|d	krd
}t j t j |¡|| ¡}n|}t j |¡sL|sHt	 
d|¡ d S t ||¡ d S )NrM   ÚscriptsrL   TZ_déþÿÿÿÚpythonZvenvlauncherZpythonwZvenvwlauncherzUnable to copy %r)r   r   Úlexistsr$   r   r   r=   rN   rO   rP   rQ   Úsplitextr   rA   Ú__file__Ú	sysconfigÚis_python_buildr   Úendswithr!   rR   )r   rS   rT   rU   Zbad_srcrN   ZextZsrcfnr   r   r   rV   ³   s<    ý

c                 C   s¦  |j }|j}| j}|j}tjdkr–||j|ƒ tj |¡sFt 	|d¡ dD ]F}tj 
||¡}tj |¡sJ||j|dd tj |¡sJt 	|d¡ qJn| jrÊdd„ t |¡D ƒ}t d¡rÖdd„ |D ƒ}nd	d
ddg}|D ]2}tj 
||¡}tj |¡rÚ||tj 
||¡ƒ qÚt d¡r¢t |j¡D ]z\}	}
}d|kr&tj |	¡}tj 
|jd|¡}tj |¡spt |¡ tj 
|	d¡}tj 
|d¡}t ||¡  q¢q&d S )NrL   ií  )rY   Zpython3T)rU   c                 S   s,   g | ]$}t j t j |¡d  ¡dkr|‘qS )r)   )ú.exez.dll)r   r   Únormcaser[   ©Ú.0rK   r   r   r   Ú
<listcomp>û   s   ÿz+EnvBuilder.setup_python.<locals>.<listcomp>c                 S   s"   g | ]}t j |¡ d ¡r|‘qS ))rY   Z	vcruntime)r   r   ra   Ú
startswithrb   r   r   r   rd      s   ÿz
python.exezpython_d.exezpythonw.exezpythonw_d.exezinit.tclr*   )r>   r@   rV   r8   r   r<   r7   r   r   Úchmodr   r$   r   r   r]   r^   rZ   ÚwalkrN   r   r%   r!   rR   )r   r   rB   r   ZcopierrA   ÚsuffixÚsuffixesrS   ÚrootÚdirsÚfilesZtcldirrT   r   r   r   r   Þ   sP    
ÿ
ÿÿ

zEnvBuilder.setup_pythonc                 C   s$   |j ddddg}tj|tjd d S )Nz-ImZ	ensurepipú	--upgradez--default-pip)Ústderr)r@   Ú
subprocessZcheck_outputZSTDOUT)r   r   Úcmdr   r   r   r     s    
ÿzEnvBuilder._setup_pipc                 C   s2   t j t j t¡¡}t j |d¡}|  ||¡ d S )NrW   )r   r   r   rA   r\   r   Úinstall_scripts)r   r   r   r   r   r   r   #  s    zEnvBuilder.setup_scriptsc                 C   s   d S r   r   )r   r   r   r   r   r   2  s    zEnvBuilder.post_setupc                 C   sJ   |  d|j¡}|  d|j¡}|  d|j¡}|  d|j¡}|  d|j¡}|S )NZ__VENV_DIR__Z__VENV_NAME__Z__VENV_PROMPT__Z__VENV_BIN_NAME__Z__VENV_PYTHON__)Úreplacer   r4   r
   r?   r@   )r   Útextr   r   r   r   Úreplace_variables<  s    zEnvBuilder.replace_variablesc                 C   s®  |j }t|ƒ}t |¡D ]Ž\}}}||krX|d d … D ]}|dtjfkr8| |¡ q8q|D ]H}	tjdkr‚|	 d¡r‚|	 d¡r‚q\tj 	||	¡}
||d …  
tj¡dd … }|s¶|}ntjj	|f|žŽ }tj |¡sÞt |¡ tj 	||	¡}t|
dƒ}	|	 ¡ }W 5 Q R X |
 d¡srz$| d¡}|  ||¡}| d¡}W n6 tk
rp } zd }t d|
|¡ W 5 d }~X Y nX |d k	r\t|d	ƒ}	|	 |¡ W 5 Q R X t |
|¡ q\qd S )
NÚcommonrL   rY   )r`   z.pdbr-   ÚrbrD   z+unable to copy script %r, may be binary: %sÚwb)r>   Úlenr   rg   r<   r   re   r_   r   r   r3   Úsepr$   r%   rI   ÚreadÚdecodert   ÚencodeÚUnicodeErrorrP   rQ   rJ   r!   Zcopymode)r   r   r   rB   Zplenrj   rk   rl   r'   rK   Zsrcfilerh   ZdstdirZdstfileÚdataÚer   r   r   rq   N  sL    
ÿ

 ÿzEnvBuilder.install_scripts)FFFFFN)F)F)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r   r   r   r<   rV   r   r   r   r   rt   rq   r   r   r   r   r      s&           ÿ
	4

+<	
r   Fc                 C   s    t |||||d}| | ¡ d S )N)r   r   r   r	   r
   )r   r   )r   r   r   r   r	   r
   Úbuilderr   r   r   r     s      þr   c           	      C   s^  d}t jdk rd}ntt dƒs"d}|s2tdƒ‚n(dd l}|jtddd	}|jd
dddd |jdddddd tj	dkr€d}nd}| 
¡ }|jd|dddd |jd| dddd |jdddddd |jddddd d |jd!d"ddd#d$ |jd%d&d' | | ¡}|jr"|jr"td(ƒ‚t|j|j|j|j|j|jd)}|jD ]}| |¡ qHd S )*NT)rG   rG   FÚbase_prefixz.This script is only for use with Python >= 3.3r   zFCreates virtual Python environments in one or more target directories.z|Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory.)ÚprogZdescriptionZepilogrk   ZENV_DIRú+z)A directory to create the environment in.)ÚmetavarÚnargsÚhelpz--system-site-packagesÚ
store_trueÚsystem_sitezDGive the virtual environment access to the system site-packages dir.)ÚdefaultÚactionÚdestr‰   rL   z
--symlinksr   z[Try to use symlinks rather than copies, when symlinks are not the default for the platform.z--copiesZstore_falsez\Try to use copies rather than symlinks, even when symlinks are the default for the platform.z--clearr   zcDelete the contents of the environment directory if it already exists, before environment creation.rm   r   zlUpgrade the environment directory to use this version of Python, assuming Python has been upgraded in-place.z--without-pipr	   z]Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default))rŽ   rŒ   r   r‰   z--promptz;Provides an alternative prompt prefix for this environment.)r‰   z1you cannot supply --upgrade and --clear together.r   )r5   r:   Úhasattrr&   ÚargparseÚArgumentParserr€   Úadd_argumentr   r<   Zadd_mutually_exclusive_groupÚ
parse_argsr   r   r   r‹   r   r	   r
   rk   r   )	ÚargsZ
compatibler   ÚparserZuse_symlinksÚgroupZoptionsrƒ   r'   r   r   r   Úmain‰  s|    

û

ÿ þ
 þ
 þ
 ÿ
 ÿ þÿ
û
r—   Ú__main__r)   z	Error: %s)Úfile)FFFFN)N)Zloggingr   r!   ro   r5   r]   r1   Z	getLoggerr€   rP   r   r   r—   ZrcrO   r   Úprintrn   Úexitr   r   r   r   Ú<module>   s0   
  q      ÿ

H$