3
֋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| j S t | ttfs$t| S )z8Ensure find-links option end-up being a list of strings.)
isinstancestrsplittuplelistAssertionError)
find_links r   :/tmp/pip-build-w2_t75ys/setuptools/setuptools/installer.py_fixup_find_links   s    
r   c          "   C   s@  yt jd W n$ t jk
r2   | jdtj Y nX t|}| jd}d|krVtddt	j
kohdt	j
k}dt	j
krzd	}nd
|kr|d
 d }nd	}d|krt|d d d	d	 ng }| jr|j| j t	jj| j }t j }x(t j|D ]}||kr|j|r|S qW tj  }	tjdddddd|	g}
|r>|
jd |d	k	rV|
jd|f x"|p`g D ]}|
jd|f qbW |
j|jpt| ytj|
 W n4 tjk
r } ztt||W Y d	d	}~X nX ttjt	jj |	dd }t	jj ||j! }|j"| t j#|t	jj |d}t j$j%||d} | S Q R X d	S )zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.wheelz,WARNING: The wheel package is not available.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-mpipz--disable-pip-version-checkz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   zEGG-INFO)metadata)&pkg_resourcesget_distributionDistributionNotFoundannouncer   WARNstrip_markerget_option_dictr   osenvironr   dependency_linksextendpathrealpathZget_egg_cache_dirEnvironmentfind_distributionscan_addtempfileTemporaryDirectorysys
executableappendurlr   
subprocess
check_callCalledProcessErrorr   globjoinegg_nameZinstall_as_eggPathMetadataDistributionfrom_filename)distreqoptsquietr   r   Zeggs_direnvironmentZegg_distZtmpdircmdlinker   dist_locationZdist_metadatar   r   r   fetch_build_egg   s^    

 

 

r=   c             C   s   t j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   Requirementparser   marker)r5   r   r   r   r   X   s    r   )r.   r   r+   r'   r%   	distutilsr   distutils.errorsr   r   Zsetuptools.wheelr   r   r=   r   r   r   r   r   <module>   s   C