3 X\0X!D@sdZddlmZmZddlmZedZd!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdCZddZGddde Z efddZ d S)ez babel.messages.plurals ~~~~~~~~~~~~~~~~~~~~~~ Plural form definitions. :copyright: (c) 2013 by the Babel Team. :license: BSD, see LICENSE for more details. )default_localeLocale) itemgetterLC_CTYPE(n != 1)[(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=0 && n%100<=2 ? 4 : 5)R(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)0&(n==1 ? 0 : n%10==1 && n%100!=11 && n%100!=71 && n%100!=91 ? 1 : n%10==2 && n%100!=12 && n%100!=72 && n%100!=92 ? 2 : (n%10==3 || n%10==4 || n%10==9) && n%100!=13 && n%100!=14 && n%100!=19 && n%100!=73 && n%100!=74 && n%100!=79 && n%100!=93 && n%100!=94 && n%100!=99 ? 3 : n%1000000==0 ? 4 : 5)%((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)/(n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 0)(n > 1)@(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)(n%10==1 && n%100!=11 ? 0 : 1)G(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)+(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)S(n==1 ? 0 : n==0 || ( n%100=>1 && n%100<=10) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)B(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)8(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2)<(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3))CZafarZbeZbgZbnZbobrZbsZcaZcsZcvZcyZdaZdeZdzZelZenZeoZesZetZeuZfaZfifrZfurZgaZglZhaZhehiZhrZhuZhyisitZjaZkaZkgZkmZkoZkuloltZlvZmtZnbnlZnnnoZpaZplZptZpt_BRZroZruZskZslsrstZsvZthZtrZukZveZviZxhZzhc@sLeZdZdZfZeedddZeedddZeddd dZ d d Z d S) _PluralTuplez A tuple with plural information.rz. The number of plurals used by the locale.)docr z. The plural expression used by the locale.cCsd|S)Nznplurals=%s; plural=%s;)xr*r*/usr/lib/python3.6/plurals.pysz_PluralTuple.z9 The plural expression used by the catalog or locale.cCs|jS)N) plural_forms)selfr*r*r,__str__sz_PluralTuple.__str__N) __name__ __module__ __qualname____doc__ __slots__propertyrZ num_pluralsZ plural_exprr.r0r*r*r*r,r(sr(cCs`tj|}ytt|}Wn<tk rVyt|j}Wntk rPt}YnXYnXt|S)aA tuple with the information catalogs need to perform proper pluralization. The first item of the tuple is the number of plural forms, the second the plural expression. >>> get_plural(locale='en') (2, '(n != 1)') >>> get_plural(locale='ga') (5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)') The object returned is a special tuple with additional members: >>> tup = get_plural("ja") >>> tup.num_plurals 1 >>> tup.plural_expr '0' >>> tup.plural_forms 'nplurals=1; plural=0;' Converting the tuple into a string prints the plural forms for a gettext catalog: >>> str(tup) 'nplurals=1; plural=0;' )rparsePLURALSstrKeyErrorZlanguageDEFAULT_PLURALr()Zlocaletupr*r*r, get_plurals r=N)rr)rr )r r )rr)rr)r r )rr)r r )rr)r r)r r )rr)rr)rr)r r )rr)rr)rr)rr)rr)rr)r r )rr)rr)rr)rr)rr)rr)rr)rr)r r )r r )r r )rr)rr)r r )r r )rr)r r )r r )rr)r r )r r)r r)rr)rr)rr)rr)rr)rr)r r)rr)rr)r r)r r )r r)rr)r r )rr)rr)r r )r r )r r )rr)r r )rr)r r )rr) r4Z babel.corerroperatorrrr8r;tupler(r=r*r*r*r, s