
    k!f;              	          d dl mZ d dlZ ej                  dde       d dlZd dlZ G d de      Z G d de      Z	 G d	 d
e
      Z G d dej                        Zedk(  rqd dlmZ dZ ede      Z eeej$                  j'                               Z ed        edj-                  ej/                         D  cg c]  } d| z  	 c}              yyc c} w )    )print_functionNignorezapt API not stable yetc                       e Zd Zd Zd Zy)LanguagePackageStatusc                 J    || _         || _        d| _        d| _        d| _        y )NF)languageCodepkgname_template	available	installeddoChange)selfr   pkg_templates      </usr/lib/python3/dist-packages/LanguageSelector/LangCache.py__init__zLanguagePackageStatus.__init__
   s'    ( ,    c                     d| j                   d| j                  dt        | j                        dt        | j                        dt        | j
                        
S )Nz LanguagePackageStatus(langcode: z
, pkgname z, available: z, installed: z, doChange: )r   r	   strr
   r   r   r   s    r   __str__zLanguagePackageStatus.__str__   s?    !!4#8#8#dnn:MDNN#S%79 	9r   N)__name__
__module____qualname__r   r    r   r   r   r   	   s    9r   r   c                   Z    e Zd ZddZed        Zed        Zed        Zed        Zd Z	y)	LanguageInformationNc                    || _         || _        i | _        t        |d      | j                  d<   | j                  j	                         D ];  }|j
                  |z  }||v |_        |j                  s(||   j                  |_        = y )Nzlanguage-pack-%slanguagePack)	r   languagelanguagePkgListr   valuesr	   r
   is_installedr   )r   cacher   r   langpkg_statuspkgnames         r   r   zLanguageInformation.__init__   s     ) !/D\Se/f^,"2299; 	GN$55DG'.%'7N$''+0>+F+F(		Gr   c                 6    | j                   s| j                  syy)zK returns True if only parts of the language support packages are installed TF)notInstalledfullInstalledr   s    r   inconsistentz LanguageInformation.inconsistent)   s     !!$*<*<tr   c                     | j                   j                         D ]B  }|j                  s|j                  r|j                  s)|j                  s|j                  rB y y)zM return True if all of the available language support packages are installed FTr   r    r
   r   r   r   pkgs     r   r'   z!LanguageInformation.fullInstalled.   sQ     ''..0 	qC==8]]3<<SVS_S_kp	q r   c                     | j                   j                         D ]B  }|j                  s|j                  s|j                  s)|j                  r|j                  rB y y)zN return True if none of the available language support packages are installed FTr*   r+   s     r   r&   z LanguageInformation.notInstalled5   sQ     ''..0 	qC==8s||SVS_S_kp	q r   c                 ^    | j                   j                         D ]  }|j                  s y y)zM returns true if anything in the state of the language packs/support changes TF)r   r    r   r+   s     r   changeszLanguageInformation.changes<   s.     ''..0 	,Ct	,r   c                 :    | j                   d| j                  dS )Nz ())r   r   r   s    r   r   zLanguageInformation.__str__B   s     MM4+<+<==r   )NN)
r   r   r   r   propertyr(   r'   r&   r/   r   r   r   r   r   r      s]    G"        
>r   r   c                       e Zd Zy)ExceptionPkgCacheBrokenN)r   r   r   r   r   r   r4   r4   F   s    r   r4   c                   :    e Zd Zd Zed        Zd Zd Zd Zd Z	y)LanguageSelectorPkgCachec                     t         j                  j                  | |       | j                  j                  dkD  r
t               || _        t        j                  |       | _	        y )Nr   )
aptCacher   	_depcachebroken_countr4   _localeinfolanguage_support_pkgsLanguageSupportlang_support)r   
localeinfoprogresss      r   r   z!LanguageSelectorPkgCache.__init__K   sL    		4*>>&&*)++%1AA$Gr   c                 8   | j                   j                  D ]  }|j                  D ]p  }|j                  d      j	                  d      r$|j                  d      j	                  d      rE|j
                  dk7  rU|j                  sb|j                  so  y  y)z, verify that a network package lists exists  zcdrom:zhttp://security.ubuntu.comzDebian Package IndexTF)_listlistindex_filesarchive_uri
startswithlabelexistshas_packages)r   	metaindex	indexfiles      r   havePackageListsz)LanguageSelectorPkgCache.havePackageListsR   s      		 I&22  	((,77A((,778TU??&<<##	(>(> 		  r   c                 8    | j                   j                          y)z clear the selections N)r:   initr   s    r   clearzLanguageSelectorPkgCache.cleara   s    r   c                     g }g }| j                         D ]]  }|j                  s|j                  r|j                  |j                         |j
                  sC|j                  |j                         _ ||fS )N)get_changesmarked_installmarked_upgradeappendnamemarked_delete)r   to_instto_rmr,   s       r   getChangesListz'LanguageSelectorPkgCache.getChangesListe   sj    ##% 	'C!!S%7%7sxx(  SXX&		'
 r   c                    |j                   j                         D ]  \  }}|j                  s| j                  j	                  |j
                  |j                        }	 |j                  rK|D ]E  }|j                  d      s|j                  d|j
                  z         s3| |   j                          G n|D ]  }| |   j                            y# t        $ r t               w xY w)z$ commit changed status of list items)r   zlanguage-pack--N)r   itemsr   r?   	by_localer   r   rH   endswithmark_deletemark_installSystemErrorr4   )r   likeyitempkgsr$   s         r   tryChangeDetailsz)LanguageSelectorPkgCache.tryChangeDetailso   s     --335 	4KS$}}((222??dnn2]4~~ (, <G&112BC&//boo0EF $W 9 9 ;<
 (, 9G M6689	4 # 41334s    A C!0CC(c                     g }| j                   j                  j                         D ]_  \  }}|dk(  rt        | ||      }|j                  j                         D cg c]  }|j                  s| c}sO|j                  |       a |S c c}w )z5 returns a list with language packs/support packages zh)r<   _langr^   r   r   r    r
   rV   )r   rescodelangrd   ss         r   getLanguageInformationz/LanguageSelectorPkgCache.getLanguageInformation   s     ,,2288: 	LT4t|$T46B--446Fa!++F

2	 
 Gs   B.BN)
r   r   r   r   r2   rN   rQ   r[   rh   rp   r   r   r   r6   r6   I   s0    H  4*
r   r6   __main__)
LocaleInfoz/usr/share/language-selectorlanguagelistzavailable language informationz, z%s)
__future__r   warningsfilterwarningsFutureWarningr8   r=   objectr   r   	Exceptionr4   r9   r6   r   rr   datadirrd   rA   
OpProgresslcprintjoinrp   )xs   0r   <module>r      s    %    ":M J 
 9F 9,>& ,>^	i 	Esyy EP z%,G	NG	,B	!"S\\%<%<%>	?B	
*+	$))b&?&?&ABT1WB
CD  Cs   ;C