ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     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rd
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rd}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|st j|sz,|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st j|s$|drd| }|d d }|dkrd}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rdd t|D }tdrdd |D }nd	d
ddg}|D ]2}tj
||}tj|r||tj
|| qtdrt|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rq\tj	||	}
||d  
tjdd  }|s|}ntjj	|f| }tj|st| 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rd}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$