grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛfjã@s¶dZddlZddlZddlZddlZddddddd d d d d ddddddddddgZej ejdd¡Z e  dej ej B¡Z dd„Zdd„ZdZd d!„eed"ƒDƒZd#d$d%d&œZdGd(d)„Zd*d+„Zd,d-„Zd.d/„ZGd0d„dƒZGd1d„deƒZdHd3d„ZiZd4gZdddd2efd5d„Zdedfd6d„Ziaiad7a dId8d „Z!dJd9d „Z"dKd:d „Z#d;d „Z$dd„Z'd?d„Z(d@d„Z)dAd„Z*dBd„Z+dCd„Z,dDd„Z-dEd„Z.dFd„Z/eZ0dS)LaªInternationalization and localization support. This module provides internationalization (I18N) and localization (L10N) support for your Python programs by providing an interface to the GNU gettext message catalog library. I18N refers to the operation by which a program is made aware of multiple languages. L10N refers to the adaptation of your program, once internationalized, to the local language and cultural habits. éNÚNullTranslationsÚGNUTranslationsÚCatalogÚfindÚ translationÚinstallÚ textdomainÚbindtextdomainÚbind_textdomain_codesetÚdgettextÚ dngettextÚgettextÚlgettextÚ ldgettextÚ ldngettextÚ lngettextÚngettextÚpgettextÚ dpgettextÚ npgettextÚ dnpgettextZshareÚlocaleaÊ (?P[ \t]+) | # spaces and horizontal tabs (?P[0-9]+\b) | # decimal integer (?Pn\b) | # only n is allowed (?P[()]) | (?P[-*/%+?:]|[>, # <=, >=, ==, !=, &&, ||, # ? : # unary and bitwise ops # not allowed (?P\w+|.) # invalid token ccsPt t|¡D]8}|j}|dkr q | |¡}|dkr>td|ƒ‚|Vq dVdS)NZ WHITESPACESZINVALIDz invalid token in plural form: %sÚ)ÚreÚfinditerÚ_token_patternÚ lastgroupÚgroupÚ ValueError)ÚpluralZmoZkindÚvalue©r!ú,/opt/alt/python38/lib64/python3.8/gettext.pyÚ _tokenizeWs  r#cCs|rtd|ƒStdƒSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)r r!r!r"Ú_errorbs r$))ú||)ú&&)z==z!=)ú<ú>z<=z>=)ú+ú-)Ú*ú/ú%cCs i|]\}}|D] }||“qqSr!r!)Ú.0ÚiZopsÚopr!r!r"Ú ps r1éÚorÚandz//)r%r&r,éÿÿÿÿc Cs¨d}t|ƒ}|dkr&|d7}t|ƒ}q |dkrXt|ƒ\}}d||f}|dkr¨tdƒ‚nP|dkrnd ||f}n:zt|d ƒ}Wntk ršt|ƒd‚YnXd ||f}t|ƒ}d }|tk�rt|}||krÒ�q|d krê|d krêd|}t ||¡}t||dƒ\} }d||| f}|}q´||k�r4dk�r@nnd|}|dk�r |dk�r t|dƒ\} }|dk�rtt|ƒ‚t|ƒ\} }d| || f}|dk�r d|}||fS)Nrú!znot ú(z%s(%s)ú)z%unbalanced parenthesis in plural formÚnz%s%sé z%s%déd)ééz(%s)r2z%s %s %sr=ú?rú:z%s if %s else %s)ÚnextÚ_parserÚintr$Ú _binary_opsÚ _c2py_opsÚget) ÚtokensZpriorityÚresultÚnexttokÚsubr Újr/r0ÚrightZif_trueZif_falser!r!r"rAssP          rAcCsZz t|ƒ}Wn(tk r4td|jjfƒd‚YnXddl}| d|jjftd¡|S)Nz'Plural value must be an integer, got %srr=)ÚroundÚ TypeErrorÚ __class__Ú__name__ÚwarningsÚwarnÚDeprecationWarning)r9r/rPr!r!r"Ú_as_int¤s  ÿÿÿþrScCs²t|ƒdkrtdƒ‚z|tt|ƒƒ\}}|r2t|ƒ‚d}|D]6}|dkr`|d7}|dkrptdƒ‚q:|dkr:|d8}q:d ti}td ||ƒ|d WStk r¬tdƒ‚YnXd S) z‰Gets a C expression as used in PO files for plural forms and returns a Python function that implements an equivalent expression. ièz"plural form expression is too longrr7r2éz%plural form expression is too complexr8rSz›if True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) ÚfuncN)ÚlenrrAr#r$rSÚexecÚRecursionError)rrGrHZdepthÚcÚnsr!r!r"Úc2py°s.   ûû r[c Cs4t |¡}d}d}d}d}| d¡}|dkrN||d…}|d|…}||O}nd}| d¡}|dkr†||d…}|d|…}||O}nd}| d¡}|dkr¾||d…}|d|…}||O}nd}|} g} t|dƒD]P} | |@sÖ| } | |@rø| |7} | |@�r | |7} | |@�r| |7} |  | ¡qÖ|  ¡| S) Nr2ér=rú@rÚ.Ú_)rZ normalizerÚrangeÚappendÚreverse) ZlocZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERÚmaskÚposZmodifierÚcodesetZ territoryZlanguageZretr/Úvalr!r!r"Ú _expand_langÔsJ                 rgc@s€eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zddd„ZdS) rNcCs.i|_d|_d|_d|_|dk r*| |¡dS©N)Ú_infoÚ_charsetÚ_output_charsetÚ _fallbackrA©ÚselfÚfpr!r!r"Ú__init__ÿs zNullTranslations.__init__cCsdSrhr!rmr!r!r"rAszNullTranslations._parsecCs|jr|j |¡n||_dSrh)rlÚ add_fallback)rnÚfallbackr!r!r"rq szNullTranslations.add_fallbackcCs|jr|j |¡S|Srh)rlr )rnÚmessager!r!r"r s zNullTranslations.gettextc Csrddl}| dtd¡|jrR| ¡�(| ddt¡|j |¡W5QR£SQRX|jrd| |j¡S| t   ¡¡S)Nrú/lgettext() is deprecated, use gettext() insteadr\Úignoreú.*\blgettext\b.*) rPrQrRrlÚcatch_warningsÚfilterwarningsrrkÚencoderÚgetpreferredencoding)rnrsrPr!r!r"rsÿ ÿ zNullTranslations.lgettextcCs*|jr|j |||¡S|dkr"|S|SdS©Nr2)rlr)rnÚmsgid1Úmsgid2r9r!r!r"r"s zNullTranslations.ngettextc Csˆddl}| dtd¡|jrV| ¡�,| ddt¡|j |||¡W5QR£SQRX|dkrd|}n|}|jrz| |j¡S| t   ¡¡S)Nrú1lngettext() is deprecated, use ngettext() insteadr\ruú.*\blngettext\b.*r2) rPrQrRrlrwrxrrkryrrz©rnr|r}r9rPÚtmsgr!r!r"r*s"ÿ ÿ" zNullTranslations.lngettextcCs|jr|j ||¡S|Srh)rlr)rnÚcontextrsr!r!r"r;szNullTranslations.pgettextcCs,|jr|j ||||¡S|dkr$|S|SdSr{)rlr)rnr‚r|r}r9r!r!r"r@s zNullTranslations.npgettextcCs|jSrh)ri©rnr!r!r"ÚinfoHszNullTranslations.infocCs|jSrh)rjrƒr!r!r"ÚcharsetKszNullTranslations.charsetcCsddl}| dtd¡|jS)Nrzoutput_charset() is deprecatedr\©rPrQrRrk)rnrPr!r!r"Úoutput_charsetNs ÿzNullTranslations.output_charsetcCs ddl}| dtd¡||_dS)Nrz"set_output_charset() is deprecatedr\r†)rnr…rPr!r!r"Úset_output_charsetTs ÿz#NullTranslations.set_output_charsetcCsRddl}|j|jd<|dk rNddddddh}|t|ƒ@D]}t||ƒ|j|<q8dS) Nrr_r rrrrr)Úbuiltinsr Ú__dict__ÚsetÚgetattr)rnÚnamesr‰ZallowedÚnamer!r!r"rZs ÿzNullTranslations.install)N)N)rOÚ __module__Ú __qualname__rprArqr rrrrrr„r…r‡rˆrr!r!r!r"rþs  c@s\eZdZdZdZdZdZdd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)rlÞ*l•$<z%s%s)rr2cCs|d?|d@fS)z/Returns a tuple of major version, minor versionéiÿÿr!)rnÚversionr!r!r"Ú _get_versionspszGNUTranslations._get_versionsc"Csöddlm}t|ddƒ}i|_}dd„|_| ¡}t|ƒ}|d|dd …ƒd}||jkr||d |d d …ƒ\}} } } d } n6||jkr¦|d |d d …ƒ\}} } } d} n t dd|ƒ‚|  |¡\} }| |j krÞt ddt | ƒ|ƒ‚t d| ƒD�]}|| || | d…ƒ\}}||}|| || | d…ƒ\}}||}||k�r`||k�r`|||…}|||…}n t dd|ƒ‚|dk�rld}| d¡D]æ}| ¡ ¡}|�sž�q„| d¡�rº| d¡�rº�q„d}}d|k�r| dd¡\}}| ¡ ¡}| ¡}||j|<|}n|�r|j|d|7<|dk�r8| d¡d|_n0|dk�r„| d¡}|d d¡d}t|ƒ|_�q„|j�pvd}d|k�rÌ| d¡\}} | d¡}t ||ƒ}t|ƒD]\}}!t |!|ƒ|||f<�q¬nt ||ƒ|t ||ƒ<| d7} | d7} qèdS)z8Override this method to support alternative .mo formats.r)ÚunpackrŽrcSs t|dkƒSr{)rB)r9r!r!r"Ú}óz(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number ézFile is corruptó z #-#-#-#-#r?r2Ú z content-typezcharset=z plural-formsú;zplural=Úasciió)Zstructr”rŒÚ_catalogrÚreadrVÚLE_MAGICÚBE_MAGICÚOSErrorr“ÚVERSIONSÚstrr`ÚsplitÚdecodeÚstripÚ startswithÚendswithÚlowerrirjr[Ú enumerate)"rnror”ÚfilenameZcatalogZbufZbuflenÚmagicr’ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr/ZmlenZmoffZmendZtlenZtoffZtendÚmsgr�ZlastkZb_itemÚitemÚkÚvrr…r|r}Úxr!r!r"rAtsv                      zGNUTranslations._parsecCshddl}| dtd¡tƒ}|j ||¡}||krH|jrD|j |¡S|}|jrZ|  |j¡S|  t   ¡¡S)Nrrtr\) rPrQrRÚobjectr�rErlrrkryrrz)rnrsrPÚmissingr�r!r!r"rÍsÿ  zGNUTranslations.lgettextcCs�ddl}| dtd¡z|j|| |¡f}Wn@tk rn|jrX|j |||¡YS|dkrf|}n|}YnX|jr‚|  |j¡S|  t   ¡¡S)Nrr~r\r2) rPrQrRr�rÚKeyErrorrlrrkryrrzr€r!r!r"rÛs ÿ  zGNUTranslations.lngettextcCs6tƒ}|j ||¡}||kr2|jr.|j |¡S|S|Srh)r²r�rErlr )rnrsr³r�r!r!r"r ìs zGNUTranslations.gettextcCs^z|j|| |¡f}Wn@tk rX|jrB|j |||¡YS|dkrP|}n|}YnX|Sr{)r�rr´rlr)rnr|r}r9r�r!r!r"rõs zGNUTranslations.ngettextcCsF|j||f}tƒ}|j ||¡}||krB|jr>|j ||¡S|S|Srh)ÚCONTEXTr²r�rErlr)rnr‚rsÚ ctxt_msg_idr³r�r!r!r"rszGNUTranslations.pgettextc Csn|j||f}z|j|| |¡f}WnBtk rh|jrR|j ||||¡YS|dkr`|}n|}YnX|Sr{)rµr�rr´rlr)rnr‚r|r}r9r¶r�r!r!r"r s zGNUTranslations.npgettextN)rOr�r�rŸr rµr¢r“rArrr rrrr!r!r!r"rdsY   Fc Csâ|dkr t}|dkrRg}dD]"}tj |¡}|r| d¡}q@qd|krR| d¡g}|D]$}t|ƒD]}||krf| |¡qfqZ|rŠg} nd} |D]J}|dkr¢qÞtj ||dd|¡} tj  | ¡r’|rÔ|  | ¡q’| Sq’| S)N)ZLANGUAGEÚLC_ALLÚ LC_MESSAGESZLANGr?ÚCr¸z%s.mo) Ú_default_localedirÚosÚenvironrEr¤rargÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallZenvarrfZnelangsZlangZnelangrGÚmofiler!r!r"rs8       Z unspecifiedc Cs|dkr t}t|||dd�}|sB|r*tƒSddlm}t|d|ƒ‚d}|D]Æ} |tj | ¡f} t   | ¡} | dkr–t | dƒ�} t   | || ƒ¡} W5QRXddl } |   | ¡} |tk röddl}| dtd¡|rö| ¡�| d d t¡|  |¡W5QRX|dk�r| }qJ| | ¡qJ|S) NT)rÃr)ÚENOENTz$No translation file found for domainÚrbzparameter codeset is deprecatedr\ruz.*\bset_output_charset\b.*)rrrÚerrnorÅÚFileNotFoundErrorr»r½ÚabspathÚ _translationsrEÚopenÚ setdefaultÚcopyÚ _unspecifiedrPrQrRrwrxrˆrq)rÀrÁrÂZclass_rrreZmofilesrÅrGrÄÚkeyÚtrorÍrPr!r!r"rCsH ÿ   ÿ ÿ  cCst||d|d�}| |¡dS)NT)rrre)rr)rÀrÁrer�rÐr!r!r"rnsZmessagescCs|dk r |atSrh)Ú_current_domain)rÀr!r!r"r|scCs|dk r|t|<t |t¡Srh)Ú _localedirsrErº)rÀrÁr!r!r"r ƒscCs0ddl}| dtd¡|dk r&|t|<t |¡S)Nrz'bind_textdomain_codeset() is deprecatedr\)rPrQrRÚ_localecodesetsrE)rÀrerPr!r!r"r ŠsÿcCs:zt|t |d¡ƒ}Wntk r.|YSX| |¡Srh)rrÒrEr¡r )rÀrsrÐr!r!r"r ”s  c Cs¼ddl}| dtd¡t |¡}z<| ¡�*| ddt¡t|t |d¡|d�}W5QRXWn&t k r‚|  |pzt   ¡¡YSX| ¡�&| ddt¡|  |¡W5QR£SQRXdS)Nrz1ldgettext() is deprecated, use dgettext() insteadr\ruú.*\bparameter codeset\b.*©rerv)rPrQrRrÓrErwrxrrÒr¡ryrrzr)rÀrsrPrerÐr!r!r"r›s&ÿ  ÿ$ ÿcCsRzt|t |d¡ƒ}Wn,tk rB|dkr6|YS|YSYnX| |||¡Sr{)rrÒrEr¡r)rÀr|r}r9rÐr!r!r"r ¬sc CsÒddl}| dtd¡t |¡}z<| ¡�*| ddt¡t|t |d¡|d�}W5QRXWn8t k r”|dkrz|}n|}|  |pŒt   ¡¡YSX| ¡�*| ddt¡|  |||¡W5QR£SQRXdS) Nrz3ldngettext() is deprecated, use dngettext() insteadr\rurÔrÕr2r)rPrQrRrÓrErwrxrrÒr¡ryrrzr)rÀr|r}r9rPrerÐr�r!r!r"r¶s,ÿ  ÿ$ ÿcCs<zt|t |d¡ƒ}Wntk r.|YSX| ||¡Srh)rrÒrEr¡r)rÀr‚rsrÐr!r!r"rÌs  cCsTzt|t |d¡ƒ}Wn,tk rB|dkr6|YS|YSYnX| ||||¡Sr{)rrÒrEr¡r)rÀr‚r|r}r9rÐr!r!r"rÔscCs tt|ƒSrh)r rÑ)rsr!r!r"r ßsc CsNddl}| dtd¡| ¡�&| ddt¡tt|ƒW5QR£SQRXdS)Nrrtr\ruz.*\bldgettext\b.*)rPrQrRrwrxrrÑ)rsrPr!r!r"râsÿ ÿcCstt|||ƒSrh)r rÑ)r|r}r9r!r!r"rësc CsRddl}| dtd¡| ¡�*| ddt¡tt|||ƒW5QR£SQRXdS)Nrr~r\ruz.*\bldngettext\b.*)rPrQrRrwrxrrÑ)r|r}r9rPr!r!r"rîsÿ ÿcCs tt||ƒSrh)rrÑ)r‚rsr!r!r"røscCstt||||ƒSrh)rrÑ)r‚r|r}r9r!r!r"rüs)r5)NNF)N)N)N)1Ú__doc__rr»rÚsysÚ__all__r½r¾Ú base_prefixrºÚcompileÚVERBOSEÚDOTALLrr#r$rCrªrDrArSr[rgrrrrÊrÎrrrÒrÓrÑrr r r rr rrrr rrrrrrr!r!r!r"Úsˆ0û  õ    1 $*f7 &ÿ +