
    q&f(                     R    d dl Z d dlZddlmZ ddlmZ d Zd Zd Z G d d	      Z	y)
    N   _)encodingc                  2    dj                  d | D              S )N    c              3   &   K   | ]	  }|s|  y wN ).0ss     4/usr/lib/python3/dist-packages/mercurial/progress.py	<genexpr>zspacejoin.<locals>.<genexpr>   s     *1Q*s   )join)argss    r   	spacejoinr      s    99****    c                     | j                   xs | j                  d       xr/ | j                  | j                        xs | j	                  dd      S )N   progresss
   assume-tty)quietplain_isattyferr
configbool)uis    r   shouldprintr      sD    1BHH[12 


277Hr}}[-Hr   c                    | dk  rt        d      | z  S | dz  }|dk  r| |dz  z  } t        d      || fz  S |dz  }|dz  }||dz  z  }|dk  rt        d      ||fz  S |dz  }|dz  }||dz  z  }|dk  rt        d	      ||fz  S |dz  }|d
z  }||d
z  z  }|dk  rt        d      ||fz  S |dz  }|dz  }||dz  z  }t        d      ||fz  S )zformat a number of remaining seconds in human readable way

    This will properly display seconds, minutes, hours, days if needed<   s   %02dss   %dm%02dsr      s   %dh%02dm      s   %dd%02dh   7   s   %dw%02dd4   s   %dy%02dwr   )secondsminuteshoursdaysweeksyearss         r   fmtremainingr+      s.    |{W$$mG|7R<~' 222qLGrMEurzGrz~ 000	QJEB;D	TBYEby~u--AIDAIEEAIDrz~--	QJERKE	URZE[>UEN**r   c                   b    e Z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 ZddZd Zy)progbarc                 d    || _         t        j                         | _        | j	                          y r
   )r   	threadingLock_refreshlock
resetstate)selfr   s     r   __init__zprogbar.__init__D   s"    %NN,r   c           	      V   g | _         i | _        i | _        i | _        d| _        t        j
                         t        | j                  j                  dd            z   | _	        d | _
        d | _        d| _        t        | j                  j                  dd            | _        t        d| j                  z  t        | j                  j                  dd                  | _        | j                  j!                  dd      | _        | j                  j%                  t        dd	      | _        y )
NFr   s   delayr   s   refresh   s   changedelays   formats   estimateinterval)topicstopicstates
starttimes	startvalsprintedtimefloatr   config	lastprintcurtopic	lasttopic
indetcountrefreshmaxchangedelay
configlistorder
configwithestimateintervalr3   s    r   r2   zprogbar.resetstateI   s    uGGNN;1(
 
 TWW^^KDEeDGGNN;$OP
 WW''Y?
 $ 2 2; 3!
r   c                    t        | j                        sy | j                         }d| _        d}d}	d}
| j                  D ]I  }d}|dk(  r|}n|dk(  r#|rdt        t        |            ||fz  }nd|z  }n|j                  d      r|rd	}d
|v rt        |j                  d
      d         }n&d|v r d}t        |j                  d      d         }nd}|d	k(  rt        j                  ||d      }nt        j                  ||      }||t        j                  |      z
  dz  z  }nG|dk(  rd}d}	n=|dk(  r|r|}n3|dk(  r| j                  ||||      }n|dk(  r| j                  ||||      }|	st        ||      }>t        |
|      }
L |	rd}|r|t        j                  |      dz   z  }|
r|t        j                  |
      dz   z  }||z
  dz
  }|r+||k  r&||z  |z  }d|dz
  z  }|dkD  r|dz  }|d||z
  z  z  }nf|dz  }| xj                   dz  c_        | j                   d|z  z  }||z  }dt        |t#        |      z
        z  dz   dt        t#        |            z  z   }dj%                  d|df      }t        |||
      }nt        ||
      }| j'                  dt        j                  ||      z          || _        | j+                          y )NTr   Fs   topics   numbers   %*d/%ds   %ds   items   end   -r      +s	   beginning   )leftsider   s   bars   units   estimates   speedr   r6      =   >   s   <=>   [   ]   )r   r   widthr;   rG   lenstr
startswithintsplitr   trimcolwidthestimatespeedr   rB   absr   	_writeerrrA   	_flusherr)r3   nowtopicpositemunittotal	termwidthheadneedprogresstail	indicatoraddslicewidused	progwidthamtbarprogouts                        r   showzprogbar.show^   s   477#JJL	 #	,ICH$i'#s3u:U&CCC#+C%%g.49$iood3A67CY&(Eiood3A67CCF?"--cDAC"--c2Ch//44<<f$#g%$k)mmE3s;h&jjT37 s+ s+G#	,H D))$/!33))$/!33!D(1,IIo.cAg&74KCty3//Q	1$ ooY7y 3y3s8344SS]*+ 
 88T3-.DD$-CD$'Cux}}S)<<=r   c                     | j                   r!| j                  rt        | j                        sy | j	                  dd| j                         z  z         | j                          | j                   rd| _        y y )Ns   %sr   r   )r;   r?   r   r   ra   rV   rb   rJ   s    r   clearzprogbar.clear   sV    ||4>>TWW9MyD4::<$789<<DN r   c                     t        | j                        sy | j                  j                  dd      r| j                          n| j	                  d       | j                          y )Nr   s   clear-complete   
)r   r   r   ry   ra   rb   rJ   s    r   completezprogbar.complete   sE    477#77k+<=JJLNN5!r   c                 L    | j                   j                  j                          y r
   )r   r   flushrJ   s    r   rb   zprogbar._flusherr   s    r   c                 N    | j                   j                  j                  |       y r
   )r   r   write)r3   msgs     r   ra   zprogbar._writeerr   s    3r   c           	          | j                   j                         }t        t        | j                   j	                  dd|            |      S )Nr   s   width)default)r   ri   minrZ   r>   )r3   tws     r   rV   zprogbar.width   s9    WW 3tww~~k8R~HI2NNr   c                     |y| j                   |   }||z
  }||z
  }|dkD  r+|| j                  |   z
  }|||z
  z  |z  dz   }	t        |	      S y)Nr   r   r   )r:   r9   r+   )
r3   rd   re   rh   rc   
initialpostargetdeltaelapsedr%   s
             r   r^   zprogbar.estimate   sl    =^^E*
#j 19DOOE22G&5.1e;a?G((r   c                     | j                   |   }||z
  }|| j                  |   z
  }|dkD  rt        d      ||z  |fz  S y)Nr   s	   %d %s/secr   )r:   r9   r   )r3   rd   re   rg   rc   r   r   r   s           r   r_   zprogbar.speed   sO    ^^E*
j ..Q;\?egot%<<<r   c                     | j                   5| j                  | j                   k(  s|| j                  z
  | j                  k\  ryy)z?Check if conditions are met to print - e.g. changedelay elapsedTF)rA   r@   r?   rE   )r3   rc   s     r   
_oktoprintzprogbar._oktoprint   s;     NN"}}.T^^#t'7'77r   c                     | j                   }|dk  ry|| j                  |   z
  }||kD  rE|| j                  |   z
  }||z  |z  }|dk  ry||z
  | j                  |<   ||z
  | j                  |<   yy)a  Adjust starttimes and startvals for topic so ETA works better

        If progress is non-linear (ex. get much slower in the last minute),
        it's more friendly to only use a recent time span for ETA and speed
        calculation.

            [======================================>       ]
                                             ^^^^^^^
                           estimateinterval, only use this for estimation
        r   Ng?)rI   r9   r:   )r3   rd   rc   re   intervalr   r   newdeltas           r   _calibrateestimatezprogbar._calibrateestimate   s     ((q=..X$..//Ex''1H #~$'(NDNN5!%(8^DOOE" r   Nc                 @   || j                  |       y t        j                         }| j                  5  || j                  vr9|| j                  |<   || j
                  |<   | j                  j                  |       ||||f| j                  |<   || _        | j                  |||       || j                  z
  | j                  k\  rE| j                  r9| j                  |      r(|| _
         | j                  ||g| j                  |     d d d        y # 1 sw Y   y xY wr
   )
closetopicr<   r1   r7   r9   r:   appendr8   r@   r   r?   rC   r   rw   )r3   rd   re   rf   rg   rh   rc   s          r   progresszprogbar.progress  s    ;OOE"iik 	DDKK'),&(+u%""5)&)4u&<DU#!DM##E34T^^#t||3??3'%(DNDIIc5C4+;+;E+BC	D 	D 	Ds   CDDc                 H   | j                   5  | j                  j                  |d        | j                  j                  |d        | j                  j                  |d        | j
                  r>| j
                  d   |k(  r,| j                  r | j                          | j                          || j
                  v rU| j
                  d | j
                  j                  |       | _        | j
                  r| j
                  d   | _
        nd | _
        d d d        y # 1 sw Y   y xY w)Nr   )r1   r9   popr:   r8   r7   r;   r|   r2   indexrA   )r3   rd   s     r   r   zprogbar.closetopic  s     	*OOt,NNud+  -{{t{{1~64<<! #"kk*DDKK,=,=e,DE ;;%)[[_DN%)DN%	* 	* 	*s   DDD!)r   r   N)__name__
__module____qualname__r4   r2   rw   ry   r|   rb   ra   rV   r^   r_   r   r   r   r   r   r   r   r-   r-   C   sL    

*KZ O
44D$*r   r-   )
r/   r<   i18nr    r   r   r   r+   r-   r   r   r   <module>r      s/       +&+Rd* d*r   