a 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Ú.Ú_)rÚ normalizerÚrangeÚappendÚreverse)ZlocrZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERÚmaskÚposZmodifierÚcodesetZ territoryZlanguageZretr0Úvalr"r"r#Ú _expand_langÓsF               rkc@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__cCsdSrlr"rqr"r"r#rDszNullTranslations._parsecCs|jr|j |¡n||_dSrl)rpÚ add_fallback)rrÚfallbackr"r"r#ru szNullTranslations.add_fallbackcCs|jr|j |¡S|Srl)rpr )rrÚ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.*) rSrTrUrrpÚcatch_warningsÚfilterwarningsrroÚencodeÚgetpreferredencoding)rrrwrSrr"r"r#rsÿ ÿ* zNullTranslations.lgettextcCs*|jr|j |||¡S|dkr"|S|SdS©Nr5)rpr)rrÚ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_ryú.*\blngettext\b.*r5) rSrTrUrrpr{r|rror}r~©rrr€r�r<rSrÚtmsgr"r"r#r+s"ÿ ÿ. zNullTranslations.lngettextcCs|jr|j ||¡S|Srl)rpr)rrÚcontextrwr"r"r#r=szNullTranslations.pgettextcCs,|jr|j ||||¡S|dkr$|S|SdSr)rpr)rrr†r€r�r<r"r"r#rBs zNullTranslations.npgettextcCs|jSrl)rm©rrr"r"r#ÚinfoJszNullTranslations.infocCs|jSrl)rnr‡r"r"r#ÚcharsetMszNullTranslations.charsetcCsddl}| dtd¡|jS)Nrzoutput_charset() is deprecatedr_©rSrTrUro)rrrSr"r"r#Úoutput_charsetPs ÿzNullTranslations.output_charsetcCs ddl}| dtd¡||_dS)Nrz"set_output_charset() is deprecatedr_rŠ)rrr‰rSr"r"r#Úset_output_charsetVs ÿz#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd£}|t|ƒ@D]}t||ƒ|j|<q0dS)Nrrb>rrrr rr)Úbuiltinsr Ú__dict__ÚsetÚgetattr)rrÚnamesr�ZallowedÚnamer"r"r#r\s  zNullTranslations.install)N)N)rRÚ __module__Ú __qualname__rtrDrur 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")rrÚ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ÚstrrdÚsplitÚdecodeÚstripÚ startswithÚendswithÚlowerrmrnr^Ú enumerate)"rrrsr˜ÚfilenameZcatalogZbufZbuflenÚmagicr–ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr0ZmlenZmoffZmendZtlenZtoffZtendÚmsgr…ZlastkZb_itemÚitemÚkÚvrr‰r€r�Úxr"r"r#rDvsv                      zGNUTranslations._parsecCspddl}| dtd¡ddl}tƒ}|j ||¡}||urP|jrL|j |¡S|}|j rb|  |j ¡S|  |  ¡¡S)Nrrxr_) rSrTrUrÚobjectr rHrprror}r~)rrrwrSrÚ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ÚKeyErrorrprror}r~r„r"r"r#rÞs ÿ   zGNUTranslations.lngettextcCs6tƒ}|j ||¡}||ur2|jr.|j |¡S|S|Srl)rµr rHrpr )rrrwr¶r…r"r"r#r ðs zGNUTranslations.gettextcCs\z|j|| |¡f}Wn>tyV|jr@|j |||¡YS|dkrN|}n|}Yn0|Sr)r rr·rpr)rrr€r�r<r…r"r"r#rùs  zGNUTranslations.ngettextcCsF|j||f}tƒ}|j ||¡}||urB|jr>|j ||¡S|S|Srl)ÚCONTEXTrµr rHrpr)rrr†rwÚ 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·rpr)rrr†r€r�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§rerkÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallZenvarrjZnelangsZlangZnelangrJÚ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_ryz.*\bset_output_charset\b.*)rrrÚerrnorÈÚFileNotFoundErrorr¾rÀÚabspathÚ _translationsrHÚopenÚ setdefaultÚcopyÚ _unspecifiedrSrTrUr{r|rŒru)rÃrÄrÅZclass_rvriZmofilesrÈrJrÇÚkeyÚtrsrÐrSr"r"r#rGsD ÿ  .  ÿ ÿ*  rcCst||d|d�}| |¡dS)NT)rvri)rr)rÃrÄrir‘rÓr"r"r#rrsrZmessagescCs|dur |atSrl)Ú_current_domain)rÃr"r"r#r€srcCs|dur|t|<t |t¡Srl)Ú _localedirsrHr½)rÃrÄr"r"r#r ‡sr cCs0ddl}| dtd¡|dur&|t|<t |¡S)Nrz'bind_textdomain_codeset() is deprecatedr_)rSrTrUÚ_localecodesetsrH)rÃrirSr"r"r#r Žsÿr cCs8zt|t |d¡ƒ}Wnty,|YS0| |¡Srl)rrÕrHr¤r )rÃrwrÓ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_ryú.*\bparameter codeset\b.*©rirz)rSrTrUrrÖrHr{r|rrÕr¤r}r~r)rÃrwrSrrirÓr"r"r#rŸs&ÿ  ÿ8  ÿrcCsPzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| |||¡Sr)rrÕrHr¤r)rÃr€r�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_ryr×rØr5rƒ)rSrTrUrrÖrHr{r|rrÕr¤r}r~r) rÃr€r�r<rSrrirÓr…r"r"r#r»s,ÿ  ÿ8  ÿrcCs:zt|t |d¡ƒ}Wnty,|YS0| ||¡Srl)rrÕrHr¤r)rÃr†rwrÓr"r"r#rÒs   rcCsRzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| ||||¡Sr)rrÕrHr¤r)rÃr†r€r�r<rÓr"r"r#rÚs rcCs tt|ƒSrl)r rÔ)rwr"r"r#r åsr cCsZddl}| dtd¡| ¡�(| ddt¡tt|ƒWdƒS1sL0YdS)Nrrxr_ryz.*\bldgettext\b.*)rSrTrUr{r|rrÔ)rwrSr"r"r#rèsÿ ÿrcCstt|||ƒSrl)r rÔ)r€r�r<r"r"r#rñsrcCs^ddl}| dtd¡| ¡�,| ddt¡tt|||ƒWdƒS1sP0YdS)Nrr‚r_ryz.*\bldngettext\b.*)rSrTrUr{r|rrÔ)r€r�r<rSr"r"r#rôsÿ ÿrcCs tt||ƒSrl)rrÔ)r†rwr"r"r#rþsrcCstt||||ƒSrl)rrÔ)r†r€r�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^rkrrrrÍrÑrrrÕrÖrÔrr r r rr rrrr rrrrrrr"r"r"r#Ús\0  õ    1 $+h9 &ÿ +