a
    
¼3j­Z  ã                
   @   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d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 n6 ey¸ Z zede ejd W Y dZ[n
dZ[0 0 e e¡ dS )é    N)ÚpipZ
setuptoolsc                   @   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d„ ZdS )"Ú
EnvBuilderFNc                 C   sF   || _ || _|| _|| _|| _|dkr6tj t ¡ ¡}|| _	|| _
d S )NÚ.)Úsystem_site_packagesÚclearÚsymlinksÚupgradeÚwith_pipÚosÚpathÚbasenameÚgetcwdÚpromptÚupgrade_deps)Úselfr   r   r   r   r	   r   r   © r   úI/www/server/python_manager/versions/3.9.10/lib/python3.9/venv/__init__.pyÚ__init__.   s    zEnvBuilder.__init__c                 C   sˆ   t j |¡}|  |¡}| j}d| _|  |¡ |  |¡ | jrF|  |¡ | j	s`|  
|¡ |  |¡ |rtd| _|  |¡ | jr„|  |¡ d S )NFT)r
   r   ÚabspathÚensure_directoriesr   Úcreate_configurationÚsetup_pythonr	   Ú
_setup_pipr   Úsetup_scriptsÚ
post_setupr   Úupgrade_dependencies)r   Úenv_dirÚcontextZtrue_system_site_packagesr   r   r   Úcreate;   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 ©N)
r
   Úlistdirr   ÚjoinÚislinkÚisfileÚremoveÚisdirÚshutilÚrmtree)r   r   Úfnr   r   r   Úclear_directoryW   s    zEnvBuilder.clear_directoryc                 C   sâ  dd„ }t j |¡r$| jr$|  |¡ t ¡ }||_t j |¡d |_	| j
d u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 ||¡|_||ƒ |j|_tjdkrÞt j |j¡}t j |¡t j |j¡krÞt d|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_neededg   s    z7EnvBuilder.ensure_directories.<locals>.create_if_neededé   z(%s) Úwin32ZScriptsZIncludeÚLibzsite-packagesÚbinZincludeÚlibzpython%d.%dé   l        ÚposixÚdarwinZlib64z†Actual environment location may have moved due to redirects, links or junctions.
  Requested location: "%s"
  Actual location:    "%s") 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Úenv_exec_cmdÚrealpathÚnormcaseÚloggerÚwarning)r   r   r.   r   r   r=   ÚdirnameZexenameZbinnameZincpathZlibpathr   Z	link_pathÚbinpathZreal_env_exer   r   r   r   _   s\    



þÿüzEnvBuilder.ensure_directoriesc                 C   s¬   t j |jd¡ |_}t|dddt}| d|j ¡ | jrBd}nd}| d| ¡ | d	t	j
d d
…  ¡ | jd urŠ| d| j›d¡ W d   ƒ n1 sž0    Y  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Úwriter>   r   r;   r@   r   )r   r   r   ÚfZinclr   r   r   r   ¡   s    	
zEnvBuilder.create_configurationÚntc                 C   s|   | j  }|shz6tj |¡s@|r4t tj |¡|¡ nt ||¡ W n$ tyf   t d||¡ d}Y n0 |rxt	 
||¡ d S )NúUnable to symlink %r to %rT)r   r
   r   r"   rC   r   Ú	ExceptionrJ   rK   r&   Úcopyfile)r   ÚsrcÚdstÚrelative_symlinks_okZ
force_copyr   r   r   Úsymlink_or_copy·   s    
zEnvBuilder.symlink_or_copyc                 C   sZ  t j |¡ot j |¡ }| jr~|s~t j |¡s~z,|rLt  t j |¡|¡ nt  ||¡ W d S  ty|   t	 
d||¡ Y n0 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 |¡sJ|sFt	 
d|¡ d S t ||¡ d S )NrX   ÚscriptsrW   TZ_déþÿÿÿÚpythonZvenvlauncherZpythonwZvenvwlauncherzUnable to copy %r)r
   r   Úlexistsr*   r   r"   rC   r   rY   rJ   rK   Úsplitextr!   rL   Ú__file__Ú	sysconfigÚis_python_buildr#   Úendswithr&   rZ   )r   r[   r\   r]   Zbad_srcr   ÚextZsrcfnr   r   r   r^   Ê   s<    ý

c                 C   sÐ  |j }|j}| j}|j}tjdkr¨||j|ƒ tj |¡sFt 	|d¡ dddt
jd › fD ]F}tj ||¡}tj |¡s\||j|dd tj |¡s\t 	|d¡ q\n$| jrÜd	d
„ t |¡D ƒ}t d¡rüdd
„ |D ƒ}n h d£}tj |j¡}| |¡ |D ]6}tj ||¡}	tj |	¡r ||	tj ||¡ƒ q t d¡rÌt |j¡D ]z\}
}}d|v rPtj |
¡}tj |jd|¡}tj |¡sšt |¡ tj |
d¡}	tj |d¡}t |	|¡  qÌqPd S )NrW   ií  ra   Zpython3zpython3.r/   T)r]   c                 S   s,   g | ]$}t j t j |¡d  ¡dv r|‘qS )r/   )ú.exez.dll)r
   r   rI   rc   ©Ú.0rV   r   r   r   Ú
<listcomp>  s   ÿz+EnvBuilder.setup_python.<locals>.<listcomp>c                 S   s"   g | ]}t j |¡ d ¡r|‘qS ))ra   Z	vcruntime)r
   r   rI   Ú
startswithrj   r   r   r   rl     s   ÿ>   zpythonw.exez
python.exezpython_d.exezpythonw_d.exezinit.tclr1   )rD   rF   r^   r>   r
   rB   r=   r   r"   Úchmodr;   r@   r!   r*   r   r    re   rf   r   Úaddrb   Úwalkr   r+   r&   rZ   )r   r   rM   r   ZcopierrL   ÚsuffixÚsuffixesZbase_exer[   ÚrootÚdirsÚfilesZtcldirr\   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)rG   Ú
subprocessÚcheck_outputÚSTDOUT©r   r   Úcmdr   r   r   r   2  s    
ÿzEnvBuilder._setup_pipc                 C   s2   t j t j t¡¡}t j |d¡}|  ||¡ d S )Nr_   )r
   r   r   rL   rd   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   J  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   r:   r   rE   rF   )r   Útextr   r   r   r   Úreplace_variablesT  s    zEnvBuilder.replace_variablesc                 C   sÞ  |j }t|ƒ}t |¡D ]¾\}}}||krX|d d … D ]}|dtjfvr8| |¡ q8q|D ]x}	tjdkr‚|	 d¡r‚|	 d¡r‚q\tj 	||	¡}
||d …  
tj¡dd … }|s¶|}ntjj	|g|¢R Ž }tj |¡sàt |¡ tj 	||	¡}t|
dƒ}	|	 ¡ }W d   ƒ n1 s0    Y  |
 d¡sŒz$| d¡}|  ||¡}| d¡}W n8 tyŠ } zd }t d|
|¡ W Y d }~n
d }~0 0 |d ur\t|d	ƒ}	|	 |¡ W d   ƒ n1 sÀ0    Y  t |
|¡ q\qd S )
NÚcommonrW   ra   )ri   z.pdbr4   ÚrbrO   z+unable to copy script %r, may be binary: %sÚwb)rD   Úlenr
   rp   rB   r$   rm   rg   r   r!   r9   Úsepr*   r+   rT   ÚreadÚdecoder€   ÚencodeÚUnicodeErrorrJ   rK   rU   r&   Úcopymode)r   r   r   rM   Zplenrs   rt   ru   r-   rV   Zsrcfilerq   ZdstdirZdstfileÚdataÚer   r   r   r}   f  sJ    
ÿ
(
ÿ*zEnvBuilder.install_scriptsc                 C   s@   t  dt› d|j› ¡ |jddddg}| t¡ t |¡ d S )Nz
Upgrading z packages in z-mr   Úinstallrv   )rJ   ÚdebugÚCORE_VENV_DEPSrD   rG   Úextendrx   Ú
check_callr{   r   r   r   r   ˜  s    ÿ
zEnvBuilder.upgrade_dependencies)FFFFFNF)F)F)Ú__name__Ú
__module__Ú__qualname__r   r   r)   r   r   r
   rB   r^   r   r   r   r   r€   r}   r   r   r   r   r   r      s$      þ
B

+=	
2r   Fc                 C   s"   t ||||||d}| | ¡ d S )N)r   r   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ƒ‚nLd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d(ddd)d* d+ t¡¡d | | ¡}|jrB|jrBtd,ƒ‚t|j|j|j|j|j|j|jd-}|jD ]}| |¡ qld S ).NT)rR   rR   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.)ÚprogÚdescriptionÚepilogrt   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   rW   z
--symlinksr   z[Try to use symlinks rather than copies, when symlinks are not the default for the platform.z--copiesÚ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.rv   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   z--upgrade-depsr   z;Upgrade core dependencies: {} to the latest version in PyPIú z1you cannot supply --upgrade and --clear together.)r   r   r   r   r	   r   r   )r;   r@   Úhasattrr,   ÚargparseÚArgumentParserr’   Úadd_argumentr
   rB   Úadd_mutually_exclusive_groupÚformatr!   r   Ú
parse_argsr   r   r   rŸ   r   r	   r   r   rt   r   )	ÚargsZ
compatibler¦   ÚparserZuse_symlinksÚgroupÚoptionsr•   r-   r   r   r   Úmain©  s~    

û

ÿþ
þ
þ
ÿ
ÿþÿ
þþ
ú
r°   Ú__main__r/   z	Error: %s)Úfile)FFFFNF)N)Úloggingr
   r&   rx   r;   re   r7   r   Ú	getLoggerr’   rJ   r   r   r°   ÚrcrY   rŒ   Úprintrw   Úexitr   r   r   r   Ú<module>   s0   
     ÿ

N(