a DOgj@sddlZddlZddlZgdZejejddZedej ej BZ ddZ dd Z d Zd d eed DZddddZdFddZddZddZddZGdddZGdddeZdGd d!ZiZd"gZddddefd#d$Zdedfd%d&Ziaiad'adHd(d)ZdId*d+Z dJd,d-Z!d.d/Z"d0d1Z#d2d3Z$d4d5Z%d6d7Z&d8d9Z'd:d;Z(dd?Z*d@dAZ+dBdCZ,dDdEZ-eZ.dS)KN)NullTranslationsGNUTranslationsCatalogfind translationinstall textdomainbindtextdomainbind_textdomain_codesetdgettext dngettextgettextlgettext ldgettext ldngettext lngettextngettextpgettext dpgettext npgettext dnpgettextZsharelocalea (?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 ccsPtt|D]8}|j}|dkr q ||}|dkr>td||Vq dVdS)NZ WHITESPACESZINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralZmokindvaluer",/opt/alt/python39/lib64/python3.9/gettext.py _tokenizeVs  r$cCs|rtd|StdSdS)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").0iopsopr"r"r# or3orandz//)r&r'r-c Csd}t|}|dkr&|d7}t|}q |dkrXt|\}}d||f}|dkrtdnN|dkrnd ||f}n8zt|d }Wntyt|dYn0d ||f}t|}d }|tvrt|}||krАq|d vr|d vrd|}t||}t||d\} }d||| f}|}q||kr2dkr>nnd|}|dkr|dkrt|d\} }|dkrrt|t|\} }d| || f}|dkrd|}||fS)Nr!znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s z%s%dd)z(%s)r5z%s %s %sr@?r:z%s if %s else %s)next_parserintr% _binary_ops _c2py_opsget) tokensZpriorityresultnexttoksubr!jr0r2rightZif_trueZif_falser"r"r#rDrsP           rDcCsXz t|}Wn&ty2td|jjfdYn0ddl}|d|jjftd|S)Nz'Plural value must be an integer, got %srr@)round TypeError __class____name__warningswarnDeprecationWarning)r<r0rSr"r"r#_as_ints  rVcCst|dkrtdz|tt|\}}|r2t|d}|D]6}|dkr`|d7}|dkrptdq:|dkr:|d8}q:d ti}td |||d WStytdYn0dS) Niz"plural form expression is too longrr:r5z%plural form expression is too complexr;rVzif True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) func)lenrrDr$r%rVexecRecursionError)rrJrKZdepthcnsr"r"r#c2pys.     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|dD]R} | |@s| } | |@r| | 7} | |@r| |7} | |@r&| |7} | | q| | S) Nrr5r@@r._)rZ normalizerrangeappendreverse)ZlocrZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERmaskposZmodifiercodesetZ territoryZlanguageZretr0valr"r"r# _expand_langsF               rjc@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZdddZdS) rNcCs.i|_d|_d|_d|_|dur*||dSN)_info_charset_output_charset _fallbackrDselffpr"r"r#__init__s zNullTranslations.__init__cCsdSrkr"rpr"r"r#rDszNullTranslations._parsecCs|jr|j|n||_dSrk)ro add_fallback)rqfallbackr"r"r#rt szNullTranslations.add_fallbackcCs|jr|j|S|Srk)ror )rqmessager"r"r#r s zNullTranslations.gettextcCsddl}|dtdddl}|jrf|*|ddt|j|WdS1s\0Y|jrx| |jS| | S)Nr/lgettext() is deprecated, use gettext() insteadr_ignore.*\blgettext\b.*) rSrTrUrrocatch_warningsfilterwarningsrrnencodegetpreferredencoding)rqrvrSrr"r"r#rs * zNullTranslations.lgettextcCs*|jr|j|||S|dkr"|S|SdSNr5)ror)rqmsgid1msgid2r<r"r"r#r#s zNullTranslations.ngettextcCsddl}|dtdddl}|jrj|.|ddt|j|||WdS1s`0Y|dkrx|}n|}|jr| |jS| | S)Nr1lngettext() is deprecated, use ngettext() insteadr_rx.*\blngettext\b.*r5) rSrTrUrrorzr{rrnr|r}rqrrr<rSrtmsgr"r"r#r+s" . zNullTranslations.lngettextcCs|jr|j||S|Srk)ror)rqcontextrvr"r"r#r=szNullTranslations.pgettextcCs,|jr|j||||S|dkr$|S|SdSr~)ror)rqrrrr<r"r"r#rBs zNullTranslations.npgettextcCs|jSrk)rlrqr"r"r#infoJszNullTranslations.infocCs|jSrk)rmrr"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)rqrrSr"r"r#set_output_charsetVs z#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd}|t|@D]}t|||j|<q0dS)Nrrb>rrrrrr )builtinsr __dict__setgetattr)rqnamesrZallowednamer"r"r#r\s  zNullTranslations.install)N)N)rR __module__ __qualname__rsrDrtr rrrrrrrrrrr"r"r"r#rs rc@s\eZdZdZdZdZdZddZddZd d Z d d Z d dZ ddZ ddZ ddZdS)rl*l$<z%s%s)rr5cCs|d?|d@fS)Nir")rqversionr"r"r# _get_versionsrszGNUTranslations._get_versionsc"Csddlm}t|dd}i|_}dd|_|}t|}|d|ddd}||jkr||d |dd \}} } } d } n6||jkr|d |dd \}} } } d } n t dd|| |\} }| |j vrt ddt | |t d| D]}|| || | d\}}||}|| || | d\}}||}||kr`||kr`|||}|||}n t dd||dkrld}|dD]}|}|sq|dr|drqd}}d|vr|dd\}}|}|}||j|<|}n|r|j|d|7<|dkr8|dd|_n0|dkr|d}|ddd}t||_q|jpvd}d|vr|d\}} |d}t ||}t|D]\}}!t |!||||f<qnt |||t ||<| d7} | d7} qdS)Nr)unpackrrcSs t|dkSr~)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)Zstructrr_catalogrreadrYLE_MAGICBE_MAGICOSErrorrVERSIONSstrrcsplitdecodestrip startswithendswithlowerrlrmr^ enumerate)"rqrrrfilenameZcatalogZbufZbuflenmagicrZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr0ZmlenZmoffZmendZtlenZtoffZtendmsgrZlastkZb_itemitemkvrrrrxr"r"r#rDvsv                      zGNUTranslations._parsecCspddl}|dtdddl}t}|j||}||urP|jrL|j|S|}|j rb| |j S| | S)Nrrwr_) rSrTrUrobjectrrHrorrnr|r})rqrvrSrmissingrr"r"r#rs  zGNUTranslations.lgettextcCsddl}|dtdddl}z|j|||f}Wn>tyt|jr^|j|||YS|dkrl|}n|}Yn0|j r| |j S| | S)Nrrr_r5) rSrTrUrrrKeyErrorrorrnr|r}rr"r"r#rs    zGNUTranslations.lngettextcCs6t}|j||}||ur2|jr.|j|S|S|Srk)rrrHror )rqrvrrr"r"r#r s zGNUTranslations.gettextcCs\z|j|||f}Wn>tyV|jr@|j|||YS|dkrN|}n|}Yn0|Sr~)rrrror)rqrrr<rr"r"r#rs  zGNUTranslations.ngettextcCsF|j||f}t}|j||}||urB|jr>|j||S|S|Srk)CONTEXTrrrHror)rqrrv ctxt_msg_idrrr"r"r#rszGNUTranslations.pgettextc Csl|j||f}z|j|||f}Wn@tyf|jrP|j||||YS|dkr^|}n|}Yn0|Sr~)rrrrror)rqrrrr<rrr"r"r#rs  zGNUTranslations.npgettextN)rRrrrrrrrrDrrr rrrr"r"r"r#rfsY   rFc Cs|dur t}|durRg}dD]"}tj|}|r|d}q@qd|vrR|dg}|D]$}t|D]}||vrf||qfqZ|rg} nd} |D]J}|dkrqtj||dd|} tj | r|r| | q| Sq| S)N)ZLANGUAGELC_ALL LC_MESSAGESZLANGrBCrz%s.mo) _default_localedirosenvironrHrrdrjpathjoinexists) domain localedir languagesallZenvarriZnelangsZlangZnelangrJmofiler"r"r#rs8       rZ unspecifiedc CsD|dur t}t|||dd}|sB|r*tSddlm}t|d|d}|D]} |tj| f} t | } | durt | d } t | || } Wdn1s0Yddl } | | } |tur$ddl}|dtd|r$|(|d d t| |Wdn1s0Y|dur4| }qJ|| qJ|S) NT)rr)ENOENTz$No translation file found for domainrbzparameter codeset is deprecatedr_rxz.*\bset_output_charset\b.*)rrrerrnorFileNotFoundErrorrrabspath _translationsrHopen setdefaultcopy _unspecifiedrSrTrUrzr{rrt)rrrZclass_rurhZmofilesrrJrkeytrrrrSr"r"r#rGsD   .   *  rcCst||d|d}||dS)NT)rurh)rr)rrrhrrr"r"r#rrsrZmessagescCs|dur |atSrk)_current_domain)rr"r"r#rsrcCs|dur|t|<t|tSrk) _localedirsrHr)rrr"r"r#r sr cCs0ddl}|dtd|dur&|t|<t|S)Nrz'bind_textdomain_codeset() is deprecatedr_)rSrTrU_localecodesetsrH)rrhrSr"r"r#r sr cCs8zt|t|d}Wnty,|YS0||Srk)rrrHrr )rrvrr"r"r#r s   r cCsddl}|dtdddl}t|}zP|4|ddtt|t |d|d}Wdn1sl0YWn$t y| |p| YS0|(|ddt| |WdS1s0YdS)Nrz1ldgettext() is deprecated, use dgettext() insteadr_rx.*\bparameter codeset\b.*rhry)rSrTrUrrrHrzr{rrrr|r}r)rrvrSrrhrr"r"r#rs&  8  rcCsPzt|t|d}Wn*ty@|dkr4|YS|YSYn0||||Sr~)rrrHrr)rrrr<rr"r"r#r s r c Csddl}|dtdddl}t|}zP|4|ddtt|t |d|d}Wdn1sl0YWn6t y|dkr|}n|}| |p| YS0|,|ddt| |||WdS1s0YdS) Nrz3ldngettext() is deprecated, use dngettext() insteadr_rxrrr5r)rSrTrUrrrHrzr{rrrr|r}r) rrrr<rSrrhrrr"r"r#rs,  8  rcCs:zt|t|d}Wnty,|YS0|||Srk)rrrHrr)rrrvrr"r"r#rs   rcCsRzt|t|d}Wn*ty@|dkr4|YS|YSYn0|||||Sr~)rrrHrr)rrrrr<rr"r"r#rs rcCs tt|Srk)r r)rvr"r"r#r sr cCsZddl}|dtd|(|ddttt|WdS1sL0YdS)Nrrwr_rxz.*\bldgettext\b.*)rSrTrUrzr{rr)rvrSr"r"r#rs rcCstt|||Srk)r r)rrr<r"r"r#rsrcCs^ddl}|dtd|,|ddttt|||WdS1sP0YdS)Nrrr_rxz.*\bldngettext\b.*)rSrTrUrzr{rr)rrr<rSr"r"r#rs rcCs tt||Srk)rr)rrvr"r"r#rsrcCstt||||Srk)rr)rrrr<r"r"r#rsr)r8)NNF)N)N)N)/rrsys__all__rr base_prefixrcompileVERBOSEDOTALLrr$r%rFrrGrDrVr^rjrrrrrrrrrrrr r r rr rrrr rrrrrrr"r"r"r#1sZ      1 $+h9 & +