U eC@sddlmZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z d d lmZmZd d lmZd d lmZGd ddeZdgZdS)) annotationsN)copy)handle_store_python) PythonInfo)ProcessCallFailedError) ensure_dir)run_cmd)ViaGlobalRefApiViaGlobalRefMeta)CPython3macOsBrew) Pypy3WindowscszeZdZddfdd ZfddZeddZfd d Zd d Zd dZ ddZ ddZ fddZ ddZ ZS)VenvNone)returncs>|j|_t||t}||ko0|j|jk|_d|_dSN) describesuper__init__rcurrent executablesystem_executable can_be_inline_context)selfoptions interpreterr __class__S/opt/hc_python/lib/python3.8/site-packages/virtualenv/create/via_global_ref/venv.pyrs z Venv.__init__cs$t|jrd|jjjfgngS)Nr)r_argsrr__name__)rrrr r!sz Venv._argscCs<|jr8t|rt|St}|jdkr4t||}|SdS)Nwin32)Zhas_venvr Z can_describeZ setup_metar platformr)clsrmetarrr can_creates    zVenv.can_createcsB|jr|n||jD] }t|qt|dSr)r create_inlinecreate_via_sub_processZlibsrrcreate!executables_for_win_pypy_less_v37)rlibrrr r*'s    z Venv.createcCs:|j}t|tr6|jr6||jD]}|||jq"dS)z PyPy <= 3.6 (v7.3.3) for Windows contains only pypy3.exe and pypy3w.exe Venv does not handle non-existing exe sources, e.g. python.exe, so this patch does it. N)r isinstancer Zless_v37Z executablesrrunsymlinks)rZcreatorexerrr r+1sz&Venv.executables_for_win_pypy_less_v37cCs4ddlm}||jd|jdd}|t|jdS)Nr) EnvBuilderF)Zsystem_site_packagesclearr/Zwith_pip)venvr1enable_system_site_packager/r*strdest)rr1Zbuilderrrr r(<s zVenv.create_inlinecCsB|}tdd|t|\}}}|dkr>t||||dS)Nz)using host built-in venv to create via %s r)get_host_create_cmdlogginginfojoinrr)rcmdcodeouterrrrr r)Gs zVenv.create_via_sub_processcCsB|jjdddg}|jr |d||jr.dndt|jf|S)Nz-mr3z --without-pipz--system-site-packagesz --symlinksz--copies)rrr4appendextendr/r5r6)rr<rrr r8Ns  zVenv.get_host_create_cmdcs(t|j}t|j|dSr)rZ pyenv_cfgrefreshr set_pyenv_cfgupdate)rZ venv_contentrrr rCUs zVenv.set_pyenv_cfgcCsHt|d}|dk rs         T