grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a XC?h‚jã@sˆdZddlZddlZddlZgd¢Zej ejdd¡Ze  dej ej B¡Z dd„Z d d „Zd Zd d „eedƒDƒZddddœZdGdd„Zdd„Zdd„Zdd„ZGdd„dƒZGdd„deƒZdHd!d"„ZiZd#gZdddd efd$d%„Zdedfd&d'„Ziaiad(adId)d*„Z dJd+d,„Z!dKd-d.„Z"d/d0„Z#d1d2„Z$d3d4„Z%d5d6„Z&d7d8„Z'd9d:„Z(d;d<„Z)d=d>„Z*d?d@„Z+dAdB„Z,dCdD„Z-dEdF„Z.eZ/dS)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)ÚpluralZmoÚkindÚvalue©r"ú,/opt/alt/python39/lib64/python3.9/gettext.pyÚ _tokenizeVs  r$cCs|rtd|ƒStdƒSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)r!r"r"r#Ú_erroras r%))ú||)ú&&)z==z!=)ú<ú>z<=z>=)ú+ú-)Ú*ú/ú%cCs i|]\}}|D] }||“qqSr"r")Ú.0ÚiÚopsÚopr"r"r#Ú oór3éÚorÚandz//)r&r'r-éÿÿÿÿc Cs¦d}t|ƒ}|dkr&|d7}t|ƒ}q |dkrXt|ƒ\}}d||f}|dkr¦tdƒ‚nN|dkrnd ||f}n8zt|d ƒ}Wnty˜t|ƒd‚Yn0d ||f}t|ƒ}d }|tv�rt|}||krÐ�q|d vrè|d vrèd|}t ||¡}t||dƒ\} }d||| f}|}q²||k�r2dk�r>nnd|}|dk�rž|dk�ržt|dƒ\} }|dk�rrt|ƒ‚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)r5z%s %s %sr@ú?rú:z%s if %s else %s)ÚnextÚ_parserÚintr%Ú _binary_opsÚ _c2py_opsÚget) ÚtokensZpriorityÚresultÚnexttokÚsubr!Újr0r2ÚrightZif_trueZif_falser"r"r#rDrsP           rDcCsXz t|ƒ}Wn&ty2td|jjfƒd‚Yn0ddl}| d|jjftd¡|S)Nz'Plural value must be an integer, got %srr@)ÚroundÚ TypeErrorÚ __class__Ú__name__ÚwarningsÚwarnÚDeprecationWarning)r<r0rSr"r"r#Ú_as_int£s  ÿÿÿþrVcCs°t|ƒdkrtdƒ‚z|tt|ƒƒ\}}|r2t|ƒ‚d}|D]6}|dkr`|d7}|dkrptdƒ‚q:|dkr:|d8}q:d ti}td ||ƒ|d WStyªtdƒ‚Yn0d 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 longrr:r5éz%plural form expression is too complexr;rVz›if True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) ÚfuncN)ÚlenrrDr$r%rVÚexecÚRecursionError)rrJrKZdepthÚcÚnsr"r"r#Úc2py¯s.   ûû  r^cCs>ddl}| |¡}d}d}d}d}| d¡}|dkrV||d…}|d|…}||O}nd}| d¡}|dkrŽ||d…}|d|…}||O}nd}| d¡}|dkrÆ||d…} |d|…}||O}nd} |} g} t|dƒD]R} | |@sÞ| } | |@�r| | 7} | |@�r| |7} | |@�r&| |7} |  | ¡qÞ|  ¡| S) Nrr5ér@ú@rÚ.Ú_)rZ normalizerÚrangeÚappendÚreverse)ZlocrZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERÚmaskÚposZmodifierÚcodesetZ territoryZlanguageZretr0Úvalr"r"r#Ú _expand_langÓsF               rjc@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|_|dur*| |¡dS©N)Ú_infoÚ_charsetÚ_output_charsetÚ _fallbackrD©ÚselfÚfpr"r"r#Ú__init__ÿs zNullTranslations.__init__cCsdSrkr"rpr"r"r#rDszNullTranslations._parsecCs|jr|j |¡n||_dSrk)roÚ add_fallback)rqÚfallbackr"r"r#rt szNullTranslations.add_fallbackcCs|jr|j |¡S|Srk)ror )rqÚmessager"r"r#r s zNullTranslations.gettextcCs†ddl}| dtd¡ddl}|jrf| ¡�*| ddt¡|j |¡WdƒS1s\0Y|jrx|  |j¡S|  |  ¡¡S)Nrú/lgettext() is deprecated, use gettext() insteadr_Úignoreú.*\blgettext\b.*) rSrTrUrroÚcatch_warningsÚfilterwarningsrrnÚencodeÚgetpreferredencoding)rqrvrSrr"r"r#rsÿ ÿ* zNullTranslations.lgettextcCs*|jr|j |||¡S|dkr"|S|SdS©Nr5)ror)rqÚmsgid1Úmsgid2r<r"r"r#r#s zNullTranslations.ngettextcCsœddl}| dtd¡ddl}|jrj| ¡�.| ddt¡|j |||¡WdƒS1s`0Y|dkrx|}n|}|jrŽ|  |j¡S|  |  ¡¡S)Nrú1lngettext() is deprecated, use ngettext() insteadr_rxú.*\blngettext\b.*r5) rSrTrUrrorzr{rrnr|r}©rqrr€r<rSrÚtmsgr"r"r#r+s"ÿ ÿ. zNullTranslations.lngettextcCs|jr|j ||¡S|Srk)ror)rqÚcontextrvr"r"r#r=szNullTranslations.pgettextcCs,|jr|j ||||¡S|dkr$|S|SdSr~)ror)rqr…rr€r<r"r"r#rBs zNullTranslations.npgettextcCs|jSrk)rl©rqr"r"r#ÚinfoJszNullTranslations.infocCs|jSrk)rmr†r"r"r#ÚcharsetMszNullTranslations.charsetcCsddl}| dtd¡|jS)Nrzoutput_charset() is deprecatedr_©rSrTrUrn)rqrSr"r"r#Úoutput_charsetPs ÿzNullTranslations.output_charsetcCs ddl}| dtd¡||_dS)Nrz"set_output_charset() is deprecatedr_r‰)rqrˆrSr"r"r#Úset_output_charsetVs ÿz#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd£}|t|ƒ@D]}t||ƒ|j|<q0dS)Nrrb>rrrrrr )Úbuiltinsr Ú__dict__ÚsetÚgetattr)rqÚnamesrŒZallowedÚnamer"r"r#r\s  zNullTranslations.install)N)N)rRÚ __module__Ú __qualname__rsrDrtr rrrrrr‡rˆrŠr‹rr"r"r"r#rþs rc@s\eZdZdZdZdZdZdd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)rlÞ*l•$<z%s%s)rr5cCs|d?|d@fS)z/Returns a tuple of major version, minor versionéiÿÿr")rqÚversionr"r"r#Ú _get_versionsrszGNUTranslations._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 vrÞ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|v�r| dd¡\}}| ¡ ¡}| ¡}||j|<|}n|�r|j|d|7<|dk�r8| d¡d|_n0|dk�r„| d¡}|d d¡d}t|ƒ|_�q„|j�pvd}d|v�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~)rE)r<r"r"r#Úr4z(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number ézFile is corruptó z #-#-#-#-#rBr5Ú z content-typezcharset=z plural-formsú;zplural=Úasciió)Zstructr—r�Ú_catalogrÚreadrYÚLE_MAGICÚBE_MAGICÚOSErrorr–ÚVERSIONSÚstrrcÚsplitÚdecodeÚstripÚ startswithÚendswithÚlowerrlrmr^Ú enumerate)"rqrrr—ÚfilenameZcatalogZbufZbuflenÚmagicr•ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr0ZmlenZmoffZmendZtlenZtoffZtendÚmsgr„ZlastkZb_itemÚitemÚkÚvrrˆrr€Úxr"r"r#rDvsv                      zGNUTranslations._parsecCspddl}| dtd¡ddl}tƒ}|j ||¡}||urP|jrL|j |¡S|}|j rb|  |j ¡S|  |  ¡¡S)Nrrwr_) rSrTrUrÚobjectrŸrHrorrnr|r})rqrvrSrÚmissingr„r"r"r#rÏsÿ  zGNUTranslations.lgettextcCs–ddl}| dtd¡ddl}z|j|| |¡f}Wn>tyt|jr^|j |||¡YS|dkrl|}n|}Yn0|j rˆ|  |j ¡S|  |  ¡¡S)Nrr�r_r5) rSrTrUrrŸrÚKeyErrorrorrnr|r}rƒr"r"r#rÞs ÿ   zGNUTranslations.lngettextcCs6tƒ}|j ||¡}||ur2|jr.|j |¡S|S|Srk)r´rŸrHror )rqrvrµr„r"r"r#r ðs zGNUTranslations.gettextcCs\z|j|| |¡f}Wn>tyV|jr@|j |||¡YS|dkrN|}n|}Yn0|Sr~)rŸrr¶ror)rqrr€r<r„r"r"r#rùs  zGNUTranslations.ngettextcCsF|j||f}tƒ}|j ||¡}||urB|jr>|j ||¡S|S|Srk)ÚCONTEXTr´rŸrHror)rqr…rvÚ ctxt_msg_idrµr„r"r"r#rszGNUTranslations.pgettextc Csl|j||f}z|j|| |¡f}Wn@tyf|jrP|j ||||¡YS|dkr^|}n|}Yn0|Sr~)r·rŸrr¶ror)rqr…rr€r<r¸r„r"r"r#rs  zGNUTranslations.npgettextN)rRr’r“r¡r¢r·r¤r–rDrrr rrrr"r"r"r#rfsY   rFc Csâ|dur t}|durRg}dD]"}tj |¡}|r| d¡}q@qd|vrR| d¡g}|D]$}t|ƒD]}||vrf| |¡qfqZ|rŠg} nd} |D]J}|dkr¢qÞtj ||dd|¡} tj  | ¡r’|rÔ|  | ¡q’| Sq’| S)N)ZLANGUAGEÚLC_ALLÚ LC_MESSAGESZLANGrBÚCrºz%s.mo) Ú_default_localedirÚosÚenvironrHr¦rdrjÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallZenvarriZnelangsZlangZnelangrJÚmofiler"r"r#rs8       rZ unspecifiedc CsD|dur t}t|||dd�}|sB|r*tƒSddlm}t|d|ƒ‚d}|D]ô} |tj | ¡f} t   | ¡} | durªt | dƒ� } t   | || ƒ¡} Wdƒn1s 0Yddl } |   | ¡} |tu�r$ddl}| dtd¡|�r$| ¡�(| d d t¡|  |¡Wdƒn1�s0Y|du�r4| }qJ| | ¡qJ|S) NT)rÅr)ÚENOENTz$No translation file found for domainÚrbzparameter codeset is deprecatedr_rxz.*\bset_output_charset\b.*)rrrÚerrnorÇÚFileNotFoundErrorr½r¿ÚabspathÚ _translationsrHÚopenÚ setdefaultÚcopyÚ _unspecifiedrSrTrUrzr{r‹rt)rÂrÃrÄZclass_rurhZmofilesrÇrJrÆÚkeyÚtrrrÏrSr"r"r#rGsD ÿ  .  ÿ ÿ*  rcCst||d|d�}| |¡dS)NT)rurh)rr)rÂrÃrhr�rÒr"r"r#rrsrZmessagescCs|dur |atSrk)Ú_current_domain)rÂr"r"r#r€srcCs|dur|t|<t |t¡Srk)Ú _localedirsrHr¼)rÂrÃr"r"r#r ‡sr cCs0ddl}| dtd¡|dur&|t|<t |¡S)Nrz'bind_textdomain_codeset() is deprecatedr_)rSrTrUÚ_localecodesetsrH)rÂrhrSr"r"r#r Žsÿr cCs8zt|t |d¡ƒ}Wnty,|YS0| |¡Srk)rrÔrHr£r )rÂrvrÒr"r"r#r ˜s   r cCsâddl}| dtd¡ddl}t |¡}zP| ¡�4| ddt¡t|t  |d¡|d�}Wdƒn1sl0YWn$t yœ|  |p”|  ¡¡YS0| ¡�(| ddt¡|  |¡WdƒS1sÔ0YdS)Nrz1ldgettext() is deprecated, use dgettext() insteadr_rxú.*\bparameter codeset\b.*©rhry)rSrTrUrrÕrHrzr{rrÔr£r|r}r)rÂrvrSrrhrÒr"r"r#rŸs&ÿ  ÿ8  ÿrcCsPzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| |||¡Sr~)rrÔrHr£r)rÂrr€r<rÒr"r"r#r ±s r c Csøddl}| dtd¡ddl}t |¡}zP| ¡�4| ddt¡t|t  |d¡|d�}Wdƒn1sl0YWn6t y®|dkr”|}n|}|  |p¦|  ¡¡YS0| ¡�,| ddt¡|  |||¡WdƒS1sê0YdS) Nrz3ldngettext() is deprecated, use dngettext() insteadr_rxrÖr×r5r‚)rSrTrUrrÕrHrzr{rrÔr£r|r}r) rÂrr€r<rSrrhrÒr„r"r"r#r»s,ÿ  ÿ8  ÿrcCs:zt|t |d¡ƒ}Wnty,|YS0| ||¡Srk)rrÔrHr£r)rÂr…rvrÒr"r"r#rÒs   rcCsRzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| ||||¡Sr~)rrÔrHr£r)rÂr…rr€r<rÒr"r"r#rÚs rcCs tt|ƒSrk)r rÓ)rvr"r"r#r åsr cCsZddl}| dtd¡| ¡�(| ddt¡tt|ƒWdƒS1sL0YdS)Nrrwr_rxz.*\bldgettext\b.*)rSrTrUrzr{rrÓ)rvrSr"r"r#rèsÿ ÿrcCstt|||ƒSrk)r rÓ)rr€r<r"r"r#rñsrcCs^ddl}| dtd¡| ¡�,| ddt¡tt|||ƒWdƒS1sP0YdS)Nrr�r_rxz.*\bldngettext\b.*)rSrTrUrzr{rrÓ)rr€r<rSr"r"r#rôsÿ ÿrcCs tt||ƒSrk)rrÓ)r…rvr"r"r#rþsrcCstt||||ƒSrk)rrÓ)r…rr€r<r"r"r#rsr)r8)NNF)N)N)N)0Ú__doc__r½rÚsysÚ__all__r¿rÀÚ base_prefixr¼ÚcompileÚVERBOSEÚDOTALLrr$r%rFr¬rGrDrVr^rjrrrrÌrÐrrrÔrÕrÓrr r r rr rrrr rrrrrrr"r"r"r#Ús\0  õ    1 $+h9 &ÿ +