
#þîh  ã               @   s–   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l Z	 Gd d „  d e	 j
 j ƒ Z d d „  Z d d d  d d d „ Z d S)	é    N)ÚPIPEÚPopenc               @   s+   e  Z d  Z d Z d g Z d d „  Z d S)Ú
VirtualEnvz.envz--no-setuptoolsc             O   sŠ   |  j  | d ƒ g | d d  … } d |  j d d i | – } d | k rw t t j ƒ } d | k rm | d =| | d <t j | | | Ž S)Nr   é   ÚcwdÚencodingzutf-8ÚenvÚ
PYTHONPATH)ZexeÚrootÚdictÚosÚenvironÚ
subprocessÚcheck_output)ÚselfÚcmdÚargsÚkwargsr   © r   úB/tmp/pip-build-zijwfla7/setuptools/setuptools/tests/environment.pyÚrun   s    $	
zVirtualEnv.runN)Ú__name__Ú
__module__Ú__qualname__ÚnameZcreate_optsr   r   r   r   r   r   
   s   	r   c             C   sp   t  ƒ  } x` t j j d d ƒ j t j ƒ D]= } t j j | |  ƒ } t j | t j	 ƒ r+ | j
 | ƒ q+ W| S)NÚPATHÚ )Úsetr   r   ÚgetÚsplitÚpathsepÚpathÚjoinÚaccessÚX_OKÚadd)r   Úresultr!   Úfilenamer   r   r   Ú_which_dirs%   s    	(r(   c       	      C   s…  | d k r: t  ƒ  } x" t j D] } t j | | | <q W| d k	 rP | | d <| d k	 rf | | d <| j d d ƒ s± t d ƒ j t d ƒ ƒ | d <t j j | d ƒ | d <t j	 d g t
 |  ƒ }  t j d k } yY t |  d	 t d
 t d | d | d d ƒ} t | t ƒ r!t | Œ  } | j ƒ  | } Wn t k
 rJd SYn Xt | d ƒ rx| j ƒ  } t j d | ƒ } | j | f S)z~
    Execution command for tests, separate from those used by the
    code directly to prevent accidental behavior issues
    Nr	   r   r   ÚtarÚgzipzsetup.pyÚwin32ÚstdoutÚstderrÚshellr   r   zutf-8r   ÚdecodeZNFC)r   r   )r   r   r   r   r(   Úunionr    r"   ÚsysÚ
executableÚlistÚplatformÚ_PopenÚ_PIPEÚ
isinstanceÚtupleÚsliceÚcommunicateÚOSErrorÚhasattrr/   ÚunicodedataÚ	normalizeÚ
returncode)	r   Zpypathr!   Zdata_streamr   Úenvnamer.   ÚprocÚdatar   r   r   Úrun_setup_py.   s<    	

		rC   )r   r   r1   r=   r   r6   r   r5   Zjaraco.envsZjaracoZenvsr   r(   rC   r   r   r   r   Ú<module>   s   	