Ë
     ƒh"(  ã                   ó   — d 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 ddlZddl	m
Z
 g d¢Zdedefd„Z G d	„ d
«      Z G d„ de
j                  e«      Z G d„ de
j                   e«      Z G d„ de
j"                  e«      Zy)z'Progress reporting for text interfaces.é    N)ÚCallable)Úbase)ÚAcquireProgressÚCdromProgressÚ
OpProgressÚmsgÚreturnc                 óf   — t        j                  | «      }|| k(  rt        j                  | d«      }|S )z>Translate the message, also try apt if translation is missing.Úapt)Úapt_pkgÚgettext)r   Úress     ú3/usr/lib/python3/dist-packages/apt/progress/text.pyÚ_r       s,   € ä
�/‰/˜#Ó
€CØ
ˆc‚zÜ�o‰o˜c 5Ó)ˆØ€Jó    c            	       óV   — e Zd ZdZd
dej
                  dz  ddfd„Zddedededdfd	„Z	y)ÚTextProgressz.Internal Base class for text progress classes.NÚoutfiler	   c                 óD   — |xs t         j                  | _        d| _        y )Nr   )ÚsysÚstdoutÚ_fileÚ_width©Úselfr   s     r   Ú__init__zTextProgress.__init__+   s   € ØÒ*¤§
¡
ˆŒ
Øˆ�r   r   ÚnewlineÚmaximizec                 óÆ  — | j                   j                  d«       | j                   j                  |«       | j                  t        |«      kD  r5| j                   j                  | j                  t        |«      z
  dz  «       n&|r$t	        | j                  t        |«      «      | _        |r| j                   j                  d«       y| j                   j                  «        y)z8Write the message on the terminal, fill remaining space.úú ú
N)r   Úwriter   ÚlenÚmaxÚflush)r   r   r   r   s       r   Ú_writezTextProgress._write/   sœ   € à�
‰
×Ñ˜ÔØ�
‰
×Ñ˜Ôð �;‰;œ˜S›Ò!Ø�J‰J×Ñ˜dŸk™k¬C°«HÑ4¸Ñ;Õ<ÙÜ˜dŸk™k¬3¨s«8Ó4ˆDŒKÙØ�J‰J×Ñ˜TÕ"ð �J‰J×ÑÕr   ©N)TF)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚioÚ
TextIOBaser   ÚstrÚboolr'   © r   r   r   r   (   sC   „ Ù8ñ §¡°Ñ 4ð Àó ñ˜#ð ¨ð ¸tð ÐPTô r   r   c                   ó\   — e Zd ZdZd	dej
                  dz  ddfd„Zd	dedz  ddfd„Zd
d„Z	y)r   z\Operation progress reporting.

    This closely resembles OpTextProgress in libapt-pkg.
    Nr   r	   c                 ó|   — t         j                  | |«       t        j                  j                  | «       d| _        y )NÚ )r   r   r   r   Úold_opr   s     r   r   zOpProgress.__init__F   s+   € Ü×Ñ˜d GÔ,Ü�‰× Ñ  Ô&Øˆ�r   Úpercentc                 ó$  — t         j                  j                  | |«       | j                  r'| j                  r| j                  | j                  «       | j                  d| j                  | j                  fz  dd«       | j                  | _        y)z1Called periodically to update the user interface.z%s... %i%%FTN)r   r   ÚupdateÚmajor_changer5   r'   Úopr6   )r   r6   s     r   r8   zOpProgress.updateK   sb   € ä�‰×Ñ˜t WÔ-Ø×Ò §¢Ø�K‰K˜Ÿ™Ô$Ø�‰�N d§g¡g¨t¯|©|Ð%<Ñ<¸eÀTÔJØ—g‘gˆ�r   c                 ó¾   — t         j                  j                  | «       | j                  r+| j	                  t        d«      d| j                  fz  dd«       d| _        y)z,Called once an operation has been completed.z%c%s... Doner    Tr4   N)r   r   Údoner5   r'   r   ©r   s    r   r<   zOpProgress.doneS   sE   € ä�‰×Ñ˜TÔ"Ø�;Š;Ø�K‰Kœ˜.Ó)¨T°4·;±;Ð,?Ñ?ÀÀtÔLØˆ�r   r(   ©r	   N)
r)   r*   r+   r,   r-   r.   r   Úfloatr8   r<   r1   r   r   r   r   @   s?   „ ññ
 §¡°Ñ 4ð Àó ñ
˜e d™lð °dó ôr   r   c                   ó   — e Zd ZdZddej
                  dz  ddfd„Zdd„Zdeddfd„Z	d	e
j                  ddfd
„Zd	e
j                  ddfd„Zd	e
j                  ddfd„Zde
j                  defd„Zdededefd„Zdd„Zy)r   z'AcquireProgress for the text interface.Nr   r	   c                 ó˜   — t         j                  | |«       t        j                  j                  | «       d | _        d| _        d| _        y )NéP   é   )r   r   r   r   Ú_signalr   Ú_idr   s     r   r   zAcquireProgress.__init__^   sB   € Ü×Ñ˜d GÔ,Ü×Ñ×%Ñ% dÔ+ð ð 	Œð ˆŒØˆ�r   c                 óÖ   — t         j                  j                  | «       t        j                  t        j                  | j
                  «      | _        | j                  «        d| _        y)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.
        rC   N)r   r   ÚstartÚsignalÚSIGWINCHÚ_winchrD   rE   r=   s    r   rG   zAcquireProgress.startg   sB   € ô 	×Ñ×"Ñ" 4Ô(Ü—}‘}¤V§_¡_°d·k±kÓBˆŒà�‰ŒØˆ�r   Údummyc                 ó6  — t        | j                  d«      rƒt        j                  | j                  j	                  «       «      rUddl}ddl}ddl}|j                  | j                  |j                  d«      }|j                  d|«      \  }}}}|dz
  | _        yyy)z)Signal handler for window resize signals.Úfilenor   Ns           ÚhhhhrC   )Úhasattrr   ÚosÚisattyrM   ÚfcntlÚstructÚtermiosÚioctlÚ
TIOCGWINSZÚunpackr   )r   rK   rR   rS   rT   ÚbufÚcols          r   rJ   zAcquireProgress._winchs   sz   € ä�4—:‘:˜xÔ(¬R¯Y©Y°t·z±z×7HÑ7HÓ7JÔ-KÛÛÛà—+‘+˜dŸj™j¨'×*<Ñ*<¸hÓGˆCØ'-§}¡}°V¸SÓ'AÑ$ˆE�3˜˜uØ ™'ˆD�Kð .LÐ(r   Úitemc                 ó   — t         j                  j                  | |«       t        d«      |j                  z   }|j
                  j                  r/|dt        j                  |j
                  j                  «      z  z  }| j                  |«       y)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   rZ   Úlines      r   r]   zAcquireProgress.ims_hit~   si   € ä×Ñ×$Ñ$ T¨4Ô0Ü�‹y˜4×+Ñ+Ñ+ˆØ�:‰:×ÒØ�Hœw×2Ñ2°4·:±:×3FÑ3FÓGÑGÑGˆDØ�‰�DÕr   c                 óŒ  — t         j                  j                  | |«       |j                  j                  |j                  j
                  k(  r(| j                  t        d«      |j                  z   «       y| j                  t        d«      |j                  z   «       | j                  d|j                  j                  z  «       y)zCalled when an item is failed.zIgn zErr z  %sN)
r   r   Úfailr_   ÚstatusÚ	STAT_DONEr'   r   r^   Ú
error_text)r   rZ   s     r   re   zAcquireProgress.fail†   s…   € ä×Ñ×!Ñ! $¨Ô-Ø�:‰:×Ñ §
¡
× 4Ñ 4Ò4Ø�K‰Kœ˜&›	 D×$4Ñ$4Ñ4Õ5à�K‰Kœ˜&›	 D×$4Ñ$4Ñ4Ô5Ø�K‰K˜ §¡×!6Ñ!6Ñ6Õ7r   c                 óà  — t         j                  j                  | |«       |j                  j                  ry| j
                  |j                  _        | xj
                  dz  c_        t        d«      |j                  j                  › d|j                  › �z   }|j                  j                  r/|dt        j                  |j                  j                  «      z  z  }| j                  |«       y)z/Called when some of the item's data is fetched.NrC   zGet:r!   r\   )r   r   Úfetchr_   ÚcompleterE   Úidr   r^   r`   r   ra   r'   rb   s      r   rj   zAcquireProgress.fetch�   s©   € ä×Ñ×"Ñ" 4¨Ô.à�:‰:×ÒØØŸ™ˆ�
‰
ŒØ�Š�A‰�Ü�‹y˜dŸj™jŸm™m˜_¨A¨d×.>Ñ.>Ð-?Ð@Ñ@ˆØ�:‰:×ÒØ�Hœw×2Ñ2°4·:±:×3FÑ3FÓGÑGÑGˆDà�‰�DÕr   r_   c                 ó*  — t         j                  j                  | |«       t        | j                  d«      r.t        j                  | j                  j                  «       «      sy| j                  | j                  z   dz  t        | j                  | j                  z   «      z  }d}d|z  }d}| j                  rzt        t        | j                  | j                  z
  «      | j                  z  «      }dj                  t!        j"                  | j                  «      t!        j$                  |«      «      }|j&                  D �]ö  }d}|j(                  sV|j*                  rId|j*                  z  }t-        |«      t-        |«      z   t-        |«      z   | j.                  k\  r �nš||z  }d}Œhd}|j(                  j0                  j2                  r=|d	|j(                  j0                  j2                  |j(                  j4                  fz  z  }n|d
|j(                  j6                  z  z  }|j(                  j0                  j8                  r&|d|j(                  j0                  j8                  z  z  }|dt!        j"                  |j:                  «      z  z  }|j<                  ra|j(                  j0                  j>                  sA|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|tA        d«      z  }| j                  r-|| j.                  t-        |«      z
  t-        |«      z
  dz  |z   z  }| jC                  |d«       y)zˆPeriodically invoked while the Acquire process is underway.

        Return False if the user asked to cancel the whole Acquire process.rM   Tg      Y@Fz%i%%r4   z	 {}B/s {}z [%s]z [%i %sz [%sz %sz %sBz	/%sB %i%%ú]z
 [Working]r!   )"r   r   ÚpulserO   r   rP   rQ   rM   Úcurrent_bytesÚcurrent_itemsr?   Útotal_bytesÚtotal_itemsÚcurrent_cpsÚintÚformatr   ra   Útime_to_strÚworkersÚcurrent_itemrf   r$   r   r_   rl   Ú	shortdescr^   Úactive_subprocessÚcurrent_sizeÚ
total_sizerk   r   r'   )	r   r_   r6   ÚshownÚtvalÚendÚetaÚworkerÚvals	            r   ro   zAcquireProgress.pulse�   s&  € ô 	×Ñ×"Ñ" 4¨Ô/ä�4—:‘:˜xÔ(´·±¸4¿:¹:×;LÑ;LÓ;NÔ1OØð ×&Ñ&¨×);Ñ);Ñ;¸uÑDÌØ×Ñ˜t×/Ñ/Ñ/óI
ñ 
ˆð ˆØ˜ÑˆØˆØ×ÒÜ”e˜D×,Ñ,¨t×/AÑ/AÑAÓBÀT×EUÑEUÑUÓVˆCØ×$Ñ$Ü×#Ñ# D×$4Ñ$4Ó5Ü×#Ñ# CÓ(óˆCð
 —m‘mó %	ˆFØˆCØ×&Ò&Ø—=’=Ø! F§M¡MÑ1�CÜ˜4“y¤3 s£8Ñ+¬c°#«hÑ6¸$¿+¹+ÒEÚØ˜C‘K�DØ �EØØˆEà×"Ñ"×(Ñ(×+Ò+Ø�yØ×'Ñ'×-Ñ-×0Ñ0Ø×'Ñ'×1Ñ1ð$ñ ñ ‘ð
 �v × 3Ñ 3× ?Ñ ?Ñ?Ñ?�Ø×"Ñ"×(Ñ(×:Ò:Ø�u˜v×2Ñ2×8Ñ8×JÑJÑJÑJ�à�6œG×/Ñ/°×0CÑ0CÓDÑDÑDˆCð × Ò ¨×)<Ñ)<×)BÑ)B×)KÒ)KØ�{Ü×'Ñ'¨×(9Ñ(9Ó:Ø×'Ñ'¨%Ñ/°&×2CÑ2CÑCð&ñ ñ �ð
 �3‰JˆCä�4‹yœ3˜s›8Ñ#¤c¨#£hÑ.°$·+±+Ò=áà˜‘’ðK%	ñN Ø”A�l“OÑ#ˆDà×ÒØ�T—[‘[¤3 s£8Ñ+¬c°$«iÑ7¸3Ñ>ÀÑDÑDˆDà�‰�D˜%Ô Ør   ÚmediumÚdrivec                 óš   — t         j                  j                  | ||«       | 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   r„   r…   s      r   r‰   zAcquireProgress.media_changeå   sP   € ä×Ñ×)Ñ)¨$°¸Ô>Ø�‰Üð6óð
 �uˆoñô	
ô ‹w˜jÐ(Ð(r   c                 ó¤  — t         j                  j                  | «       | j                  t	        d«      t        j                  | j                  «      t        j                  | j                  «      t        j                  | j                  «      fz  j                  d«      «       ddl} |j                  |j                  | j                  «       y)z/Invoked when the Acquire process stops running.zFetched %sB in %s (%sB/s)
r"   r   N)r   r   Ústopr'   r   r   ra   Úfetched_bytesrw   Úelapsed_timert   ÚrstriprH   rI   rD   )r   rH   s     r   rŒ   zAcquireProgress.stopò   s™   € ä×Ñ×!Ñ! $Ô'à�‰äÐ/Ó0ä×'Ñ'¨×(:Ñ(:Ó;Ü×'Ñ'¨×(9Ñ(9Ó:Ü×'Ñ'¨×(8Ñ(8Ó9ðñ÷ ‰f�T‹lô		
ó 	àˆ�‰�f—o‘o t§|¡|Õ4r   r(   r>   )r)   r*   r+   r,   r-   r.   r   rG   ÚobjectrJ   r   ÚAcquireItemDescr]   re   rj   ÚAcquirer0   ro   r/   r‰   rŒ   r1   r   r   r   r   [   s¾   „ Ù1ñ §¡°Ñ 4ð Àó ó
ð	"˜Vð 	"¨ó 	"ð˜G×3Ñ3ð ¸ó ð8˜×0Ñ0ð 8°Tó 8ð˜'×1Ñ1ð °dó ðF˜7Ÿ?™?ð F¨tó FðP) 3ð )¨sð )°tó )ô5r   r   c                   óB   — e Zd ZdZdedz  fd„Zdededdfd„Zdefd„Z	y)	r   zText CD-ROM progress.r	   Nc                 ó¾   — t         j                  j                  | «       | j                  t	        d«      d«       	 t        t        d«      «      S # t        $ r Y y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   r/   rŠ   ÚKeyboardInterruptr=   s    r   r–   zCdromProgress.ask_cdrom_name
  sY   € ä×Ñ×)Ñ)¨$Ô/Ø�‰Üð(óð ô	
ð	Ü”u˜S“z“?Ð"øÜ ò 	Ùð	ús   ¼A Á	AÁAÚtextÚcurrentc                 óp   — t         j                  j                  | ||«       |r| j                  |d«       yy)zSet the current progress.FN)r   r   r8   r'   )r   r˜   r™   s      r   r8   zCdromProgress.update  s0   € ä×Ñ×!Ñ! $¨¨gÔ6ÙØ�K‰K˜˜eÕ$ð r   c                 óÂ   — t         j                  j                  | «       | j                  t	        d«      d«       	 t        t        «       dk(  «      S # t        $ r Y yw xY w)z"Ask the user to change the CD-ROM.z4Please insert an installation medium and press enterFr4   )r   r   Úchange_cdromr'   r   r0   rŠ   r—   r=   s    r   rœ   zCdromProgress.change_cdrom  sR   € ä×Ñ×'Ñ'¨Ô-Ø�‰”AÐLÓMÈuÔUð	Üœ› 2™Ó&Ð&øÜ ò 	Ùð	ús   ¼A Á	AÁA)
r)   r*   r+   r,   r/   r–   ru   r8   r0   rœ   r1   r   r   r   r     s;   „ Ùð  d¡
ó ð%˜3ð %¨ð %°ó %ð˜dô r   r   )r,   r-   rP   rH   r   ÚtypesÚcollections.abcr   r   Úapt.progressr   Ú__all__r/   r   r   r   r   r   r1   r   r   ú<module>r¡      s�   ðñ" .Û 	Û 	Û Û 
Û Ý $ã å â
<€ðˆ3ð �3ó ÷ñ ô0�—‘ ,ô ô6i5�d×*Ñ*¨Lô i5ôX�D×&Ñ&¨õ r   