B _ X@sdZddlmZmZddlZddlZddlmZmZddl m Z ddl m Z ddl mZmZdd lmZdd lmZdd lmZmZmZd d ZddZddZddZddZdS)Z Bootstrap)absolute_importunicode_literalsN)eqlt)Path) ensure_str)Popen subprocess) from_bundle)add_wheel_to_update_log)VersionWheeldiscover_wheelsc Csxd}|r|tjkr&t|||||||}|rt|dkrt|tjkrtt|t|||||j|d}|dk rt|jrtt||||S)zw Get a wheel with the given distribution-version-for_py_version trio, by using the extra search dir + download N) distribution version_specfor_py_version search_dirsapp_data to_folderenv) r bundler Zembeddownload_wheelZas_version_specZhouseZ can_updater ) rversionrrdownloadrdo_periodic_updaterwheelrO/opt/alt/python37/lib/python3.7/site-packages/virtualenv/seed/wheels/acquire.py get_wheels rcCsd||p d}td|||tjdddddd d d d |d t||g}t|||}t||tj tj dd} | \} } | j dkrd| i} tj dkr| d| 7<n| | d<tj | j |f| t||||| } td| j| S)Nz{}{}zdownload wheel %s %s to %sz-mpiprz--progress-baroffz--disable-pip-version-checkz--only-binary=:all:z --no-depsz--python-versionz-dT)rstdoutstderruniversal_newlinesroutput)r$zdownloaded wheel %s)formatloggingdebugsys executablestrpip_wheel_env_runrr PIPE communicate returncode version_infoCalledProcessError_find_downloaded_wheelname)rrrrrrrZ to_downloadcmdprocessouterrkwargsresultrrrr-s8    rcCs\xL|D]@}|}x2dD]*}||rtt|t|dSqWq Wt||||S)N)zSaved zFile was already downloaded ) splitlineslstrip startswithrrlenabsolutefind_compatible_in_house)rrrrr9linemarkerrrrr5Ps   $r5cst||d|}dt|}}|dk r|dr:dt}n|drPdt}nt|t||dtfddt |Dt|}||krdS||S)Nresz+find_compatible_in_house..) rr@r?rr ValueErrorrZas_version_tuplenext enumerate)rrrZ in_folderZwheelsstartendZfrom_posr)rKrrrBZs    "rBc Cszdjtjdd}|}|ddddddDtd d||d |d |d }|dkrdtd t|j |td <|S)Nz{}.{}rrFcSsi|]\}}t|t|qSr)r.r)rHkvrrr nsz%pip_wheel_env_run..10)Z PIP_USE_WHEELZPIP_USERZ PIP_NO_INPUTr!F)rrrrrrrrzcould not find the embedded pip PYTHONPATH) r)r,r3copyupdateitemsr RuntimeErrorr.path)rrrrrrrrr/js$r/)__doc__ __future__rrr*r,operatorrrZvirtualenv.util.pathrZvirtualenv.util.sixrZvirtualenv.util.subprocessrr rr Zperiodic_updater utilr rrrrr5rBr/rrrrs    #