o
    Ëý°j–  ã                   @   s¦   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ e e¡Zd	ed
efdd„Zdededededed
efdd„ZdS )z;Metadata generation logic for legacy source distributions.
é    N)ÚBuildEnvironment)Úopen_spinner)ÚInstallationErrorÚInstallationSubprocessErrorÚMetadataGenerationFailed)Úmake_setuptools_egg_info_args)Úcall_subprocess)ÚTempDirectoryÚ	directoryÚreturnc                 C   sR   dd„ t  | ¡D ƒ}|std| › �ƒ‚t|ƒdkr td | ¡ƒ‚t j | |d ¡S )z.Find an .egg-info subdirectory in `directory`.c                 S   s   g | ]	}|  d ¡r|‘qS )z	.egg-info)Úendswith)Ú.0Úf© r   ú¡/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.pyÚ
<listcomp>   s    z"_find_egg_info.<locals>.<listcomp>z No .egg-info directory found in é   z-More than one .egg-info directory found in {}r   )ÚosÚlistdirr   ÚlenÚformatÚpathÚjoin)r
   Ú	filenamesr   r   r   Ú_find_egg_info   s   ÿr   Ú	build_envÚsetup_py_pathÚ
source_dirÚisolatedÚdetailsc           	      C   sÒ   t  d||¡ tddd�j}t|||d�}| �F tdƒ�%}z
t||d|d� W n ty9 } zt|d	�|‚d
}~ww W d
  ƒ n1 sDw   Y  W d
  ƒ t	|ƒS W d
  ƒ t	|ƒS 1 s`w   Y  t	|ƒS )znGenerate metadata using setup.py-based defacto mechanisms.

    Returns the generated metadata directory.
    z2Running setup.py (path:%s) egg_info for package %szpip-egg-infoT)ÚkindÚglobally_managed)Úegg_info_dirÚno_user_configzPreparing metadata (setup.py)zpython setup.py egg_info)ÚcwdÚcommand_descÚspinner)Úpackage_detailsN)
ÚloggerÚdebugr	   r   r   r   r   r   r   r   )	r   r   r   r   r   r"   Úargsr&   Úerrorr   r   r   Úgenerate_metadata$   sB   ýý

ü€ÿúþ
ÿô
ÿór,   )Ú__doc__Úloggingr   Úpip._internal.build_envr   Úpip._internal.cli.spinnersr   Úpip._internal.exceptionsr   r   r   Ú$pip._internal.utils.setuptools_buildr   Úpip._internal.utils.subprocessr   Úpip._internal.utils.temp_dirr	   Ú	getLoggerÚ__name__r(   Ústrr   Úboolr,   r   r   r   r   Ú<module>   s0    
ÿþýüûú