
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jqM  ã               @   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 jeƒZ	G dd„ dƒZ
ddd„Zddd„Zed	kr¾d
Zyeƒ  d ZW n4 ek
r² Z zede ejd� W Y ddZ[X nX ej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rDdd„ Z
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.6/venv/__init__.pyÚ__init__+   s    zEnvBuilder.__init__c             C   sx   t jj|ƒ}| j|ƒ}| j}d| _| j|ƒ | j|ƒ | jrF| j|ƒ | j	s`| j
|ƒ | j|ƒ |rtd| _| j|ƒ 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`   xZt j|ƒD ]L}t jj||ƒ}t jj|ƒs6t jj|ƒrBt j|ƒ qt jj|ƒrtj	|ƒ qW d S )N)
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j|ƒr$| jr$| j|ƒ tjƒ }||_t jj|ƒd |_	| j
d k	rT| j
n|j	}d| |_
||ƒ t j}tjdkr�d|kr�t jd }ntj}t jjt jj|ƒƒ\}}||_||_||_tjdkräd}	d	}
t jj|d
dƒ}n(d}	d}
t jj|ddtjd d…  dƒ}t jj||
ƒ |_}||ƒ ||ƒ tjdk�r|t jdk�r|tjdk�r|t jj|dƒ}t jj|ƒ�s|t jd|ƒ t jj||	ƒ |_}|	|_t jj||ƒ|_||ƒ |S )Nc             S   s@   t jj| ƒst j| ƒ n$t jj| ƒs0t j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) ÚdarwinÚ__PYVENV_LAUNCHER__Zwin32ZScriptsZIncludeÚLibzsite-packagesÚbinÚincludeÚlibzpython%d.%dé   é    ÚposixÚlib64l        )r   r   r"   r   r!   ÚtypesÚSimpleNamespacer   ÚsplitÚenv_namer   ÚenvironÚsysÚplatformÚ
executabler   Ú
python_dirZ
python_exer   Úversion_infoZinc_pathÚmaxsizeÚnameÚsymlinkÚbin_pathÚbin_nameÚenv_exe)r	   r   r&   r   r   Úenvr9   ÚdirnameZexenameZbinnameZincpathZlibpathr   Z	link_pathÚbinpathr
   r
   r   r   V   sN    



zEnvBuilder.ensure_directoriesc             C   sz   t jj|jdƒ |_}t|ddd��L}|jd|j ƒ | jrBd}nd}|jd| ƒ |jd	t	j
d d
…  ƒ W d Q R X d S )Nz
pyvenv.cfgÚwzutf-8)Úencodingz
home = %s
ÚtrueZfalsez"include-system-site-packages = %s
zversion = %d.%d.%d
é   )r   r   r   r   Zcfg_pathÚopenÚwriter:   r   r7   r;   )r	   r   r   ÚfZinclr
   r
   r   r   Ž   s    	zEnvBuilder.create_configurationÚntc             C   s(   |j dƒrd}n|jdƒo"|j dƒ}|S )Nú.pydú.dllTÚpythonz.exe)rM   rN   )ÚendswithÚ
startswith)r	   rK   Úresultr
   r
   r   Úinclude_binary¢   s    
zEnvBuilder.include_binaryc             C   s~   | j  }|sjy6tjj|ƒs@|r4tjtjj|ƒ|ƒ ntj||ƒ W n& tk
rh   tjd||ƒ d}Y nX |rzt	j
||ƒ d S )Nz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                sð  |j }|j}| j}||j|ƒ |j}tjdkrštjj|ƒsFtj	|dƒ xNdD ]F}tjj
||ƒ}tjj|ƒsL||j|dd� tjj|ƒsLtj	|dƒ qLW �nRd}| j‰ ‡ fdd	„tj|ƒD ƒ}x<|D ]4}	tjj
||	ƒ}
tjj
||	ƒ}||jkrÂ||
|ƒ qÂW tjj
||ƒ}tjj|ƒ�rd‡ fd
d	„tj|ƒD ƒ}x4|D ],}	tjj
||	ƒ}
tjj
||	ƒ}||
|ƒ �q4W x†tj|jƒD ]v\}}}d|k�rrtjj|ƒ}tjj
|jd|ƒ}tjj|ƒ�s¼tj|ƒ tjj
|dƒ}
tjj
|dƒ}tj|
|ƒ P �qrW d S )NrL   ií  rO   Úpython3T)r[   ZDLLsc                s   g | ]}ˆ |ƒr|‘qS r
   r
   )Ú.0rK   )r,   r
   r   ú
<listcomp>Ö   s    z+EnvBuilder.setup_python.<locals>.<listcomp>c                s   g | ]}ˆ |ƒr|‘qS r
   r
   )r^   rK   )r,   r
   r   r_   Þ   s    zinit.tclr*   )rO   r]   )r?   rA   r\   r9   r:   r   r=   r   r   Úchmodr   r"   rS   r   r   ÚwalkrT   r   r#   r   rX   )r	   r   rD   r   ZcopierrC   ÚsuffixZsubdirÚfilesrK   rY   rZ   ÚrootÚdirsZtcldirr
   )r,   r   r   ¼   sN    






zEnvBuilder.setup_pythonc             C   s$   |j ddddg}tj|tjd� d S )Nz-ImZ	ensurepipz	--upgradez--default-pip)Ústderr)rA   Ú
subprocessZcheck_outputZSTDOUT)r	   r   Úcmdr
   r
   r   r   ï   s    
zEnvBuilder._setup_pipc             C   s2   t jjt jjtƒƒ}t jj|dƒ}| j||ƒ d S )NÚscripts)r   r   r   rC   Ú__file__r   Úinstall_scripts)r	   r   r   r
   r
   r   r   ø   s    zEnvBuilder.setup_scriptsc             C   s   d S )Nr
   )r	   r   r
   r
   r   r     s    zEnvBuilder.post_setupc       	         s˜   |j |j|j|j|jdœ}dd„ }dd„ }tj‰ |j}|jdƒrF|‰ n|jdƒrV|‰ ntj‰ ‡ fdd	„|j	ƒ D ƒ}x |j	ƒ D ]\}}|j
||ƒ}q|W |S )
N)Z__VENV_DIR__Z__VENV_NAME__Z__VENV_PROMPT__Z__VENV_BIN_NAME__Z__VENV_PYTHON__c             S   s   | j ddƒ} d| › d�S )Nú'z'')Úreplace)Úsr
   r
   r   Ú	quote_ps1$  s    z/EnvBuilder.replace_variables.<locals>.quote_ps1c             S   s   | S )Nr
   )rn   r
   r
   r   Ú	quote_bat.  s    z/EnvBuilder.replace_variables.<locals>.quote_batz.ps1z.batc                s   i | ]\}}ˆ |ƒ|“qS r
   r
   )r^   Úkeyrn   )Úquoter
   r   ú
<dictcomp><  s    z0EnvBuilder.replace_variables.<locals>.<dictcomp>)r   r5   r   r@   rA   Úshlexrr   Úscript_pathrP   Úitemsrm   )	r	   Útextr   Zreplacementsro   rp   ru   rq   Zquotedr
   )rr   r   Úreplace_variables  s$    



zEnvBuilder.replace_variablesc          !   C   s¤  |j }t|ƒ}�xŽtj|ƒD �]~\}}}||kr`x,|d d … D ]}|dtjfkr>|j|ƒ q>W q�x8|D �].}	tjj||	ƒ}
||d … jtj	ƒdd … }|s¢|}ntjj|f|žŽ }tjj
|ƒsÊtj|ƒ tjj||	ƒ}t|
dƒ�}	|	jƒ }W d Q R X |
jdƒ�sd|
|_y$|jdƒ}| j||ƒ}|jdƒ}W n6 tk
�rb } zd }tjd|
|ƒ W Y d d }~X nX |d k	rht|dƒ�}	|	j|ƒ W d Q R X tj|
|ƒ qhW qW d S )NÚcommonr.   Úrbz.exezutf-8z+unable to copy script %r, may be binary: %sÚwb)r?   Úlenr   ra   r=   r   r   r   r4   Úsepr"   r#   rI   ÚreadrP   ru   Údecoderx   ÚencodeÚUnicodeErrorrV   rW   rJ   r   Zcopymode)r	   r   r   rD   Zplenrd   re   rc   r%   rK   Zsrcfilerb   ZdstdirZdstfileÚdataÚer
   r
   r   rk   A  sB    

zEnvBuilder.install_scripts)FFFFFN)F)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r   r   r   r=   rS   r\   r   r   r   r   rx   rk   r
   r
   r
   r   r      s    
8

3	
0r   Fc             C   s    t |||||d�}|j| ƒ d S )N)r   r   r   r   r   )r   r   )r   r   r   r   r   r   Úbuilderr
   r
   r   r   r  s    r   c       	      C   sb  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
ƒ }|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| ƒ}|j�r"|j�r"td(ƒ‚t|j|j|j|j|j|jd)�}x|jD ]}|j|ƒ �qJW d S )+NTrH   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epilogre   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.z	--upgrader   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   r   r   r   r   r   )rH   rH   )r7   r;   Úhasattrr$   ÚargparseÚArgumentParserr„   Úadd_argumentr   r=   Zadd_mutually_exclusive_groupÚ
parse_argsr   r   r   r�   r   r   r   re   r   )	ÚargsZ
compatibler”   ÚparserZuse_symlinksÚgroupZoptionsr‡   r%   r
   r
   r   Úmainz  s\    










r›   Ú__main__r'   z	Error: %s)Úfile)FFFFN)N)Zloggingr   r   rg   r7   r2   rt   Z	getLoggerr„   rV   r   r   r›   ZrcrU   rƒ   Úprintrf   Úexitr
   r
   r
   r   Ú<module>   s*   
  b 

H$