U ��.e[�@s�dZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZe r|dd lmZmZdd lmZe�e�Zd d �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)�Callable�List)�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_req�r�N/usr/lib/python3.8/site-packages/pip/_internal/operations/generate_metadata.py�get_metadata_generatorsrcs�dd���fdd�}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`. cSs0tj�tj�|dd��p.tj�tj�|dd��S)N�bin�pythonZScriptsz Python.exe)�os�path�lexists�join�exists)rrrr�looks_like_virtual_env(s�z._find_egg_info..looks_like_virtual_envcs�g}t�|�D]�\�}}tjD]}||kr|�|�qt|�D]<}�tj��|��r`|�|�q>|dksp|dkr>|�|�q>|��fdd�|D��qdd�|D�S)NZtestZtestsc3s|]}tj��|�VqdS�N)rrr)�.0�dir_��rootrr� ?szC_find_egg_info..locate_editable_egg_info..cSsg|]}|�d�r|�qS)z .egg-info)�endswith)r�frrr� @s zD_find_egg_info..locate_editable_egg_info..) r�walkrZdirnames�remove�listrr�extend)�baseZ candidates�dirs�filesr�rrr�locate_editable_egg_info/s     z0_find_egg_info..locate_editable_egg_infocSs(|�tjj�tjjr"|�tjj�p$dS)Nr)�countrr�sep�altsep)rrrr�depth_of_directoryBs ��z*_find_egg_info..depth_of_directory� pip-egg-infoz!Files/directories not found in %s�)�keyr)rrr�listdirr�len�sort)Zsource_directoryZ is_editabler+r/r'� filenamesrr*r�_find_egg_info#s   �  r7c Cs�|jpd�|j�}t�d|j|�t|j�}|jr<|dg7}g}|jsft j � |j d�}d|g}t |�|j� t|dg||j dd�W5QRXt|j |j�S) Nzfrom {}z2Running setup.py (path:%s) egg_info for package %sz --no-user-cfgr0z --egg-baseZegg_infozpython setup.py egg_info)�cwdZ command_desc)�name�format�link�logger�debugZ setup_py_pathr�isolatedZeditablerrrZunpacked_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.vcsr�typingrr Zpip._internal.req.req_installr Z getLogger�__name__r<rr7r r rrrr�s         ;(