
    fn                        d Z dZd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	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mZ ddlZej*                  j,                  j/                  d	       ddlZd
dlmZ d
dlmZ d
dlmZ  ed      dz   Z ed      dz   Zej@                  jB                  dkD  Z" G d d      Z#d Z$e%dk(  r e$        yy)z;
This module provides a command line client for the aptkit
z%Sebastian Heinlein <devel@glatzor.de>)ConsoleClientmain    N)OptionParser)SourceEntry)GLibT)set_as_default   )client)enums)errors   z[1mz[0m   c                       e Zd ZdZ	 	 d&dZd'dZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd 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# Z$d$ Z%d% Z&y))r   z1
    Command line interface client to aptkit
    c                    t        j                         | _        t        j                         \  | _        | _        g | _        t        j                  t        j                  | j                         t        j                  t        j                  | j                         t        j                  t        j                  | j                         | j                         | _        g | _        d | _        d| _        d| _        d| _        || _        || _        || _        d| _        d| _        d| _        d| _        d| _        t;        j:                         | _        d | _        tA        jB                         | _"        y )NT r   z|/-\)#r
   	AptClient_clientptyopenpty	master_fdslave_fd_signalssignalSIGINT_on_cancel_signalSIGQUITSIGWINCH_on_terminal_resize_get_terminal_width_terminal_width	_watchers_old_tty_mode_show_status_status_percent_show_terminal_details_allow_unauthenticated_show_progress_status_details_progress_details_spin_elements	_spin_curtime_spin_stamp_transactionr   MainLoop_loop)selfshow_terminalallow_unauthenticateddetailss       0/usr/lib/python3/dist-packages/aptkit/console.py__init__zConsoleClient.__init__:   s   '')(+%fmmT%;%;<fnnd&<&<=foot'?'?@#779! +&;#"!!#%99; ]]_
    c           
          t        |      }| j                  j                  |j                  |j                  |j
                  |j                  |j                  || j                  | j                         y)z#Add repository to the sources list.reply_handlererror_handlerN)
r   r   add_repositorytypeuridistcompscomment_run_transaction_on_exception)r4   linesourcesfileentrys       r8   r?   zConsoleClient.add_repositoryU   sX    D!##EJJ		5::$)KK$/262G2G262D2D	 	$ 	Fr:   c                 h    | j                   j                  || j                  | j                         yzInstall repository key file.r<   N)r   add_vendor_key_from_filerE   rF   r4   paths     r8   rL   z&ConsoleClient.add_vendor_key_from_file^   s.    --//,, 	. 	.r:   c                 j    | j                   j                  ||| j                  | j                         yrK   )r   add_vendor_key_from_keyserverrE   rF   )r4   keyid	keyservers      r8   rP   z+ConsoleClient.add_vendor_key_from_keyservere   s0    229//,, 	3 	.r:   c                 h    | j                   j                  || j                  | j                         y)zRemove repository key.r<   N)r   remove_vendor_keyrE   rF   )r4   fingerprints     r8   rT   zConsoleClient.remove_vendor_keyl   s.    &&{595J5J595G5G 	' 	Ir:   c                 h    | j                   j                  || j                  | j                         y)zInstall package file.r<   N)r   install_filerE   rF   rM   s     r8   rW   zConsoleClient.install_filer   s-    !!$d6K6K040B0B 	" 	Dr:   c                 ^      fd} j                   j                  | j                         y)z%List the keys of the trusted vendors.c                 ^    | D ]  }t        |        j                  j                          y N)printr3   quit)keyskeyr4   s     r8   on_donez7ConsoleClient.list_trusted_vendor_keys.<locals>.on_doney   s'     c
JJOOr:   r<   N)r   get_trusted_vendor_keysrF   )r4   r_   s   ` r8   list_trusted_vendor_keysz&ConsoleClient.list_trusted_vendor_keysw   s-    	 	,,7;?;M;M 	- 	Or:   c           
      r    | j                   j                  ||||||| j                  | j                         y)zCommit changesr<   N)r   commit_packagesrE   rF   )r4   install	reinstallremovepurgeupgrade	downgrades          r8   rc   zConsoleClient.commit_packages   s;     	$$Wi%,i373H3H373E3E 	% 	Gr:   c                 f    | j                   j                  | j                  | j                         y)zFix incomplete installsr<   N)r   fix_incomplete_installrE   rF   r4   s    r8   rk   z$ConsoleClient.fix_incomplete_install   s+    ++//,, 	, 	.r:   c                 f    | j                   j                  | j                  | j                         y)zRepair broken dependencies.r<   N)r   fix_broken_dependsrE   rF   rl   s    r8   rn   z ConsoleClient.fix_broken_depends   s+    ''d6K6K6:6H6H 	( 	Jr:   c                 f    | j                   j                  | j                  | j                         y)zUpdate cacher<   N)r   update_cacherE   rF   rl   s    r8   rp   zConsoleClient.update_cache   s+    !!0E0E040B0B 	" 	Dr:   c                 h    | j                   j                  || j                  | j                         y)zUpgrade systemr<   N)r   upgrade_systemrE   rF   )r4   	safe_modes     r8   rr   zConsoleClient.upgrade_system   s.    ##I262G2G262D2D 	$ 	Fr:   c                 j    | j                   j                  ||| j                  | j                         y)zReconfigure packages.r<   N)r   reconfigurerE   rF   )r4   packagesprioritys      r8   ru   zConsoleClient.reconfigure   s0      8/3/D/D/3/A/A 	! 	Cr:   c                 f    | j                   j                  | j                  | j                         y)zClean archives.r<   N)r   cleanrE   rF   rl   s    r8   ry   zConsoleClient.clean   s*    )>)>)-);); 	 	=r:   c                 X    	 | j                   j                          y# t        $ r Y yw xY w)z%Start the console client application.N)r3   runKeyboardInterruptrl   s    r8   r{   zConsoleClient.run   s'    	JJNN  		s    	))c                    | j                   D ]  }t        j                  |        || _        g | _         | j                   j	                  |j                  d| j                               | j                   j	                  |j                  d| j                               | j                   j	                  |j                  d| j                               | j                   j	                  |j                  d| j                               | j                   j	                  |j                  d| j                               | j                   j	                  |j                  d| j                               | j                  r.|j                  t        j                  | j                                |j#                  | j$                         y)zMonitor the given transactionzterminal-attached-changedzstatus-changedzstatus-details-changedzprogress-changedzprogress-details-changedfinishedN)r   r   source_remover1   appendconnect_on_terminal_attached
_on_status_on_status_details_on_progress_on_progress_details_on_exitr'   set_terminalosttynamer   set_allow_unauthenticatedr)   )r4   transactionhandlers      r8   _set_transactionzConsoleClient._set_transaction   sl   }} 	(Gw'	('[001L151K1KM 	N[001A15B 	C[001I151H1HJ 	K[001C151B1BD 	E[001K151J1JL 	M[00T]]KL$$RZZ%>?--d.I.IJr:   c                 
   | j                          | j                  r^dt        | j                  dz
  | j                  dz
  t	        j
                  |      t        fz  }t        j                  j                  |       |t        j                  k(  r\ddt	        j                  |j                        dt	        j                  |j                        d|j                  }t        |       | j                   j#                          y)z.Callback for the exit state of the transactionz[+] 100%% %s %-*.*s%s
	   ERRORz: 


N)_detachr*   	ANSI_BOLDr!   r   get_exit_string_from_enum
ANSI_RESETsysstderrwriteEXIT_FAILEDget_error_string_from_enum
error_codeget_error_description_from_enumerror_detailsr[   r3   r\   )r4   transenumoutputmsgs        r8   r   zConsoleClient._on_exit   s     	.$$q($$q(//52 F JJV$5$$$001A1AB55e6F6FG##	%C
 #J

r:   c                     | j                   r6|r4| j                  s(| j                          d| _        | j	                          y|sd| _        | j                          yy)zXCallback for the terminal-attachabed-changed signal of the
        transaction.
        FTN)r'   r"   _clear_progressr*   _attachr   )r4   r   attacheds      r8   r   z#ConsoleClient._on_terminal_attached   sK     8DNN  ""'DLLN"&DLLN r:   c                 X    t        j                  |      | _        | j                          y)z1Callback for the Status signal of the transactionN)r   get_status_string_from_enumr%   _update_progress)r4   r   statuss      r8   r   zConsoleClient._on_status   s     88@r:   c                 2    || _         | j                          y)z9Callback for the StatusDetails signal of the transaction.N)r+   r   )r4   r   texts      r8   r   z ConsoleClient._on_status_details   s    #r:   c                 6   |rJ|rHdt        j                  |      t        j                  |      t        j                  |      dz  | _        n=|r4dt        j                  |      t        j                  |      dz  | _        nd| _        | j                          y)z;Callback for the ProgressDetails signal of the transaction.z0Downloaded %(cur)sB of %(total)sB at %(rate)sB/s)curtotalratez!Downloaded %(cur)sB of %(total)sB)r   r   r   N)r
   get_size_stringr,   r   )r4   r   
items_doneitems_total
bytes_donebytes_totalspeedetas           r8   r   z"ConsoleClient._on_progress_details   s     5B..z: 00=//688 "
 3..z: 00=?? "
 &(D"r:   c                 2    || _         | j                          y)z3Callback for the Progress signal of the transactionN)r&   r   )r4   r   percents      r8   r   zConsoleClient._on_progress  s    r:   c                    | j                   syt        | j                  z   t        z   }| j                  r|d| j                  z   z  }| j
                  r|d| j
                  z  z  }| j                  dz
  }| j                  dz   t        j                         k  rC| j                  dz   t        | j                        z  | _	        t        j                         | _        | j                  | j                     }| j                  dkD  rd}n| j                  }t        j                  j                  d	|z  d
|z  z   d|||fz  z   dz          y)zUpdate the progress bar.N z (%s)r   g?r	   d   ---[%s] %3.3s%% %-*.*s)r*   r   r%   r   r+   r,   r!   r0   r/   r.   lenr-   r&   r   r   r   )r4   r   
text_widthspinnerr   s        r8   r   zConsoleClient._update_progress  s'   ""4<<'*4C$....D!!Gd4444D))A-
c!DIIK/"nnq0C8K8K4LLDN#yy{D%%dnn5==3GmmG

7*#g-.!ZT$BBCEIJ 	Kr:   Nc                 t   t         |z   t        z   }| j                  dz
  }|r]| j                  dz   t	        | j
                        z  | _        t        j                         | _        | j
                  | j                     }nd}|d}t        j                  j                  d|z  d|z  z   d|||fz  z   dz          y	)
z5Update the progress bar with a custom status message.r   r	   +r   r   r   r   r   T)r   r   r!   r.   r   r-   r/   r0   r   r   r   )r4   r   r   spinr   r   r   s          r8   _update_custom_progressz%ConsoleClient._update_custom_progress   s    3+))A-
"nnq0C8K8K4LLDN#yy{D))$..9GG?G

7*#g-.!ZT$BBCEIJ 	K r:   c                 \    | j                    t        j                  | j                          yy)z7Stop the spinner which shows non trans status messages.N)_progress_idr   r   rl   s    r8   _stop_custom_progressz#ConsoleClient._stop_custom_progress3  s'    (t001 )r:   c                 v    t         j                  j                  d| j                  | j                  dfz         y)z%Clear progress information on stderr.z%-*.*sr   N)r   r   r   r!   rl   s    r8   r   zConsoleClient._clear_progress8  s4    

t';';'+';';'*', , 	-r:   c                     | j                   rB| j                   j                  t        j                  k7  r| j                   j	                          y| j
                  j                          y)zCallback for a cancel signal.N)r1   r   r   STATUS_SETTING_UPcancelr3   r\   r4   signumframes      r8   r   zConsoleClient._on_cancel_signal>  sE    !!((E,C,CC$$&JJOOr:   c                 N    | j                         | _        | j                          y)z%Callback for a changed terminal size.N)r    r!   r   r   s      r8   r   z!ConsoleClient._on_terminal_resizeF  s    #779r:   c                     | j                   D ]  }t        j                  |        | j                  r>t	        j
                  t        j                  t        j                  | j                         yy)z+Dettach the controlling terminal to aptkit.N)	r"   r   r   r#   tty	tcsetattrr   STDIN_FILENO	TCSAFLUSH)r4   wids     r8   r   zConsoleClient._detachK  sT    >> 	$Cs#	$MM#**CMM,,. r:   c           	         	 t        j                  t        j                        | _        t        j
                  t        j                         t        j                  t        j                  z  t        j                  z  }| j                  j                  t        j                  t        j                  t        j                  || j                  | j                                | j                  j                  t        j                  | j                   t        j                  || j                  t        j"                               y# t         j                  $ r d| _        Y w xY w)zPAttach the controlling terminal to aptkit.
        Based on pty.spwan()
        N)r   	tcgetattrr   r   r#   setrawerrorr   IO_INIO_ERRIO_HUPr"   r   io_add_watchPRIORITY_HIGH_IDLE_copy_ior   STDOUT_FILENO)r4   flagss     r8   r   zConsoleClient._attachS  s    	&!$s/?/?!@DJJs''( 

T[[(4;;6c.."55u"mmT^^=	> 	dnnd.E.E#T]]C4E4EG	H yy 	&!%D	&s   AE E"!E"c                     |t         j                  k(  r/t        j                  |d      }|rt        j                  ||       yt        j
                  |       y)z(Callback to copy data between terminals.i   TF)r   r   r   readr   close)r4   source	conditiontargetdatas        r8   r   zConsoleClient._copy_ioe  sA    

"7764(D&
r:   c                     	 t        j                   dt        j                  t        j                  t
        j                  d            d   S # t        $ r Y yw xY w)z7Return the witdh in characters of the current terminal.hz        r	   P   )arrayfcntlioctlr   r   termios
TIOCGWINSZIOErrorrl   s    r8   r    z!ConsoleClient._get_terminal_widtho  sP    	;;sEKK

G<N<N08%: ;;<> > 		s   A	A 	AAc                 x   | j                          	 |# t        j                  $ r dddd|j                         }Y nKt        j
                  $ r) dd|j                         d|j                         }Y n t        |      }Y nxY w| j                  j                          t        j                  |       y)zError callback.zERROR:r   z+You are not allowed to perform this action.r   z - N)r   r   PolicyKitErrorget_dbus_messagedbusDBusExceptionget_dbus_namestrr3   r\   r   exit)r4   r   r   s      r8   rF   zConsoleClient._on_exceptionx  s    		K$$ 	=#+-Z#(#9#9#;=C!! 	<"*E,?,?,A"'"8"8":<C	e*C

s    +B	8B	;B	c                 ^     j                  |        j                           j                  j                  t        j
                  t        j                  t        j                  t        j                  t        j                  fv rQt        j                  d j                  d       _         j                  j                   j                   fd       yt        j                  d j                  d       _         j                  j!                   j"                   j                         y)z,Callback which runs a requested transaction.   Queuingc                  $     j                         S rZ   r   rl   s   r8   <lambda>z0ConsoleClient._run_transaction.<locals>.<lambda>  s    d&@&@&B r:   r>   r=   zResolving dependenciesr<   N)r   r   r1   roler   ROLE_UPDATE_CACHEROLE_ADD_VENDOR_KEY_FILE"ROLE_ADD_VENDOR_KEY_FROM_KEYSERVERROLE_REMOVE_VENDOR_KEYROLE_FIX_INCOMPLETE_INSTALLr   timeout_addr   r   r{   rF   simulate_show_changes)r4   r   s   ` r8   rE   zConsoleClient._run_transaction  s    e$""$!!e&=&=&+&D&D&+&N&N&+&B&B&+&G&G	&I I
 !% 0 0151M1M1:!<D !!"00B " D !% 0 0151M1M1I!KD &&T5G5G595G5G ' Ir:   c                 V     fd} j                           j                           j                  j                  \  }}}}}} j                  j                  \  }}	}
}}}}|j                  |       |j                  |       |j                  |       |j                  |
       |j                  |       |j                  |	       |j                  |       |}|rt        dt        |      z          ||       |rt        dt        |      z          ||       |rt        dt        |      z          ||       |rt        dt        |      z          ||       |rt        dt        |      z          ||       |rt        dt        |      z          ||        j                  j                  r5t        dt        j                   j                  j                        z          j                  j                  d	kD  r6t        d
t        j                   j                  j                        z         nN j                  j                  d	k  r5t        dt        j                   j                  j                        z          j                  j                  s" j                  j                  s|s
|s|s|s|s|r	 t        rt        d      }nt        d      }|dk7  ret!        j"                  t         j$                        } j'                  |d d        j(                  j+                          t-        j.                  d       t1        j2                  d j&                  d       _         j                  j7                   j8                   fd       y # t        $ r d}Y w xY w)Nc                 d   d}| j                          | D ]t  }	 |j                  dd      dd \  }}j                  r
|r|d|}n|}t	        |      dz   t	        |      z   j
                  kD  r|dk7  rt        |       d}|d|z  z  }v |dk7  rt        |       yy# t        $ r |}d}Y |w xY w)zFormat the pkgs in a nice way.r   =r	   r   r   Nz %s)sortsplit
ValueErrorr(   r   r!   r[   )pkgsrG   pkgnameversionr   r4   s         r8   show_packagesz2ConsoleClient._show_changes.<locals>.show_packages  s    DIIK '#$'IIc1$5a$:MD' ==W(,g6F!FIMCK/$2F2FF$KD&' s{d  " #D"G#s   BB/.B/z"%d NEW packages will be installed:z%d packages will be upgraded:z%d packages will be REMOVED:z%d packages will be DOWNGRADED:z %d packages will be reinstalled:z%d packages will be kept back:zNeed to get %sB of archives.r   z@After this operation, %sB of additional disk space will be used.zAAfter this operation, %sB of additional disk space will be freed.zDo you want to continue [Y/n]?nYFr	   r   r  c                  $     j                         S rZ   r  rl   s   r8   r  z-ConsoleClient._show_changes.<locals>.<lambda>  s    $"<"<"> r:   r  )r   r   r1   rv   dependenciesextendr[   r   downloadr
   r   spacePY3Kinput	raw_inputEOFErrorr   r   EXIT_CANCELLEDr   r3   r\   r   r   r   r  r   r{   rF   )r4   r  installs
reinstallsremovalspurgesupgrades
downgradesdep_installsdep_reinstallsdep_removals
dep_purgesdep_upgradesdep_downgrades	dep_keptskeptscontr   s   `                 r8   r  zConsoleClient._show_changes  s&   	* 	""$++44	:x)-):):)G)G	'~|ZI%%%
#.).)6XFG(#1CMAB(#03x=@A(#3c*oEF*%4s:FG*%2SZ?@% %%0(():):)C)CDE F""Q& $(():):)@)@AB C $$q( %(():):)@)@AB C ##t'8'8'A'AH
h% !ABD$%EFD 55e6J6JK,,S$>

! ,,S-1-I-I-68 	,,> 	 	@  s   N N('N()TFF)r   r   )NT)'__name__
__module____qualname____doc__r9   r?   rL   rP   rT   rW   ra   rc   rk   rn   rp   rr   ru   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    rF   rE   r   r:   r8   r   r   6   s     BG%6F..ID
OG.J
D
FC=
K*,
 
 
 $ 
K0&2
- 
.H$ I,X@r:   r   c            	         d} t        t        j                  |       }|j                  dddddd	       |j                  dd
dddd	       |j                  dddddd	       |j                  ddddddd       |j                  ddddddd       |j                  ddddddd       |j                  dddddd d!       |j                  d"d#dddd$d       |j                  dd%dddd&d'       |j                  dd(dd)d*+       |j                  dd,dd)d-+       |j                  dd.dd/d0+       |j                  dd1dddd2d3       |j                  dd4dddd56       |j                  dd7dddd86       |j                  dd9dddd:d;       |j                  dd<dddd=d>?       |j                  dd@dddAdB	       |j                  ddCddddDdE       |j                  ddFddGdH+       |j                  ddIddddJdK       |j                  ddLdMdddNdO       |j                  ddPddQdR+       |j                  ddSddTdUdVW       |j                  dXdYddZd[+       |j	                         \  }}t        |j                   |j                  |j                  \      }t        j                  d]|j                  d^      |_        |j                  r|j                  d_       n|j                  r|j                  dU       n|j                   r|j#                          n|j$                  r6|j%                  |j$                  j'                         |j(                         n|j*                  r|j+                          nt|j,                  r|j/                          nV|j0                  r|j3                          n8|j4                  r8|j4                  j7                  d`      r|j9                  |j4                         n|j4                  s<|j:                  s0|j<                  s$|j>                  s|j@                  s|jB                  r|jE                  |j4                  j'                         |j:                  j'                         |j<                  j'                         |j>                  j'                         |j@                  j'                         |jB                  j'                                n|jF                  r'|jG                  |jF                  |jH                         n|jJ                  r|jM                  |jJ                         n|jN                  r3|jP                  r'|jO                  |jN                  |jP                         nj|jR                  r|jS                  |jR                         nB|jT                  r|jU                          n%|jW                          tY        jZ                  da       |j]                          yb)cz$Run a command line client for aptkitziTo operate on more than one package put the package names in quotation marks:
aptkcon --install "foo bar")r  epilogz-cz	--refreshr   
store_truerefreshzRefresh the cache)defaultactiondesthelpz--fix-dependsfix_dependszoTry to resolve broken dependencies. Potentially dangerous operation since it could try to remove many packages.z--fix-installfix_installz1Try to finish a previous incompleted installationz-iz	--installstorestringrd   zInstall the given packages)r>  r?  r@   r@  rA  z--reinstallre   zReinstall the given packagesz-rz--removerf   zRemove the given packagesz-pz--purgerg   z7Remove the given packages including configuration filesz-uz	--upgraderh   z--downgraderi   zDowngrade the given packagesz--upgrade-systemsafe_upgradez%Deprecated: Please use --safe-upgrade)r?  r@  rA  z--safe-upgradez Upgrade the system in a safe wayz--full-upgradefull_upgradez=Upgrade the system, possibly installing and removing packagesz--add-vendor-keyadd_vendor_keyz"Add the vendor to the trusted onesz--add-vendor-key-from-keyserverz-Add the vendor keyid (also needs --keyserver))r>  r?  r@   rA  z--keyserverz+Use the given keyserver for looking up keysz--add-repositoryr?   z*Add new repository from the given deb-linez--sources-filesources_filezQSpecify an alternative sources.list.d file to which repositories should be added.)r?  r>  r@   r@  rA  z--list-trusted-vendorsra   zList trusted vendor keysz--remove-vendor-keyrT   z/Remove the trusted key of the given fingerprintz--cleanry   zRemove downloaded package filesz--reconfigureru   z]Reconfigure installed packages. Optionally the minimum priority of questions can be specifiedz
--priorityr>  rw   z8The minimum debconf priority of question to be displayedz--hide-terminalhide_terminalz!Do not attach to the apt terminalz--allow-unauthenticatedr6   Fz+Allow packages from unauthenticated sources)r?  r@  r>  rA  z-dz--show-detailsr7   zQShow additional information about the packages. Currently only the version number)r5   r6   r7   r   zWaiting for authenticationTz.debr	   N)/r   aptkit__version__
add_option
parse_argsr   rJ  r6   r7   r   r  r   r   rF  rr   rG  r=  rp   ru   r  rw   ry   rC  rk   rB  rn   rd   endswithrW   re   rf   rg   rh   ri   rc   r?   rI  rH  rL   rP   rR   rT   ra   
print_helpr   r   r{   )r;  parseroptionsargscons        r8   r   r     sS   F &"4"4VDF
dK)	.  0 b/2)<  =
 b/2),  - dK$8)7  9 b-$8+9  ; dJ$8(6  8 dIr$8'3  4 dK$8)7  9 b-$8+9  ; b,).  / b*)=  ? b*)1  2 b,b$8:J?  A b;R$8,  - b-$8$  % b,b$8:J(  ) b*7B#.C  D b2B)0J5  7 b/$8:M+  , b))<  > b/2$8-)  *
 b,	$8*,  - b+)>  @ b3)0G#H  J d,)	A  B '')OWd
'*?*?&?.5.K.K '1C ''S-H-HJfgC4 			5!				++113W5E5EF						""$			 	W__55f=)
//W..'..
--7??g.?.?GOO113#--335#NN002#MM//1#OO113#--335	7 
		71173G3GH			$$W%;%;<		.	.73D3D))11	 
	"	"g778		)	)$$&GGIr:   __main__)&r8  
__author____all__r   r   optparser   r   r   rer   r/   r   r   r   aptsources.sourceslistr   gi.repositoryr   dbus.mainloop.glibr   mainloopglibDBusGMainLooprK  r   r
   r   r   chrr   r   version_infomajorr!  r   r   r5  r9  r:   r8   <module>rc     s   * 5

#   ! 	 
 	   
  
 .            5    GeO	Wu_

!@@ @@FN` zF r:   