a
    5h                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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 d
d Zdd Zdd ZdddddZdd Zdd Zdd Zdd ZG dd deZdS )    )annotationsN   )_reqs)metadata)SetuptoolsDeprecationWarning)Wheel)log)DistutilsErrorc                 C  s(   t | tr|  S t | ttfs$J | S )z8Ensure find-links option end-up being a list of strings.)
isinstancestrsplittuplelist)
find_links r   3lib/python3.9/site-packages/setuptools/installer.py_fixup_find_links   s    
r   c                 C  s   t   t|  t| |S )zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.)_DeprecatedInstalleremit_warn_wheel_not_available_fetch_build_egg_no_warn)distreqr   r   r   fetch_build_egg   s    r   c                   s   t  fddt D S )Nc                 3  s   | ]}t | V  qd S N)_dist_matches_req).0r   r   r   r   	<genexpr>(       z_present.<locals>.<genexpr>)anyr   Zdistributionsr   r   r   r   _present'   s    r!   z_reqs._StrOrIterzlist[metadata.Distribution])requiresreturnc                   sp   t jdd t  t|}tt|}dd |D } fdd|D }|D ] tj	
dt d qN|S )	N   )
stacklevelc                 s  s"   | ]}|j r|j  r|V  qd S r   )markerZevaluater   r   r   r   r   r   3   s   z$_fetch_build_eggs.<locals>.<genexpr>c                   s   g | ]}t  |qS r   )r   r'   r   r   r   
<listcomp>6   r   z%_fetch_build_eggs.<locals>.<listcomp>r    )r   r   r   r   parse	itertoolsfilterfalser!   syspathinsertr   Zlocate_file)r   r"   Zparsed_reqsZmissing_reqsZneeded_reqsZresolved_distsr   r(   r   _fetch_build_eggs+   s    
r1   c                 C  s(   t j| jt j|jko&| j|jv S r   )	packagingZutilsZcanonicalize_namenameversionZ	specifier)egg_distr   r   r   r   r   >   s
    
r   c                 C  s  t |}| d}d|v r"tddtjvo4dtjv}dtjv rFd }nd|v r\|d d }nd }d	|v rt|d	 d d d  ng }| jr|| j tj	| 
 }tjjt| d
d}|D ]}t||r|  S qt }	tjdddddd|	g}
|r|
d |d ur&|
d|f |p.g D ]}|
d|f q0|
|jpXt| zt|
 W n6 tjy } ztt||W Y d }~n
d }~0 0 tttj|	dd }tj|| }|| tj|d W  d    S 1 s 0    Y  d S )NZeasy_installZallow_hostszQthe `allow-hosts` option is not supported when using pip to install requirements.Z	PIP_QUIETZPIP_VERBOSEZPIP_INDEX_URL	index_urlr   r   z/*.egg)r/   z-mZpipz--disable-pip-version-checkwheelz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   z	/EGG-INFO)strip_markerZget_option_dictr	   osenvironr   Zdependency_linksextendr/   realpathZget_egg_cache_dirr   ZDistributionZdiscoverglobr   tempfileZTemporaryDirectoryr.   
executableappendurlr   
subprocessZ
check_callZCalledProcessErrorr   joinZegg_nameZinstall_as_eggZat)r   r   Zoptsquietr6   r   Zeggs_dirZcached_distsr5   Ztmpdircmdlinker7   Zdist_locationr   r   r   r   F   s\    

"




$
r   c                 C  s   t jt| } d| _| S )z
    Return a new requirement without the environment marker to avoid
    calling pip with something like `babel; extra == "i18n"`, which
    would always be ignored.
    N)r2   ZrequirementsZRequirementr   r&   r   r   r   r   r8      s    r8   c                 C  s6   zt d W n" t jy0   | dtj Y n0 d S )Nr7   z,WARNING: The wheel package is not available.)r   ZdistributionZPackageNotFoundErrorZannouncer   ZWARNr(   r   r   r   r      s    r   c                   @  s   e Zd ZdZdZdZdS )r   z9setuptools.installer and fetch_build_eggs are deprecated.z
    Requirements should be satisfied by a PEP 517 installer.
    If you are using pip, you can try `pip install --use-pep517`.
    )i  
      N)__name__
__module____qualname__Z_SUMMARYZ_DETAILSZ	_DUE_DATEr   r   r   r   r      s   r   ) Z
__future__r   r=   r,   r9   rB   r.   r>   Zpackaging.requirementsr2   Zpackaging.utilsr*   r   Z
_importlibr   warningsr   r7   r   	distutilsr   Zdistutils.errorsr	   r   r   r!   r1   r   r   r8   r   r   r   r   r   r   <module>   s.   	<