
    xkd)                        d Z ddl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
mZ ddlZddlmZ g dZd Z G d d	e          Z G d
 dej        e          Z G d dej        e          Z G d dej        e          ZdS )z'Progress reporting for text interfaces.    )print_functionN)CallableOptionalUnion)base)AcquireProgressCdromProgress
OpProgressc                 d    t          j        |           }|| k    rt          j        | d          }|S )z>Translate the message, also try apt if translation is missing.apt)apt_pkggettext)msgress     3/usr/lib/python3/dist-packages/apt/progress/text.py_r   $   s2     /#

C
czzoc5))J    c                   "    e Zd ZdZddZddZdS )	TextProgressz.Internal Base class for text progress classes.Nc                 :    |pt           j        | _        d| _        d S )Nr   )sysstdout_file_widthselfoutfiles     r   __init__zTextProgress.__init__0   s    *

r   TFc                    | j                             d           | j                             |           | j        t          |          k    r3| j                             | j        t          |          z
  dz             n)|r't	          | j        t          |                    | _        |r| j                             d           dS | j                                          dS )z8Write the message on the terminal, fill remaining space. 
N)r   writer   lenmaxflush)r   r   newlinemaximizes       r   _writezTextProgress._write5   s     	

 ;S!!JdkCHH4;<<<< 	5dk3s8844DK 	JT""""" Jr   N)TF)__name__
__module____qualname____doc__r   r)    r   r   r   r   -   sB        88   
     r   r   c                   (    e Zd ZdZddZddZd ZdS )r
   z\Operation progress reporting.

    This closely resembles OpTextProgress in libapt-pkg.
    Nc                     t                               | |           t          j                            |            d| _        d S )N )r   r   r   r
   old_opr   s     r   r   zOpProgress.__init__M   s9    dG,,,  &&&r   c                     t           j                            | |           | j        r!| j        r|                     | j                   |                     d| j        | j        fz  dd           | j        | _        dS )z1Called periodically to update the user interface.z%s... %i%%FTN)r   r
   updatemajor_changer3   r)   oppercent)r   r8   s     r   r5   zOpProgress.updateS   su     	tW--- 	% 	%KK$$$Ndgt|%<<eTJJJgr   c                     t           j                            |            | j        r.|                     t          d          d| j        fz  dd           d| _        dS )z,Called once an operation has been completed.z%c%s... Doner    Tr2   N)r   r
   doner3   r)   r   r   s    r   r:   zOpProgress.done\   sZ     	T"""; 	MKK.))T4;,??tLLLr   r*   )r+   r,   r-   r.   r   r5   r:   r/   r   r   r
   r
   G   sU         
          r   r
   c                   J    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZdS )r   z'AcquireProgress for the text interface.Nc                     t                               | |           t          j                            |            d | _        d| _        d| _        d S )NP      )r   r   r   r   _signalr   _idr   s     r   r   zAcquireProgress.__init__h   sM    dG,,,%%d+++ 	 r   c                     t           j                            |            t          j        t          j        | j                  | _        |                                  d| _        dS )zStart an Acquire progress.

        In this case, the function sets up a signal handler for SIGWINCH, i.e.
        window resize signals. And it also sets id to 1.
        r?   N)r   r   startsignalSIGWINCH_winchr@   rA   r;   s    r   rC   zAcquireProgress.startr   sJ     	""4(((}V_dkBBr   c                 2   t          | j        d          rt          j        | j                                                  rVddl}ddl}ddl}|                    | j        |j	        d          }|
                    d|          \  }}}}|dz
  | _        dS dS dS )z)Signal handler for window resize signals.filenor   Ns           hhhhr?   )hasattrr   osisattyrH   fcntltermiosstructioctl
TIOCGWINSZunpackr   )r   dummyrM   rN   rO   bufcols          r   rF   zAcquireProgress._winch   s     4:x(( 	"RYtz7H7H7J7J-K-K 	"LLLNNNMMM++dj'*<hGGC'-}}VS'A'A$E3u'DKKK	" 	" 	" 	"r   c                     t           j                            | |           t          d          |j        z   }|j        j        r$|dt          j        |j        j                  z  z  }| 	                    |           dS )z@Called when an item is update (e.g. not modified on the server).zHit  [%sB]N)
r   r   ims_hitr   descriptionownerfilesizer   size_to_strr)   r   itemlines      r   rX   zAcquireProgress.ims_hit   su     	$$T4000yy4++: 	HHw24:3FGGGGDDr   c                 j   t           j                            | |           |j        j        |j        j        k    r,|                     t          d          |j        z              dS |                     t          d          |j        z              |                     d|j        j	        z             dS )zCalled when an item is failed.zIgn zErr z  %sN)
r   r   failrZ   status	STAT_DONEr)   r   rY   
error_text)r   r^   s     r   ra   zAcquireProgress.fail   s     	!!$---:
 444KK&		D$4455555KK&		D$44555KK!6677777r   c                 z   t           j                            | |           |j        j        rdS | j        |j        _        | xj        dz  c_        t          d          |j        j        d|j        z   }|j        j	        r$|dt          j        |j        j	                  z  z  }|                     |           dS )z/Called when some of the item's data is fetched.Nr?   zGet:r!   rW   )r   r   fetchrZ   completerA   idr   rY   r[   r   r\   r)   r]   s      r   rf   zAcquireProgress.fetch   s     	""4...: 	F
AyydjmmmT5E5EFF: 	HHw24:3FGGGGDDr   c                    t           j                            | |           t          | j        d          r-t          j        | j                                                  sdS | j        | j	        z   dz  t          | j        | j        z             z  }d}d|z  }d}| j        rbt          t          | j        | j        z
            | j        z            }dt          j        | j                  dt          j        |          }|j        D ]}}d}|j        sT|j        rLd	|j        z  }t+          |          t+          |          z   t+          |          z   | j        k    r n'||z  }d}`d}|j        j        j        r$|d
|j        j        j        |j        j        fz  z  }n|d|j        j        z  z  }|j        j        j        r|d|j        j        j        z  z  }|dt          j        |j                  z  z  }|j        rB|j        j        j        s1|dt          j        |j                  |j        dz  |j        z  fz  z  }|dz  }t+          |          t+          |          z   t+          |          z   | j        k    r n||z  }|s|t?          d          z  }| j        r0|| j        t+          |          z
  t+          |          z
  dz  |z   z  }|                      |d           dS )zPeriodically invoked while the Acquire process is underway.

        Return False if the user asked to cancel the whole Acquire process.rH   Tg      Y@Fz%i%%r2   r!   zB/s z [%s]z [%i %sz [%sz %sz %sBz	/%sB %i%%]z
 [Working])!r   r   pulserJ   r   rK   rL   rH   current_bytescurrent_itemsfloattotal_bytestotal_itemscurrent_cpsintr   r\   time_to_strworkerscurrent_itemrb   r$   r   rZ   rh   	shortdescrY   active_subprocesscurrent_size
total_sizerg   r   r)   )	r   rZ   r8   showntvalendetaworkervals	            r   rk   zAcquireProgress.pulse   s%   
 	""4///4:x(( 	4:;L;L;N;N1O1O 	4 &);;uDt//I
 I
 
  	eD,t/AABBTEUUVVCC#D$45555#C(((C
 m %	 %	FC& = !!FM1C4yy3s88+c#hh6$+EECKD EE"(+ @y'-0'1$  
 v 3 ???"(: Kuv28JJJ6G/0CDDDDC   )<)B)K {'(9::'%/&2CC&  
 3JC4yy3s88#c#hh.$+== 	$AlOO#D 	ET[3s88+c$ii73>DDDD%   tr   c                     t           j                            | ||           |                     t	          d          ||fz             t                      dvS )z7Prompt the user to change the inserted removable media.zUMedia change: please insert the disc labeled
 '%s'
in the drive '%s' and press enter
)cC)r   r   media_changer)   r   input)r   mediumdrives      r   r   zAcquireProgress.media_change   sf     	))$>>>6 
 uo	
 	
 	
 wwj((r   c                    t           j                            |            |                     t	          d          t          j        | j                  t          j        | j	                  t          j        | j
                  fz                      d                     ddl} |j        |j        | j                   dS )z/Invoked when the Acquire process stops running.zFetched %sB in %s (%sB/s)
r"   r   N)r   r   stopr)   r   r   r\   fetched_bytesrs   elapsed_timerq   rstriprD   rE   r@   )r   rD   s     r   r   zAcquireProgress.stop  s     	!!$'''/00'(:;;'(9::'(899 fTll		
 		
 		
 	fot|44444r   r*   )r+   r,   r-   r.   r   rC   rF   rX   ra   rf   rk   r   r   r/   r   r   r   r   e   s        11     
" 
" 
"  8 8 8  G G GR) ) )5 5 5 5 5r   r   c                   $    e Zd ZdZd Zd Zd ZdS )r	   zText CD-ROM progress.c                     t           j                            |            |                     t	          d          d           	 t          t          d                    S # t          $ r Y dS w xY w)z,Ask the user to provide a name for the disc.zDPlease provide a name for this medium, such as 'Debian 2.1r1 Disk 1'F:N)r   r	   ask_cdrom_namer)   r   strr   KeyboardInterruptr;   s    r   r   zCdromProgress.ask_cdrom_name  s     	))$///(  	
 	
 	
	uSzz??"  	 	 	44	s   A   
A.-A.c                 |    t           j                            | ||           |r|                     |d           dS dS )zSet the current progress.FN)r   r	   r5   r)   )r   textcurrents      r   r5   zCdromProgress.update-  sK     	!!$g666 	%KKe$$$$$	% 	%r   c                     t           j                            |            |                     t	          d          d           	 t          t                      dk              S # t          $ r Y dS w xY w)z"Ask the user to change the CD-ROM.z4Please insert an installation medium and press enterFr2   )r   r	   change_cdromr)   r   boolr   r   r;   s    r   r   zCdromProgress.change_cdrom4  su     	''---ALMMuUUU	2&&&  	 	 	55	s   A# #
A10A1N)r+   r,   r-   r.   r   r5   r   r/   r   r   r	   r	     sG           % % %    r   r	   )r.   
__future__r   iorK   rD   r   typestypingr   r   r   r   apt.progressr   __all__r   objectr   r
   r   r	   r/   r   r   <module>r      sl  " . - % % % % % % 				 				  



  , , , , , , , , , ,        =
<
<      6   4    ,   <r5 r5 r5 r5 r5d*L r5 r5 r5j" " " " "D& " " " " "r   