ó
^\kdc           @   s�   d  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 d „  Z	 e j
 e j f d „ Z d „  Z d e f d	 „  ƒ  YZ e ƒ  Z d S(
   s   Logging
iÿÿÿÿN(   t   backwardcompat(   t   coloramat   pkg_resourcesc             s   ‡  f d †  } | S(   Nc            s#   d j  t ˆ  ƒ |  t j j g ƒ S(   Nt    (   t   joint   listR   t   Stylet	   RESET_ALL(   t   inp(   t   colors(    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   wrapped   s    (    (   R	   R
   (    (   R	   s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   _color_wrap   s    c         C   sm   t  |  t j ƒ s |  n |  j } | | k r1 t St | d ƒ rP | j ƒ  rP t S| j d ƒ d k ri t St S(   Nt   isattyt   TERMt   ANSI(	   t
   isinstanceR   t   AnsiToWin32R
   t   Falset   hasattrR   t   Truet   get(   t   consumert   environt   stdt   real_consumer(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   should_color   s    	c         C   s”   d j  |  j d ƒ d  ƒ }  d j  | j d ƒ d  ƒ } | j d ƒ \ } } t t | ƒ d ƒ } d j  | | g ƒ } t j |  ƒ t j | ƒ k  S(   Nt   .i   i   (   R   t   splitt   strt   intR   t   parse_version(   t   current_versiont   removal_versiont   majort   minort   warn_version(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   should_warn&   s    t   Loggerc           B   sq  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 i e e j j ƒ e 6e e j j ƒ e
 6e e j j ƒ e 6Z d „  Z d „  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   indentR   t   explicit_levelst   Nonet   in_progresst   in_progress_hanging(   t   self(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   __init__L   s
    				c         G   s‡   t  j j d ƒ rs xn | D]S \ } } t | d ƒ rV |  j j | t j | ƒ f ƒ q |  j j | | f ƒ q Wn |  j j | ƒ d  S(   Nt   wint   write(	   t   syst   platformt
   startswithR   R&   t   appendR   R   t   extend(   R,   R&   t   levelR   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   add_consumersS   s    	c         O   s   |  j  |  j | | | Ž d  S(   N(   t   logt   DEBUG(   R,   t   msgt   argst   kw(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   debug_   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R7   t   INFO(   R,   R9   R:   R;   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   infob   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R7   t   NOTIFY(   R,   R9   R:   R;   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   notifye   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R7   t   WARN(   R,   R9   R:   R;   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   warnh   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R7   t   ERROR(   R,   R9   R:   R;   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   errork   s    c         O   s   |  j  |  j | | | Ž d  S(   N(   R7   t   FATAL(   R,   R9   R:   R;   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   fataln   s    c         O   sL   d d l  m } t | | ƒ r5 |  j | | | Ž n |  j | | | Ž d S(   s…  
        Logs deprecation message which is log level WARN if the
        ``removal_version`` is > 1 minor release away and log level ERROR
        otherwise.

        removal_version should be the version that the deprecated feature is
        expected to be removed in, so something that will not exist in
        version 1.7, but will in 1.6 would have a removal_version of 1.7.
        iÿÿÿÿ(   t   __version__N(   t   pipRG   R$   RB   RD   (   R,   R    R9   R:   t   kwargsRG   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt
   deprecatedq   s    
c   
      O   su  | r | r t  d ƒ ‚ q n  | p' | } | r= | | } n | } d |  j | } |  j rp d | | f } n  xþ |  j D]ó \ } } |  j | | ƒ rz |  j râ | t j t j f k râ t	 |  _ t j j
 d ƒ t j j ƒ  n  t | d ƒ r`| d } t | t j ƒ r4|  j j | d „  ƒ }	 |	 | ƒ } n  | j
 | ƒ t | d ƒ rj| j ƒ  qjqm| | ƒ qz qz Wd  S(   Ns6   You may give positional or keyword arguments, not botht    s   %02i %ss   
R/   c         S   s   |  S(   N(    (   t   x(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   <lambda>Ÿ   s    t   flush(   t	   TypeErrorR'   R(   R&   t   level_matchesR+   R0   t   stdoutt   stderrR   R/   RN   R   R   t   osR   t   COLORSR   (
   R,   R5   R9   R:   R;   t   renderedt   consumer_levelR   t   write_contentt	   colorizer(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyR7   ‚   s6    			
c         C   s   |  j  |  j ƒ o t j j ƒ  S(   s$   Should we display download progress?(   t   stdout_level_matchesR?   R0   RQ   R   (   R,   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   _show_progress¨   s    c         C   s‚   |  j  s# t d | |  j  f ƒ ‚ |  j ƒ  rc t j j d |  j | ƒ t j j ƒ  t |  _	 n	 t
 |  _	 | |  _  d  |  _ d  S(   Ns0   Tried to start_progress(%r) while in_progress %rRK   (   R*   t   AssertionErrorRZ   R0   RQ   R/   R'   RN   R   R+   R   R)   t   last_message(   R,   R9   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   start_progress¬   s    		s   done.c         C   s­   |  j  s t d ƒ ‚ |  j ƒ  r— |  j sY 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   
R   (   R*   R[   RZ   R+   R0   RQ   R/   RN   t   loggert   show_progressR)   R   (   R,   R9   (    (    s.   /var/www/testScraper/venv/build/pip/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 '.'R   RK   i    R   s	   %s%s%s%sN(   R+   R)   R0   RQ   R/   RN   R\   t   maxt   lenR'   R*   (   R,   t   messaget   padding(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyR_   Ê   s    		)c         C   s   |  j  | |  j ƒ  ƒ S(   s9   Returns true if a message at this level will go to stdout(   RP   t   _stdout_level(   R,   R5   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyRY   Û   s    c         C   s4   x* |  j  D] \ } } | t j k r
 | Sq
 W|  j S(   s%   Returns the level that stdout runs at(   R&   R0   RQ   RE   (   R,   R5   R   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyRe   ß   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(   R   t   slicet   startt   stopR)   R   R   (   R,   R5   RV   Rg   Rh   (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyRP   æ   s    c         C   s?   |  j  } | d k  r | d S| t | ƒ k r7 | d S| | S(   Ni    iÿÿÿÿ(   t   LEVELSRb   (   t   clsR5   t   levels(    (    s.   /var/www/testScraper/venv/build/pip/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&   R0   RQ   R3   RR   t   removeR4   (   R,   t	   to_removet   to_addRV   R   t   item(    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   move_stdout_to_stderr	  s    N((   t   __name__t
   __module__t   __doc__t   loggingR8   t   VERBOSE_DEBUGR=   RA   R?   t   WARNINGRC   RE   Ri   R   R   t   Foret   YELLOWt   REDRT   R-   R6   R<   R>   R@   RB   RD   RF   RJ   R7   RZ   R]   R`   R)   R_   RY   Re   RP   t   classmethodRl   Rq   (    (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyR%   7   s@   														&						(   Rt   R0   RS   Ru   RH   R    t   pip._vendorR   R   R   RQ   RR   R   R$   t   objectR%   R^   (    (    (    s.   /var/www/testScraper/venv/build/pip/pip/log.pyt   <module>   s   		Ý