a
    `                     @   sp   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	Z	d dl
mZ dd Zdd Zd	d
 ZdS )    N)log)DistutilsError)Wheelc                 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   6/usr/lib/python3/dist-packages/setuptools/installer.py_fixup_find_links   s    
r   c                 C   sV  zt d W n" t jy0   | dtj Y n0 t|}| d}d|v rTtddt	j
vofdt	j
v}dt	j
v rxd	}nd
|v r|d
 d }nd	}d|v rt|d d d	d	 ng }| jr|| j t	j|  }t  }t |D ]}||v r||r|  S qt ,}	tjdddddd|	g}
|r<|
d |d	urT|
d|f |p\g D ]}|
d|f q^|
|jpt| 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 #|t	j |d}t j$j%||d} | W  d	   S 1 sH0    Y  d	S )zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.wheelz,WARNING: The wheel package is not available.Zeasy_installZallow_hostszQthe `allow-hosts` option is not supported when using pip to install requirements.Z	PIP_QUIETZPIP_VERBOSEZPIP_INDEX_URLN	index_url   r
   z-mZpipz--disable-pip-version-checkz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   zEGG-INFO)metadata)&pkg_resourcesZget_distributionZDistributionNotFoundZannouncer   ZWARN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)ZdistreqZoptsquietr   r
   Zeggs_dirZenvironmentZegg_distZtmpdircmdlinker   Zdist_locationZdist_metadatar   r   r   fetch_build_egg   sf    

 


$
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)r   ZRequirementparser   Zmarker)r!   r   r   r   r   X   s    r   )r   r   r   r   r   Z	distutilsr   Zdistutils.errorsr   r   Zsetuptools.wheelr   r   r&   r   r   r   r   r   <module>   s   C