
    >Ic2                        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	 Z G d
 deej0                  j2                  j                        Z G d de      Z G d dej0                  j8                  j:                        Z G d de      Ze dk(  rO e       Z! e" edd              e       Z! e"e!jG                  ddd              e"e!jG                  ddd              ejH                  d        e!jK                           ejL                         Z'e!jQ                         Z)e!jU                  e'      Z+ejX                  dd D ]  Z-e'e-   j]                           e'j_                  e)e+        ejH                  d        e!ja                         jc                  g d       e!je                  ddd       e!jg                  dg d        e"e!jG                  dd             yy)     N)dgettext   )
run_apportapport_crash)AcquireProgressDistUpgradeViewENCODINGInstallProgress)get)gettext)twrapc                      t         j                  j                          	 t               } t        | d      r| j                  t        d      S | S # t        $ r d} Y 1w xY w)z( py2/py3 compatible readline from stdin  decodebackslashreplace)sysstdoutflushinputEOFErrorhasattrr   r	   )ss    A/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewText.pyreadliner   /   sW    JJG q(xx"455H	  s   
A AAc                       e Zd Zd Zd Zy)TextAcquireProgressc                     t         j                  j                  j                  j	                  |        t        j                  |        y N)aptprogresstextr   __init__selfs    r   r"   zTextAcquireProgress.__init__<   s.    ))2248  &    c                     t         j                  j                  j                  j	                  | |       t        j                  | |       yNT)r   r    r!   r   pulse)r$   owners     r   r(   zTextAcquireProgress.pulse?   s5    ))//e<dE*r%   N)__name__
__module____qualname__r"   r(    r%   r   r   r   ;   s    'r%   r   c                   (     e Zd ZdZ fdZd Z xZS )TextInstallProgress   c                 :    t        t        | 
  |i | d| _        y )Nr   )superr/   r"   _prev_percent)r$   argskwargs	__class__s      r   r"   zTextInstallProgress.__init__J   s     !414B6Br%   c                     | j                   | j                  z   |k  rDd}t        |d      t        |      z  }t        j
                  j                  d|z         || _         y y )Nzlibapt-pkg4.12zProgress: [%3i%%]z
%s
)r3   MIN_REPORTINGr   intr   r   write)r$   pkgpercentstatusdomainprogress_strs         r   status_changez!TextInstallProgress.status_changeN   sZ     2 22W<%F#F,?@3w<OLJJ\L89!(D =r%   )r*   r+   r,   r8   r"   r@   __classcell__r6   s   @r   r/   r/   E   s     M)r%   r/   c                   "    e Zd ZdZd Zd Zd Zy)TextCdromProgressAdapterz  Report the cdrom add progress  c                 p    |r4t        d||j                  t        | j                        z  dz  fz         yy)z; update is called regularly so that the gui can be redrawn z%s (%f)d   N)printvaluefloat
totalSteps)r$   r!   steps      r   updatezTextCdromProgressAdapter.updateY   s3    
	T4::eDOO.D#DS#HII
J r%   c                      y)N)Fr   r-   r#   s    r   ask_cdrom_namez'TextCdromProgressAdapter.ask_cdrom_name]   s    r%   c                      yNFr-   r#   s    r   change_cdromz%TextCdromProgressAdapter.change_cdrom_   s    r%   N)r*   r+   r,   __doc__rL   rN   rQ   r-   r%   r   rD   rD   W   s    *Kr%   rD   c                        e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Z fd
Zd ZddZddZd Z	 ddZddZddZd Z xZS )DistUpgradeViewTextz' text frontend of the distUpgrade tool c                    d| _         t               j                  d       dt        j                  vrdt        j                  d<   |r|dk(  r3t        j
                  j                  t        j                         d      }nd}	 t        j                  d|       t        j                  d       d | _        t        j                   j"                  j%                         | _        t)               | _        t-               | _        t1               | _        | j4                  t6        _        y # t        $ r"}t        j                  d	|z         Y d }~d }~ww xY w)
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   _acquireProgressrD   _cdromProgressr/   _installProgress_handleExceptionr   
excepthook)r$   datadirlogdir	localedires        r   r"   zDistUpgradeViewText.__init__f   s     ((0 BJJ.,4BJJ()'S.GGLLT2)?)	<

 
 !:I
F


6
7  # 1 1 < < > 3 568 3 5..  	<
//6:
;
;	<s   +D% %	E.EEc                 T   dd l }t                |j                  |||      }t        j                  ddj                  |      z         t        |||       t               s4| j	                  t        d      t        d      dj                  |             t        j                  d       y )Nr   znot handled exception:
%s
zA fatal error occurredzPlease 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   )	tracebackrG   format_exceptionrf   errorra   r   r   _r   exit)r$   typerH   tbrv   liness         r   rn   z$DistUpgradeViewText._handleException   s    
 	**4;2TYYu5EEFT5"%|JJq12 > ? yy') 	r%   c                     | j                   S r   )rk   r#   s    r   getAcquireProgressz&DistUpgradeViewText.getAcquireProgress       $$$r%   c                 <    || j                   _        | j                   S r   )rm   _cache)r$   caches     r   getInstallProgressz&DistUpgradeViewText.getInstallProgress   s    ',$$$$r%   c                     | j                   S r   )rj   r#   s    r   getOpCacheProgressz&DistUpgradeViewText.getOpCacheProgress   r   r%   c                     | j                   S r   )rl   r#   s    r   getCdromProgressz$DistUpgradeViewText.getCdromProgress   s    """r%   c                 j    t                t        |       t        j                  j                          y r   )rG   r   r   r   )r$   msgs     r   updateStatusz DistUpgradeViewText.updateStatus   s    gCj	jjr%   c                 @    t                t        t        d             y )NAborting)rG   ry   r#   s    r   abortzDistUpgradeViewText.abort   s    gAjMr%   c                 :    t         t        |   |       || _        y r   )r2   rT   setSteprh   )r$   rK   r6   s     r   r   zDistUpgradeViewText.setStep   s    .t4dnr%   c           
      r    | j                  ||t        d      t        dj                  |            z          y )Nz	Demoted:
z, )informationry   r   ra   )r$   summaryr   	demotionss       r   showDemotionsz!DistUpgradeViewText.showDemotions   s/    #<tyy/C)DD	Fr%   c                     t                t        t        |             t        t        |             |rt        t        |             t        t        d             t                y )Nz To continue please press [ENTER])rG   r   ry   r   r$   r   r   extended_msgs       r   r   zDistUpgradeViewText.information   sB    gE'NE#J	eL!"A012jr%   c                     t                t        t        |             t        t        |             |rt        t        |             yrP   )rG   r   r   s       r   rx   zDistUpgradeViewText.error   s2    gE'NE#J	eL!"r%   c                    t        |t              s|j                  t              }dD ]  }t        j
                  j                  |      s#t        j                  |dgt        j                        }	 |j                  j                  |       |j                  j                          |j                           y t#        |       y# t        $ r)}|j                  t        j                   k7  r Y d}~ yd}~ww xY w)z" helper to show output in a pager )z/usr/bin/sensible-pagerz	/bin/more-)stdinN)
isinstancebytesencoder	   r^   r`   exists
subprocessPopenPIPEr   r:   closewaitIOErrorerrnoEPIPErG   )r$   outputpagerprs   s        r   showInPagerzDistUpgradeViewText.showInPager   s     &==*&; %WW^^E"""E#;Z__Ea''--'''--/&&(  Fm  WW+ ,s   3AC	C9C44C9c           
         t        j                  | |||||       t                t        t        |             t        t        | j                               t        dt        d      dt        d      d       	 t               j                         j                         }|j                  t        d            ry|r|j                  t        d            ry	|j                  t        d
            r%d}t        | j                        dkD  rR|dz  }|t        t        d      dj                  | j                  D 	cg c]  }	|	j                   c}	      z  d      z  }t        | j                        dkD  rR|dz  }|t        t        d      dj                  | j                  D 	cg c]  }	|	j                   c}	      z  d      z  }t        | j                        dkD  rR|t        t        d      dj                  | j                  D 	cg c]  }	|	j                   c}	      z  d      z  }|dz  }t        | j                         dkD  rR|dz  }|t        t        d      dj                  | j                   D 	cg c]  }	|	j                   c}	      z  d      z  }t        | j"                        dkD  rR|dz  }|t        t        d      dj                  | j"                  D 	cg c]  }	|	j                   c}	      z  d      z  }| j%                  |       t        t        d      dt        d      d       c c}	w c c}	w c c}	w c c}	w c c}	w )N Continue [yN] zDetails [d]r   endTynFdr   ru   zNo longer supported: %s
z  subsequent_indentzRemove: %s
zRemove (was auto installed) %szInstall: %s
zUpgrade: %s
)r   confirmChangesrG   r   confirmChangesMessagery   r   striplower
startswithlenr   ra   nametoRemovetoRemoveAuto	toInstall	toUpgrader   )
r$   r   changesr   downloadSizeactionsremoval_boldresr   r   s
             r   r   z"DistUpgradeViewText.confirmChanges   s   $$T7GY%17<gE'NE$,,-.*+Q}-=>BGj &&(>>!C&!qv.^^AcF#& 1$nf/0388T^^<\QVV<\3]]$(* *f !#nfN#chh/N1/N&OO$(* *f ""#a'45RVRcRcAdQ!&&Ad8ee$(* *f nf 1$nfO$sxx0PA0P'QQ$(* *f  1$nfO$sxx0PA0P'QQ$(* *f 

6
"+,a.>?RHK  =]
 0O Be 1Q
 1Qs   >M(MM<M&Mc                    t                |rt        t        |             t        t        |             |dk(  rXt        t        d      d       t               }|j	                         j                         j                  t        d            ryyt        t        d      d       t               }|j	                         j                         j                  t        d	            ryy)
NNor   r   r   r   TFzContinue [Yn] r   )rG   r   ry   r   r   r   r   )r$   r   r   defaultr   s        r   askYesNoQuestionz$DistUpgradeViewText.askYesNoQuestion   s    g	eGnE#J	D
"#
,
#YY[ ++AcF3
"#
,
#YY[ ++AcF3r%   c                 B    | j                  |||dk(  rd      S d      S )NCancelr   Yesr   )r   )r$   r   r   r   s       r   askCancelContinueQuestionz-DistUpgradeViewText.askCancelContinueQuestion  s:    ""7C8+ # 8 816 # 8 8r%   c                 N    | j                  t        d      t        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   ry   r#   s    r   confirmRestartz"DistUpgradeViewText.confirmRestart#  s8    ""1%7#8#$ &: $; EI	 # J Jr%   )NNr   r'   )r   )r   )r*   r+   r,   rR   r"   rn   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   rA   rB   s   @r   rT   rT   c   sd    1/6*%%%#F, 37-I^(8 Jr%   rT   __main__z89 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
xxrF   )4r   r   rf   r   r   r   r   r^   DistUpgradeApportr   r   r   r   r	   r
   	telemetryr   r\   apt.progressDistUpgradeGettextry   utilsr   r   r    r!   r   r/   baseCdromProgressrD   rT   r*   viewrG   r   rz   r   Cacher   r   fpr   ipargvr;   mark_installcommitgetTerminalcallrx   r   r-   r%   r   <module>r      s  ,  
    
 	 7  ,   , 	/3<<+<+<+L+L )/ )$	s||00>> 	EJ/ EJP z		$
   S  gj  	k  l 
	$g{D9:g{E:;
 #((1+
#))+% "u%" XXab\ c	#J,,r"
#((1+>?**WVO d2s#g{34U r%   