
^Wc           @@  s  d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z 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 m Z m Z d  d l m Z m Z 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& e$ rud  d l m' Z( n d  d l m( Z( d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% g Z) e	 j* e+  Z, dh Z- di Z. dj Z/ dk Z0 e/ e- e0 e. Z1 e/ e0 Z2 y d  d l3 Z3 e2 e- 7Z2 Wn e4 k
 rSe, j5 d2  n Xy d  d l6 Z6 e2 e. 7Z2 Wn e4 k
 re, j5 d3  n Xd4   Z7 d5   Z8 d6   Z9 e& d7 d8 d9 d:  e: d;   Z; d<   Z< d=   Z= d> d?  Z> d@   Z? dA   Z@ dB   ZA dC   ZB dD   ZC dE   ZD e jE dF  ZF dG   ZG dH   ZH eI dI  ZJ dJ   ZK dK   ZL dL   ZM dM   ZN dN   ZO dO   ZP dP   ZQ eI e eI e: e: dQ  ZR dR   ZS dS   ZT dT   ZU dU   ZV eI dV  ZW dW   ZX dX   ZY dY   ZZ eI d dZ e	 j\ d d d d[  Z] d\   Z^ d]   Z_ d^ e` f d_     YZa d` e( f da     YZb e jc db    Zd dc   Ze dd e` f de     YZf df   Zg dg   Zh d S(l   i    (   t   absolute_import(   t   dequeN(   t   InstallationError(   t   console_to_strt
   expandusert   stdlib_pkgs(   t   site_packagest	   user_sitet   running_under_virtualenvt   virtualenv_no_globalt   write_delete_marker_file(   t   pkg_resources(   t   input(   t   PY2(   t   retry(   t   BytesIO(   t   StringIOt   rmtreet   display_patht
   backup_dirt   askt   splitextt   format_sizet   is_installable_dirt   is_svn_paget   file_contentst   split_leading_dirt   has_leading_dirt   normalize_patht   renamest   get_terminal_sizet   get_progt
   unzip_filet
   untar_filet   unpack_filet   call_subprocesst   captured_stdoutt   remove_tracebackst
   ensure_dirt   ARCHIVE_EXTENSIONSt   SUPPORTED_EXTENSIONSt   get_installed_versions   .tar.bz2s   .tbzs   .tar.xzs   .txzs   .tlzs   .tar.lzs	   .tar.lzmas   .zips   .whls   .tar.gzs   .tgzs   .tars   bz2 module is not availables   lzma module is not availablec         O@  s5   y t  |   SWn  t k
 r0 | | |    n Xd  S(   N(   t
   __import__t   ImportError(   t   pkg_or_module_stringt   ExceptionTypet   argst   kwargs(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   import_or_raiseI   s    c         C@  sC   y t  j |   Wn+ t k
 r> } | j t j k r?   q? n Xd S(   s    os.path.makedirs without EEXIST.N(   t   ost   makedirst   OSErrort   errnot   EEXIST(   t   patht   e(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR&   P   s
    c           C@  sO   y. t  j j t j d  d k r- d t j SWn t t t f k
 rJ n Xd S(   Ni    s   __main__.pys   -cs	   %s -m pipt   pip(   s   __main__.pys   -c(	   R1   R6   t   basenamet   syst   argvt
   executablet   AttributeErrort	   TypeErrort
   IndexError(    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR   Y   s    t   stop_max_delayi  t
   wait_fixedi  c         C@  s   t  j |  d | d t d  S(   Nt   ignore_errorst   onerror(   t   shutilR   t   rmtree_errorhandler(   t   dirRB   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR   c   s    c         C@  sA   t  j |  j t j @r: t  j | t j  |  |  d S  d S(   s   On Windows, the files in .svn are read-only, so when rmtree() tries to
    remove them, an exception is thrown.  We catch that here, remove the
    read-only attribute, and hopefully continue without problems.N(   R1   t   statt   st_modet   S_IREADt   chmodt   S_IWRITE(   t   funcR6   t   exc_info(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyRE   i   s
    
c         C@  s   t  j j t  j j |    }  t j d d k rd |  j t j   d  }  |  j t j	   d  }  n  |  j
 t  j   t  j j  r d |  t t  j    }  n  |  S(   sT   Gives the display value for a given path, making it relative to cwd
    if possible.i    i   t   replacet   .(   R1   R6   t   normcaset   abspathR:   t   version_infot   decodet   getfilesystemencodingt   encodet   getdefaultencodingt
   startswitht   getcwdt   sept   len(   R6   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR   x   s    s   .bakc         C@  sK   d } | } x4 t  j j |  |  rB | d 7} | t |  } q W|  | S(   s\   Figure out the name of a directory to back up the given dir to
    (adding .bak, .bak2, etc)i   (   R1   R6   t   existst   str(   RF   t   extt   nt	   extension(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    
c         C@  sC   x3 t  j j d d  j   D] } | | k r | Sq Wt |  |  S(   Nt   PIP_EXISTS_ACTIONt    (   R1   t   environt   gett   splitR   (   t   messaget   optionst   action(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   ask_path_exists   s    "c         C@  sy   xr t  j j d  r( t d |    n  t |   } | j   j   } | | k rm d | d j |  f GHq | Sq Wd S(   s@   Ask the message interactively, with the given possible responsest   PIP_NO_INPUTs7   No input was expected ($PIP_NO_INPUT set); question: %ss<   Your response (%r) was not one of the expected responses: %ss   , N(   R1   Rb   Rc   t	   ExceptionR   t   stript   lowert   join(   Re   Rf   t   response(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    c         C@  sX   |  d k r d |  d d S|  d	 k r4 d |  d S|  d k rL d |  d Sd |  Sd  S(
   Ni  s   %.1fMBg     @@i
   s   %ikBs   %.1fkBs   %ibytesi@B i'  (    (   t   bytes(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    c         C@  sE   t  j j |   s t St  j j |  d  } t  j j |  rA t St S(   s@   Return True if `path` is a directory containing a setup.py file.s   setup.py(   R1   R6   t   isdirt   FalseRm   t   isfilet   True(   R6   t   setup_py(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    c         C@  s(   t  j d |   o' t  j d |  t  j  S(   sT   
    Returns true if the page appears to be the index page of an svn repository
    s   <title>[^<]*Revision \d+:s#   Powered by (?:<a[^>]*?>)?Subversion(   t   ret   searcht   I(   t   html(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    c         C@  s/   t  |  d   } | j   j d  SWd  QXd  S(   Nt   rbs   utf-8(   t   opent   readRS   (   t   filenamet   fp(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    c         c@  s/   x( t  r* |  j |  } | s" Pn  | Vq Wd S(   s7   Yield pieces of data from a file-like object until EOF.N(   Rs   R{   (   t   filet   sizet   chunk(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   read_chunks   s
    	c         C@  s   |  j  d  j  d  }  d |  k rj d |  k rN |  j d  |  j d  k  sZ d |  k rj |  j d d  Sd |  k r |  j d d  S|  d f Sd  S(   Nt   /s   \i   Ra   (   t   lstript   findRd   (   R6   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    6c         C@  s\   d } xO |  D]G } t |  \ } } | s/ t S| d k rD | } q | | k r t Sq Wt S(   sy   Returns true if all the paths have the same leading path name
    (i.e., everything is in one subdirectory in an archive)N(   t   NoneR   Rq   Rs   (   t   pathst   common_prefixR6   t   prefixt   rest(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s    	c         C@  sI   t  |   }  | r' t j j |   }  n t j j |   }  t j j |   S(   sN   
    Convert a path to its canonical, case-normalized, absolute version.

    (   R   R1   R6   t   realpathRQ   RP   (   R6   t   resolve_symlinks(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s
    c         C@  sO   t  j |   \ } } | j   j d  rE | d | } | d  } n  | | f S(   s,   Like os.path.splitext, but take off .tar toos   .tari(   t	   posixpathR   Rl   t   endswith(   R6   t   baseR]   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s
    c         C@  s   t  j j |  \ } } | rG | rG t  j j |  rG t  j |  n  t j |  |  t  j j |   \ } } | r | r y t  j |  Wq t k
 r q Xn  d S(   s7   Like os.renames(), but handles renaming across devices.N(	   R1   R6   Rd   R[   R2   RD   t   movet
   removedirsR3   (   t   oldt   newt   headt   tail(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR     s    c         C@  s)   t    s t St |   j t t j   S(   s   
    Return True if path is within sys.prefix, if we're running in a virtualenv.

    If we're not in a virtualenv, all paths are considered "local."

    (   R   Rs   R   RW   R:   R   (   R6   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   is_local  s    	c         C@  s   t  t |    S(   s   
    Return True if given Distribution object is installed locally
    (i.e. within current virtualenv).

    Always True if we're not in a virtualenv.

    (   R   t   dist_location(   t   dist(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   dist_is_local!  s    c         C@  s%   t  t |    } | j t  t   S(   sF   
    Return True if given Distribution is installed in user site.
    (   R   R   RW   R   (   R   t	   norm_path(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   dist_in_usersite,  s    c         C@  s   t  t |    j t  t   S(   se   
    Return True if given Distribution is installed in
    distutils.sysconfig.get_python_lib().
    (   R   R   RW   R   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   dist_in_site_packages4  s    c         C@  sJ   xC t  j D]8 } t j j | |  j d  } t j j |  r
 t Sq
 Wt S(   s$   Is distribution an editable install?s	   .egg-link(   R:   R6   R1   Rm   t   project_nameRr   Rs   Rq   (   R   t	   path_itemt   egg_link(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   dist_is_editable>  s
    c   
      C@  s   |  r t  } n	 d   } | r* d   } n	 d   } | rE d   } n	 d   } | r] t } n	 d   } g  t j D]K }	 | |	  rp |	 j | k rp | |	  rp | |	  rp | |	  rp |	 ^ qp S(   s  
    Return a list of installed Distribution objects.

    If ``local_only`` is True (default), only return installations
    local to the current virtualenv, if in a virtualenv.

    ``skip`` argument is an iterable of lower-case project names to
    ignore; defaults to stdlib_pkgs

    If ``editables`` is False, don't report editables.

    If ``editables_only`` is True , only report editables.

    If ``user_only`` is True , only report installations in the user
    site directory.

    c         S@  s   t  S(   N(   Rs   (   t   d(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt
   local_test`  s    c         S@  s   t  S(   N(   Rs   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   editable_testd  s    c         S@  s   t  |   S(   N(   R   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR   g  s    c         S@  s
   t  |   S(   N(   R   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   editables_only_testk  s    c         S@  s   t  S(   N(   Rs   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR   n  s    c         S@  s   t  S(   N(   Rs   (   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt	   user_testt  s    (   R   R   R   t   working_sett   key(
   t
   local_onlyt   skipt   include_editablest   editables_onlyt	   user_onlyR   R   R   R   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   get_installed_distributionsG  s$    						c         C@  s   g  } t    rN t   r( | j t  qq | j t  t rq | j t  qq n# t rd | j t  n  | j t  x@ | D]8 } t j j | |  j  d } t j j	 |  rx | Sqx Wd S(   s  
    Return the path for the .egg-link file if it exists, otherwise, None.

    There's 3 scenarios:
    1) not in a virtualenv
       try to find in site.USER_SITE, then site_packages
    2) in a no-global virtualenv
       try to find in site_packages
    3) in a yes-global virtualenv
       try to find in site_packages, then site.USER_SITE
       (don't look in global location)

    For #1 and #3, there could be odd cases, where there's an egg-link in 2
    locations.

    This method will just return the first one found.
    s	   .egg-linkN(
   R   R	   t   appendR   R   R1   R6   Rm   R   Rr   (   R   t   sitest   sitet   egglink(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   egg_link_path  s    		c         C@  s   t  |   } | r | S|  j S(   s   
    Get the site-packages location of this distribution. Generally
    this is dist.location, except in the case of develop-installed
    packages, where dist.location is the source code location, and we
    want to know where the egg-link file is.

    (   R   t   location(   R   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR     s    c          C@  s   d   }  |  d  p* |  d  p* |  d  } | sx y8 t  j t  j   t  j  } |  |  } t  j |  Wqx qx Xn  | s t  j j d d  t  j j d d  f } n  t | d  t | d  f S(	   sl   Returns a tuple (x, y) representing the width(x) and the height(x)
    in characters of the terminal window.c         S@  sk   yL d d  l  } d d  l } d d  l } | j d | j |  | j d   } Wn d  SX| d k rg d  S| S(   Ni    t   hht   1234(   i    i    (   t   fcntlt   termiost   structt   unpackt   ioctlt
   TIOCGWINSZR   (   t   fdR   R   R   t   cr(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   ioctl_GWINSZ  s    i    i   i   t   LINESi   t   COLUMNSiP   (   R1   Rz   t   ctermidt   O_RDONLYt   closeRb   Rc   t   int(   R   R   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR     s    	$-c          C@  s    t  j d  }  t  j |   |  S(   sB   Get the current umask which involves having to set it temporarily.i    (   R1   t   umask(   t   mask(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   current_umask  s    c         C@  s~  t  |  t |  d  } zSt j | d t } t | j    oF | } x| j   D]} | j } | j	 |  } | }	 | r t
 |  d }	 n  t j j | |	  }	 t j j |	  }
 |	 j d  s |	 j d  r t  |	  qV t  |
  t |	 d  } z | j |  Wd | j   | j d ?} | rft j |  rf| d	 @rft j |	 d
 t   d	 B n  XqV WWd | j   Xd S(   s  
    Unzip the file (with path `filename`) to the destination `location`.  All
    files are written based on system defaults and umask (i.e. permissions are
    not preserved), except that regular file members with any execute
    permissions (user, group, or world) have "chmod +x" applied after being
    written. Note that for windows, any execute changes using os.chmod are
    no-ops per the python docs.
    Ry   t
   allowZip64i   R   s   \t   wbNi   iI   i  (   R&   Rz   t   zipfilet   ZipFileRs   R   t   namelistt   infolistR|   R{   R   R1   R6   Rm   t   dirnameR   t   writeR   t   external_attrRG   t   S_ISREGRJ   R   (   R|   R   t   flattent   zipfpt   zipt   leadingt   infot   namet   datat   fnRF   R}   t   mode(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR      s0    	
	

'c         C@  s  t  |  |  j   j d  s4 |  j   j d  r= d } np |  j   j t  r[ d } nR |  j   j t  ry d } n4 |  j   j d  r d } n t j d |   d	 } t j |  |  } zt	 g  | j
   D] } | j d
 k r | j ^ q  } x| j
   D]} | j } | d
 k r'qn  | r@t |  d } n  t j j | |  } | j   rnt  |  q| j   ry | j | |  Wqt k
 r} t j d |  | j |  qqXqy | j |  }	 Wn5 t t f k
 r} t j d |  | j |  qn Xt  t j j |   t | d   }
 t j |	 |
  Wd QX|	 j   | j | |  | j d @rt j | d t   d B qqWWd | j   Xd S(   s  
    Untar the file (with path `filename`) to the destination `location`.
    All files are written based on system defaults and umask (i.e. permissions
    are not preserved), except that regular file members with any execute
    permissions (user, group, or world) have "chmod +x" applied after being
    written.  Note that for windows, any execute changes using os.chmod are
    no-ops per the python docs.
    s   .gzs   .tgzs   r:gzs   r:bz2s   r:xzs   .tart   rs-   Cannot determine compression type for file %ss   r:*t   pax_global_headeri   s/   In the tar file %s the member %s is invalid: %sR   NiI   i  (   R&   Rl   R   t   BZ2_EXTENSIONSt   XZ_EXTENSIONSt   loggert   warningt   tarfileRz   R   t
   getmembersR   R   R1   R6   Rm   Rp   t   issymt   _extract_memberRj   t   extractfilet   KeyErrorR=   R   RD   t   copyfileobjR   t   utimeR   RJ   R   (   R|   R   R   t   tart   memberR   R   R6   t   excR}   t   destfp(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR!     sb    	
*				
!	

&c         C@  s(  t  j j |   }  | d k sB |  j   j t  sB t j |   rb t |  | d |  j d  n | d k s t	 j
 |   s |  j   j t t t  r t |  |  nz | r | j d  r t t |    r d d l m } | d | j  j |  n& t j d	 |  | |  t d
 |   d  S(   Ns   application/zipR   s   .whls   application/x-gzips	   text/htmli    (   t
   Subversions   svn+sZ   Cannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive formats%   Cannot determine archive format of %s(   R1   R6   R   Rl   R   t   ZIP_EXTENSIONSR   t
   is_zipfileR    R   t
   is_tarfilet   TAR_EXTENSIONSR   R   R!   RW   R   R   t   pip.vcs.subversionR   t   urlR   R   t   criticalR   (   R|   R   t   content_typet   linkR   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR"   O  s,    c         C@  s8   d } t  j | d |   }  t r% |  St  j d d |   S(   NsR   (?:\W+File "(?:.*)", line (?:.*)\W+(?:.*)\W+\^\W+)?Syntax(?:Error|Warning): (?:.*)Ra   s   \*\*\* Error compiling (?:.*)(   Ru   t   subR   (   t   outputt   pattern(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR%   p  s
    t   raisec         C@  s   | r d  } n	 t j } | d  k r g  }	 xd |  D]\ }
 d |
 k sg d |
 k sg d |
 k sg d |
 k r d |
 j d d  }
 n  |	 j |
  q1 Wd j |	  } n  t j | d |  t j	 j
   } | r | j |  n  y4 t j |  d t j d	 d  d
 | d | d | } Wn) t k
 r:} t j d | |    n X| d  k	 rg  } x t rt | j j    } | suPn  | j   } | j | d  t j   t j k rt j |  qP| d  k	 rP| j   qPqPWn  | j   | d  k	 r| j r| j d  q| j d  n  | j r| d k rt j   t j k rt| rtt j d |  t j d j |  d  n  t d | | j | f   q| d k rt j d | | j |  q| d k rqt  d t! |    n  | st" d j |   Sd  S(   Nt    s   
t   "t   's   "%s"s   \"s   Running command %st   stderrt   stdint   stdoutt   cwdt   envs#   Error %s while executing command %st   errort   doneR   s    Complete output from command %s:Ra   s)   
----------------------------------------s,   Command "%s" failed with error code %s in %st   warns$   Command "%s" had error code %s in %st   ignores   Invalid value: on_returncode=%s(#   R   t
   subprocesst   PIPERN   R   Rm   R   t   logR1   Rb   t   copyt   updatet   Popent   STDOUTRj   R   Rs   R   R   t   readlinet   rstript   getEffectiveLevelt   std_loggingt   DEBUGt   debugt   spint   waitt
   returncodet   finishR   R   R   t
   ValueErrort   reprR%   (   t   cmdt   show_stdoutR   t   on_returncodet   command_levelt   command_desct   extra_environt   spinnerR   t	   cmd_partst   partR  t   procR   t
   all_outputt   line(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR#   {  sz    		0	
		
c         C@  s   t  |  d   } | j   } Wd QXd t j t  d g } x9 | D]1 } y | j |  } Wn t k
 rr qC n XPqC Wt |  t k s t	  | S(   sR  Return the contents of *filename*.

    Try to decode the file contents with utf-8, the preferred system encoding
    (e.g., cp1252 on some Windows machines), and latin1, in that order.
    Decoding a byte string with latin1 will never raise an error. In the worst
    case, the returned string will contain some garbage characters.

    Ry   Ns   utf-8t   latin1(
   Rz   R{   t   localet   getpreferredencodingRq   RS   t   UnicodeDecodeErrort   typeRo   t   AssertionError(   R|   R}   R   t	   encodingst   enc(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   read_text_file  s    	c         C@  s   t  j |   t |   d  S(   N(   R1   R2   R
   (   t	   build_dir(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   _make_build_dir  s    t   FakeFilec           B@  s)   e  Z d  Z d   Z d   Z d   Z RS(   sQ   Wrap a list of lines in an object with readline() to make
    ConfigParser happy.c         C@  s   d   | D |  _  d  S(   Nc         s@  s   |  ] } | Vq d  S(   N(    (   t   .0t   l(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pys	   <genexpr>  s    (   t   _gen(   t   selft   lines(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   __init__  s    c         C@  sL   y3 y t  |  j  SWn t k
 r1 |  j j    SXWn t k
 rG d SXd  S(   NRa   (   t   nextR3  t	   NameErrort   StopIteration(   R4  (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR     s    c         C@  s   |  j  S(   N(   R3  (   R4  (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   __iter__	  s    (   t   __name__t
   __module__t   __doc__R6  R  R:  (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR0    s   			t   StreamWrapperc           B@  s&   e  Z e d     Z e d    Z RS(   c         C@  s   | |  _  |    S(   N(   t   orig_stream(   t   clsR?  (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   from_stream  s    	c         C@  s
   |  j  j S(   N(   R?  t   encoding(   R4  (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyRB    s    (   R;  R<  t   classmethodRA  t   propertyRB  (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR>    s   c         c@  sR   t  t |   } t t |  t j |   z t  t |   VWd t t |  |  Xd S(   s   Return a context manager used by captured_stdout/stdin/stderr
    that temporarily replaces the sys stream *stream_name* with a StringIO.

    Taken from Lib/support/__init__.py in the CPython repo.
    N(   t   getattrR:   t   setattrR>  RA  (   t   stream_namet   orig_stdout(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   captured_output  s
    c           C@  s
   t  d  S(   s   Capture the output of sys.stdout:

       with captured_stdout() as stdout:
           print('hello')
       self.assertEqual(stdout.getvalue(), 'hello
')

    Taken from Lib/support/__init__.py in the CPython repo.
    R   (   RI  (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR$   )  s    	t   cached_propertyc           B@  s    e  Z d  Z d   Z d   Z RS(   s   A property that is only computed once per instance and then replaces
       itself with an ordinary attribute. Deleting the attribute resets the
       property.

       Source: https://github.com/bottlepy/bottle/blob/0.11.5/bottle.py#L175
    c         C@  s   t  | d  |  _ | |  _ d  S(   NR=  (   RE  R=  RL   (   R4  RL   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR6  =  s    c         C@  s4   | d  k r |  S|  j |  } | j |  j j <| S(   N(   R   RL   t   __dict__R;  (   R4  t   objR@  t   value(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   __get__A  s     (   R;  R<  R=  R6  RN  (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyRJ  5  s   	c         C@  s>   t  j j |   } t  j   } | j |  } | r: | j Sd S(   sC   Get the installed version of dist_name avoiding pkg_resources cacheN(   R   t   Requirementt   parset
   WorkingSetR   t   versionR   (   t	   dist_namet   reqR   R   (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyR)   I  s    c         C@  s   t  |  d d d S(   s   Consume an iterable at C speed.t   maxleni    N(   R   (   t   iterator(    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   consumeZ  s    (   s   .tar.bz2s   .tbz(   s   .tar.xzs   .txzs   .tlzs   .tar.lzs	   .tar.lzma(   s   .zips   .whl(   s   .tar.gzs   .tgzs   .tar(i   t
   __future__R    t   collectionsR   t
   contextlibR4   t   ioR&  t   loggingR  Ru   R1   R   RD   RG   R  R:   R   R   t   pip.exceptionsR   t
   pip.compatR   R   R   t   pip.locationsR   R   R   R	   R
   t   pip._vendorR   t   pip._vendor.six.movesR   t   pip._vendor.sixR   t   pip._vendor.retryingR   R   R   t   __all__t	   getLoggerR;  R   R   R   R   R   R'   R(   t   bz2R+   R  t   lzmaR0   R&   R   Rq   R   RE   R   R   Rh   R   R   R   R   R   t   DEFAULT_BUFFER_SIZER   R   R   Rs   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R%   R   R  R#   R-  R/  t   objectR0  R>  t   contextmanagerRI  R$   RJ  R)   RW  (    (    (    sc   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/utils/__init__.pyt   <module>   s   (				
				
						
												
		5	%			+	L	!		_				