
    ;e=b                     0   	 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 j        e	          Z
 G d d          Z	 	 ddZddZe	dk    rId	Z	  e             d Zn'# e$ rZ ed
ez  ej                   Y dZ[ndZ[ww xY w ej        e           dS dS )    N)pip
setuptoolsc                       e Zd Z	 	 	 	 ddZd Zd Zd Zd Zd Ze	j
        d	k    rdd
ZnddZd Zd Zd Zd Zd Zd Zd Zd ZdS )
EnvBuilderFNc                     || _         || _        || _        || _        || _        || _        |dk    r0t          j                            t          j	                              }|| _
        || _        d S )N.)system_site_packagesclearsymlinksupgradewith_piporig_promptospathbasenamegetcwdpromptupgrade_deps)selfr	   r
   r   r   r   r   r   s           $/usr/lib/python3.11/venv/__init__.py__init__zEnvBuilder.__init__.   si     %9!
  !S==W%%bikk22F(    c                    	 t           j                            |          }|                     |          }| j        }d| _        |                     |           |                     |           | j        r|                     |           | j	        s*| 
                    |           |                     |           |rd| _        |                     |           | j        r|                     |           d S d S )NFT)r   r   abspathensure_directoriesr	   create_configurationsetup_pythonr   
_setup_pipr   setup_scripts
post_setupr   upgrade_dependencies)r   env_dircontexttrue_system_site_packagess       r   createzEnvBuilder.create<   s   	 '//'**))'22 %)$=!$)!!!'***'"""= 	%OOG$$$| 	%w'''OOG$$$$ 	/ )-D%%%g... 	/%%g.....	/ 	/r   c                    t          j        |          D ]}t           j                            ||          }t           j                            |          st           j                            |          rt          j        |           ut           j                            |          rt          j	        |           d S N)
r   listdirr   joinislinkisfileremoveisdirshutilrmtree)r   r   fns      r   clear_directoryzEnvBuilder.clear_directoryX   s    *T"" 	" 	"BdB''Bw~~b!! "RW^^B%7%7 "	"r"" "b!!!	" 	"r   c                 >    ||||d}t          j        |d|          S )N)baseplatbaseinstalled_baseinstalled_platbasevenv)schemevars)	sysconfigget_path)r   r"   namer9   s       r   
_venv_pathzEnvBuilder._venv_path`   s4    %")	
 
 !$vDAAAAr   c                    	 d }t           j        t          j        |          v r t          d| dt           j         d          t           j                            |          r| j        r|                     |           t          j	                    }||_
        t           j                            |          d         |_        | j        | j        n|j        }d|z  |_         ||           t          j        }|st          d          t           j                            t           j                            |                    \  }}||_        ||_        ||_        |                     |d          }|                     |d	          }	|                     |d
          }
|	|_         ||	            ||
           t          j        dk    rtt           j        dk    rdt          j        dk    rTt           j                            |d          }t           j                            |          st          j        d|           ||_        t           j                            ||          |_        t           j                            ||          |_         ||           |j        |_        t          j        dk    rt           j                             |j                  }t           j        !                    |          t           j        !                    |j                  k    r(tD          #                    d|j        |           ||_        |S )Nc                    t           j                            |           st          j        |            d S t           j                            |           st           j                            |           rt          d| z            d S )NzUnable to create directory %r)r   r   existsmakedirsr*   r+   
ValueError)ds    r   create_if_neededz7EnvBuilder.ensure_directories.<locals>.create_if_neededq   sw    7>>!$$ FA"" FbgnnQ&7&7 F !@1!DEEEF Fr   zRefusing to create a venv in z( because it contains the PATH separator r      z(%s) zUnable to determine path to the running Python interpreter. Provide an explicit path or check that your PATH environment variable is correctly set.scriptsincludepurelibl        posixdarwinlib64libwin32zActual environment location may have moved due to redirects, links or junctions.
  Requested location: "%s"
  Actual location:    "%s")$r   pathsepfspathrB   r   r@   r
   r1   typesSimpleNamespacer"   splitenv_namer   sys_base_executabler   
executable
python_dir
python_exer=   inc_pathmaxsizer<   platformr)   symlinkbin_pathrelpathbin_nameenv_exeenv_exec_cmdrealpathnormcaseloggerwarning)r   r"   rD   r#   r   rV   dirnameexenamebinpathincpathlibpath	link_pathreal_env_exes                r   r   zEnvBuilder.ensure_directoriesi   s   		F 	F 	F :7++++ MW M M?AzM M M N N N7>>'"" 	*tz 	*  )))'))!7==11!4 $ 7W=M 6)!!!)
 	/ . / / / 7==)D)DEE'$$//'955//'955//'955"!!!!!![5  rw''9'9\X%%Wg66I7>>),, -
5),,,"7??7G<<',,w88!!!  '<7"" 7++GO<<Lw--1A1A'/1R1RRR  <  '	> > >
 (4$r   c                    	 t           j                            |j        d          x|_        }t          |dd          5 }|                    d|j        z             | j        rd}nd}|                    d|z             |                    d	t          j
        d d
         z             | j        |                    d| j        d           |                    dt           j                            t          j                  z             g }t           j        dk    }|r| j        r|                    d           |s| j        s|                    d           | j        s|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        |                    d| j         d           |                    |j                   d                    |          }|                    dt          j         d| d           d d d            d S # 1 swxY w Y   d S )Nz
pyvenv.cfgwutf-8)encodingz
home = %s
truefalsez"include-system-site-packages = %s
zversion = %d.%d.%d
   z	prompt = 
zexecutable = %s
nt
--symlinks--copies--without-pip--system-site-packages--clear	--upgrade--upgrade-depsz
--prompt="" z
command = z	 -m venv )r   r   r)   r"   cfg_pathopenwriterW   r	   rT   version_infor   rb   rV   r<   r   appendr   r
   r   r   r   )r   r#   r   finclargsru   s          r   r   zEnvBuilder.create_configuration   s   	 #%',,w"M"MM4$g...  	D!GGMG$66777( GG9D@AAAGG*S-=bqb-AABBB{&5DK555666GG'"'*:*:3>*J*JJKKKDDB *dm *L))) (dm (J'''= -O,,,( 64555z 'I&&&| )K(((  .,---+<)9<<<===KK(((88D>>DGGBBB$BBBCCCA 	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	D  	Ds    H$I11I58I5ru   c                    	 | j          }|s	 t          j                            |          sJ|r3t          j        t          j                            |          |           nt          j        ||           n.# t          $ r! t                              d||           d}Y nw xY w|rt          j
        ||           d S d S )NUnable to symlink %r to %rT)r   r   r   r*   r\   r   	Exceptionrd   re   r.   copyfile)r   srcdstrelative_symlinks_ok
force_copys        r   symlink_or_copyzEnvBuilder.symlink_or_copy   s     "]*J 
&	&7>>#.. 1/ 1Jrw'7'7'<'<cBBBBJsC000  & & &NN#?cJJJ!%JJJ&  *S)))))* *s   A)A7 7(B"!B"c                    	 t           j                            |          ot           j                            |           }| j        r|st           j                            |          sy	 |r3t          j        t           j                            |          |           nt          j        ||           d S # t          $ r t          
                    d||           Y nw xY wt           j                            t           j                            |                    \  }}t           j                            t           j                            t                    dd||z             }t          j                    st           j                            |          sv|                    d          rd|z   }|d d         }|dk    rd}n|dk    rd	}t           j                            t           j                            |          ||z             }n|}t           j                            |          s|st          
                    d
|           d S t'          j        ||           d S )Nr   rF   ru   _dpythonvenvlauncherpythonwvenvwlauncherzUnable to copy %r)r   r   lexistsr@   r   r*   r\   r   r   rd   re   splitextr)   rf   __file__r:   is_python_buildr+   endswithr.   r   )r   r   r   r   bad_srcr   extsrcfns           r   r   zEnvBuilder.symlink_or_copy   s2    gooc**F27>>#3F3F/FG} 	KW 	KRW^^C5H5H 	KK+ -
27#3#3C#8#8#>>>>
3,,,F  K K KNN#?cJJJJJK
 G,,RW-=-=c-B-BCCMHcGLL!:!:!*!%!)C1 1E (** 
"'..2G2G 
$$T** -*C'}Hx''-HH**.Hgll27??3#7#7CHH7>>#&&  =NN#6<<<OC%%%%%s   *A
B6 6&CCc                 "   	 |j         }|j        }| j        }|j        }t          j        dk    r ||j        |           t          j                            |          st	          j	        |d           dddt          j        d          fD ]}t          j                            ||          }t          j                            |          sG ||j        |d           t          j                            |          st	          j	        |d           d S | j        r>d	 t	          j        |          D             }t!          j                    rd
 |D             }n=h d}t          j                            |j                  }|                    |           |D ]k}t          j                            ||          }	t          j                            |	          r* ||	t          j                            ||                     lt!          j                    rt	          j        |j                  D ]\  }
}}d|v rt          j                            |
          }t          j                            |j        d|          }t          j                            |          st	          j        |           t          j                            |
d          }	t          j                            |d          }t1          j        |	|            d S d S d S )Nru   i  r   python3zpython3.rE   T)r   c                     g | ]H}t           j                            t           j                            |          d                    dv F|IS )rE   ).exez.dll)r   r   rc   r   .0r   s     r   
<listcomp>z+EnvBuilder.setup_python.<locals>.<listcomp>5  sS       G$$RW%5%5a%8%8%;<<@PPP PPPr   c                 v    g | ]6}t           j                            |                              d           4|7S ))r   	vcruntime)r   r   rc   
startswithr   s     r   r   z+EnvBuilder.setup_python.<locals>.<listcomp>:  sM          ((++667NOO      r   >   
python.exepythonw.exepython_d.exepythonw_d.exezinit.tclLib)r]   r`   r   rW   r   r<   rV   r   r*   chmodrT   r   r)   r@   r   r(   r:   r   r   addr   walkr"   rA   r.   r   )r   r#   rh   r   copierrf   suffixsuffixesbase_exer   rootdirsfilestcldirr   s                  r   r   zEnvBuilder.setup_python  s   	 "%$7d??F7%t,,,7>>$'' &u%%%#Y0P3;KA;N0P0PQ . .w||GV44w~~d++ . F7?DtLLLL7>>$// .u---. . } '
 !z'22   ,..    #+     H
 ZYY7++GO<<X&&&" ? ?gll7F337??3'' ?F3Wf = =>>>(** )+1C)D)D 	 	%D$!U**!#!1!1$!7!7!#gouf!M!M!w~~f55 0K/// gll4<< gll6:>>S111 + 	 	r   c                    	 |j         g|}t          j                                        x|d<   }|j        |d<   |                    dd            |                    dd            |j        |d<   |j         |d<   t          j        |fi | d S )NenvVIRTUAL_ENV
PYTHONHOME
PYTHONPATHcwdrV   )ra   r   environcopyr"   pop
subprocesscheck_output)r   r#   py_argskwargsr   r   s         r   _call_new_pythonzEnvBuilder._call_new_pythonU  s    F
 $/w/ joo///u$_Md###d###u&3|///////r   c                 R    	 |                      |ddddt          j                   d S )N-m	ensurepipr{   z--default-pip)stderr)r   r   STDOUTr   r#   s     r   r   zEnvBuilder._setup_pipd  sA    ?gt[+-j6G 	 	I 	I 	I 	I 	Ir   c                     	 t           j                            t           j                            t                              }t           j                            |d          }|                     ||           d S )NrF   )r   r   r   rf   r   r)   install_scripts)r   r#   r   s      r   r   zEnvBuilder.setup_scriptsi  s[    		 wrwx8899w||D),,Wd+++++r   c                     	 d S r'    r   s     r   r    zEnvBuilder.post_setupx  s    	 	r   c                    	 |                     d|j                  }|                     d|j                  }|                     d|j                  }|                     d|j                  }|                     d|j                  }|S )N__VENV_DIR____VENV_NAME____VENV_PROMPT____VENV_BIN_NAME____VENV_PYTHON__)replacer"   rS   r   r_   r`   )r   textr#   s      r   replace_variableszEnvBuilder.replace_variables  s|    		 ||NGO<<||OW-=>>||-w~>>||/1ABB||-w??r   c                    	 |j         }t          |          }t          j        |          D ]\\  }}}||k    r3|d d          D ]'}|dt          j        fvr|                    |           (@|D ]}	t          j        dk    r+|	                    d          r|	                    d          r>t          j        	                    ||	          }
||d          
                    t          j                  dd          }|s|}nt          j        j	        |g|R  }t          j                            |          st          j        |           t          j        	                    ||	          }t          |
d          5 }	|	                                }d d d            n# 1 swxY w Y   |
                    d          sw	 |                    d          }|                     ||          }|                    d          }n5# t&          $ r(}d }t(                              d|
|           Y d }~nd }~ww xY w|Rt          |d	          5 }	|	                    |           d d d            n# 1 swxY w Y   t/          j        |
|           ^d S )
Ncommonru   r   )r   z.pdb   rbro   z+unable to copy script %r, may be binary: %swb)r]   lenr   r   r<   r,   r   r   r   r)   rR   sepr@   rA   r   readdecoder   encodeUnicodeErrorrd   re   r   r.   copymode)r   r#   r   rh   plenr   r   r   rC   r   srcfiler   dstdirdstfiledataes                   r   r   zEnvBuilder.install_scripts  s)   	 "4yy!# !	6 !	6D$t||aaa ' 'A27 333A 6 6GtOOX(>(>OJJ'788 $',,tQ//dee**26221226 <$FFW\';F;;;Fw~~f-- (K'''',,vq11'4(( $A6688D$ $ $ $ $ $ $ $ $ $ $ $ $ $ $''(899 HH#{{733#55dGDD#{{733' H H H# (;<CQH H H H H H H HH #gt,, && & & & & & & & & & & & & & &OGW55576!	6 !	6s=   :FF"F<A G==
H/H**H/I&&I*-I*c                     t                               dt           d|j                     | j        |ddddgt          R   d S )Nz
Upgrading z packages in r   r   installr{   )rd   debugCORE_VENV_DEPSr]   r   r   s     r   r!   zEnvBuilder.upgrade_dependencies  sh    HHHg6FHH	
 	
 	
 	gtUI{ 	/-	/ 	/ 	/ 	/ 	/ 	/r   )FFFFFNF)F)__name__
__module____qualname__r   r%   r1   r=   r   r   r   r<   r   r   r   r   r   r    r   r   r!   r   r   r   r   r      sF       2 :?GK#) ) ) )/ / /8" " "B B BB B BH*D *D *DX 
w$	* 	* 	* 	* 	*&)	& )	& )	& )	&V; ; ;z0 0 0I I I
, , ,    $06 06 06d/ / / / /r   r   Fc                 \    	 t          ||||||          }|                    |            d S )N)r	   r
   r   r   r   r   )r   r%   )r"   r	   r
   r   r   r   r   builders           r   r%   r%     sE    6.B$x( &\C C CG NN7r   c                 L   d}t           j        dk     rd}nt          t           d          sd}|st          d          dd l}|                    t          dd	          }|                    d
ddd           |                    ddddd           t          j	        dk    rd}n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+                    t                                         |                    |           }|j        r|j        rt          d,          t#          |j        |j        |j        |j        |j        |j        |j        -          }|j        D ]}|                    |           d S ).NT)rs   rs   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epilogr   ENV_DIR+z)A directory to create the environment in.)metavarnargshelpry   
store_truesystem_sitezDGive the virtual environment access to the system site-packages dir.)defaultactiondestr   ru   rv   r   z[Try to use symlinks rather than copies, when symlinks are not the default for the platform.rw   store_falsez\Try to use copies rather than symlinks, even when symlinks are the default for the platform.rz   r
   zcDelete the contents of the environment directory if it already exists, before environment creation.r{   r   zlUpgrade the environment directory to use this version of Python, assuming Python has been upgraded in-place.rx   r   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   r|   r   z;Upgrade core dependencies: {} to the latest version in PyPIr~   z1you cannot supply --upgrade and --clear together.)r	   r
   r   r   r   r   r   )rT   r   hasattrrB   argparseArgumentParserr   add_argumentr   r<   add_mutually_exclusive_groupformatr)   r   
parse_argsr   r
   r   r   r   r   r   r   r   r%   )	r   
compatibler  parseruse_symlinksgroupoptionsr   rC   s	            r   mainr    s   J
&  

S-(( 
 FIJJJ((h6D1H ) 	I 	I 	FIS!L 	 	N 	N 	N4e#/m"= 	 	> 	> 	> 7d?? LLL3355<".Z!0 	 	1 	1 	1
 	:</?"/j!0 	 	1 	1 	1
 	Iu\!( 0G 	 	H 	H 	H
 	K|!* 2M 	 	N 	N 	N
 	O*$("/ 	 	0 	0 	0
 	J"5 	 	6 	6 	6 	,eL!/"3396!$.!9!94; 4; 	 	< 	< 	<
 ##D))? 	Rw} 	RPQQQ'2E#*=&-&6%,_&-&6$+N*1*>@ @ @  	 	ANN1	 	r   __main__rE   z	Error: %s)file)FFFFNFr'   )loggingr   r.   r   rT   r:   rP   r   	getLoggerr   rd   r   r%   r  rcr   r   printr   exitr   r   r   <module>r     s]    				      



      '		8	$	$w/ w/ w/ w/ w/ w/ w/ w/t 7<EJ   L L L L\ z	
B0 0 0 0kAoCJ/////////0CHRLLLLL s   A B"A<<B