a  zeeZ @sddlZddlZddlZddlZddlZddlZddlZdZee Z GdddZ dddZ ddd Z e d krd Zze dZWn6eyZzed eejd WYdZ[n dZ[00eedS)N)pipZ setuptoolsc@seZdZdddZddZddZd d Zd d Zej d krHd ddZ n d!ddZ ddZ ddZ ddZ ddZddZddZddZdS)" EnvBuilderFNcCsF||_||_||_||_||_|dkr6tjt}||_ ||_ dS)N.) system_site_packagesclearsymlinksupgradewith_pipospathbasenamegetcwdprompt upgrade_deps)selfrrrrr rrrA/opt/bitninja-python-dojo/embedded/lib/python3.9/venv/__init__.py__init__.szEnvBuilder.__init__cCstj|}||}|j}d|_|||||jrF|||j s`| || ||rtd|_|||j r| |dS)NFT)r r abspathensure_directoriesrcreate_configuration setup_pythonr _setup_pipr setup_scripts post_setuprupgrade_dependencies)renv_dircontextZtrue_system_site_packagesrrrcreate;s         zEnvBuilder.createcCs\t|D]L}tj||}tj|s4tj|r@t|q tj|r t |q dSN) r listdirr joinislinkisfileremoveisdirshutilrmtree)rr fnrrrclear_directoryWs   zEnvBuilder.clear_directorycCsdd}tj|r$|jr$||t}||_tj|d|_ |j durT|j n|j }d||_ ||t j }tjtj |\}}||_||_||_t jdkrd}d} tj|dd } n(d }d } tj|d d t jddd } tj|| |_} || || t jdkrXtjdkrXt jdkrXtj|d} tj| sXtd | tj|||_} ||_tj| ||_|| |j|_t jdkrtj|j}tj|tj|jkrtd|j|||_|S)NcSs@tj|st|n$tj|s0tj|r.create_if_neededz(%s) win32ZScriptsZIncludeLibz site-packagesbinZincludelibz python%d.%dlposixdarwinZlib64zActual environment location may have moved due to redirects, links or junctions. Requested location: "%s" Actual location: "%s") r r r*rr)typesSimpleNamespacersplitenv_namersys_base_executabler executable python_dirZ python_exeplatformr! version_infoZinc_pathmaxsizenamesymlinkbin_pathbin_nameenv_exe env_exec_cmdrealpathnormcaseloggerwarning)rrr.rrr=dirnameZexenameZbinnameZincpathZlibpathr Z link_pathbinpathZ real_env_exerrrr_s\      zEnvBuilder.ensure_directoriescCstj|jd|_}t|dddt}|d|j|jrBd}nd}|d||d t j dd |j dur|d |j d Wdn1s0YdS) Nz pyvenv.cfgwutf-8)encodingz home = %s trueZfalsez"include-system-site-packages = %s zversion = %d.%d.%d z prompt =  ) r r r!rZcfg_pathopenwriter>rr;r@r)rrr fZinclrrrrs  zEnvBuilder.create_configurationntcCs||j }|shz6tj|s@|r4ttj||n t||Wn$tyftd||d}Yn0|rxt ||dS)NUnable to symlink %r to %rT) rr r r"rCr ExceptionrJrKr&copyfile)rsrcdstrelative_symlinks_okZ force_copyrrrsymlink_or_copys   zEnvBuilder.symlink_or_copycCsZtj|otj| }|jr~|s~tj|s~z,|rLttj||n t||WdSty|t d||Yn0tj tj|\}}tj tj tdd||}tdstj|s"|drd|}|dd}|dkrd}n|d krd }tj tj |||}n|}tj|sJ|sFt d |dSt||dS) NrXscriptsrWTZ_dpythonZ venvlauncherZpythonwZ venvwlauncherzUnable to copy %r)r r lexistsr*rr"rCr rYrJrKsplitextr!rL__file__ sysconfigis_python_buildr#endswithr&rZ)rr[r\r]Zbad_srcr extZsrcfnrrrr^s<      cCs|j}|j}|j}|j}tjdkr||j|tj|sFt |ddddt j dfD]F}tj ||}tj |s\||j|ddtj|s\t |dq\n|jrd d t|D}tdrd d |D}ngd }|D]2}tj ||}tj|r||tj ||qtdrt|jD]z\} } } d | vr4tj| } tj |jd| } tj | s~t| tj | d }tj | d } t|| qq4dS)NrWiraZpython3zpython3.r/T)r]cSs,g|]$}tjtj|ddvr|qS)r/).exez.dll)r r rIrc.0rVrrr sz+EnvBuilder.setup_python..cSs"g|]}tj|dr|qS))raZ vcruntime)r r rI startswithrjrrrrls)z python.exez python_d.exez pythonw.exez pythonw_d.exezinit.tclr1)rDrFr^r>r rBr=r r"chmodr;r@r!r*rr rerfrbwalkr rr+r&rZ)rrrMr ZcopierrLsuffixsuffixesr[rootdirsfilesZtcldirr\rrrrsL             zEnvBuilder.setup_pythoncCs$|jddddg}tj|tjddS)Nz-ImZ ensurepip --upgradez --default-pip)stderr)rG subprocess check_outputSTDOUTrrcmdrrrr1s zEnvBuilder._setup_pipcCs2tjtjt}tj|d}|||dS)Nr_)r r rrLrdr!install_scripts)rrr rrrr:s zEnvBuilder.setup_scriptscCsdSrr)rrrrrrIszEnvBuilder.post_setupcCsJ|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__)replacerr:rrErF)rtextrrrrreplace_variablesSs zEnvBuilder.replace_variablesc Cs|j}t|}t|D]\}}}||krX|ddD]}|dtjfvr8||q8q|D]x} tjdkr| dr| drq\tj || } ||d tj dd} | s|} ntjj |g| R} tj | st | tj | | } t| d} | }Wdn1s0Y| dsz$|d}|||}|d}Wn8ty}zd}td| |WYd}~n d}~00|dur\t| d } | |Wdn1s0Yt| | q\qdS) NcommonrWra)riz.pdbr4rbrOz+unable to copy script %r, may be binary: %swb)rDlenr rorBr$rmrgr r!r9sepr*r+rTreaddecoderencode UnicodeErrorrJrKrUr&copymode)rrr rMZplenrrrsrtr-rVZsrcfilerpZdstdirZdstfiledataerrrr|esJ      (    *zEnvBuilder.install_scriptscCs@tdtd|j|jddddg}|tt|dS)Nz Upgrading z packages in z-mrinstallru)rJdebugCORE_VENV_DEPSrDrGextendrw check_callrzrrrrs  zEnvBuilder.upgrade_dependencies)FFFFFNF)F)F)__name__ __module__ __qualname__rrr)rrr rBr^rrrrrr|rrrrrrs$ B   +<  2rFcCs"t||||||d}||dS)N)rrrr rr)rr)rrrrr rrbuilderrrrrs rc Csd}tjdkrd}nttds"d}|s2tdnLddl}|jtddd }|jd d d d d|jddddddtj dkrd}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 descriptionepilogrsZENV_DIR+z)A directory to create the environment in.)metavarnargshelpz--system-site-packages store_true system_sitezDGive the virtual environment access to the system site-packages dir.)defaultactiondestrrWz --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.rurzlUpgrade 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))rrrrz--promptz;Provides an alternative prompt prefix for this environment.)rz--upgrade-depsrz;Upgrade core dependencies: {} to the latest version in PyPI z1you cannot supply --upgrade and --clear together.)rrrrr rr)r;r@hasattrr,argparseArgumentParserr add_argumentr rBadd_mutually_exclusive_groupformatr!r parse_argsrrrrrr rrrsr) argsZ compatiblerparserZ use_symlinksgroupoptionsrr-rrrmains~           r__main__r/z Error: %s)file)FFFFNF)N)loggingr r&rwr;rer7r getLoggerrrJrrrrcrYrprintrvexitrrrrs0   N(