U
.e[ @ s d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZ ddl
mZ er|dd lmZmZ dd
lmZ eeZdd Zd
d Zdd Zdd ZdS )z4Metadata generation logic for source distributions.
N)InstallationError)
ensure_dir)make_setuptools_shim_args)call_subprocess)MYPY_CHECK_RUNNING)vcs)CallableList)InstallRequirementc C s | j s
tS tS )a Return 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_metadatainstall_req r N/usr/lib/python3.8/site-packages/pip/_internal/operations/generate_metadata.pyget_metadata_generator s r c s dd fdd}dd }| }|r.||}nt j|d}t |}|sVtd| t|d krn|j|d
t j||d S )zEFind an .egg-info in `source_directory`, based on `is_editable`.
c S s0 t jt j| ddp.t jt j| ddS )NbinpythonZScriptsz
Python.exe)ospathlexistsjoinexists)r r r r looks_like_virtual_env( s z._find_egg_info..looks_like_virtual_envc s g }t | D ]\ }}tjD ]}||kr|| qt|D ]<}t j |r`|| q>|dksp|dkr>|| q>| fdd|D qdd |D S )NZtestZtestsc 3 s | ]}t j |V qd S N)r r r ).0dir_rootr r ? s zC_find_egg_info..locate_editable_egg_info..c S s g | ]}| d r|qS )z .egg-info)endswith)r fr r r
@ s
zD_find_egg_info..locate_editable_egg_info..) r walkr Zdirnamesremovelistr r extend)baseZ
candidatesdirsfilesr r r r locate_editable_egg_info/ s
z0_find_egg_info..locate_editable_egg_infoc S s( | tjjtjjr"| tjjp$d S )Nr )countr r sepaltsep)r r r r depth_of_directoryB s z*_find_egg_info..depth_of_directorypip-egg-infoz!Files/directories not found in %s )keyr )r r r listdirr lensort)Zsource_directoryZis_editabler+ r/ r' filenamesr r* r _find_egg_info# s
r7 c C s | j pd| j}td| j| t| j}| jr<|dg7 }g }| jsft j
| jd}d|g}t
| | j t|dg | | jdd W 5 Q R X t| j| jS ) Nzfrom {}z2Running setup.py (path:%s) egg_info for package %sz
--no-user-cfgr0 z
--egg-baseZegg_infozpython setup.py egg_info)cwdZcommand_desc)nameformatlinkloggerdebugZ
setup_py_pathr isolatedZeditabler r r Zunpacked_source_directoryr Z build_envr r7 )r Zreq_details_strZbase_cmdZegg_base_optionZegg_info_dirr r r r ^ s6
r c C s | S r )Zprepare_pep517_metadatar
r r r r s r )__doc__Zloggingr Zpip._internal.exceptionsr Zpip._internal.utils.miscr Z$pip._internal.utils.setuptools_buildr Zpip._internal.utils.subprocessr Zpip._internal.utils.typingr Zpip._internal.vcsr typingr r Zpip._internal.req.req_installr
Z getLogger__name__r<