a ´iC_ã @sÐddlZddlZddlZddlZddlZddlZddlZddlZdZe  e ¡Z Gdd„dƒZ ddd„Z ddd „Ze d krÌd ZzeƒdZWn6eyÀZzed eejd WYdZ[n dZ[00e e¡dS)éN)ÚpipZ setuptoolsc@sŽeZdZddd„Zdd„Zdd„Zd d „Zd d „Zej d krHd dd„Z n d!dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)"Ú EnvBuilderFNcCsF||_||_||_||_||_|dkr6tj t ¡¡}||_ ||_ dS)NÚ.) Úsystem_site_packagesÚclearÚsymlinksÚupgradeÚwith_pipÚosÚpathÚbasenameÚgetcwdÚpromptÚ upgrade_deps)Úselfrrrrr rr©rú%/usr/lib64/python3.9/venv/__init__.pyÚ__init__/szEnvBuilder.__init__cCsˆtj |¡}| |¡}|j}d|_| |¡| |¡|jrF| |¡|j s`|  |¡|  |¡|rtd|_| |¡|j r„|  |¡dS)NFT)r r ÚabspathÚensure_directoriesrÚcreate_configurationÚ setup_pythonr Ú _setup_piprÚ setup_scriptsÚ post_setuprÚupgrade_dependencies)rÚenv_dirÚcontextZtrue_system_site_packagesrrrÚcreate<s         zEnvBuilder.createcCs\t |¡D]L}tj ||¡}tj |¡s4tj |¡r@t |¡q tj |¡r t  |¡q dS©N) r Úlistdirr ÚjoinÚislinkÚisfileÚremoveÚisdirÚshutilÚrmtree)rr ÚfnrrrÚclear_directoryXs   zEnvBuilder.clear_directorycCsâdd„}tj |¡r$|jr$| |¡t ¡}||_tj |¡d|_ |j durT|j n|j }d||_ ||ƒt j }tj tj  |¡¡\}}||_||_||_t jdkrÀd}d} tj |dd ¡} n(d }d } tj |d d t jdd…d ¡} tj || ¡|_} || ƒ|| ƒt jdkrXtjdkrXt jdkrXtj |d¡} tj | ¡sXt d | ¡tj ||¡|_} ||_tj | |¡|_|| ƒ|j|_t jdkrÞtj |j¡}tj |¡tj |j¡krÞt d|j|¡||_|S)NcSs@tj |¡st |¡n$tj |¡s0tj |¡r.create_if_neededéz(%s) Úwin32ZScriptsZIncludeÚLibz site-packagesÚbinZincludeÚlibz python%d.%délÚposixÚdarwinZlib64z†Actual environment location may have moved due to redirects, links or junctions. Requested location: "%s" Actual location: "%s") r r r*rr)ÚtypesÚSimpleNamespacerÚsplitÚenv_namerÚsysÚ_base_executablerÚ executableÚ python_dirZ python_exeÚplatformr!Ú version_infoZinc_pathÚmaxsizeÚnameÚsymlinkÚbin_pathÚbin_nameÚenv_exeÚ env_exec_cmdÚrealpathÚnormcaseÚloggerÚwarning)rrr.rrr=ÚdirnameZexenameZbinnameZincpathZlibpathr Z link_pathÚbinpathZ real_env_exerrrr`s\    þÿ  üzEnvBuilder.ensure_directoriescCs¬tj |jd¡|_}t|dddt}| d|j¡|jrBd}nd}| d|¡| d t j dd …¡|j durŠ| d |j ›d ¡Wdƒn1sž0YdS) Nz pyvenv.cfgÚwúutf-8)Úencodingz home = %s ÚtrueZfalsez"include-system-site-packages = %s zversion = %d.%d.%d éz prompt = Ú ) r r r!rZcfg_pathÚopenÚwriter>rr;r@r)rrr ÚfZinclrrrr¢s  zEnvBuilder.create_configurationÚntcCs||j }|shz6tj |¡s@|r4t tj |¡|¡n t ||¡Wn$tyft d||¡d}Yn0|rxt   ||¡dS)NúUnable to symlink %r to %rT) rr r r"rCr Ú ExceptionrJrKr&Úcopyfile)rÚsrcÚdstÚrelative_symlinks_okZ force_copyrrrÚsymlink_or_copy¸s   zEnvBuilder.symlink_or_copycCsZtj |¡otj |¡ }|jr~|s~tj |¡s~z,|rLt tj |¡|¡n t ||¡WdSty|t   d||¡Yn0tj  tj |¡¡\}}tj  tj  t¡dd||¡}t d¡sÌtj |¡s"| d¡rêd|}|dd…}|dkrød}n|d krd }tj  tj  |¡||¡}n|}tj |¡sJ|sFt   d |¡dSt ||¡dS) NrXÚscriptsrWTZ_déþÿÿÿÚpythonZ venvlauncherZpythonwZ venvwlauncherzUnable to copy %r)r r Úlexistsr*rr"rCr rYrJrKÚsplitextr!rLÚ__file__Ú sysconfigÚis_python_buildr#Úendswithr&rZ)rr[r\r]Zbad_srcr ÚextZsrcfnrrrr^Ës<  ý    cCsÐ|j}|j}|j}|j}tjdkr¨||j|ƒtj |¡sFt  |d¡dddt j d›fD]F}tj  ||¡}tj  |¡s\||j|ddtj |¡s\t  |d¡q\n$|jrÜd d „t |¡Dƒ}t d¡rüd d „|Dƒ}n hd £}tj |j¡}| |¡|D]6}tj  ||¡} tj | ¡r|| tj  ||¡ƒqt d¡rÌt |j¡D]z\} } } d | vrPtj | ¡} tj  |jd| ¡} tj  | ¡sšt | ¡tj  | d ¡} tj  | d ¡}t | |¡qÌqPdS)NrWiíraZpython3zpython3.r/T)r]cSs,g|]$}tj tj |¡d¡dvr|‘qS)r/)ú.exez.dll)r r rIrc©Ú.0rVrrrÚ sÿz+EnvBuilder.setup_python..cSs"g|]}tj |¡ d¡r|‘qS))raZ vcruntime)r r rIÚ startswithrjrrrrlsÿ>z python.exez pythonw_d.exez pythonw.exez python_d.exezinit.tclr1)rDrFr^r>r rBr=r r"Úchmodr;r@r!r*rr rerfr ÚaddrbÚwalkrr+r&rZ)rrrMr ZcopierrLÚsuffixÚsuffixesZbase_exer[ÚrootÚdirsÚfilesZtcldirr\rrrrösP      ÿ ÿ      zEnvBuilder.setup_pythoncCs$|jddddg}tj|tjddS)Nz-ImZ ensurepipú --upgradez --default-pip)Ústderr)rGÚ subprocessÚ check_outputÚSTDOUT©rrÚcmdrrrr3s ÿzEnvBuilder._setup_pipcCs2tj tj t¡¡}tj |d¡}| ||¡dS)Nr_)r r rrLrdr!Úinstall_scripts)rrr rrrr<s zEnvBuilder.setup_scriptscCsdSrr)rrrrrrKszEnvBuilder.post_setupc s”|j|j|j|j|jdœ}dd„}dd„}tj‰|j}| d¡rF|‰n| d¡rV|‰ntj‰‡fdd „|  ¡Dƒ}|  ¡D]\}}|  ||¡}qz|S) N)Z __VENV_DIR__Z __VENV_NAME__Z__VENV_PROMPT__Z__VENV_BIN_NAME__Z__VENV_PYTHON__cSs| dd¡}d|›dS)Nú'z'')Úreplace©ÚsrrrÚ quote_ps1hs z/EnvBuilder.replace_variables..quote_ps1cSs|Srrr€rrrÚ quote_batrsz/EnvBuilder.replace_variables..quote_batz.ps1z.batcsi|]\}}|ˆ|ƒ“qSrr)rkÚkeyr©ÚquoterrÚ €óz0EnvBuilder.replace_variables..) rr:rrErFÚshlexr†Ú script_pathrgÚitemsr) rÚtextrZ replacementsr‚rƒrŠr„Zquotedrr…rÚreplace_variablesUs& û   zEnvBuilder.replace_variablesc Csä|j}t|ƒ}t |¡D]Ä\}}}||krX|dd…D]}|dtjfvr8| |¡q8q|D]~} tjdkr‚|  d¡r‚|  d¡r‚q\tj  || ¡} ||d…  tj ¡dd…} | s¶|} ntjj |g| ¢RŽ} tj  | ¡sàt  | ¡tj  | | ¡} t| dƒ} |  ¡}Wdƒn1s0Y|  d¡s’| |_z$| d¡}| ||¡}| d¡}Wn8ty}zd}t d| |¡WYd}~n d}~00|dur\t| d ƒ} |  |¡Wdƒn1sÆ0Yt | | ¡q\qdS) NÚcommonrWra)riz.pdbr4ÚrbrOz+unable to copy script %r, may be binary: %sÚwb)rDÚlenr rprBr$rmrgr r!r9Úsepr*r+rTÚreadrŠÚdecoderÚencodeÚ UnicodeErrorrJrKrUr&Úcopymode)rrr rMÚplenrsrtrur-rVZsrcfilerqZdstdirZdstfileÚdataÚerrrr}…sL   ÿ   (   ÿ *zEnvBuilder.install_scriptscCs@t dt›d|j›¡|jddddg}| t¡t |¡dS)Nz Upgrading z packages in z-mrÚinstallrv)rJÚdebugÚCORE_VENV_DEPSrDrGÚextendrxÚ check_callr{rrrr¸s ÿ zEnvBuilder.upgrade_dependencies)FFFFFNF)F)F)Ú__name__Ú __module__Ú __qualname__rrr)rrr rBr^rrrrrr}rrrrrrs$þ B   +=  03rFcCs"t||||||d}| |¡dS)N)rrrr rr)rr)rrrrr rrÚbuilderrrrrÁs þrc Cs‚d}tjdkrd}nttdƒs"d}|s2tdƒ‚nLddl}|jtddd }|jd d d d d|jddddddtj dkr€d}nd}|  ¡}|jd|dddd|jd| dddd|jdddddd|jddddd d|jd!d"ddd#d$|jd%d&d'|jd(ddd)d*  d+  t ¡¡d| |¡}|jrB|jrBtd,ƒ‚t|j|j|j|j|j|j|jd-}|jD]}| |¡qldS).NT)rRrRFÚ base_prefixz.This script is only for use with Python >= 3.3rzFCreates 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ÚepilogrtZENV_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«rWz --symlinksrz[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--clearrzcDelete the contents of the environment directory if it already exists, before environment creation.rvrzlUpgrade 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-depsrz;Upgrade core dependencies: {} to the latest version in PyPIú z1you cannot supply --upgrade and --clear together.)rrrrr rr)r;r@Úhasattrr,ÚargparseÚArgumentParserr Ú add_argumentr rBÚadd_mutually_exclusive_groupÚformatr!rÚ parse_argsrrrr­rr rrrtr) ÚargsZ compatibler´ÚparserZ use_symlinksÚgroupÚoptionsr£r-rrrÚmainÉs~   û ÿþ þ þ ÿ ÿþÿ þþ ú r¾Ú__main__r/z Error: %s)Úfile)FFFFNF)N)Úloggingr r&rxr;rer7r‰rÚ getLoggerr rJrrr¾ÚrcrYršÚprintrwÚexitrrrrÚs2 /ÿ  N(