£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
U
    .e[                     @   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 ddl	m
Z
 ddlmZ ddlmZ er|dd	lmZmZ dd
lmZ eeZdd Zdd Zdd Zdd ZdS )z4Metadata generation logic for source distributions.
    N)InstallationError)
ensure_dir)make_setuptools_shim_args)call_subprocess)MYPY_CHECK_RUNNING)vcs)CallableList)InstallRequirementc                 C   s   | j s
tS tS )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_metadatainstall_req r   N/usr/lib/python3.8/site-packages/pip/_internal/operations/generate_metadata.pyget_metadata_generator   s    r   c                    s   dd   fdd}dd }| }|r.||}nt j|d}t |}|sVtd| t|d	krn|j|d
 t j||d S )zEFind an .egg-info in `source_directory`, based on `is_editable`.
    c                 S   s0   t jt j| ddp.t jt j| ddS )NbinpythonZScriptsz
Python.exe)ospathlexistsjoinexists)r   r   r   r   looks_like_virtual_env(   s    z._find_egg_info.<locals>.looks_like_virtual_envc                    s   g }t | D ]\ }}tjD ]}||kr|| qt|D ]<}t j |r`|| q>|dksp|dkr>|| q>| fdd|D  qdd |D S )NZtestZtestsc                 3   s   | ]}t j |V  qd S N)r   r   r   ).0dir_rootr   r   	<genexpr>?   s     zC_find_egg_info.<locals>.locate_editable_egg_info.<locals>.<genexpr>c                 S   s   g | ]}| d r|qS )z	.egg-info)endswith)r   fr   r   r   
<listcomp>@   s     
 zD_find_egg_info.<locals>.locate_editable_egg_info.<locals>.<listcomp>)	r   walkr   Zdirnamesremovelistr   r   extend)baseZ
candidatesdirsfilesr   r   r   r   locate_editable_egg_info/   s    
z0_find_egg_info.<locals>.locate_editable_egg_infoc                 S   s(   |  tjjtjjr"|  tjjp$d S )Nr   )countr   r   sepaltsep)r   r   r   r   depth_of_directoryB   s    z*_find_egg_info.<locals>.depth_of_directorypip-egg-infoz!Files/directories not found in %s   )keyr   )r   r   r   listdirr   lensort)Zsource_directoryZis_editabler+   r/   r'   	filenamesr   r*   r   _find_egg_info#   s    

r7   c              	   C   s   | j pd| j}td| j| t| j}| jr<|dg7 }g }| jsft	j
| jd}d|g}t| | j  t|dg | | jdd W 5 Q R X t| j| jS )	Nzfrom {}z2Running setup.py (path:%s) egg_info for package %sz--no-user-cfgr0   z
--egg-baseZegg_infozpython setup.py egg_info)cwdZcommand_desc)nameformatlinkloggerdebugZsetup_py_pathr   isolatedZeditabler   r   r   Zunpacked_source_directoryr   Z	build_envr   r7   )r   Zreq_details_strZbase_cmdZegg_base_optionZegg_info_dirr   r   r   r   ^   s6     

 r   c                 C   s   |   S r   )Zprepare_pep517_metadatar   r   r   r   r      s    r   )__doc__Zloggingr   Zpip._internal.exceptionsr   Zpip._internal.utils.miscr   Z$pip._internal.utils.setuptools_buildr   Zpip._internal.utils.subprocessr   Zpip._internal.utils.typingr   Zpip._internal.vcsr   typingr   r	   Zpip._internal.req.req_installr
   Z	getLogger__name__r<   r   r7   r   r   r   r   r   r   <module>   s    
;(