ó
€ˆtPc           @   s   d  Z  d d l Z d d l Z d d l m Z d Z d „  Z d „  Z d „  Z d e	 f d	 „  ƒ  YZ
 d a d
 „  Z d „  Z d S(   sK  show progress bars for some actions

This extension uses the progress information logged by hg commands
to draw progress bars that are as informative as possible. Some progress
bars only offer indeterminate information, while others have a definite
end point.

The following settings are available::

  [progress]
  delay = 3 # number of seconds (float) before showing the progress bar
  changedelay = 1 # changedelay: minimum delay before showing a new topic.
                  # If set to less than 3 * refresh, that value will
                  # be used instead.
  refresh = 0.1 # time in seconds between refreshes of the progress bar
  format = topic bar number estimate # format of the progress bar
  width = <none> # if set, the maximum width of the progress information
                 # (that is, min(width, term width) will be used)
  clear-complete = True # clear the progress bar after it's done
  disable = False # if true, don't show a progress bar
  assume-tty = False # if true, ALWAYS show a progress bar, unless
                     # disable is given

Valid entries for the format field are topic, bar, number, unit,
estimate, speed, and item. item defaults to the last 20 characters of
the item, but this can be changed by adding either ``-<num>`` which
would take the last num characters, or ``+<num>`` for the first num
characters.
iÿÿÿÿN(   t   _t   internalc          G   s   d j  d „  |  Dƒ ƒ S(   Nt    c         s   s   |  ] } | r | Vq d  S(   N(    (   t   .0t   s(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pys	   <genexpr>-   s    (   t   join(   t   args(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt	   spacejoin,   s    c         C   s"   |  j  t j ƒ p! |  j d d ƒ S(   Nt   progresss
   assume-tty(   t   _isattyt   syst   stderrt
   configbool(   t   ui(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   shouldprint/   s    c         C   sN  |  d k  r t  d ƒ |  S|  d } | d k  rR |  | d 8}  t  d ƒ | |  f S| d 7} | d } | | d 8} | d k  r” t  d ƒ | | f S| d 7} | d } | | d 8} | d k  rÖ t  d	 ƒ | | f S| d 7} | d
 } | | d
 8} | d k  rt  d ƒ | | f S| d 7} | d } | | d 8} t  d ƒ | | f S(   Ni<   s   %02dss   %dm%02dsi   i   s   %dh%02dmi   i   s   %dd%02dhi   i7   s   %dw%02ddi4   s   %dy%02dw(   R    (   t   secondst   minutest   hourst   dayst   weekst   years(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   fmtremaining2   s2    








t   progbarc           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d d d
 d	 „ Z RS(   c         C   s   | |  _  |  j ƒ  d  S(   N(   R   t
   resetstate(   t   selfR   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   __init__X   s    	c         C   só   g  |  _  i  |  _ i  |  _ i  |  _ t |  _ t j ƒ  t |  j j	 d d d d ƒƒ |  _
 d  |  _ d |  _ t |  j j	 d d d d ƒƒ |  _ t d |  j t |  j j	 d d d d	 ƒƒ ƒ |  _ |  j j d d
 d d d d d g ƒ|  _ d  S(   NR   t   delayt   defaulti   i    t   refreshg™™™™™™¹?t   changedelayi   t   formatt   topict   bart   numbert   estimate(   t   topicst   topicstatest
   starttimest	   startvalst   Falset   printedt   timet   floatR   t   configt	   lastprintt   Nonet	   lasttopict
   indetcountR   t   maxR   t
   configlistt   order(   R   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR   \   s"    									c         C   sœ  t  |  j ƒ s d  S|  j ƒ  } t |  _ d } t }	 d }
 xÛ|  j D]Ð} d } | d k re | } nˆ| d k r³ | r¤ d t t t | ƒ ƒ ƒ d | | f } qít | ƒ } n:| j	 d ƒ ri| rid } d | k rö t
 | j d ƒ d	 ƒ } n4 d
 | k r$d } t
 | j d
 ƒ d	 ƒ } n d } | d k rD| | } n
 | |  } | | t | ƒ d 7} n„ | d k r„d } t }	 ni | d k rŸ| rŸ| } nN | d k rÆ|  j | | | | ƒ } n' | d k rí|  j | | | | ƒ } n  |	 st | | ƒ } qD t |
 | ƒ }
 qD W|	 r[d } | rA| t | ƒ d	 7} n  |
 r^| t |
 ƒ d	 7} n  | | d } | rÈ| | k rÈ| | | } d | d	 } | d k r³| d 7} n  | d | | 7} nf | d 8} |  j d	 7_ |  j d | } | | 8} d t
 | t | ƒ ƒ d d t
 t | ƒ ƒ } d j d | d f ƒ } t | | |
 ƒ } n t | |
 ƒ } t j j d | |  ƒ | |  _ t j j ƒ  d  S(   Nt    R   R!   s   % s   s/%st   itemt   endt   -i   t   +t	   beginningi   R   R    t   unitR"   t   speedi    i   t   =t   >i   s   <=>t   [t   ]s   (   R   R   t   widtht   TrueR(   R'   R2   t   strt   lent
   startswitht   intt   splitR"   R:   R   R/   t   absR   R
   R   t   writeR.   t   flush(   R   t   nowR   t   posR4   R9   t   totalt	   termwidtht   headt   needprogresst   tailt	   indicatort   addt   slicet   widt   usedt	   progwidtht   amtR    t   progt   out(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   showo   s‚    		
		

	c         C   s5   t  |  j ƒ s d  St j j d d |  j ƒ  ƒ d  S(   Ns   %sR   (   R   R   R
   R   RG   R?   (   R   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   clearº   s    c         C   s\   t  |  j ƒ s d  S|  j j d d d t ƒr; |  j ƒ  n t j j d ƒ t j j ƒ  d  S(   NR   s   clear-completeR   s   
(	   R   R   R   R@   RZ   R
   R   RG   RH   (   R   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   complete¿   s    c         C   s7   |  j  j ƒ  } t t |  j  j d d d | ƒƒ | ƒ S(   NR   R?   R   (   R   RL   t   minRD   R+   (   R   t   tw(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR?   È   s    c   
      C   sœ   | d  k r d S|  j | } | | } | | } | d k r˜ | |  j | } | t |  j j d d d d ƒƒ k r˜ | | | | d }	 t |	 ƒ Sn  d S(   NR3   i    R   R"   R   i   i   (   R-   R&   R%   R*   R   R+   R   (
   R   R   RJ   RK   RI   t
   initialpost   targett   deltat   elapsedR   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR"   Ì   s    

!c         C   sk   |  j  | } | | } | |  j | } | t |  j j d d d d ƒƒ k rg t d ƒ | | | f Sd S(   NR   R"   R   i   s	   %d %s/secR3   (   R&   R%   R*   R   R+   R    (   R   R   RJ   R9   RI   R^   R`   Ra   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR:   Ú   s    
!R3   c         C   s“  t  j  ƒ  } | d  k r¾ |  j j | d  ƒ |  j j | d  ƒ |  j j | d  ƒ |  j r |  j d | k r |  j r |  j ƒ  |  j	 ƒ  n  | |  j k r|  j |  j j
 | ƒ  |  _ qnÑ | |  j k rú | |  j | <| |  j | <|  j j | ƒ n  | | | | f |  j | <| |  j |  j k r|  j r|  j d  k sf| |  j k sf| |  j |  j k r| |  _ |  j | | |  j | Œ qn  d  S(   Ni    (   R)   R-   R%   t   popR&   R$   R#   R(   R[   R   t   indext   appendR,   R   R.   R   RY   (   R   R   RJ   R4   R9   RK   RI   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR   ã   s*    %
"	N(   t   __name__t
   __module__R   R   RY   RZ   R[   R?   R"   R:   R-   R   (    (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR   W   s   			K							c            s•   d |  j  f ‡  f d †  ƒ  Y‰  |  j d d ƒ r5 d  St |  ƒ r‘ |  j r‘ |  j r‘ ˆ  |  _  ˆ  j s‘ t d  k r‚ t |  ƒ a n  t ˆ  _ q‘ n  d  S(   Nt
   progressuic              sD   e  Z d Z d  „  Z ‡  f d †  Z ‡  f d †  Z ‡  f d †  Z RS(   c         S   s   |  j  p |  j S(   N(   t	   debugflagt   quiet(   R   (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   _quiet  s    c            s;   |  j  ƒ  s" |  j j | | Ž  n  t ˆ  |  ƒ j | | Ž  S(   N(   Rj   t   _progbarR   t   super(   R   R   t   opts(   Rg   (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyR   
  s    c            sB   |  j  ƒ  r) |  j j r) |  j j ƒ  n  t ˆ  |  ƒ j | | Ž  S(   N(   Rj   Rk   R(   RZ   Rl   RG   (   R   R   Rm   (   Rg   (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyRG     s    c            sB   |  j  ƒ  r) |  j j r) |  j j ƒ  n  t ˆ  |  ƒ j | | Ž  S(   N(   Rj   Rk   R(   RZ   Rl   t	   write_err(   R   R   Rm   (   Rg   (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyRn     s    N(   Re   Rf   R-   Rk   Rj   R   RG   Rn   (    (   Rg   (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyRg     s
   	R   t   disable(	   t	   __class__R   R   Rh   Ri   Rk   t
   _singletonR-   R   (   R   (    (   Rg   s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   uisetup  s     		c         C   s   t  | j ƒ d  S(   N(   Rr   R   (   R   t   repo(    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt	   reposetup&  s    (   t   __doc__R
   R)   t   mercurial.i18nR    t
   testedwithR   R   R   t   objectR   R-   Rq   Rr   Rt   (    (    (    s2   /sys/lib/python2.7/site-packages/hgext/progress.pyt   <module>$   s   			%©	$