
0c@_                 @   sI  d  d l  m Z 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 m	 Z	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z e r d  d l m Z m Z e j e  Z Gd d	   d	 e  Z Gd
 d   d e  Z Gd d   d e  Z Gd d   d e  Z e j d d    Z e j d d    Z d S)    )absolute_importdivisionN)HIDE_CURSORSHOW_CURSOR)WINDOWS)get_indentation)MYPY_CHECK_RUNNING)IteratorIOc               @   s(   e  Z d  Z d d   Z d d   Z d S)SpinnerInterfacec             C   s   t     d  S)N)NotImplementedError)self r   9/tmp/pip-build-jynh7p1z/pip/pip/_internal/cli/spinners.pyspin   s    zSpinnerInterface.spinc             C   s   t     d  S)N)r   )r   final_statusr   r   r   finish   s    zSpinnerInterface.finishN)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c               @   sI   e  Z d  Z d d d d d  Z d d   Z d d	   Z d
 d   Z d S)InteractiveSpinnerNz-\|/g      ?c             C   s   | |  _  | d  k r t j } | |  _ t |  |  _ d |  _ t j |  |  _	 |  j j
 d t   |  j  d  d |  _ d  S)NF z ... r   )_messagesysstdout_fileRateLimiter_rate_limiter	_finished	itertoolscycle_spin_cyclewriter   _width)r   messagefile
spin_charsmin_update_interval_secondsr   r   r   __init__    s    				"zInteractiveSpinner.__init__c             C   sy   |  j  s t  d |  j } |  j j | d |  j |  |  j j |  t |  |  _ |  j j   |  j j   d  S)Nr   )	r   AssertionErrorr#   r   r"   lenflushr   reset)r   statusbackupr   r   r   _write0   s    zInteractiveSpinner._writec             C   s:   |  j  r d  S|  j j   s  d  S|  j t |  j   d  S)N)r   r   readyr0   nextr!   )r   r   r   r   r   =   s
    	zInteractiveSpinner.spinc             C   sD   |  j  r d  S|  j |  |  j j d  |  j j   d |  _  d  S)N
T)r   r0   r   r"   r,   )r   r   r   r   r   r   E   s    	zInteractiveSpinner.finish)r   r   r   r(   r0   r   r   r   r   r   r   r      s
   r   c               @   sC   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 S)NonInteractiveSpinner<   c             C   s2   | |  _  d |  _ t |  |  _ |  j d  d  S)NFstarted)r   r   r   r   _update)r   r$   r'   r   r   r   r(   T   s    		zNonInteractiveSpinner.__init__c             C   s7   |  j  s t  |  j j   t j d |  j |  d  S)Nz%s: %s)r   r*   r   r-   loggerinfor   )r   r.   r   r   r   r7   [   s    zNonInteractiveSpinner._updatec             C   s1   |  j  r d  S|  j j   s  d  S|  j d  d  S)Nzstill running...)r   r   r1   r7   )r   r   r   r   r   a   s
    	zNonInteractiveSpinner.spinc             C   s3   |  j  r d  S|  j d j t      d |  _  d  S)Nz%finished with status '{final_status}'T)r   r7   formatlocals)r   r   r   r   r   r   i   s
    	zNonInteractiveSpinner.finishN)r   r   r   r(   r7   r   r   r   r   r   r   r4   S   s   r4   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)r   c             C   s   | |  _  d |  _ d  S)Nr   )_min_update_interval_seconds_last_update)r   r'   r   r   r   r(   s   s    	zRateLimiter.__init__c             C   s&   t  j    } | |  j } | |  j k S)N)timer=   r<   )r   nowdeltar   r   r   r1   x   s    zRateLimiter.readyc             C   s   t  j    |  _ d  S)N)r>   r=   )r   r   r   r   r-   ~   s    zRateLimiter.resetN)r   r   r   r(   r1   r-   r   r   r   r   r   r   s   r   c             c   s   t  j j   r3 t j   t j k r3 t |   } n t |   } y  t	 t  j  
 | VWd  QRXWnC t
 k
 r | j d    Yn/ t k
 r | j d    Yn X| j d  d  S)Ncancelederrordone)r   r   isattyr8   getEffectiveLevelloggingINFOr   r4   hidden_cursorKeyboardInterruptr   	Exception)r$   spinnerr   r   r   open_spinner   s    $rL   c             c   sc   t  r d  VnQ |  j   s0 t j   t j k r8 d  Vn' |  j t  z	 d  VWd  |  j t  Xd  S)N)	r   rD   r8   rE   rF   rG   r"   r   r   )r%   r   r   r   rH      s    "	rH   )
__future__r   r   
contextlibr   rF   r   r>   Zpip._vendor.progressr   r   Zpip._internal.utils.compatr   Zpip._internal.utils.loggingr   Zpip._internal.utils.typingr   Ztypingr	   r
   	getLoggerr   r8   objectr   r   r4   r   contextmanagerrL   rH   r   r   r   r   <module>   s$   
4