ó
    Öu•cH5  ã                   ó‚   • S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	J
r
JrJr  SSKrSSKJr  SSKrS r " S S5      rg)z5
Base Class for DesktopEntry, IconTheme and IconData
é    N)ÚParsingErrorÚDuplicateGroupErrorÚNoGroupErrorÚ
NoKeyErrorÚDuplicateKeyErrorÚValidationErrorÚdebug)Úuc                 óJ   •  U R                  SS5        g! [         a     gf = f)z>Return True if a string consists entirely of ASCII characters.ÚasciiÚstrictTF)ÚencodeÚUnicodeError)Úss    Ú-/usr/lib/python3/dist-packages/xdg/IniFile.pyÚis_asciir      s*   € ðØ	�‰�˜(Ô#ØøÜó Ùðús   ‚ •
"¡"c                   óò   • \ rS rSrSrSrSrSrSrS!S jr	S r
S!S jrS"S jrS	 rS
 rS!S jrS#S jrS rS rS$S jrS rS rS rS rS rS rS rS%S jrS%S jrS rS rS&S jrS r S r!S!S jr"S r#S r$g)'ÚIniFileé   Ú NFc                 óT   • [        5       U l        U(       a  U R                  U5        g g ©N)ÚdictÚcontentÚparse)ÚselfÚfilenames     r   Ú__init__ÚIniFile.__init__   s   € Ü“vˆŒÞØ�J‰J�xÕ ð ó    c                 óB   • [        U R                  UR                  5      $ r   )Úcmpr   )r   Úothers     r   Ú__cmp__ÚIniFile.__cmp__#   s   € Ü�4—<‘< §¡Ó/Ð/r    c                 óˆ  • U R                   n[        R                  R                  U5      (       d  [	        SU5      e [
        R                  " USSSS9nU   U Hì  nUR                  5       nU(       d  M  US   S:X  a  M'  US   S	:X  aR  UR                  S	5      R                  S
5      n[        (       a!  U R                  U5      (       a  [        Xq5      e0 X7'   M‚   UR                  SS5      u  p‰UR                  5       n [        (       a#  U R!                  UW5      (       a  [#        X‡U5      eU	R                  5       UW   U'   Mî     SSS5        Xl        SU l        U(       a(  U H  n
X£;   d  M
  X l          O   [	        SUS   -  U5      eU R                   R/                  S0 5      nUR/                  SUR/                  SS5      5      U l        g! [         a  n[        (       a  Ue SnAgSnAff = f! [         a    [	        SU-   U5      ef = f! [$        [&        4 a    [	        SU5      ef = f! , (       d  f       Nï= f)zaParse an INI file.

headers -- list of headers the parser will try to select as a default header
úFile not foundÚrúutf-8Úreplace)ÚencodingÚerrorsNr   Ú#Ú[Ú]Ú=é   zInvalid line: z#Parsing error on key, group missingFz[%s]-Header missingzDesktop EntryzX-GNOME-Gettext-DomainzX-Ubuntu-Gettext-Domain)r   ÚosÚpathÚisfiler   ÚioÚopenÚIOErrorr	   ÚstripÚlstripÚrstripÚhasGroupr   ÚsplitÚ
ValueErrorÚhasKeyr   Ú
IndexErrorÚUnboundLocalErrorr   ÚtaintedÚdefaultGroupÚgetÚgettext_domain)r   r   Úheadersr   ÚfdÚeÚlineÚcurrentGroupÚkeyÚvalueÚheaders              r   r   ÚIniFile.parse&   s  € ð —,‘,ˆä�w‰w�~‰~˜h×'Ñ'ÜÐ/°Ó:Ð:ð		ô —’˜ 3°ÀÑKˆBò Û�Ø—z‘z“|�æÙà˜!‘W “^Ùà˜!‘W “^Ø#'§;¡;¨sÓ#3×#:Ñ#:¸3Ó#?�Lß’u §¡¨|×!<Ñ!<Ü1°,ÓIÐIà02˜Ó-ðNØ%)§Z¡Z°°QÓ%7™
˜ð Ÿ)™)›+�Cð\ß š5 T§[¡[°°l×%CÑ%CÜ"3°CÀxÓ"PÐPà9>¿¹»˜G LÑ1°#Ó6ñ7 ÷ ð@ !ŒØˆŒö Û!�ØÕ$Ø(.Ô%Ùñ "ô
 #Ð#8¸7À1¹:Ñ#EÀxÓPÐPð �L‰L×Ñ˜_¨bÓ1ˆØŸe™eÐ$<Ø�E‰EÐ+¨TÓ2ó4ˆÕøôk ó 	ßŠuØ�äûð		ûô6 &ó NÜ*Ð+;¸dÑ+BÀHÓMÐMðNûô 'Ô(9Ð:ó \Ü*Ð+PÐRZÓ[Ð[ð\ú÷; �RúsU   ¾G ÁBH3ÃG6Ã1H3ÄAHÅH3Ç
G3ÇG.Ç.G3Ç6HÈH3ÈH0È0H3È3
Ic                 ó<  • U(       d  U R                   nX R                  ;   a©  XR                  U   ;   a—  U(       a}  U R                  X5      nUR                  S5      (       d  U R                  (       d  U R                  U   U   nO¦[
        R                  " U R                  U R                  U   U   5      nOtU R                  U   U   nOaU(       d  [        (       aM  X R                  ;  a  [        X R                  5      eXR                  U   ;  a  [        XU R                  5      eOSnUS:X  a  U R                  W5      n/ n	OW/nU H¨  nUS:X  a  U R                  U5      nOrUS:X  a   [        U5      nO_US:X  a   [        U5      nOLUS	:X  a  [         R"                  " U5      nO/US
:X  a)  UR%                  S5      u  p«[        U
5      [        U5      4nUS:X  a  W	R'                  U5        M¦  Un	Mª     W	$ ! [         a    Sn N/f = f! [         a    Sn NAf = f)Nr/   r   TÚbooleanÚintegerr   Únumericg        ÚregexÚpointÚ,)rB   r   Ú_IniFile__addLocaleÚendswithrD   ÚgettextÚdgettextr	   r   r   r   ÚgetListÚ_IniFile__getBooleanÚintr=   ÚfloatÚreÚcompiler<   Úappend)r   rJ   ÚgroupÚlocaleÚtypeÚlistr   rK   ÚvaluesÚresultÚxÚys               r   rC   ÚIniFile.geto   sç  € æØ×%Ñ%ˆEð —\‘\Ó!¨¯|©|¸EÑ/BÓ(BÞØ×&Ñ& sÓ2�Ø—<‘< ×$Ñ$¨D×,?×,?à ŸL™L¨Ñ/°Ñ4‘Eä#×,Ò,¨T×-@Ñ-@À$Ç,Á,ÈuÑBUÐVYÑBZÓ[‘EàŸ™ UÑ+¨CÑ0‘æŸšØ§¡Ó,Ü& u¯m©mÓ<Ð<Ø§¡¨UÑ 3Ó3Ü$ S°·±Ó?Ð?ð 4ð �à�4‹<Ø—\‘\ %Ó(ˆFØ‰Fà�WˆFãˆEØ�yÓ Ø×)Ñ)¨%Ó0‘Ø˜Ó"ðÜ ›J‘Eð ˜Ó"ð Ü! %›L‘Eð ˜“ÜŸ
š
 5Ó)‘Ø˜“Ø—{‘{ 3Ó'‘�Ü˜A›¤ A£˜�à�t‹|Ø—‘˜eÖ$à’ñ- ð0 ˆøô% "ó Ø’Eðûô
 "ó  Ø’Eð ús$   Å.G:ÆHÇ:H	ÈH	ÈHÈHc                 óv  • [         R                  " SU5      (       a  [         R                  " SU5      nOk[         R                  " SU5      (       a  [         R                  " SU5      nO7[         R                  " SU5      (       a  [         R                  " SU5      nOU/nUS   S:X  a  UR                  5         U$ )Nz	(?<!\\)\;z(?<!\\);z	(?<!\\)\|z(?<!\\),éÿÿÿÿr   )r]   Úsearchr<   Úpop)r   Ústringrc   s      r   rY   ÚIniFile.getListª   s…   € Ü�9Š9�\ 6×*Ñ*Ü—8’8˜K¨Ó0‰DÜ�YŠY�| V×,Ñ,Ü—8’8˜L¨&Ó1‰DÜ�YŠY�{ F×+Ñ+Ü—8’8˜K¨Ó0‰Dà�8ˆDØ�‰8�r‹>Ø�H‰HŒJØˆr    c                 óP   • US:X  d  US:X  d  US:X  a  gUS:X  d  US:X  d  US:X  a  gg)	Nr1   ÚtrueÚTrueTr   ÚfalseÚFalseF© )r   rO   s     r   Ú__getBooleanÚIniFile.__getBoolean·   s5   € Ø�a‹<˜7 fÓ,°¸6Ó0AØØ˜‹\˜W¨Ó/°7¸gÓ3EØØr    c                 ó®   • U(       d  U R                   n[        R                  R                   H#  nU< SU< S3nX@R                  U   ;   d  M!  Us  $    U$ )z3add locale to key according the current lc_messagesr.   r/   )rB   ÚxdgÚLocaleÚlangsr   )r   rJ   r`   ÚlangÚlangkeys        r   Ú__addLocaleÚIniFile.__addLocale¿   sK   € ö Ø×%Ñ%ˆEä—J‘J×$Ô$ˆDÛ"%£tÐ,ˆGØŸ,™, uÑ-Õ-Ø’ñ %ð
 ˆ
r    c                 óž  • / U l         / U l        [        R                  R	                  U R
                  5      S   U l        U R                  5         U R                   H‚  nU R                  U5        U R                  U    H[  nU R                  X0R                  U   U   U5        U R                  U   U   S:X  d  M=  U R                   R                  SU-  5        M]     M„     SnUS:X  d  US:X  a  U R                    H  nUSU-   -  nM     US:X  d  US:X  a  U R                   H  nUSU-   -  nM     U(       a  [        X@R
                  5      eg)	z‘Validate the contents, raising :class:`~xdg.Exceptions.ValidationError`
if there is anything amiss.

report can be 'All' / 'Warnings' / 'Errors'
r1   r   zValue of Key '%s' is emptyÚAllÚWarningsz
- ÚErrorsN)Úwarningsr,   r2   r3   Úsplitextr   ÚfileExtensionÚcheckExtrasr   Ú
checkGroupÚcheckKeyr_   r   )r   Úreportr`   rJ   ÚmsgrH   s         r   ÚvalidateÚIniFile.validateÍ   s1  € ð ˆŒØˆŒô  ŸW™W×-Ñ-¨d¯m©mÓ<¸QÑ?ˆÔð 	×ÑÔð —\”\ˆEØ�O‰O˜EÔ"Ø—|‘| EÔ*�Ø—‘˜c§<¡<°Ñ#6°sÑ#;¸UÔCà—<‘< Ñ& sÑ+¨rÕ1Ø—M‘M×(Ñ(Ð)EÈÑ)KÖLó	 +ñ "ð ˆà�U‹?˜f¨
Ó2ØŸœ�Ø�v ‘}Ñ$’ñ &ð �U‹?˜f¨Ó0ØŸœ�Ø�v ‘}Ñ$’ñ $ö Ü! #§}¡}Ó5Ð5ð r    c                 ó   • g r   rt   ©r   r`   s     r   r‡   ÚIniFile.checkGroupõ   ó   € Ør    c                 ó   • g r   rt   )r   rJ   rK   r`   s       r   rˆ   ÚIniFile.checkKeyù   r�   r    c                 ó  • US:X  a  U R                  U5      nOU/nU Hê  nUS:X  a  U R                  U5      nUS:X  a  M"  US:X  a  U R                  U5      nO_US:X  a  U R                  U5      nOGUS:X  a  U R	                  U5      nO/US:X  a  U R                  U5      nOUS:X  a  U R                  U5      nWS	:X  a%  U R                  R                  S
U< SU< 35        MÄ  US:X  d  MÌ  U R                  R                  SU-  5        Mì     g )NTrm   ÚlocalestringrO   rQ   rP   rR   rS   r1   Ú'z' is not a valid é   zValue of key '%s' is deprecated)
rY   ÚcheckStringÚcheckBooleanÚcheckNumberÚcheckIntegerÚ
checkRegexÚ
checkPointr,   r_   rƒ   )r   rJ   rK   rb   rc   rd   Úcodes          r   Ú
checkValueÚIniFile.checkValueý   sú   € Ø�4‹<Ø—\‘\ %Ó(‰Fà�WˆFãˆEØ�xÓØ×'Ñ'¨Ó.�Ø�~Ó%ÙØ˜Ó"Ø×(Ñ(¨Ó/‘Ø˜Ó"Ø×'Ñ'¨Ó.‘Ø˜Ó"Ø×(Ñ(¨Ó/‘Ø˜“Ø—‘ uÓ-‘Ø˜“Ø—‘ uÓ-�Ø�q‹yØ—‘×"Ò"»uÂdÐ#KÖLØ˜•Ø—‘×$Ñ$Ð%FÈÑ%LÖMò% r    c                 ó   • g r   rt   ©r   s    r   r†   ÚIniFile.checkExtras  r�   r    c                 ó:   • US:X  d  US:X  a  gUS:X  d  US:X  d  gg g )NÚ1Ú0r–   rp   rr   r1   rt   ©r   rK   s     r   r˜   ÚIniFile.checkBoolean  s*   € à�S‹L˜E S›LØà˜6“/ U¨gÓ%5Øð &6�/r    c                 ó*   •  [        U5        g !    g= f©Nr1   )r\   r¦   s     r   r™   ÚIniFile.checkNumber"  s   € ð	Ü�%�Løð	Ùúó   ‚ Žc                 ó*   •  [        U5        g !    g= fr©   )r[   r¦   s     r   rš   ÚIniFile.checkInteger)  s   € ð	Ü��Jøð	Ùúr«   c                 ó>   • [         R                  " SU5      (       d  gg )Nz^[0-9]+,[0-9]+$r1   )r]   Úmatchr¦   s     r   rœ   ÚIniFile.checkPoint0  s   € Ü�xŠxÐ)¨5×1Ñ1Øð 2r    c                 ó*   • [        U5      (       a  S$ S$ )Nr   r1   )r   r¦   s     r   r—   ÚIniFile.checkString4  s   € Ü˜U—O‘OˆqÐ*¨Ð*r    c                 ó@   •  [         R                  " U5        g !    g= fr©   )r]   r^   r¦   s     r   r›   ÚIniFile.checkRegex7  s   € ð	Ü�JŠJ�uÕøð	Ùús   ‚ ™c                 óÈ  • U(       d  U R                   (       d  [        SS5      eU(       a  Xl         OU R                   n[        R                  R	                  U5      (       at  [        R                  R                  [        R                  R	                  U5      5      (       d3  [        R                  " [        R                  R	                  U5      5        [        R                  " USSS9 nU(       a  UR                  [        S5      5        U R                  (       a�  UR                  [        S5      U R                  -  5        U R                  U R                     R                  5        H#  u  pEUR                  [        S5      XE4-  5        M%     UR                  [        S	5      5        U R                  R                  5        H„  u  pgX`R                  :w  d  M  UR                  [        S5      U-  5        UR                  5        H#  u  pEUR                  [        S5      XE4-  5        M%     UR                  [        S	5      5        M†     S S S 5        U(       ak  [        R                  " U5      R                  nU[        R                   -  [        R"                  -  [        R$                  -  n	[        R&                  " X5        S
U l        g ! , (       d  f       Nˆ= f)Nr'   r   Úwr)   )r+   z#!/usr/bin/env xdg-open
z[%s]
z%s=%s
Ú
F)r   r   r2   r3   ÚdirnameÚisdirÚmakedirsr5   r6   Úwriter
   rB   r   ÚitemsÚstatÚst_modeÚS_IXUSRÚS_IXGRPÚS_IXOTHÚchmodrA   )
r   r   ÚtrustedÚfprJ   rK   Únamer`   ÚoldmodeÚmodes
             r   r»   ÚIniFile.write>  sÛ  € Þ §§ÜÐ/°Ó4Ð4æØ$�Mà—}‘}ˆHä�7‰7�?‰?˜8×$Ñ$¬R¯W©W¯]©]¼2¿7¹7¿?¹?È8Ó;T×-UÑ-UÜ�KŠKœŸ™Ÿ™¨Ó1Ô2ä�WŠW�X˜s¨WÒ5¸ö Ø—‘œÐ6Ó7Ô8à× × Ø—‘œ˜8› t×'8Ñ'8Ñ8Ô9Ø$(§L¡L°×1BÑ1BÑ$C×$IÑ$IÖ$K‘L�SØ—H‘HœQ˜y›\¨S¨LÑ8Ö9ñ %Là—‘œ˜4›Ô!Ø!%§¡×!3Ñ!3Ö!5‘�Ø×,Ñ,Õ,Ø—H‘HœQ˜x›[¨4Ñ/Ô0Ø(-¯©®™˜ØŸ™¤ 9£°°Ñ!<Ö=ñ )6à—H‘HœQ˜t›WÖ%ñ "6÷ 6ö, Ü—g’g˜hÓ'×/Ñ/ˆGØœTŸ\™\Ñ)¬D¯L©LÑ8¼4¿<¹<ÑGˆDÜ�HŠH�XÔ$àˆ�÷7 6Õ5ús   Ã-C.KÇA2KË
K!c                 ój  • U(       d  U R                   nUS:X  aM  [        [        R                  R                  5      S:”  a&  US-   [        R                  R                  S   -   S-   n X R
                  U   U'   X R                  X5      :H  U l
        g ! [         a    [        X0R                  5      ef = f)NTr   r.   r/   )rB   Úlenrx   ry   rz   r   ÚKeyErrorr   r   rC   rA   )r   rJ   rK   r`   ra   s        r   ÚsetÚIniFile.setg  sš   € æØ×%Ñ%ˆEà�T‹>œc¤#§*¡*×"2Ñ"2Ó3°aÓ7Ø˜‘)œcŸj™j×.Ñ.¨qÑ1Ñ1°CÑ7ˆCð	5Ø',�L‰L˜Ñ Ñ$ð §¡¨#Ó!5Ñ5ˆ�øô ó 	5Ü˜u§m¡mÓ4Ð4ð	5ús   Á(B Â B2c                 óž   • U R                  U5      (       a!  [        (       a  [        XR                  5      eg 0 U R                  U'   SU l        g ©NT)r;   r	   r   r   r   rA   rŽ   s     r   ÚaddGroupÚIniFile.addGroupv  sA   € Ø�=‰=˜×ÑßŠuÜ)¨%·±Ó?Ð?ð ð #%ˆD�L‰L˜ÑØˆD�Lr    c                 óœ   • XR                   ;   nU(       a  U R                   U	 SU l        U$ [        (       a  [        XR                  5      eU$ rÏ   )r   rA   r	   r   r   )r   r`   Úexisteds      r   ÚremoveGroupÚIniFile.removeGroup~  sF   € ØŸ<™<Ñ'ˆÞØ—‘˜UÐ#ØˆDŒLð ˆ÷ ŠuÜ" 5¯-©-Ó8Ð8Øˆr    c                 ó  • U(       d  U R                   n U(       au  [        U R                  U   5       HY  n[        R                  " SU-   [
        R                  R                  -   S-   U5      (       d  MB  XA:w  d  MI  U R                  U   U	 M[     U R                  U   R                  U5      nSU l	        U$ ! [         aE  n[        (       a0  Xb:X  a  [        X R                  5      e[        XU R                  5      e S nAgS nAff = f)NÚ^Ú$Tr   )rB   rc   r   r]   r¯   rx   ry   rR   rl   rA   rË   r	   r   r   r   )r   rJ   r`   ÚlocalesrÅ   rK   rG   s          r   Ú	removeKeyÚIniFile.removeKeyˆ  sÒ   € æØ×%Ñ%ˆEð	ÞÜ  §¡¨eÑ!4Ö5�DÜ—x’x  c¡	¬C¯J©J×,<Ñ,<Ñ <¸sÑ BÀD×IÓIÈdÍkØ ŸL™L¨Ñ/°Ò5ñ 6ð —L‘L Ñ'×+Ñ+¨CÓ0ˆEØˆDŒLØˆLøÜó 	ßŠuØ“:Ü& u¯m©mÓ<Ð<ä$ S°·±Ó?Ð?äûð	ús$   •AB8 Á6B8 Á=:B8 Â8
DÃ;DÄDc                 ó6   • U R                   R                  5       $ r   )r   Úkeysr¡   s    r   ÚgroupsÚIniFile.groupsŸ  s   € Ø�|‰|× Ñ Ó"Ð"r    c                 ó   • XR                   ;   $ r   )r   rŽ   s     r   r;   ÚIniFile.hasGroup¢  s   € ØŸ™Ñ$Ð$r    c                 óJ   • U(       d  U R                   nXR                  U   ;   $ r   )rB   r   )r   rJ   r`   s      r   r>   ÚIniFile.hasKey¥  s"   € æØ×%Ñ%ˆEà—l‘l 5Ñ)Ñ)Ð)r    c                 ó   • U R                   $ r   )r   r¡   s    r   ÚgetFileNameÚIniFile.getFileName¬  s   € Ø�}‰}Ðr    )r   rB   r,   r…   r   rD   rA   rƒ   r   )NFrm   FF)r€   )rm   F)NFrÏ   )%Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rB   r…   r   rD   rA   r   r$   r   rC   rY   rZ   rU   r‹   r‡   rˆ   rž   r†   r˜   r™   rš   rœ   r—   r›   r»   rÌ   rÐ   rÔ   rÚ   rÞ   r;   r>   rå   Ú__static_attributes__rt   r    r   r   r      s¨   † Ø€LØ€Mà€HØ€Nà€Gô!ò
0ôF4ôR7òvòôô%6òPòôNò4òòòòò+òô'ôR7ò òôò.#ò%ô*õr    r   )Ú__doc__r]   r2   r½   r5   Úxdg.Exceptionsr   r   r   r   r   r   r	   Ú
xdg.Localerx   Úxdg.utilr
   rW   r   r   rt   r    r   Ú<module>rð      s=   ðñ÷ × ÷#÷ #ñ #ó Ý Û ò÷Xò Xr    