
(h                 @   s   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 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 S)    N)log)DistutilsError)easy_install)six)Wheel   )TemporaryDirectoryc             C   s;   t  |  t j  r |  j   St  |  t t f  s7 t  |  S)z8Ensure find-links option end-up being a list of strings.)
isinstancer   string_typessplittuplelistAssertionError)
find_links r   :/tmp/pip-build-kmztzv_d/setuptools/setuptools/installer.py_fixup_find_links   s    
r   c             C   s  |  j  d d g i  } | j d  } | j   | j d d   |  j d  j   D  |  j r |  j d d  } d | k r t | d d  | } d | f | d <|  j   } t | d	 d
 g d | d d d d d d d d d d d d d d d d 
} | j	   | j |  S)zJFetch an egg needed for building.

    Legacy path using EasyInstall.
    script_argsr   c             s   s-   |  ]# \ } } | d k r | | f Vq d S)r   	site_dirs	index_urloptimizeallow_hostsN)z
find_linksr   z	index_urlzoptimizer   r   r   ).0kvr   r   r   	<genexpr>!   s   	 z*_legacy_fetch_build_egg.<locals>.<genexpr>Nr   r   setupargsxinstall_dirZexclude_scriptsTZalways_copyFZbuild_directoryeditableupgradeZmulti_versionZ	no_reportuser)
	__class__get_option_dictclearupdateitemsdependency_linksr   get_egg_cache_dirr   ensure_finalized)distreqZtmp_distoptslinksr   cmdr   r   r   _legacy_fetch_build_egg   s&    
		
r0   c          *   C   sp  y t  j d  Wn5 t  j k
 rH |  j d t j  t |  |  SYn Xy t  j d  Wn( t  j k
 r |  j d t j  Yn Xt |  } |  j d  } d | k r t	 d   d t
 j k s d	 t
 j k r d
 } n d } d t
 j k r d } n# d | k r| d d } n d } d | k rMt | d d  d d  } n g  } |  j rl| j |  j  t
 j j |  j    } t  j   } x6 t  j |  D]% } | | k r| j |  r| SqWt   }	 t j d d d d d d |	 g }
 | r	|
 j d  | d k	 r(|
 j d | f  | d k	 rXx! | D] } |
 j d | f  q;W| j rt|
 j | j  n |
 j t |   y t j |
  Wn= t j k
 r} z t	 t |   |  WYd d } ~ Xn Xt t j t
 j j  |	 d   d  } t
 j j  | | j!    } | j" |  t  j# | t
 j j  | d   } t  j$ j% | d | }  |  SWd QRXd S)zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.pipzWARNING: The pip package is not available, falling back to EasyInstall for handling setup_requires/test_requires; this is deprecated and will be removed in a future version.wheelz,WARNING: The wheel package is not available.r   r   zQthe `allow-hosts` option is not supported when using pip to install requirements.Z	PIP_QUIETZPIP_VERBOSEFTZPIP_INDEX_URLNr   r   r   z-mz--disable-pip-version-checkz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   zEGG-INFOmetadata)&pkg_resourcesget_distributionDistributionNotFoundannouncer   WARNr0   strip_markerr$   r   osenvironr   r(   extendpathrealpathr)   Environmentfind_distributionscan_addr   sys
executableappendurlstr
subprocess
check_callCalledProcessErrorr   globjoinegg_nameZinstall_as_eggPathMetadataDistributionfrom_filename)r+   r,   r-   quietr   r   Zeggs_direnvironmentZegg_distZtmpdirr/   linker2   dist_locationZdist_metadatar   r   r   fetch_build_egg8   sx    
		!		((	rU   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)r4   RequirementparserF   marker)r,   r   r   r   r9      s    	r9   )rJ   r:   rG   rB   	distutilsr   Zdistutils.errorsr   r4   Zsetuptools.command.easy_installr   Zsetuptools.externr   Zsetuptools.wheelr   Z
py31compatr   r   r0   rU   r9   r   r   r   r   <module>   s    U