ó
'šMc           @   sA   d  Z  d d l Z d d l Z d e f d „  ƒ  YZ e ƒ  Z d S(   s   Logging
iÿÿÿÿNt   Loggerc           B   s   e  Z d  Z e j d Z e j Z e j Z e j e j d Z e j Z Z	 e j
 Z
 e j Z e e e e e e
 e g Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z RS(   s‰   
    Logging object for use in command-line script.  Allows ranges of
    levels, to avoid some redundancy of displayed information.
    i   i   c         C   s1   g  |  _  d |  _ t |  _ d  |  _ t |  _ d  S(   Ni    (   t	   consumerst   indentt   Falset   explicit_levelst   Nonet   in_progresst   in_progress_hanging(   t   self(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   __init__   s
    				c         O   s   |  j  |  j | | | Ž d  S(   N(   t   logt   DEBUG(   R   t   msgt   argst   kw(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   debug    s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R
   t   INFO(   R   R   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   info#   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R
   t   NOTIFY(   R   R   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   notify&   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R
   t   WARN(   R   R   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   warn)   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R
   R   (   R   R   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   error,   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R
   t   FATAL(   R   R   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   fatal/   s    c         O   s/  | r | r t  d ƒ ‚ q n  | p' | } d  } xø |  j D]í \ } } |  j | | ƒ r: |  j r¢ | t j t j f k r¢ t |  _ t j j	 d ƒ t j j
 ƒ  n  | d  k r÷ | rÁ | | } n | } d |  j | } |  j r÷ d | | f } q÷ n  t | d ƒ r| j	 | d ƒ q'| | ƒ q: q: Wd  S(   Ns6   You may give positional or keyword arguments, not boths   
t    s   %02i %st   write(   t	   TypeErrorR   R   t   level_matchesR   t   syst   stdoutt   stderrR   R   t   flushR   R   t   hasattr(   R   t   levelR   R   R   t   renderedt   consumer_levelt   consumer(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR
   2   s.    			c         C   s   |  j  |  j ƒ o t j j ƒ  S(   s$   Should we display download progress?(   t   stdout_level_matchesR   R   R   t   isatty(   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   _show_progressN   s    c         C   s   |  j  s  t d | |  j  f ‚ |  j ƒ  r` t j j d |  j | ƒ t j j ƒ  t |  _	 n	 t
 |  _	 | |  _  d  |  _ d  S(   Ns0   Tried to start_progress(%r) while in_progress %rR   (   R   t   AssertionErrorR(   R   R   R   R   R    t   TrueR   R   R   t   last_message(   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   start_progressR   s    		s   done.c         C   sª   |  j  s t d ‚ |  j ƒ  r” |  j sV t j j d |  j  | d ƒ t j j ƒ  q” t j	 d ƒ t j	 d ƒ t j j | d ƒ t j j ƒ  n  d  |  _  t |  _ d  S(   Ns,   Tried to end_progress without start_progresss   ...s   
t    (   R   R)   R(   R   R   R   R   R    t   loggert   show_progressR   R   (   R   R   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   end_progress_   s    		c         C   s´   |  j  r° | d k r5 t j j d ƒ t j j ƒ  q° |  j rg d t d t |  j ƒ t | ƒ ƒ } n d } t j j d d |  j	 |  j
 | | f ƒ t j j ƒ  | |  _ n  d S(   sa   If we are in a progress scope, and no log messages have been
        shown, write out another '.'t   .R   i    R-   s	   %s%s%s%sN(   R   R   R   R   R   R    R+   t   maxt   lenR   R   (   R   t   messaget   padding(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR/   p   s    		)*c         C   s   |  j  | |  j ƒ  ƒ S(   s9   Returns true if a message at this level will go to stdout(   R   t   _stdout_level(   R   R"   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR&   €   s    c         C   s4   x* |  j  D] \ } } | t j k r
 | Sq
 W|  j S(   s%   Returns the level that stdout runs at(   R   R   R   R   (   R   R"   R%   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR6   „   s    c         C   sl   t  | t ƒ r^ | j | j } } | d k	 r> | | k r> t S| d k	 sV | | k rZ t St S| | k Sd S(   sm  
        >>> l = Logger()
        >>> l.level_matches(3, 4)
        False
        >>> l.level_matches(3, 2)
        True
        >>> l.level_matches(slice(None, 3), 3)
        False
        >>> l.level_matches(slice(None, 3), 2)
        True
        >>> l.level_matches(slice(1, 3), 1)
        True
        >>> l.level_matches(slice(2, 3), 1)
        False
        N(   t
   isinstancet   slicet   startt   stopR   R   R*   (   R   R"   R$   R9   R:   (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR   ‹   s    c         C   s?   |  j  } | d k  r | d S| t | ƒ k r7 | d S| | S(   Ni    iÿÿÿÿ(   t   LEVELSR3   (   t   clsR"   t   levels(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   level_for_integer¥   s    	c         C   s–   g  } g  } xR |  j  D]G \ } } | t j k r | j | | f ƒ | j | t j f ƒ q q Wx | D] } |  j  j | ƒ qh W|  j  j | ƒ d  S(   N(   R   R   R   t   appendR   t   removet   extend(   R   t	   to_removet   to_addR$   R%   t   item(    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   move_stdout_to_stderr®   s    N(    t   __name__t
   __module__t   __doc__t   loggingR   t   VERBOSE_DEBUGR   R   R   t   WARNINGt   ERRORR   R;   R	   R   R   R   R   R   R   R
   R(   R,   R0   R   R/   R&   R6   R   t   classmethodR>   RE   (    (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyR       s4   																		(   RH   R   RI   t   objectR    R.   (    (    (    s+   /usr/lib/python2.7/dist-packages/pip/log.pyt   <module>   s   ±