U .e[@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZe r|dd lmZmZdd lmZeeZd d Zd dZddZddZdS)z4Metadata generation logic for source distributions. N)InstallationError) ensure_dir)make_setuptools_shim_args)call_subprocess)MYPY_CHECK_RUNNING)vcs)CallableList)InstallRequirementcCs|js tStS)aReturn a callable metadata generator for this InstallRequirement. A metadata generator takes an InstallRequirement (install_req) as an input, generates metadata via the appropriate process for that install_req and returns the generated metadata directory. )Z use_pep517_generate_metadata_legacy_generate_metadata install_reqrN/usr/lib/python3.8/site-packages/pip/_internal/operations/generate_metadata.pyget_metadata_generatorsrcsddfdd}dd}|}|r.||}ntj|d}t|}|sVtd|t|d krn|j|d tj||d S) zEFind an .egg-info in `source_directory`, based on `is_editable`. cSs0tjtj|ddp.tjtj|ddS)NbinpythonZScriptsz Python.exe)ospathlexistsjoinexists)rrrrlooks_like_virtual_env(sz._find_egg_info..looks_like_virtual_envcsg}t|D]\}}tjD]}||kr||qt|D]<}tj|r`||q>|dksp|dkr>||q>|fdd|Dqdd|DS)NZtestZtestsc3s|]}tj|VqdSN)rrr).0dir_rootrr ?szC_find_egg_info..locate_editable_egg_info..cSsg|]}|dr|qS)z .egg-info)endswith)rfrrr @s zD_find_egg_info..locate_editable_egg_info..) rwalkrZdirnamesremovelistrrextend)baseZ candidatesdirsfilesrrrrlocate_editable_egg_info/s     z0_find_egg_info..locate_editable_egg_infocSs(|tjjtjjr"|tjjp$dS)Nr)countrrsepaltsep)rrrrdepth_of_directoryBs z*_find_egg_info..depth_of_directory pip-egg-infoz!Files/directories not found in %s)keyr)rrrlistdirrlensort)Zsource_directoryZ is_editabler+r/r' filenamesrr*r_find_egg_info#s     r7c Cs|jpd|j}td|j|t|j}|jr<|dg7}g}|jsft j |j d}d|g}t ||j t|dg||j ddW5QRXt|j |jS) Nzfrom {}z2Running setup.py (path:%s) egg_info for package %sz --no-user-cfgr0z --egg-baseZegg_infozpython setup.py egg_info)cwdZ command_desc)nameformatlinkloggerdebugZ setup_py_pathrisolatedZeditablerrrZunpacked_source_directoryrZ build_envrr7)rZreq_details_strZbase_cmdZegg_base_optionZ egg_info_dirrrrr ^s6   r cCs|Sr)Zprepare_pep517_metadatar rrrr sr )__doc__ZloggingrZpip._internal.exceptionsrZpip._internal.utils.miscrZ$pip._internal.utils.setuptools_buildrZpip._internal.utils.subprocessrZpip._internal.utils.typingrZpip._internal.vcsrtypingrr Zpip._internal.req.req_installr Z getLogger__name__r<rr7r r rrrrs         ;(