B
    Õ¹`ï  ã               @   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$t‚| S )z8Ensure find-links option end-up being a list of strings.)Ú
isinstanceÚstrÚsplitÚtupleÚlistÚAssertionError)Ú
find_links© r   ú</tmp/pip-install-4tin_oll/setuptools/setuptools/installer.pyÚ_fixup_find_links   s    
r   c             C   s@  yt  d¡ W n$ t jk
r2   |  dtj¡ Y nX t|ƒ}|  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r´t|d d ƒd	d	… ng }| jrÊ| | j¡ t	j |  ¡ ¡}t  ¡ }x(t  |¡D ]}||krî| |¡rî|S qîW t ¡  }	tjdddddd|	g}
|r>|
 d¡ |d	k	rV|
 d|f¡ x"|p`g D ]}|
 d|f¡ qbW |
 |jpŒt|ƒ¡ yt |
¡ W n4 tjk
rÒ } ztt|ƒƒ|‚W d	d	}~X Y nX tt t	j  |	d¡¡d ƒ}t	j  || !¡ ¡}| "|¡ t  #|t	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 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