a
    G*fj                     @   s   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 Zdd Zdd ZG dd de
ZdS )    N)partial   )_reqs)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                 C   s\   dd l }tjdd t|  |jjt||jt	t
| dd}|D ]} |jj| dd qB|S )Nr      )
stacklevelT)Z	installerZreplace_conflicting)replace)pkg_resourcesr   r   r   Zworking_setZresolver   parseRequirementr   r   add)r   Zrequiresr   Zresolved_distsr   r   r   _fetch_build_eggs!   s    r    c                 C   s(  dd l }t|}| d}d|v r*tddtjvo<dtjv}dtjv rNd }nd|v rd|d d	 }nd }d
|v rt|d
 d	 d d  ng }| jr|| j tj	
|  }| }||D ]}	|	|v r||	r|	  S qt (}
tjdddddd|
g}|r|d |d ur*|d|f |p2g D ]}|d|f q4||jp\t| 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}|jj ||dW  d    S 1 s0    Y  d S )Nr   Z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-mZpipz--disable-pip-version-checkwheelz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlzEGG-INFO)metadata)!r   strip_markerZget_option_dictr   osenvironr   Zdependency_linksextendpathrealpathZget_egg_cache_dirZEnvironmentfind_distributionsZcan_addtempfileZTemporaryDirectorysys
executableappendZurlr
   
subprocessZ
check_callZCalledProcessErrorr   globjoinZegg_nameZinstall_as_eggZPathMetadataZDistributionZfrom_filename)r   r   r   Zoptsquietr!   r   Zeggs_dirZenvironmentZegg_distZtmpdircmdlinker"   Zdist_locationZdist_metadatar   r   r   r   1   sh    

"



$
r   c                 C   s"   ddl }|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.
    r   N)r   r   r   r
   Zmarker)r   r   r   r   r   r$   t   s    r$   c                 C   s>   dd l }z|d W n" |jy8   | dtj Y n0 d S )Nr   r"   z,WARNING: The wheel package is not available.)r   Zget_distributionZDistributionNotFoundZannouncer   ZWARN)r   r   r   r   r   r      s
    r   c                   @   s   e 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`.
    N)__name__
__module____qualname__Z_SUMMARYZ_DETAILSr   r   r   r   r      s   r   )r0   r%   r/   r,   r+   	functoolsr    r   warningsr   r"   r   	distutilsr   Zdistutils.errorsr   r   r   r    r   r$   r   r   r   r   r   r   <module>   s"   	C	