a ÕDOg‚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Ú dnpgettextÚshareÚ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)NÚ WHITESPACESÚINVALIDz invalid token in plural form: %sÚ)ÚreÚfinditerÚ_token_patternÚ lastgroupÚgroupÚ ValueError)ÚpluralÚmoÚkindÚvalue©r&ú/usr/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ór7éÚorÚandz//)r*r+r1éÿÿÿÿ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 }|tvrt|}||krÐq|d vrè|d vrèd|}t ||¡}t||dƒ\} }d||| f}|}q²||kr2dkr>nnd|}|dkrž|dkržt|dƒ\} }|dkrrt|ƒ‚t|ƒ\} }d| || f}|dkržd|}||fS)Nrú!znot ú(z%s(%s)ú)z%unbalanced parenthesis in plural formÚnz%s%sé z%s%déd)ééz(%s)r9z%s %s %srDú?rú:z%s if %s else %s)ÚnextÚ_parser!Úintr)Ú _binary_opsÚ _c2py_opsÚget) ÚtokensÚpriorityÚresultÚnexttokÚsubr%Újr4r6ÚrightÚif_trueÚif_falser&r&r'rHrsP           rHcCsXz t|ƒ}Wn&ty2td|jjfƒd‚Yn0ddl}| d|jjftd¡|S)Nz'Plural value must be an integer, got %srrD)ÚroundÚ TypeErrorÚ __class__Ú__name__ÚwarningsÚwarnÚDeprecationWarning)r@r4rZr&r&r'Ú_as_int£s  ÿÿÿþr]cCs°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>r9éz%plural form expression is too complexr?r]z›if True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) ÚfuncN)Úlenr!rHr(r)r]ÚexecÚRecursionError)r"rOrPÚdepthÚcÚnsr&r&r'Úc2py¯s.   ûû  rfcCs>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) Nrr9érDú@rÚ.Ú_)rÚ normalizerÚrangeÚappendÚreverse)ÚlocrÚCOMPONENT_CODESETÚCOMPONENT_TERRITORYÚCOMPONENT_MODIFIERÚmaskÚposÚmodifierÚcodesetÚ territoryÚlanguageÚretr4Úvalr&r&r'Ú _expand_langÓsF               r{c@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Ú _fallbackrH©ÚselfÚfpr&r&r'Ú__init__ÿs zNullTranslations.__init__cCsdSr|r&rr&r&r'rHszNullTranslations._parsecCs|jr|j |¡n||_dSr|)r€Ú add_fallback)r‚Úfallbackr&r&r'r… szNullTranslations.add_fallbackcCs|jr|j |¡S|Sr|)r€r )r‚Ú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() insteadrgÚignoreú.*\blgettext\b.*) rZr[r\rr€Úcatch_warningsÚfilterwarningsrrÚencodeÚgetpreferredencoding)r‚r‡rZrr&r&r'rsÿ ÿ* zNullTranslations.lgettextcCs*|jr|j |||¡S|dkr"|S|SdS©Nr9)r€r)r‚Ú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() insteadrgr‰ú.*\blngettext\b.*r9) rZr[r\rr€r‹rŒrrrrŽ©r‚rr‘r@rZrÚtmsgr&r&r'r+s"ÿ ÿ. zNullTranslations.lngettextcCs|jr|j ||¡S|Sr|)r€r)r‚Úcontextr‡r&r&r'r=szNullTranslations.pgettextcCs,|jr|j ||||¡S|dkr$|S|SdSr)r€r)r‚r–rr‘r@r&r&r'rBs zNullTranslations.npgettextcCs|jSr|)r}©r‚r&r&r'ÚinfoJszNullTranslations.infocCs|jSr|)r~r—r&r&r'ÚcharsetMszNullTranslations.charsetcCsddl}| dtd¡|jS)Nrzoutput_charset() is deprecatedrg©rZr[r\r)r‚rZr&r&r'Úoutput_charsetPs ÿzNullTranslations.output_charsetcCs ddl}| dtd¡||_dS)Nrz"set_output_charset() is deprecatedrgrš)r‚r™rZr&r&r'Úset_output_charsetVs ÿz#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd£}|t|ƒ@D]}t||ƒ|j|<q0dS)Nrrj>rrrrr r)Úbuiltinsr Ú__dict__ÚsetÚgetattr)r‚ÚnamesrÚallowedÚnamer&r&r'r\s  zNullTranslations.install)N)N)rYÚ __module__Ú __qualname__r„rHr…r 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)rr9cCs|d?|d@fS)z/Returns a tuple of major version, minor versionéiÿÿr&)r‚Ú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…ƒ\}}||}||kr`||kr`|||…}|||…}n t dd|ƒ‚|dkrld}| d¡D]æ}| ¡ ¡}|sžq„| d¡rº| d¡rºq„d}}d|vr| dd¡\}}| ¡ ¡}| ¡}||j|<|}n|r|j|d|7<|dkr8| d¡d|_n0|dkr„| d¡}|d d¡d}t|ƒ|_q„|jpvd}d|vrÌ| 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)rI)r@r&r&r'Úr8z(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number ézFile is corruptó z #-#-#-#-#rFr9Ú z content-typezcharset=z plural-formsú;zplural=Úasciió)Ústructr©r Ú_catalogr"Úreadr`ÚLE_MAGICÚBE_MAGICÚOSErrorr¨ÚVERSIONSÚstrrlÚsplitÚdecodeÚstripÚ startswithÚendswithÚlowerr}r~rfÚ enumerate)"r‚rƒr©ÚfilenameÚcatalogÚbufÚbuflenÚmagicr§ÚmsgcountÚ masteridxÚtransidxÚiiÚ major_versionÚ minor_versionr4ÚmlenÚmoffÚmendÚtlenÚtoffÚtendÚmsgr•ÚlastkÚb_itemÚitemÚkÚvr"r™rr‘Úxr&r&r'rHvsv                      zGNUTranslations._parsecCspddl}| dtd¡ddl}tƒ}|j ||¡}||urP|jrL|j |¡S|}|j rb|  |j ¡S|  |  ¡¡S)Nrrˆrg) rZr[r\rÚobjectr²rLr€rrrrŽ)r‚r‡rZrÚ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’rgr9) rZr[r\rr²r"ÚKeyErrorr€rrrrŽr”r&r&r'rÞs ÿ   zGNUTranslations.lngettextcCs6tƒ}|j ||¡}||ur2|jr.|j |¡S|S|Sr|)rØr²rLr€r )r‚r‡rÙr•r&r&r'r ðs zGNUTranslations.gettextcCs\z|j|| |¡f}Wn>tyV|jr@|j |||¡YS|dkrN|}n|}Yn0|Sr)r²r"rÚr€r)r‚rr‘r@r•r&r&r'rùs  zGNUTranslations.ngettextcCsF|j||f}tƒ}|j ||¡}||urB|jr>|j ||¡S|S|Sr|)ÚCONTEXTrØr²rLr€r)r‚r–r‡Ú 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²r"rÚr€r)r‚r–rr‘r@rÜr•r&r&r'rs  zGNUTranslations.npgettextN)rYr¤r¥r´rµrÛr·r¨rHrrr 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)ÚLANGUAGEÚLC_ALLÚ LC_MESSAGESÚLANGrFÚCrßz%s.mo) Ú_default_localedirÚosÚenvironrLr¹rmr{ÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallÚenvarrzÚnelangsÚlangÚnelangrOÚmofiler&r&r'rs8       rÚ unspecifiedc CsD|dur t}t|||dd}|sB|r*tƒSddlm}t|d|ƒ‚d}|D]ô} |tj | ¡f} t   | ¡} | durªt | dƒ } t   | || ƒ¡} Wdƒn1s 0Yddl } |   | ¡} |tur$ddl}| dtd¡|r$| ¡(| d d t¡|  |¡Wdƒn1s0Y|dur4| }qJ| | ¡qJ|S) NT)rër)ÚENOENTz$No translation file found for domainÚrbzparameter codeset is deprecatedrgr‰z.*\bset_output_charset\b.*)rrrÚerrnoròÚFileNotFoundErrorrãråÚabspathÚ _translationsrLÚopenÚ setdefaultÚcopyÚ _unspecifiedrZr[r\r‹rŒrœr…)rèrérêÚclass_r†rvÚmofilesròrOrðÚkeyÚtrƒrúrZr&r&r'rGsD ÿ  .  ÿ ÿ*  rcCst||d|d}| |¡dS)NT)r†rv)rr)rèrérvr¡rÿr&r&r'rrsrÚmessagescCs|dur |atSr|)Ú_current_domain)rèr&r&r'r€srcCs|dur|t|<t |t¡Sr|)Ú _localedirsrLrâ)rèrér&r&r'r ‡sr cCs0ddl}| dtd¡|dur&|t|<t |¡S)Nrz'bind_textdomain_codeset() is deprecatedrg)rZr[r\Ú_localecodesetsrL)rèrvrZr&r&r'r Žsÿr cCs8zt|t |d¡ƒ}Wnty,|YS0| |¡Sr|)rrrLr¶r )rèr‡rÿ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() insteadrgr‰ú.*\bparameter codeset\b.*©rvrŠ)rZr[r\rrrLr‹rŒrrr¶rrŽr)rèr‡rZrrvrÿr&r&r'rŸs&ÿ  ÿ8  ÿrcCsPzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| |||¡Sr)rrrLr¶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() insteadrgr‰rrr9r“)rZr[r\rrrLr‹rŒrrr¶rrŽr) rèrr‘r@rZrrvrÿr•r&r&r'r»s,ÿ  ÿ8  ÿrcCs:zt|t |d¡ƒ}Wnty,|YS0| ||¡Sr|)rrrLr¶r)rèr–r‡rÿr&r&r'rÒs   rcCsRzt|t |d¡ƒ}Wn*ty@|dkr4|YS|YSYn0| ||||¡Sr)rrrLr¶r)rèr–rr‘r@rÿr&r&r'rÚs rcCs tt|ƒSr|)r r)r‡r&r&r'r åsr cCsZddl}| dtd¡| ¡(| ddt¡tt|ƒWdƒS1sL0YdS)Nrrˆrgr‰z.*\bldgettext\b.*)rZr[r\r‹rŒrr)r‡rZr&r&r'rèsÿ ÿrcCstt|||ƒSr|)r r)rr‘r@r&r&r'rñsrcCs^ddl}| dtd¡| ¡,| ddt¡tt|||ƒWdƒS1sP0YdS)Nrr’rgr‰z.*\bldngettext\b.*)rZr[r\r‹rŒrr)rr‘r@rZr&r&r'rôsÿ ÿrcCs tt||ƒSr|)rr)r–r‡r&r&r'rþsrcCstt||||ƒSr|)rr)r–rr‘r@r&r&r'rsr)r<)NNF)N)N)N)0Ú__doc__rãrÚsysÚ__all__råræÚ base_prefixrâÚcompileÚVERBOSEÚDOTALLrr(r)rJr¿rKrHr]rfr{rrrr÷rûrrrrrrr r r rr rrrr rrrrrrr&r&r&r'Ús\0  õ    1 $+h9 &ÿ +