§
    ­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Ø
ˆc‚z€zÝŒo˜c 5Ñ)Ô)ˆØ€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×Ò˜dœk­C°©H¬HÑ4¸Ñ;Ñ<Ô<Ð<Ð<Øð 	5Ý˜dœk­3¨s©8¬8Ñ4Ô4ˆDŒKØð 	ØŒ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   € å×Ò˜d GÑ,Ô,Ð,ÝŒ× Ò  Ñ&Ô&Ð&ØˆŒˆˆ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   € õ 	Œ×Ò˜t WÑ-Ô-Ð-ØÔð 	% ¤ð 	%Ø�KŠK˜œÑ$Ô$Ð$Ø�Š�N d¤g¨t¬|Ð%<Ñ<¸eÀTÑ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Ø�KŠK�˜.Ñ)Ô)¨T°4´;Ð,?Ñ?ÀÀ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 )NéP   é   )r   r   r   r   Ú_signalr   Ú_idr   s     r   r   zAcquireProgress.__init__h   sM   € å×Ò˜d GÑ,Ô,Ð,ÝÔ×%Ò% dÑ+Ô+Ð+àð 	Œð ˆŒØˆŒˆˆr   c                 óÌ   — t           j                             | ¦  «         t          j        t          j        | j        ¦  «        | _        |                      ¦   «          d| _        dS )z¬Start 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¤_°d´kÑ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Ñ(Ô(ð 	"­R¬Y°t´z×7HÒ7HÑ7JÔ7JÑ-KÔ-Kð 	"ØˆLˆLˆLØˆNˆNˆNØˆMˆMˆMà—+’+˜dœj¨'Ô*<¸hÑGÔGˆCØ'-§}¢}°V¸SÑ'AÔ'AÑ$ˆE�3˜˜uØ ™'ˆDŒKˆKˆKð	"ð 	"ð 	"ð 	"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   € õ 	Ô×$Ò$ T¨4Ñ0Ô0Ð0Ý�‰yŒy˜4Ô+Ñ+ˆØŒ:Ôð 	HØ�H�wÔ2°4´:Ô3FÑGÔGÑGÑGˆDØ�Š�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Ø�KŠK�˜&™	œ	 DÔ$4Ñ4Ñ5Ô5Ð5Ð5Ð5à�KŠK�˜&™	œ	 DÔ$4Ñ4Ñ5Ô5Ð5Ø�KŠK˜ ¤Ô!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‰ˆŒÝ�‰yŒy d¤j¤m m m°TÔ5EÐ5EÐFÑFˆØŒ:Ôð 	HØ�H�wÔ2°4´:Ô3FÑGÔGÑGÑGˆDà�Š�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 )zˆPeriodically 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Ô;NÑ1OÔ1Oð 	Ø�4ð Ô&¨Ô);Ñ;¸uÑDÍØÔ˜tÔ/Ñ/ñI
ô I
ñ 
ˆð ˆØ˜ÑˆØˆØÔð 	Ý•e˜DÔ,¨tÔ/AÑAÑBÔBÀTÔEUÑUÑVÔVˆCˆCåÔ# DÔ$4Ñ5Ô5Ð5Ð5ÝÔ# CÑ(Ô(Ð(ðˆCð
 ”mð %	ñ %	ˆFØˆCØÔ&ð Ø”=ð !Ø! F¤MÑ1�CÝ˜4‘y”y¥3 s¡8¤8Ñ+­c°#©h¬hÑ6¸$¼+ÒEÐEØ™Ø˜C‘K�DØ �EØØˆEàÔ"Ô(Ô+ð @Ø�yØÔ'Ô-Ô0ØÔ'Ô1ð$ñ ñ ��ð
 �v Ô 3Ô ?Ñ?Ñ?�ØÔ"Ô(Ô:ð KØ�u˜vÔ2Ô8ÔJÑJÑJ�à�6�GÔ/°Ô0CÑDÔDÑDÑDˆCð Ô ð ¨Ô)<Ô)BÔ)Kð Ø�{ÝÔ'¨Ô(9Ñ:Ô:ØÔ'¨%Ñ/°&Ô2CÑCð&ñ ñ �ð
 �3‰JˆCå�4‰yŒy�3˜s™8œ8Ñ#¥c¨#¡h¤hÑ.°$´+Ò=Ð=à�à˜‘�‘àð 	$Ø•A�l‘O”OÑ#ˆDàÔð 	EØ�T”[¥3 s¡8¤8Ñ+­c°$©i¬iÑ7¸3Ñ>ÀÑDÑDˆDà�Š�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ñô ð
 �uˆoññ	
ô 	
ð 	
õ ‰wŒw˜jÐ(Ð(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ðñ÷ Šf�T‰lŒlñ		
ô 		
ð 		
ð 	ˆˆˆàˆŒ�f”o t¤|Ñ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�   € õ 	Ô×)Ò)¨$Ñ/Ô/Ð/Ø�ŠÝð(ñô ð ñ	
ô 	
ð 	
ð	Ý•u˜S‘z”z‘?”?Ð"øÝ ð 	ð 	ð 	Ø�4�4ð	øøø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Øð 	%Ø�KŠK˜˜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ÔMÈuÑUÔUÐUð	Ý�™œ 2šÑ&Ô&Ð&øÝ ð 	ð 	ð 	Ø�5�5ð	øøø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5�dÔ*¨Lñ r5ô r5ð r5ðj"ð "ð "ð "ð "�DÔ&¨ñ "ô "ð "ð "ð "r   