3 \-]@sdZddlZddlZddlZddlZddlZddlmZddl Z dddddd d d d d dddddddddddddgZ ddZ ddZ y ddl TWnLek rd Zd!Zd"ZdZd#Zd$Zd%Zd&ZeZd'd Zdd(dZYnXd ekre Zd ekre ZeZiZe j ed)d Zd*d+Z!dd-d.Z"d/d0Z#ej$d1Z%dd2dZ&dd3d4Z'dd5dZ(dd7dZ)d8d Zd9d:Z*e+fd;dZ,dZ.eZ/d?d@Z0dAdBZ1dCdZ2dDdEZ3dFdGZ4ddJdZ5efdKdZ6ddLdZefdMd Z7ej8j9dNr ddOdZ:n8ye;Wn"ee=j?D]"\Z@ZAe@jBdqdrZ@e=jCe@eAqWdsdsdsdtdudvdwdwdxdydzdzd{d|d}d~d~dddddddddddddddddddd~ddddddddddddddddddddddddddddddddddddRddRdRd{ddRdRddddddddd{ddddddddddddddddddddddddddddddddddddddddddd{ddddddddddddddddddd{dddddddd{dd{dRd{dddddddddddddddddddddddddddd̐dddddddddddddd d d d dd d d d d d d d dddddddddddddddddd͐dddddddddddddddddddd d d d!d"d#d$d%d&d&d'd(d&d&d%d%d{dd{dd{dd)d*d)d)d+d+d+ddd,d-d-d-d.d.d-d-d-d-d-d/d/d/d0d/d1d2d3d3d4d5d5d6d6d6d7d6d6d8d8d9d:d;d;d<d<d=d>d?d@dAdBdCdDdDdEdEdDdBdBdFdFdGdHdIdIdJdKdLdMdNdNdOdPdQdQdRdRdSdTdUdUdVdVdWdWdXdYdddZd[d\d]d^d_dǐd`ddǐdadadbdcdbdbdbdbdddddededcdcdadfdfdgdhdididjdkdkdldmdndodpdqdpdrdrdsdsdsdtdudRdRdvdvdwdtdudtdxdydzdzdzd{d{d|dzd}d~d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÐdÐdĐdĐdŐdƐdǐdȐdȐdɐdɐdʐdːddd͐dddϐdϐdАdѐddddҐdҐdӐLZDdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐdddddddddddddddddddddddddddddddddddddddddddd d d d d dddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdedfdgdhdidjdkdldmdldndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddZEddZFyeWne int. Compares two strings according to the locale. )abrr/usr/lib64/python3.6/locale.py_strcoll!srcCs|S)z\ strxfrm(string) -> string. Returns a string that behaves for cmp locale-aware. r)srrr_strxfrm'sr)*cCs,dgddddgdddddddddddddS)zd localeconv() -> dict. Returns numeric and monetary locale-specific parameters. r!.)groupingcurrency_symbol n_sign_posn p_cs_precedes n_cs_precedes mon_groupingn_sep_by_space decimal_point negative_sign positive_signp_sep_by_spaceint_curr_symbol p_sign_posn thousands_sepmon_thousands_sep frac_digitsmon_decimal_pointint_frac_digitsrrrrrr ?s$cCs|dkrtddS)zd setlocale(integer,string=None) -> string. Activates/queries locale processing. Nr(Cz*_locale emulation only supports "C" locale)Nr(r<)r)categoryvaluerrrrWscCst}tr|jt|S)N) _localeconv_override_localeconvupdate)drrrr ls ccsPd}xF|D]>}|tkrdS|dkr>|dkr2tdx |Vq4W|V|}q WdS)Nrzinvalid grouping)r ValueError)r*Z last_intervalintervalrrr_grouping_intervalszs  rEFc Cst}||rdpd}||r dp"d}|s2|dfS|d dkr\|j}|t|d}|}nd}d}g}xNt|D]B} | s|d d kr|}d}P|j|| d|d| }qrW|r|j||j||j||t|t|dfS) Nr8r7r/r*rr& r( 0123456789rH)r rstriplenrEappendreversejoin) rmonetaryconvr7r*strippedZ right_spacesZ left_spacesgroupsrDrrr_groups0  rRcCsld}x$|r(||dkr(|d7}|d8}qWt|d}x$|rZ||dkrZ|d8}|d8}q8W|||dS)NrrFr&)rJ)rZamountZlposZrposrrr_strip_paddings   rSzG%(?:\((?P.*?)\))?(?P[-#0-9 +*.hlL]*?)[eEfFgGdiouxXcrs%]cGsHtj|}| s$t|jt|kr4tdt|t||||f|S)zReturns the locale-aware substitution of a %? specifier (percent). additional is for format strings which contain one or more '*' modifiers.zHformat() must be given exactly one %%char format specifier, %s not valid) _percent_rematchrJgrouprCrepr_format)percentr>r*rN additionalrUrrrrs   c Gs|r||f|}n||}|d dkr~d}|jd}|rRt|d|d\|d<}t|r^dp`d}|j|}|rt||}n2|d dkrd}|rt||d\}}|rt||}|S) Nr&ZeEfFgGrr))rNr:r1ZdiurHrH)splitrRr rMrS) rYr>r*rNrZZ formattedZsepspartsr1rrrrXs(       rXc Csttj|}tjd|}t|tjrlg}x|D]6}|jddkrP|jdq0|jt |j||q0Wnt|t s||f}g}d}xz|D]r}|jd dkr|jdq|jdj d}|jt |j|||df||d|d||d|7}qWt |}||S) zFormats a string in the same way that the % formatting would use, but takes the current locale into account. Grouping is applied if the third parameter is true.z%sr&%rZ modifiersr FrHrH) listrTfinditersub isinstance collectionsMappingrVrKrtuplecountrX) fvalr*ZpercentsZnew_fZnew_valZperciZ starcountrrrrs0        Tc Csft}||rdpd}|dkr&tdtd|t||dd}d|d }|r||rXd pZd }||d krld pnd}||d krdpd} |r|| rdpd|}n|| rdpd|}||d krdpd} ||d krdpd} | d krd|d}n`| dkr| |}nL| dkr|| }n8| dkr2|jd| }n | dkrJ|jd | }n| |}|jddjd dS)zIFormats val according to the currency settings in the current locale.r;r9r!z9Currency formatting is not possible using the 'C' locale.z%%.%ifT)rN<>r5r+rr.r-r0r4rFr(r,r6r2r3()r&r'r#r%)r rCrabsreplace) rgZsymbolr*Z internationalrOZdigitsrZsmbZprecedesZ separatedZsign_posZsignrrrrs6       cCs td|S)z8Convert float to string, taking the locale into account.z%.12g)r)rgrrrr+scCs:t}|d}|r|j|d}|d}|r6|j|d}|S)zHParses a string as a normalized number according to the locale settings.r7r(r1r))r rn)stringrOtsZddrrr delocalize/s  rqcCs |t|S)zi>iLi:iiziNi|iPiPiaiiiiHici)iiiiFikikik iiii;$i;i;i;i;i; i; i;i;iOi iiii[ili2ii$i i i i i i i i i $i (i ,i 0i 4i 8i <i @i Di Hi Li Pi TiAiiiZi(i_iIiDiJiiQiQiiBii"i.i i iCiCi*iRii4iixiji5c Csi}|fdd}||d=tdtddt\}}td|pDdtd |pRdttd tddxL|jD]@\}}t|d t|\}}td |pdtd |pdtqzWttdtddtxP|jD]D\}}t|d t|\}}td |pdtd |p"dtqWyttdWn$tdtdtdYnpXttdtddxR|jD]F\}}t|d t|\}}td |pdtd |pdtqWdS)z Test function. cSs4x.tjD] \}}|dddkr |||<q WdS)Nr#ZLC_)globalsitems) categorieskvrrr_init_categoriessz'_print_locale.._init_categoriesrz4Locale defaults as determined by getdefaultlocale():ryHz Language: z (undefined)z Encoding: zLocale settings on startup:z...z Language: z Encoding: z,Locale settings after calling resetlocale():r(zNOTE:z9setlocale(LC_ALL, "") does not support the default localez&given in the OS environment variables.z4Locale settings after calling setlocale(LC_ALL, ""):N)rurrrrrr)rrZlangencnamer=rrr _print_locale{sV              r LC_MESSAGES__main__zLocale aliasing:zNumber formatting:)N)F)FF)FF)F)TFFrrrr)r)N)T)T)T)J__doc__rr{Zencodings.aliasesrerbbuiltinsrr functools__all__rrrrrrrrrrrrrCrr rrr r r?r@wrapsrErRrScompilerTrrXrrrqfloatr r rwrrrrrrrrrr startswithrCODESET NameErrorrsortedrrrrn setdefaultrrrrK__name__rurrrr s4            " -  S 5    " }  :