o
    >I¼c2  ã                   @   sÞ  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Zddlm	Z	m
Z
 ddlmZmZmZmZ ddlmZ d dlZd dlZddlmZ ddlmZ d	d
„ ZG dd„ deejjjƒZG dd„ deƒZG dd„ dejjjƒZG dd„ deƒZe dkríeƒ Z!e"eddd�ƒ eƒ Z!e"e! #ddd¡ƒ e"e! #ddd¡ƒ e $d ¡ e! %¡  e &¡ Z'e! (¡ Z)e! *e'¡Z+ej,dd… D ]Z-e'e-  .¡  q¸e' /e)e+¡ e $d ¡ e! 0¡  1g d¢¡ e! 2ddd¡ e! 3dg d ¡ e"e! #dd¡ƒ dS dS )!é    N)Údgettexté   )Ú
run_apportÚapport_crash)ÚAcquireProgressÚDistUpgradeViewÚENCODINGÚInstallProgress)Úget)Úgettext)Útwrapc                  C   sF   t j ¡  ztƒ } W n ty   d} Y nw t| dƒr!|  td¡S | S )z( py2/py3 compatible readline from stdin Ú ÚdecodeÚbackslashreplace)ÚsysÚstdoutÚflushÚinputÚEOFErrorÚhasattrr   r   )Ús© r   úA/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewText.pyÚreadline/   s   

ÿ
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTextAcquireProgressc                 C   s   t jjj | ¡ t | ¡ d S ©N)ÚaptÚprogressÚtextr   Ú__init__©Úselfr   r   r   r   <   s   zTextAcquireProgress.__init__c                 C   s"   t jjj | |¡ t | |¡ dS ©NT)r   r   r   r   Úpulse)r!   Úownerr   r   r   r#   ?   s   zTextAcquireProgress.pulseN)Ú__name__Ú
__module__Ú__qualname__r   r#   r   r   r   r   r   ;   s    r   c                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )ÚTextInstallProgressé   c                    s    t t| ƒj|i |¤Ž d| _d S )Nr   )Úsuperr(   r   Ú_prev_percent)r!   ÚargsÚkwargs©Ú	__class__r   r   r   J   s   
zTextInstallProgress.__init__c                 C   sD   | j | j |k r d}t|dƒt|ƒ }tj d| ¡ || _ d S d S )Nzlibapt-pkg4.12zProgress: [%3i%%]z
%s
)r+   ÚMIN_REPORTINGr   Úintr   r   Úwrite)r!   ÚpkgÚpercentÚstatusÚdomainÚprogress_strr   r   r   Ústatus_changeN   s   
ûz!TextInstallProgress.status_change)r%   r&   r'   r0   r   r8   Ú__classcell__r   r   r.   r   r(   E   s    r(   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTextCdromProgressAdapterz  Report the cdrom add progress  c                 C   s,   |rt d||jt| jƒ d f ƒ dS dS )z; update is called regularly so that the gui can be redrawn z%s (%f)éd   N)ÚprintÚvalueÚfloatÚ
totalSteps)r!   r   Ústepr   r   r   ÚupdateY   s   $ÿzTextCdromProgressAdapter.updatec                 C   ó   dS )N)Fr   r   r    r   r   r   Úask_cdrom_name]   ó   z'TextCdromProgressAdapter.ask_cdrom_namec                 C   rB   ©NFr   r    r   r   r   Úchange_cdrom_   rD   z%TextCdromProgressAdapter.change_cdromN)r%   r&   r'   Ú__doc__rA   rC   rF   r   r   r   r   r:   W   s
    r:   c                       s®   e Zd ZdZd(dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Z‡ fdd„Zdd„ Zd)dd„Zd)dd„Zdd„ Z	d*dd„Zd+d!d"„Zd,d$d%„Zd&d'„ Z‡  ZS )-ÚDistUpgradeViewTextz' text frontend of the distUpgrade tool Nc              
   C   sÐ   d| _ tƒ  d¡ dtjvrdtjd< |r|dkr#tj t ¡ d¡}nd}zt 	d|¡ t 
d¡ W n tyK } zt d	| ¡ W Y d }~nd }~ww d | _tjj ¡ | _tƒ | _tƒ | _tƒ | _| jt_d S )
NTÚTextÚDEBIAN_FRONTENDÚdialogÚ.Úmoz)/usr/share/locale/ubuntu-release-upgraderzubuntu-release-upgraderzError setting locales (%s))Úneeds_screenÚget_telemetryÚset_updater_typeÚosÚenvironÚpathÚjoinÚgetcwdr   ÚbindtextdomainÚ
textdomainÚ	ExceptionÚloggingÚwarningÚ	last_stepr   r   r   Ú
OpProgressÚ_opCacheProgressr   Ú_acquireProgressr:   Ú_cdromProgressr(   Ú_installProgressÚ_handleExceptionr   Ú
excepthook)r!   ÚdatadirÚlogdirÚ	localedirÚer   r   r   r   f   s(   

€ÿzDistUpgradeViewText.__init__c                 C   sl   dd l }tƒ  | |||¡}t dd |¡ ¡ t|||ƒ tƒ s/|  tdƒtdƒd |¡¡ t	 
d¡ d S )Nr   znot handled exception:
%sÚ
zA fatal error occurredzæPlease report this as a bug and include the files /var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in your report. The upgrade has aborted.
Your original sources.list was saved in /etc/apt/sources.list.distUpgrade.r   )Ú	tracebackr<   Úformat_exceptionrY   ÚerrorrT   r   r   Ú_r   Úexit)r!   Útyper=   Útbrh   Úlinesr   r   r   ra   �   s   
ùz$DistUpgradeViewText._handleExceptionc                 C   ó   | j S r   )r^   r    r   r   r   ÚgetAcquireProgress–   ó   z&DistUpgradeViewText.getAcquireProgressc                 C   s   || j _| j S r   )r`   Ú_cache)r!   Úcacher   r   r   ÚgetInstallProgress˜   s   z&DistUpgradeViewText.getInstallProgressc                 C   rp   r   )r]   r    r   r   r   ÚgetOpCacheProgress›   rr   z&DistUpgradeViewText.getOpCacheProgressc                 C   rp   r   )r_   r    r   r   r   ÚgetCdromProgress�   rr   z$DistUpgradeViewText.getCdromProgressc                 C   s   t ƒ  t |ƒ tj ¡  d S r   )r<   r   r   r   )r!   Úmsgr   r   r   ÚupdateStatusŸ   s   z DistUpgradeViewText.updateStatusc                 C   s   t ƒ  t tdƒƒ d S )NÚAborting)r<   rk   r    r   r   r   Úabort£   s   zDistUpgradeViewText.abortc                    s   t t| ƒ |¡ || _d S r   )r*   rH   ÚsetStepr[   )r!   r@   r.   r   r   r|   ¦   s   
zDistUpgradeViewText.setStepc              	   C   s$   |   ||tdƒtd |¡ƒ ¡ d S )Nz	Demoted:
z, )Úinformationrk   r   rT   )r!   Úsummaryrx   Ú	demotionsr   r   r   ÚshowDemotions©   s   ÿz!DistUpgradeViewText.showDemotionsc                 C   sD   t ƒ  t t|ƒƒ t t|ƒƒ |rt t|ƒƒ t tdƒƒ tƒ  d S )Nz To continue please press [ENTER])r<   r   rk   r   ©r!   r~   rx   Úextended_msgr   r   r   r}   ¬   s   
zDistUpgradeViewText.informationc                 C   s2   t ƒ  t t|ƒƒ t t|ƒƒ |rt t|ƒƒ dS rE   )r<   r   r�   r   r   r   rj   ´   s   zDistUpgradeViewText.errorc                 C   s¨   t |tƒs
| t¡}dD ]A}tj |¡rMtj|dgtj	d�}z|j
 |¡ |j
 ¡  | ¡  W  dS  tyL } z|jtjkr@‚ W Y d}~ dS d}~ww qt|ƒ dS )z" helper to show output in a pager )z/usr/bin/sensible-pagerz	/bin/moreú-)ÚstdinN)Ú
isinstanceÚbytesÚencoder   rQ   rS   ÚexistsÚ
subprocessÚPopenÚPIPEr„   r2   ÚcloseÚwaitÚIOErrorÚerrnoÚEPIPEr<   )r!   ÚoutputÚpagerÚprf   r   r   r   ÚshowInPager»   s&   



ý
ÿ€ýùzDistUpgradeViewText.showInPagerTc           	      C   s  t  | |||||¡ tƒ  tt|ƒƒ tt| jƒƒ tdtdƒtdƒf dd� 	 tƒ  ¡  ¡ }| 	tdƒ¡r9dS |rB| 	tdƒ¡rDd	S | 	td
ƒ¡ròd}t
| jƒdkrm|d7 }|ttdƒd dd„ | jD ƒ¡ dd�7 }t
| jƒdkr�|d7 }|ttdƒd dd„ | jD ƒ¡ dd�7 }t
| jƒdkr­|ttdƒd dd„ | jD ƒ¡ dd�7 }|d7 }t
| jƒdkrÍ|d7 }|ttdƒd dd„ | jD ƒ¡ dd�7 }t
| jƒdkrí|d7 }|ttdƒd dd„ | jD ƒ¡ dd�7 }|  |¡ tdtdƒtdƒf dd� q))Nz %s %súContinue [yN] zDetails [d]r   ©ÚendTÚyÚnFÚdr   rg   zNo longer supported: %s
ú c                 S   ó   g | ]}|j ‘qS r   ©Úname©Ú.0r“   r   r   r   Ú
<listcomp>æ   ó    z6DistUpgradeViewText.confirmChanges.<locals>.<listcomp>z  ©Úsubsequent_indentzRemove: %s
c                 S   rœ   r   r�   rŸ   r   r   r   r¡   ë   r¢   zRemove (was auto installed) %sc                 S   rœ   r   r�   rŸ   r   r   r   r¡   ï   r¢   zInstall: %s
c                 S   rœ   r   r�   rŸ   r   r   r   r¡   õ   r¢   zUpgrade: %s
c                 S   rœ   r   r�   rŸ   r   r   r   r¡   ú   r¢   z%s %s)r   ÚconfirmChangesr<   r   ÚconfirmChangesMessagerk   r   ÚstripÚlowerÚ
startswithÚlenr   rT   ÚtoRemoveÚtoRemoveAutoÚ	toInstallÚ	toUpgrader”   )	r!   r~   Úchangesr   ÚdownloadSizeÚactionsÚremoval_boldÚresr‘   r   r   r   r¥   Ð   s`   ÿþþþþþ
Ûz"DistUpgradeViewText.confirmChangesÚNoc                 C   s’   t ƒ  |rt t|ƒƒ t t|ƒƒ |dkr/t tdƒdd� tƒ }| ¡  ¡  tdƒ¡r-dS dS t tdƒdd� tƒ }| ¡  ¡  td	ƒ¡rGdS dS )
Nr´   r•   r   r–   r˜   TFzContinue [Yn] r™   )r<   r   rk   r   r§   r¨   r©   )r!   r~   rx   Údefaultr³   r   r   r   ÚaskYesNoQuestionÿ   s   z$DistUpgradeViewText.askYesNoQuestionÚCancelc                 C   s    | j |||dkrdd�S dd�S )Nr·   r´   ÚYes©rµ   )r¶   )r!   r~   rx   rµ   r   r   r   ÚaskCancelContinueQuestion  s
   
ÿÿz-DistUpgradeViewText.askCancelContinueQuestionc                 C   s   | j tdƒtdƒdd�S )NzRestart requiredz]To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.r´   r¹   )r¶   rk   r    r   r   r   ÚconfirmRestart#  s   
üz"DistUpgradeViewText.confirmRestart)NNr   r"   )r´   )r·   )r%   r&   r'   rG   r   ra   rq   ru   rv   rw   ry   r{   r|   r€   r}   rj   r”   r¥   r¶   rº   r»   r9   r   r   r.   r   rH   c   s(    



ÿ
/
rH   Ú__main__zÀ89 packages are going to be upgraded.
You have to download a total of 82.7M.
This download will take about 10 minutes with a 1Mbit DSL connection and about 3 hours 12 minutes with a 56k modem.r›   r£   Úhelloz	Icecream?r´   r¸   )z/usr/bin/dpkgz--configurez-aÚshortÚlonga²  asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended
Úxxr;   )4r�   r   rY   r‰   r   r   r   rQ   ÚDistUpgradeApportr   r   r   r   r   r	   Ú	telemetryr
   rO   Úapt.progressÚDistUpgradeGettextrk   Úutilsr   r   r   r   r   r(   ÚbaseÚCdromProgressr:   rH   r%   Úviewr<   r¶   rl   r»   ÚCachert   rq   Úfpru   ÚipÚargvr3   Úmark_installÚcommitÚgetTerminalÚcallrj   r¥   r   r   r   r   Ú<module>   sT   
 I


ÿ	Ö