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 dnpgettextsharelocalea (?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)N WHITESPACESINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralmokindvaluer&/usr/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' or7orandz//)r*r+r1c 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)r9z%s %s %srD?r:z%s if %s else %s)next_parser!intr) _binary_ops _c2py_opsget) tokenspriorityresultnexttoksubr%jr4r6rightif_trueif_falser&r&r'rHrsP           rHcCsXz t|}Wn&ty2td|jjfdYn0ddl}|d|jjftd|S)Nz'Plural value must be an integer, got %srrD)round TypeError __class____name__warningswarnDeprecationWarning)r@r4rZr&r&r'_as_ints  r]cCst|dkrtdz|tt|\}}|r2t|d}|D]6}|dkr`|d7}|dkrptdq:|dkr:|d8}q:d ti}td |||d WStytdYn0dS) Niz"plural form expression is too longrr>r9z%plural form expression is too complexr?r]zif True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) func)lenr!rHr(r)r]execRecursionError)r"rOrPdepthcnsr&r&r'c2pys.     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|dD]R} | |@s| } | |@r| | 7} | |@r| |7} | |@r&| |7} | | q| | S) Nrr9rD@r._)r normalizerrangeappendreverse)locrCOMPONENT_CODESETCOMPONENT_TERRITORYCOMPONENT_MODIFIERmaskposmodifiercodeset territorylanguageretr4valr&r&r' _expand_langsF               r{c@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZdddZdS) rNcCs.i|_d|_d|_d|_|dur*||dSN)_info_charset_output_charset _fallbackrHselffpr&r&r'__init__s zNullTranslations.__init__cCsdSr|r&rr&r&r'rHszNullTranslations._parsecCs|jr|j|n||_dSr|)r add_fallback)rfallbackr&r&r'r szNullTranslations.add_fallbackcCs|jr|j|S|Sr|)rr )rmessager&r&r'r s zNullTranslations.gettextcCsddl}|dtdddl}|jrf|*|ddt|j|WdS1s\0Y|jrx| |jS| | S)Nr/lgettext() is deprecated, use gettext() insteadrgignore.*\blgettext\b.*) rZr[r\rrcatch_warningsfilterwarningsrrencodegetpreferredencoding)rrrZrr&r&r'rs * zNullTranslations.lgettextcCs*|jr|j|||S|dkr"|S|SdSNr9)rr)rmsgid1msgid2r@r&r&r'r#s zNullTranslations.ngettextcCsddl}|dtdddl}|jrj|.|ddt|j|||WdS1s`0Y|dkrx|}n|}|jr| |jS| | S)Nr1lngettext() is deprecated, use ngettext() insteadrgr.*\blngettext\b.*r9) rZr[r\rrrrrrrrrrrr@rZrtmsgr&r&r'r+s" . zNullTranslations.lngettextcCs|jr|j||S|Sr|)rr)rcontextrr&r&r'r=szNullTranslations.pgettextcCs,|jr|j||||S|dkr$|S|SdSr)rr)rrrrr@r&r&r'rBs zNullTranslations.npgettextcCs|jSr|)r}rr&r&r'infoJszNullTranslations.infocCs|jSr|)r~rr&r&r'charsetMszNullTranslations.charsetcCsddl}|dtd|jS)Nrzoutput_charset() is deprecatedrgrZr[r\r)rrZr&r&r'output_charsetPs zNullTranslations.output_charsetcCs ddl}|dtd||_dS)Nrz"set_output_charset() is deprecatedrgr)rrrZr&r&r'set_output_charsetVs z#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd}|t|@D]}t|||j|<q0dS)Nrrj>rr rrrr)builtinsr __dict__setgetattr)rnamesrallowednamer&r&r'r\s  zNullTranslations.install)N)N)rY __module__ __qualname__rrHrr rrrrrrrrrrr&r&r&r'rs rc@s\eZdZdZdZdZdZddZddZd d Z d d Z d dZ ddZ ddZ ddZdS)rl*l$<z%s%s)rr9cCs|d?|d@fS)Nir&)rversionr&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)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)structrr_catalogr"readr`LE_MAGICBE_MAGICOSErrorrVERSIONSstrrlsplitdecodestrip startswithendswithlowerr}r~rf enumerate)"rrrfilenamecatalogbufbuflenmagicrmsgcount masteridxtransidxii major_version minor_versionr4mlenmoffmendtlentofftendmsgrlastkb_itemitemkvr"rrrxr&r&r'rHvsv                      zGNUTranslations._parsecCspddl}|dtdddl}t}|j||}||urP|jrL|j|S|}|j rb| |j S| | S)Nrrrg) rZr[r\robjectrrLrrrrr)rrrZrmissingrr&r&r'rs  zGNUTranslations.lgettextcCsddl}|dtdddl}z|j|||f}Wn>tyt|jr^|j|||YS|dkrl|}n|}Yn0|j r| |j S| | S)Nrrrgr9) rZr[r\rrr"KeyErrorrrrrrrr&r&r'rs    zGNUTranslations.lngettextcCs6t}|j||}||ur2|jr.|j|S|S|Sr|)rrrLrr )rrrrr&r&r'r s zGNUTranslations.gettextcCs\z|j|||f}Wn>tyV|jr@|j|||YS|dkrN|}n|}Yn0|Sr)rr"rrr)rrrr@rr&r&r'rs  zGNUTranslations.ngettextcCsF|j||f}t}|j||}||urB|jr>|j||S|S|Sr|)CONTEXTrrrLrr)rrr ctxt_msg_idrrr&r&r'rszGNUTranslations.pgettextc Csl|j||f}z|j|||f}Wn@tyf|jrP|j||||YS|dkr^|}n|}Yn0|Sr)rrr"rrr)rrrrr@rrr&r&r'rs  zGNUTranslations.npgettextN)rYrrrrrrrrHrrr 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)LANGUAGELC_ALL LC_MESSAGESLANGrFCrz%s.mo) _default_localedirosenvironrLrrmr{pathjoinexists) domain localedir languagesallenvarrznelangslangnelangrOmofiler&r&r'rs8       r 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 deprecatedrgrz.*\bset_output_charset\b.*)rrrerrnorFileNotFoundErrorrrabspath _translationsrLopen setdefaultcopy _unspecifiedrZr[r\rrrr)rrrclass_rrvmofilesrrOrkeytrrrZr&r&r'rGsD   .   *  rcCst||d|d}||dS)NT)rrv)rr)rrrvrrr&r&r'rrsrmessagescCs|dur |atSr|)_current_domain)rr&r&r'rsrcCs|dur|t|<t|tSr|) _localedirsrLr)rrr&r&r'r sr cCs0ddl}|dtd|dur&|t|<t|S)Nrz'bind_textdomain_codeset() is deprecatedrg)rZr[r\_localecodesetsrL)rrvrZr&r&r'r sr cCs8zt|t|d}Wnty,|YS0||Sr|)rrrLrr )rrrr&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() insteadrgr.*\bparameter codeset\b.*rvr)rZr[r\rrrLrrrrrrrr)rrrZrrvrr&r&r'rs&  8  rcCsPzt|t|d}Wn*ty@|dkr4|YS|YSYn0||||Sr)rrrLrr)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() insteadrgrrrr9r)rZr[r\rrrLrrrrrrrr) rrrr@rZrrvrrr&r&r'rs,  8  rcCs:zt|t|d}Wnty,|YS0|||Sr|)rrrLrr)rrrrr&r&r'rs   rcCsRzt|t|d}Wn*ty@|dkr4|YS|YSYn0|||||Sr)rrrLrr)rrrrr@rr&r&r'rs rcCs tt|Sr|)r r)rr&r&r'r sr cCsZddl}|dtd|(|ddttt|WdS1sL0YdS)Nrrrgrz.*\bldgettext\b.*)rZr[r\rrrr)rrZr&r&r'rs rcCstt|||Sr|)r r)rrr@r&r&r'rsrcCs^ddl}|dtd|,|ddttt|||WdS1sP0YdS)Nrrrgrz.*\bldngettext\b.*)rZr[r\rrrr)rrr@rZr&r&r'rs rcCs tt||Sr|)rr)rrr&r&r'rsrcCstt||||Sr|)rr)rrrr@r&r&r'rsr)r<)NNF)N)N)N)/rrsys__all__rr base_prefixrcompileVERBOSEDOTALLrr(r)rJrrKrHr]rfr{rrrrrrrrrrrr r r rr rrrr rrrrrrr&r&r&r'1sZ      1 $+h9 & +