Ë Ѭtqæãóz—dZddlZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z ddl ZddlmZd„ZGd„d«Zy)z5 Base Class for DesktopEntry, IconTheme and IconData éN)Ú ParsingErrorÚDuplicateGroupErrorÚ NoGroupErrorÚ NoKeyErrorÚDuplicateKeyErrorÚValidationErrorÚdebug)ÚucóH— |jdd«y#t$rYywxYw)z>Return True if a string consists entirely of ASCII characters.ÚasciiÚstrictTF)ÚencodeÚ UnicodeError)Úss ú0/usr/lib/python3.12/site-packages/xdg/IniFile.pyÚis_asciir s*€ðØ �‰�˜(Ô#ØøÜ òÙðús ‚• ! !cóÒ—eZdZdZdZdZdZdd„Zd„Zdd„Z d d„Z d„Z d „Z dd „Z d!d „Zd „Zd „Zd"d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd#d„Zd#d„Zd„Zd„Zd$d„Zd„Zd„Zdd„Z d„Z!y)%ÚIniFileÚFNcóJ—t«|_|r|j|«yy©N)ÚdictÚcontentÚparse)ÚselfÚfilenames rÚ__init__zIniFile.__init__s€Ü“vˆŒ Ù Ø �J‰J�xÕ ð ócóB—t|j|j«Sr)Úcmpr)rÚothers rÚ__cmp__zIniFile.__cmp__!s€Ü�4—<‘< §¡Ó/Ð/rcó —|j}tjj|«s t d|«‚ t j |ddd¬«}|5|D]Ñ}|j«}|sŒ|ddk(rŒ|dd k(rI|jd «jd «}tr|j|«r t||«‚i||<Œp |jd d «\}} |j«} tr|j!|«r t#|||«‚| j«||<ŒÓ ddd«||_d|_|r&|D]} | |vsŒ| |_yt d|dz|«‚y#t$r}tr|‚Yd}~yd}~wwxYw#t$rt d |z|«‚wxYw#t$t&f$r t d|«‚wxYw#1swYŒ™xYw)zyParse 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Ú#Ú[Ú]Ú=ézInvalid line: z#Parsing error on key, group missingFz[%s]-Header missing)rÚosÚpathÚisfilerÚioÚopenÚIOErrorr ÚstripÚlstripÚrstripÚhasGrouprÚsplitÚ ValueErrorÚhasKeyrÚ IndexErrorÚUnboundLocalErrorrÚtaintedÚ defaultGroup) rrÚheadersrÚfdÚeÚlineÚ currentGroupÚkeyÚvalueÚheaders rrz IniFile.parse$sæ€ð —,‘,ˆä�w‰w�~‰~˜hÔ'ÜÐ/°Ó:Ð :ð ô—‘˜ 3°ÀÔKˆBòÛ�Ø—z‘z“|�áØà˜!‘W ’^Øà˜!‘W ’^Ø#'§;¡;¨sÓ#3×#:Ñ#:¸3Ó#?�LÝ §¡¨|Ô!<Ü1°,ÀÓIÐIà02˜  Ò-ðNØ%)§Z¡Z°°QÓ%7™ ˜˜UðŸ)™)›+�Cð\Ý  T§[¡[°°lÔ%CÜ"3°C¸ÀxÓ"PÐPà9>¿¹»˜G LÑ1°#Ò6ñ7÷ð@!ˆŒ ؈Œ ñ Û!�ؘWÒ$Ø(.�DÔ%Ùð"ô #Ð#8¸7À1¹:Ñ#EÀxÓPÐPð øôWò ÝØ�äûð  ûô6&òNÜ*Ð+;¸dÑ+BÀHÓMÐMðNûô'Ô(9Ð:ò\Ü*Ð+PÐRZÓ[Ð[ð\ú÷;ˆRúsT¹E+ÁA3GÃF ÃGÃ.;F%Ä)GÅ+ FÅ4FÆFÆ F"Æ"GÆ%GÇGÇG cóB—|s |j}||jvrI||j|vr8|r#|j||j||«}ni|j||}nV|strL||jvrt ||j «‚||j|vrt |||j «‚d}|dk(r|j«}g} ng}|D] }|dk(r|j|«}nn|dk(r t|«}n\|dk(r t|«}nJ|dk(rtj|«}n/|d k(r*|jd «\} } t| «t| «f}|dk(r j|«ŒŸ|} Œ¢ S#t$rd}YŒ*wxYw#t$rd}YŒ;wxYw) NrTÚbooleanÚintegerrÚnumericgÚregexÚpointÚ,)r?rÚ_IniFile__addLocaler rrrÚgetListÚ_IniFile__getBooleanÚintr:ÚfloatÚreÚcompiler9Úappend) rrEÚgroupÚlocaleÚtypeÚlistr rFÚvaluesÚresultÚxÚys rÚgetz IniFile.geths«€áØ×%Ñ%ˆEð �T—\‘\Ñ !¨¨t¯|©|¸EÑ/BÑ(BÙØŸ ™  UÑ+¨D×,<Ñ,<¸SÀ%Ó,HÑI‘àŸ ™  UÑ+¨CÑ0‘á�Ø § ¡ Ñ,Ü& u¨d¯m©mÓ<Ð<Ø § ¡ ¨UÑ 3Ñ3Ü$ S¨%°·±Ó?Ð?à�à �4Š<Ø—\‘\ %Ó(ˆF؉Fà�WˆFãˆEØ�yÒ Ø×)Ñ)¨%Ó0‘ؘÒ"ðÜ ›J‘Eð˜Ò"ð Ü! %›L‘Eð˜’ÜŸ ™  5Ó)‘ؘ’Ø—{‘{ 3Ó'‘��1ܘA›¤ A£˜�à�tŠ|Ø— ‘ ˜eÕ$à‘ð-ð0ˆ øô%"òØ’Eðûô "ò Ø’Eð ús$Ã: E?Ä FÅ? F Æ F Æ FÆFcóJ—tjd|«rtjd|«}n]tjd|«rtjd|«}n0tjd|«rtjd|«}n|g}|ddk(r|j«|S)Nz (?Ø �H‰HŒJ؈ rcóD—|dk(s |dk(s|dk(ry|dk(s |dk(s|dk(ryy) Nr.ÚtrueÚTrueTrÚfalseÚFalseF©)rrIs rÚ __getBooleanzIniFile.__getBoolean«s5€Ø �aŠ<˜7 fÒ,°¸6Ò0AØØ ˜Š\˜W¨Ò/°7¸gÒ3EØØrcóš—|s |j}tjjD]}|›d|›d�}||j|vsŒ|cS|S)z3add locale to key according the current lc_messagesr+r,)r?ÚxdgÚLocaleÚlangsr)rrErWÚlangÚlangkeys rÚ __addLocalezIniFile.__addLocale³sM€ñØ×%Ñ%ˆEä—J‘J×$Ô$ˆDÚ"%¢tÐ,ˆGؘ$Ÿ,™, uÑ-Ò-Ø’ð%ð ˆ rcó|—g|_g|_tjj |j «d|_|j«|jD]~}|j|«|j|D]Y}|j||j|||«|j||dk(sŒ<|jjd|z«Œ[Œ€d}|dk(s|dk(r|jD] }|d|zz }Œ |dk(s|dk(r|jD] }|d|zz }Œ |rt||j «‚y) z±Validate the contents, raising :class:`~xdg.Exceptions.ValidationError` if there is anything amiss. report can be 'All' / 'Warnings' / 'Errors' r.rzValue of Key '%s' is emptyÚAllÚWarningsz - ÚErrorsN) Úwarningsr)r/r0ÚsplitextrÚ fileExtensionÚ checkExtrasrÚ checkGroupÚcheckKeyrVr)rÚreportrWrEÚmsgrCs rÚvalidatezIniFile.validateÁs5€ðˆŒ ؈Œ ô ŸW™W×-Ñ-¨d¯m©mÓ<¸QÑ?ˆÔð ×ÑÔð—\”\ˆEØ �O‰O˜EÔ "Ø—|‘| EÔ*�Ø— ‘ ˜c 4§<¡<°Ñ#6°sÑ#;¸UÔCà—<‘< Ñ& sÑ+¨rÓ1Ø—M‘M×(Ñ(Ð)EÈÑ)KÕLñ +ð"ðˆà �UŠ?˜f¨ Ò2ØŸ œ �Ø�v ‘}Ñ$‘ð&ð �UŠ?˜f¨Ò0ØŸ œ �Ø�v ‘}Ñ$‘ð$ñ Ü! # t§}¡}Ó5Ð 5ð rcó—yrrj©rrWs rr{zIniFile.checkGroupéó€Ø rcó—yrrj)rrErFrWs rr|zIniFile.checkKeyír‚rcóø—|dk(r|j|«}n|g}|D]Û}|dk(r|j|«}|dk(rŒ|dk(r|j|«}n[|dk(r|j|«}nD|dk(r|j |«}n-|dk(r|j |«}n|dk(r|j |«}d k(r"|jjd |›d |›�«Œ¸|d k(sŒ¾|jjd |z«ŒÝy)NTrdÚ localestringrIrKrJrLrMr.Ú'z' is not a valid ézValue of key '%s' is deprecated) rPÚ checkStringÚ checkBooleanÚ checkNumberÚ checkIntegerÚ checkRegexÚ checkPointr)rVrw)rrErFrYrZr[Úcodes rÚ checkValuezIniFile.checkValueñsú€Ø �4Š<Ø—\‘\ %Ó(‰Fà�WˆFãˆEØ�xÒØ×'Ñ'¨Ó.�Ø�~Ò%ØØ˜Ò"Ø×(Ñ(¨Ó/‘ؘÒ"Ø×'Ñ'¨Ó.‘ؘÒ"Ø×(Ñ(¨Ó/‘ؘ’Ø—‘ uÓ-‘ؘ’Ø—‘ uÓ-�Ø�qŠyØ— ‘ ×"Ò"ºuÁdÐ#KÕLؘ“Ø— ‘ ×$Ñ$Ð%FÈÑ%LÕMñ%rcó—yrrj©rs rrzzIniFile.checkExtras r‚rcó2—|dk(s|dk(ry|dk(s|dk(syyy)NÚ1Ú0r‡rfrhr.rj©rrFs rr‰zIniFile.checkBooleans*€à �SŠL˜E SšLØà˜6’/ U¨gÒ%5Øð&6�/rcó*— t|«y#YyxYw©Nr.)rSr•s rrŠzIniFile.checkNumbers€ð Ü �%�Løð Ùúó‚ Žcó*— t|«y#YyxYwr—)rRr•s rr‹zIniFile.checkIntegers€ð Ü ��Jøð Ùúr˜có2—tjd|«syy)Nz^[0-9]+,[0-9]+$r.)rTÚmatchr•s rr�zIniFile.checkPoint$s€Ü�x‰xÐ)¨5Ô1Øð2rcó —t|«rdSdS)Nrr.)rr•s rrˆzIniFile.checkString(s€Ü˜U”OˆqÐ*¨Ð*rcó>— tj|«y#YyxYwr—)rTrUr•s rrŒzIniFile.checkRegex+s€ð Ü �J‰J�uÕ øð Ùús‚˜cón—|s|js tdd«‚|r||_n |j}tjj |«rntjj tjj |««s2tj tjj |««tj|dd¬«5}|r|jtd««|jr�|jtd«|jz«|j|jj«D]$\}}|jtd«||fz«Œ&|jtd ««|jj«D]ƒ\}}||jk7sŒ|jtd«|z«|j«D]$\}}|jtd«||fz«Œ&|jtd ««Œ… ddd«|rjtj|«j}|tj ztj"ztj$z} tj&|| «d |_y#1swYŒ}xYw) Nr$rÚwr&)r(z#!/usr/bin/env xdg-open z[%s] z%s=%s Ú F)rrr/r0ÚdirnameÚisdirÚmakedirsr2r3Úwriter r?rÚitemsÚstatÚst_modeÚS_IXUSRÚS_IXGRPÚS_IXOTHÚchmodr>) rrÚtrustedÚfprErFÚnamerWÚoldmodeÚmodes rr¤z IniFile.write2så€Ù § ¢ ÜÐ/°Ó4Ð 4á Ø$ˆD�Mà—}‘}ˆHä �7‰7�?‰?˜8Ô $¬R¯W©W¯]©]¼2¿7¹7¿?¹?È8Ó;TÔ-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‘ ��uؘ4×,Ñ,Ó,Ø—H‘HœQ˜x›[¨4Ñ/Ô0Ø(-¯ © ® ™ ˜˜eØŸ™¤ 9£°°e° Ñ!<Õ=ð)6à—H‘HœQ˜t›WÕ%ñ "6÷6ñ, Ü—g‘g˜hÓ'×/Ñ/ˆGØœTŸ\™\Ñ)¬D¯L©LÑ8¼4¿<¹<ÑGˆDÜ �H‰H�X˜tÔ $àˆ� ÷76Ð 5úsÃC'J+Æ>A0J+Ê+J4cób—|s |j}|dk(rLttjj«dkDr&|dztjjdzdz} ||j ||<||j||«k(|_ y#t $rt||j«‚wxYw)NTrr+r,) r?ÚlenrmrnrorÚKeyErrorrrr_r>)rrErFrWrXs rÚsetz IniFile.set[s¢€áØ×%Ñ%ˆEà �TŠ>œc¤#§*¡*×"2Ñ"2Ó3°aÒ7ؘ‘)œcŸj™j×.Ñ.¨qÑ1Ñ1°CÑ7ˆCð 5Ø',ˆD�L‰L˜Ñ  Ñ $ð §¡¨#¨uÓ!5Ñ5ˆ� øôò 5ܘu d§m¡mÓ4Ð 4ð 5ús Á!B B.cóŒ—|j|«rtrt||j«‚yi|j|<d|_y©NT)r8r rrrr>r�s rÚaddGroupzIniFile.addGroupjs>€Ø �=‰=˜Ô ÝÜ)¨%°·±Ó?Ð?ðð#%ˆD�L‰L˜Ñ ؈D�LrcóŠ—||jv}|r|j|=d|_|Strt||j«‚|Sr¶)rr>r rr)rrWÚexisteds rÚ removeGroupzIniFile.removeGrouprsH€Ø˜4Ÿ<™<Ð'ˆÙ Ø— ‘ ˜UÐ#؈DŒLðˆõÜ" 5¨$¯-©-Ó8Ð8؈rcóä—|s |j} |rkt|j|«D]P}tjd|zt j jzdz|«sŒ;||k7sŒA|j||=ŒR|j|j|«}d|_ |S#t$rB}tr2||k(rt||j«‚t|||j«‚Yd}~yd}~wwxYw)NÚ^Ú$Tr)r?rZrrTr›rmrnrLrcr>r³r rrr)rrErWÚlocalesr®rFrBs rÚ removeKeyzIniFile.removeKey|sÖ€áØ×%Ñ%ˆEð ÙÜ  §¡¨eÑ!4Ö5�DÜ—x‘x  c¡ ¬C¯J©J×,<Ñ,<Ñ <¸sÑ BÀDÕIÈdÐVYËkØ ŸL™L¨Ñ/°Ñ5ð6ð—L‘L Ñ'×+Ñ+¨CÓ0ˆE؈DŒL؈LøÜò ÝØ˜’:Ü& u¨d¯m©mÓ<Ð<ä$ S¨%°·±Ó?Ð?äûð ús$�AB$Á%B$Á+8B$Â$ C/Â-8C*Ã*C/có6—|jj«Sr)rÚkeysr‘s rÚgroupszIniFile.groups“s€Ø�|‰|× Ñ Ó"Ð"rcó—||jvSr)rr�s rr8zIniFile.hasGroup–s€Ø˜Ÿ ™ Ð$Ð$rcó@—|s |j}||j|vSr)r?r)rrErWs rr;zIniFile.hasKey™s$€áØ×%Ñ%ˆEà�d—l‘l 5Ñ)Ð)Ð)rcó—|jSr)rr‘s rÚ getFileNamezIniFile.getFileName s €Ø�}‰}Ðrr)NFrdFF)rt)rdF)NFr¶)"Ú__name__Ú __module__Ú __qualname__r?ryrr>rr"rr_rPrQrOrr{r|r�rzr‰rŠr‹r�rˆrŒr¤r´r·rºr¿rÂr8r;rÆrjrrrrs¤„Ø€LØ€Mà€Hà€Gó!ò 0óAQóH2òl òó ó%6òP ò óNò4 òòòòò+òó'óR 7ò òóò.#ò%ó*órr)Ú__doc__rTr/r¦r2Úxdg.Exceptionsrrrrrrr Ú xdg.LocalermÚxdg.utilr rrrjrrÚrÎs:ðñ÷×÷#÷#ñ#óÝò÷MòMr