o ?OgSbã @sÚ ddlZddlZddlZddlZddlZddlZddlZddlZdZe  e ¡Z Gdd„dƒZ  ddd„Z ddd „Ze d krkd ZzeƒdZWneycZzed eejd WYdZ[ndZ[wwe e¡dSdS)éN)ÚpipZ setuptoolsc@sžeZdZ   d!dd„Zdd„Zdd„Zd d „Zd d „Zej d kr(d"dd„Z nd"dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „ZdS)#Ú EnvBuilderFNcCsF||_||_||_||_||_|dkrtj t ¡¡}||_ ||_ dS)NÚ.) Úsystem_site_packagesÚclearÚsymlinksÚupgradeÚwith_pipÚosÚpathÚbasenameÚgetcwdÚpromptÚ upgrade_deps)Úselfrrrrr rr©rú4/opt/alt/python310/lib64/python3.10/venv/__init__.pyÚ__init__/s zEnvBuilder.__init__cCsŽ tj |¡}| |¡}|j}d|_| |¡| |¡|jr$| |¡|j s1|  |¡|  |¡|r;d|_| |¡|j rE|  |¡dSdS)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]&}tj ||¡}tj |¡stj |¡r t |¡qtj |¡r+t  |¡qdS©N) r Úlistdirr ÚjoinÚislinkÚisfileÚremoveÚisdirÚshutilZrmtree)rr ÚfnrrrÚclear_directoryXs   €ûzEnvBuilder.clear_directorycCsä dd„}tj |¡r|jr| |¡t ¡}||_tj |¡d|_ |j dur+|j n|j }d||_ ||ƒt j }|s@t dƒ‚tj tj |¡¡\}}||_||_||_t jdkrgd}d} tj |d d ¡} nd }d } tj |d dt jdd…d ¡} tj || ¡|_} || ƒ|| ƒt jdkr¯tjdkr¯t jdkr¯tj |d¡} tj | ¡s¯t d | ¡tj ||¡|_} ||_tj | |¡|_|| ƒ|j|_t jdkrðtj |j¡}tj |¡tj |j¡krðt  d|j|¡||_|S)NcSsBtj |¡s t |¡dStj |¡stj |¡rtd|ƒ‚dS)NzUnable to create directory %r)r r ÚexistsÚmakedirsr"r#Ú ValueError)ÚdrrrÚcreate_if_neededhs  ÿz7EnvBuilder.ensure_directories..create_if_neededéz(%s) z“Unable to determine path to the running Python interpreter. Provide an explicit path or check that your PATH environment variable is correctly set.Zwin32ZScriptsZIncludeÚ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+rÚ 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|dddC}| d|j¡|jr"d}nd}| d|¡| d t j dd …¡|j durN| d |j ›d ¡WdƒdSWdƒdS1sYwYdS) 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<rr9r>r)rrr ÚfZinclrrrr§s ÷"øzEnvBuilder.create_configurationÚntcCs‚ |j }|s5ztj |¡s!|rt tj |¡|¡nt ||¡Wnty4t d||¡d}Ynw|r?t   ||¡dSdS)NúUnable to symlink %r to %rT) rr r r"rAr Ú ExceptionrHrIr&Úcopyfile)rÚsrcÚdstÚrelative_symlinks_okZ force_copyrrrÚsymlink_or_copy½s   € þÿzEnvBuilder.symlink_or_copycCsX tj |¡o tj |¡ }|jrB|sBtj |¡sBz|r)t tj |¡|¡WdSt ||¡WdStyAt   d||¡Ynwtj  tj |¡¡\}}tj  tj  t¡dd||¡}t d¡shtj |¡s’| d¡rwd|}|dd…}|dkr~d}n|d kr„d }tj  tj  |¡||¡}n|}tj |¡s¤|s¢t   d |¡dSt ||¡dS) NrVÚscriptsrUTZ_déþÿÿÿÚpythonZ venvlauncherZpythonwZ venvwlauncherzUnable to copy %r)r r Úlexistsr)rr"rAr rWrHrIÚsplitextr!rJÚ__file__Ú sysconfigÚis_python_buildr#Úendswithr&rX)rrYrZr[Zbad_srcr ZextZsrcfnrrrr\ÐsB ÿ ÿý    cCsÊ |j}|j}|j}|j}tjdkrU||j|ƒtj |¡s$t  |d¡dddt j d›fD]#}tj  ||¡}tj  |¡sR||j|ddtj |¡sRt  |d¡q/dS|jrod d „t |¡Dƒ}t d¡rnd d „|Dƒ}nhd £}tj |j¡}| |¡|D]}tj  ||¡} tj | ¡rš|| tj  ||¡ƒqt d¡rát |j¡D]<\} } } d | vràtj | ¡} tj  |jd| ¡} tj  | ¡sÉt | ¡tj  | d ¡} tj  | d ¡}t | |¡dSq¦dSdS)NrUiír_Zpython3zpython3.r.T)r[cSs,g|]}tj tj |¡d¡dvr|‘qS)r.)ú.exez.dll)r r rGra©Ú.0rTrrrÚ s ÿz+EnvBuilder.setup_python..cSs"g|] }tj |¡ d¡r|‘qS))r_Z vcruntime)r r rGÚ startswithrgrrrris þÿ>z pythonw.exez pythonw_d.exez python_d.exez python.exezinit.tclr/)rBrDr\r<r r@r;r r"Úchmodr9r>r!r)rr rcrdr Úaddr`Úwalkrr*r&rX)rrrKr ZcopierrJÚsuffixÚsuffixesZbase_exerYÚrootÚdirsÚfilesZtcldirrZrrrrûs`       €ù ÿ ÿ€  €     øýzEnvBuilder.setup_pythoncOsl |jg|¢}tj ¡|d<}|j|d<| dd¡| dd¡|j|d<|j|d<tj|fi|¤ŽdS)NÚenvZ VIRTUAL_ENVZ PYTHONHOMEZ PYTHONPATHÚcwdr;)rEr ÚenvironÚcopyrÚpopÚ subprocessZ check_output)rrZpy_argsÚkwargsÚargsrsrrrÚ_call_new_python8s      zEnvBuilder._call_new_pythoncCs |j|ddddtjddS)Nú-mZ ensurepipú --upgradez --default-pip)Ústderr)r{rxZSTDOUT©rrrrrrGs  ÿzEnvBuilder._setup_pipcCs4 tj tj t¡¡}tj |d¡}| ||¡dS)Nr])r r rrJrbr!Úinstall_scripts)rrr rrrrLs zEnvBuilder.setup_scriptscCs dSrrrrrrr[szEnvBuilder.post_setupc s– |j|j|j|j|jdœ}dd„}dd„}tj‰|j}| d¡r$|‰n | d¡r,|‰ntj‰‡fdd „|  ¡Dƒ}|  ¡D] \}}|  ||¡}q>|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_ps1xs  z/EnvBuilder.replace_variables..quote_ps1cSs|SrrrƒrrrÚ quote_bat‚sz/EnvBuilder.replace_variables..quote_batz.ps1z.batcsi|] \}}|ˆ|ƒ“qSrr)rhÚkeyr„©ÚquoterrÚ sz0EnvBuilder.replace_variables..) rr8rrCrDÚshlexr‰Ú script_pathreÚitemsr‚) rÚtextrZ replacementsr…r†rŒr‡ZquotedrrˆrÚreplace_variableses( û   zEnvBuilder.replace_variablesc CsÚ |j}t|ƒ}t |¡D]Ý\}}}||kr,|dd…D]}|dtjfvr*| |¡qq |D]»} tjdkr@|  d¡r@|  d¡r@q.tj  || ¡} ||d…  tj ¡dd…} | sZ|} n tjj |g| ¢RŽ} tj  | ¡sot  | ¡tj  | | ¡} t| dƒ } |  ¡}Wdƒn1sŠwY|  d¡sÅ| |_z| d¡}| ||¡}| d¡}WntyÄ}zd}t d| |¡WYd}~nd}~ww|durét| d ƒ } |  |¡Wdƒn1sÞwYt | | ¡q.q dS) NÚcommonrUr_)rfz.pdbr2ÚrbrMz+unable to copy script %r, may be binary: %sÚwb)rBÚlenr rmr@r$rjrer r!r7Úsepr)r*rRÚreadrŒÚdecoderÚencodeÚ UnicodeErrorrHrIrSr&Zcopymode)rrr rKZplenrprqrrr,rTZsrcfilernZdstdirZdstfileÚdataÚerrrr€•s^  €ÿ    ÿ   ÿ€þ  ÿ €äúzEnvBuilder.install_scriptscCs6t dt›d|j›¡|j|ddddgt¢RŽdS)Nz Upgrading z packages in r|rZinstallr})rHÚdebugÚCORE_VENV_DEPSrBr{rrrrrÈs ÿ ÿzEnvBuilder.upgrade_dependencies)FFFFFNF)F)Ú__name__Ú __module__Ú __qualname__rrr(rrr r@r\rr{rrrrr€rrrrrrs* þ G   += 0 3rFcCs$ t||||||d}| |¡dS)N)rrrr rr)rr)rrrrr rrÚbuilderrrrrÐs þrc Csxd}tjdkr d}nttdƒsd}|stdƒ‚ddl}|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| |¡}|jr|jrtd,ƒ‚t|j|j|j|j|j|j|jd-}|jD]}| |¡q²dS).NT)rPrPFÚ 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Ú descriptionZepilogrqZENV_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§rUz --symlinksrz[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--clearrzcDelete the contents of the environment directory if it already exists, before environment creation.r}rzlUpgrade 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)r9r>Úhasattrr+ÚargparseÚArgumentParserrÚ add_argumentr r@Zadd_mutually_exclusive_groupÚformatr!rœÚ parse_argsrrrr©rr rrrqr) rzZ compatibler¯ÚparserZ use_symlinksÚgroupZoptionsr r,rrrÚmainØs‚  û ÿþ þ þ ÿ ÿþÿ ÿý  ú  ÿr¶Ú__main__r.z Error: %s)Úfile)FFFFNFr)Zloggingr r&rxr9rcr5r‹rœZ getLoggerrrHrrr¶ZrcrWršÚprintr~ÚexitrrrrÚs< > ÿ N€ÿù