ó
'šMc           @   sM  d  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	 d d l
 m Z m Z m Z d d l m Z d d l m Z m Z m Z d d l m Z d d	 l m Z m Z m Z m Z d
 d d d d g Z i  Z e j Z d e f d „  ƒ  YZ d d „ Z! d d „ Z" d „  Z# d „  Z$ d „  Z% d S(   s(   Base Command class, and related routinesiÿÿÿÿN(   t   commands(   t   logger(   t   parsert   ConfigOptionParsert   UpdatingDefaultsHelpFormatter(   t   urlopen(   t
   BadCommandt   InstallationErrort   UninstallationError(   t   restart_in_venv(   t   StringIOt   urllibt   urllib2t   walk_packagest   command_dictt   Commandt   load_all_commandst   load_commandt   command_namesc           B   s>   e  Z d Z d Z e Z d  „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C   s­   |  j  s t ‚ t d |  j d d t j d |  j  f d t j d t ƒ  d |  j  ƒ |  _ x@ t j	 D]5 } | j
 sc | j
 d k rˆ qc n  |  j j | ƒ qc W|  t |  j  <d  S(	   Nt   usaget   progs   %s %si    t   versiont	   formattert   namet   help(   R   t   AssertionErrorR   R   t   syst   argvR   R   R   t   option_listt   destt
   add_optionR   (   t   selft   option(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyt   __init__   s    			c         C   s…   xZ d d d d d d d d d	 d
 d d g D]. } t  | | t | | ƒ pU t | | ƒ ƒ q+ W| j | j 7_ | j | j 7_ d  S(   Nt   logt   venvt   proxyt	   venv_baset   require_venvt   respect_venvt   log_explicit_levelst   log_filet   timeoutt   default_vcst   skip_requirements_regext   no_input(   t   setattrt   getattrt   quiett   verbose(   R   t   initial_optionst   optionst   attr(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyt   merge_options.   s    		,c         C   s   d  S(   N(    (   R   (    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyt   setup_logging8   s    c         C   s  |  j  j | ƒ \ } } |  j | | ƒ d } | | j 7} | | j 8} t j d | ƒ } g  } t j j | t	 j
 f t j | j f g ƒ | j r¡ t t _ n  |  j ƒ  | j rù | j rù t j j d ƒ sí t j d ƒ t	 j d ƒ n  t | _ n  | r%| d d k r%| d  } d  | _ nÝ | j rt j j d ƒ r| j rÖt j j | j ƒ rÖt j j t j j | j ƒ ƒ t j j t j j d ƒ ƒ k rÿt j d	 | j t j j d ƒ f ƒ t	 j d ƒ qÿqt j j d ƒ | _ t j d
 | j ƒ n  | j rTt j d | j ƒ t } | j  r7t } n  t! | j | j" | | ƒ d  S| j# r‹t$ | j# d ƒ } t j j t j | f ƒ n d  } t% j& | j' p£d  ƒ t( j) d | j* d | j+ ƒ d }	 y |  j, | | ƒ WnÁ t- t. f k
 r4t	 j/ ƒ  d }
 t j t0 |
 ƒ ƒ t j d t1 ƒ  ƒ d }	 nn t2 k
 rt	 j/ ƒ  d }
 t j t0 |
 ƒ ƒ t j d t1 ƒ  ƒ d }	 n! t j d t1 ƒ  ƒ d }	 n X| d  k	 r»| j3 ƒ  n  |	 r| j4 } d j5 | ƒ } t j d | ƒ t$ | d ƒ } | j6 | ƒ | j3 ƒ  n  |	 S(   Ni   i   t   VIRTUAL_ENVs2   Could not find an activated virtualenv (required).i   iÿÿÿÿt   ___VENV_RESTART___iþÿÿÿsH   Given virtualenv (%s) doesn't match currently activated virtualenv (%s).s&   Using already activated environment %ss   Running in environment %st   at   proxystrt	   promptingi    s   Exception information:
%ss   Exception:
%si   s   
s   Storing complete log in %st   w(7   R   t
   parse_argsR5   R1   R0   R   t   level_for_integert	   consumerst   extendR   t   stdoutt   DEBUGt   appendR(   t   Truet   explicit_levelsR6   R&   R#   t   ost   environt   gett   fatalt   exitR'   t   Nonet   patht   existst   realpatht
   expandusert   infot   Falset   site_packagesR	   R%   R"   t   open_logfilet   sockett   setdefaulttimeoutR*   R   t   setupR$   R-   t   runR   R   t   exc_infot   strt
   format_excR   t   closeR)   t   joint   write(   R   t   complete_argst   argsR2   R3   t   levelt   complete_logRR   t   log_fpRJ   t   et   log_fnt   text(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyt   main;   sŒ    		

!							
	N(   t   __name__t
   __module__RK   R   R   RQ   t   hiddenR!   R5   R6   Rf   (    (    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyR      s   		
	c         C   sG   |  d  k r t j ƒ  }  n  t ƒ  } t j |  t d | ƒ Ž  | j ƒ  S(   Nt   file(   RK   R   RX   R
   t	   tracebackt   print_exceptiont   dictt   getvalue(   RX   t   out(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyRZ   ›   s
    	R9   c         C   sÂ   t  j j |  ƒ }  t  j j |  ƒ }  t  j j |  ƒ } t  j j | ƒ sX t  j | ƒ n  t  j j |  ƒ } t |  | ƒ } | r¾ | j d d d ƒ | j d t	 j
 d t j d ƒ f ƒ n  | S(   s¯   Open the named log file in append mode.

    If the file already exists, a separator will also be printed to
    the file to separate past activity from current activity.
    s   %s
t   -i<   s   %s run on %s
i    s   %c(   RF   RL   RO   t   abspatht   dirnameRM   t   makedirst   openR]   R   R   t   timet   strftime(   t   filenamet   modeRr   RM   Rb   (    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyRS   £   s    *c         C   sC   d |  } | t  j k r d  Sy t | ƒ Wn t k
 r> n Xd  S(   Ns   pip.commands.%s(   R   t   modulest
   __import__t   ImportError(   R   t	   full_name(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyR   ·   s    
c          C   s"   x t  ƒ  D] }  t |  ƒ q
 Wd  S(   N(   R   R   (   R   (    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyR   Á   s    c          C   s,   t  d „  t d t j ƒ Dƒ ƒ }  t |  ƒ S(   Nc         s   s   |  ] } | d  Vq d S(   i   N(    (   t   .0t   pkg(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pys	   <genexpr>Ç   s    RL   (   t   setR   R    t   __path__t   list(   t   names(    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyR   Æ   s    "(&   t   __doc__RF   RT   R   Rk   Ru   t   pipR    t   pip.logR   t   pip.baseparserR   R   R   t   pip.downloadR   t   pip.exceptionsR   R   R   t   pip.venvR	   t   pip.backwardcompatR
   R   R   R   t   __all__R   t	   get_proxyt   objectR   RK   RZ   RS   R   R   R   (    (    (    s3   /usr/lib/python2.7/dist-packages/pip/basecommand.pyt   <module>   s,   "			
	