ó
Ý²k^c           @` s—  d  d l  m Z m Z m Z m 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 Z d  d l m Z m Z m Z d d	 l m Z d
 d l m Z d d l m Z d d l m Z d d l m Z m Z m Z m Z m Z m  Z  d d l! m" Z" d d l# m$ Z$ e e% ƒ Z& e d d ƒ Z' d „  Z( d d d „ Z* d d d e+ d „ Z, e+ e+ d „ Z- d d e+ e+ e+ d „ Z. d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t
   namedtuple(   t	   getLoggerN(   t   abspath(   t   shlex_split_unicode(   t   CalledProcessErrort   PIPEt   Popeni   (   t   wrap_subprocess_calli   (   t   TRACE(   t   ACTIVE_SUBPROCESSES(   t   dals(   t   ensure_binaryt   string_typest   encode_argumentst   on_wint   encode_environmentt
   isiterable(   t   rm_rf(   t   contextu   Responseu   stdoutu   stderru   rcc         C` s   t  d ƒ |  | | | | f S(   Nup   
    $ %s
    ==> cwd: %s <==
    ==> exit code: %d <==
    ==> stdout <==
    %s
    ==> stderr <==
    %s
    (   R   (   t   command_strt   cwdt   rct   stdoutt   stderr(    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   _format_output   s    c   	      C` s  t  t t j | t j t j d k |  ƒ \ } } t | d | pB | d t d t d t d | ƒ} | j	 ƒ  \ } } | d  k	 r³ d t j k rš t | ƒ q³ t j d j | ƒ ƒ n  t | d	 ƒ rÚ | j d
 d d ƒ} n  t | d	 ƒ r| j d
 d d ƒ} n  | | | j f S(   Ni   R   t   universal_newlinesR   R   t   envu   CONDA_TEST_SAVE_TEMPSu4   CONDA_TEST_SAVE_TEMPS :: retaining pip run_script {}u   decodeu   utf-8t   errorsu   replace(   R   R   R   t   root_prefixt   devt	   verbosityR
   t   FalseR	   t   communicatet   Nonet   ost   environR   t   logt   warningt   formatt   hasattrt   decodet
   returncode(	   t   argst   prefixR   R   t   script_callert   command_argst   processR   R   (    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   any_subprocess'   s"    -	c         C` s  t  | r | n t j ƒ } | d k r0 t j n	 t | ƒ } t |  ƒ sW t |  ƒ }  n  t	 |  t
 ƒ rl |  n d j |  ƒ } t j d | ƒ t t |  ƒ d | d t d t d t d | ƒ} t j | ƒ t	 | t
 ƒ rã t | ƒ n | } | j d | ƒ \ } }	 t | d	 ƒ r(| j d
 d d ƒ} n  t |	 d	 ƒ rO|	 j d
 d d ƒ}	 n  | j }
 t j | ƒ | rw|
 d k s†t j t ƒ r¡t | | |
 | |	 ƒ } n  | rØ|
 d k rØt j | ƒ t |
 |  d | ƒ‚ n  t j t ƒ r÷t j | ƒ n  t | |	 t  |
 ƒ ƒ S(   us   This utility function should be preferred for all conda subprocessing.
    It handles multiple tricky details.
    u    u   executing>> %sR   t   stdinR   R   R   t   inputu   decodeu   utf-8R   u   replacei    t   outputN(!   R   R&   R'   R%   t   sysR/   R   R   R   t
   isinstanceR   t   joinR(   t   debugR
   R   R	   R   t   addR   R$   R+   R,   R-   t   removet   isEnabledForR   R   t   infoR   t   tracet   Responset   int(   t   commandR   t   pathR4   t   raise_on_errorR   R   t   pR   R   R   t   formatted_output(    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   subprocess_call<   s2    !$0!	!c         C` s]   g  } | r | j  d ƒ n  | r2 | j  d ƒ n  x$ | D] } | |  k r9 |  | =q9 q9 Wd  S(	   Nu
   PYTHONPATHu
   PYTHONHOMEu
   CONDA_ROOTu   CONDA_PROMPT_MODIFIERu	   CONDA_EXEu   CONDA_DEFAULT_ENV(   u
   PYTHONPATHu
   PYTHONHOME(   u
   CONDA_ROOTu   CONDA_PROMPT_MODIFIERu	   CONDA_EXEu   CONDA_DEFAULT_ENV(   t   extend(   R   t   clean_pythont   clean_condat   delst   key(    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   _subprocess_clean_env\   s    
c      
   C` sA   t  j j ƒ  } t | | | ƒ t |  d | d | d | d | ƒS(   NR   RC   R4   RD   (   R&   R'   t   copyRM   RG   (   RB   RC   R4   RD   RI   RJ   R   (    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   subprocess_call_with_clean_envh   s    (   u   stdoutu   stderru   rc(/   t
   __future__R    R   R   R   t   collectionsR   t   loggingR   R&   t   os.pathR   t   conda._vendor.auxlib.compatR   R7   t
   subprocessR   R	   R
   t   utilsR   R   t    R   t   _vendor.auxlib.ishR   t   common.compatR   R   R   R   R   R   t   gateways.disk.deleteR   t   base.contextR   t   __name__R(   R@   R   R%   R3   t   TrueRG   RM   RO   (    (    (    s8   lib/python2.7/site-packages/conda/gateways/subprocess.pyt   <module>   s,   ".	 	