
    %iZS                        d dl mZ ddlmZ ddlmZmZ d d d d ddd d ddd d dddZi dd d	d d
d dd ddddddddddddddddddddddddddddddddddZdZ	dZ
dZdZd Ze	e
eefd Zg d!g d"g d#g d$d%d&gd'd(d)d*ggg d+g d,gg d-d.gdz  d/gz   d0gdz  d1gz   d.d2gd.d3gd2d/gd4gdz  d5gz   d.gdz  d/gz   gd6gdz  d7gz   d8gdz  d9gz   d:gdz  d;gz   d8d6gd8d6gd6d9gd<gdz  d=gz   d8gdz  d9gz   gd>gdz  d?gz   d@gdz  dAgz   dBgdz  dCgz   d@d>gd@d>gd>dAgdDgdz  dEgz   d@gdz  dAgz   gg dFg dGg dHg dIg dJdK
ZdLdMdNdOdPdQdRdSdTdU	Zd dd ddd d d ddU	ZdVdWdXdYdZd[gg d\g d]d^dVdWdXgd_dZd`d[ggg dag dbgZdc Zdd Zdg deg dfg dgdhdigdjdkdldmggg dng dogiZej-                   eee             d&d3d6dpdPdQdqdrdTds	Zg dtZd g duiZej-                  ej5                         D  ci c]  \  } }| eD cg c]  }||z   	 c} c}}}        d dviZej-                  ej5                         D  ci c]  \  } }| |dwz    c}}         eed      Zg dxg dyg dzg d{g d|g d}g d~g ddZdddddddddZddd ddddddZ eee      Z g dg dg dg dg dg dg dg dg dds	Z!e!j5                         D  ci c]  \  } }| | dk7  r|d   nd c}} Z" ee"d      Z#dddddddddd	Z$g dZ%dg dg dg dg dg dg dgiZ&e&j-                  e$j5                         D  ci c])  \  } }| e%D cg c]  }|D cg c]  }||z   	 c} c}}+ c}}}}        d Z'ddiZ(e(j-                  e$j5                         D  ci c]  \  } }| |dz    c}}         ee(d      Z) G d de      Z*yc c}w c c}}} w c c}} w c c}} w c c}w c c}}w c c}}}} w c c}} w )    )unicode_literals   )Num2Word_Base)
get_digitssplitbyx      )m	masculineu   мu   мужскойffeminineu   жu   женскийnneuteru   сu   среднийppluralr   
nominativeu   иu   именительныйggenitiveu   рu   родительныйddativeu   дu   дательныйa
accusativeu   вu   винительныйi      )instrumentalu   тu   творительныйr   prepositionalu   пu   предложныйFr
   Tc                      t        | |   fi |S N)case_classifier_element)
cases_dictnumkwargss      o/var/www/html/navyabakers_fullstack/navyabakers_prod/venv_new/lib/python3.12/site-packages/num2words/lang_RU.pyget_num_elementr%   ,   s    ":c?=f==    c                     | t         |      }t        |t              r|S |r|t        d      }n|t        |      }t        |t              r|S |r|d   S |d   S )Nr   r   r   )CASE_INDEXES
isinstancestrGENDER_PLURAL_INDEXES)
classifiercaser   genderanimates        r$   r    r    0   si    l4()D$+H56+F34&#ay!9r&   )   нольu   ноляu   нолюr0   u
   нолёмu   ноле)   одинu   одна   одно   одни)   одного
   однойr4   
   одних)   одномуr5   r7   
   однимr4   r1   u   однуr2   r6   r3   )r8   r5   r8   u   одними)
   одномr5   r9   r6   )   два   двеr:   u   двоеu   двухu
   двоихu   двумu
   двоимr:   r;   u
   двумяu   двоимиu   триu   троеu   трёхu
   троихu   трёмu
   троимu
   тремяu   троимиu   четыреu   четвероu   четырёхu   четверыхu   четырёмu   четверымu   четырьмяu   четверыми)   пять   пятиr=   r<   u
   пятьюr=   )
   шесть
   шестиr?   r>   u   шестьюr?   )   семь   семиrA   r@   u
   семьюrA   )   восемь   восьмиrC   rB   u   восемьюrC   )   девять   девятиrE   rD   u   девятьюrE   )
r   r   r   r	   r   r            	   u
   нулевu   первu   вторu   четвёртu   пятu   шестu
   седьмu
   восьмu
   девят)	r   r   r   r   r   rF   rG   rH   rI      ойu   ый)r   r   u   аяu   оеu   ые)   огоrJ   rK      ых)   омуrJ   rM      ымrK   u   уюrL   )rN   rJ   rN   u   ыми)   омrJ   rO   rL   c                 "   t         D cg c]j  }|D cg c]Z  }t        |t              r| |z   nBt        |t              r+|D cg c]  }t        |t              r| |z   n| ||   z   ! c}n| ||   z   \ c}}l c}}}S c c}w c c}}w c c}}}w r   )CASE_POSTFIXESr)   r*   list)prefix
post_groupr-   postfixr/   s        r$   	get_casesrV   s   s     #$ $    'w4 %/w$=	! (5'		'*%	%
& 	! 	$$		% $ $	! $s(   
B
.B$A?'B4B
?BB
c           
          t        |t              r#| j                         D ci c]  \  }}||
 }}}| j                         D ci c]  \  }}|t        |||          c}}S c c}}w c c}}w r   )r)   intitemsrV   )prefixespost_groupsr   r   r"   rS   s         r$   get_ord_classifierr\   ~   sr    +s#2:..2BC$!Qq+~CC $>>+C 	Yv{3/00  Ds   A%A+)   третийu   третья   третье   третьи)   третьего   третьейr`      третьих)   третьемуra   rc      третьимr`   r]   u   третьюr^   rb   r_   )rd   ra   rd   u   третьими)   третьемra   re   rb   u
   четырu   семu
   восем)	r   r   r	   r   r   rF   rG   rH   rI   )   надцать   надцатиrg   rf   u   надцатьюrg   )   десять   десятиri   rh   u   десятьюri   u
   десятu   надцат)   двадцать   двадцатиrk   rj   u   двадцатьюrk   )   тридцать   тридцатиrm   rl   u   тридцатьюrm   )
   сорок   сорокаro   rn   ro   ro   )   пятьдесят   пятидесятиrq   rp   u   пятьюдесятьюrq   )   шестьдесят   шестидесятиrs   rr   u   шестьюдесятьюrs   )   семьдесят   семидесятиru   rt   u   семьюдесятьюru   )   восемьдесят   восьмидесятиrw   rv   u   восемьюдесятьюrw   )   девяносто   девяностаry   rx   ry   ry   )r   r	   r   r   rF   rG   rH   rI   u   двадцатu   тридцатu   сороковu   пятидесятu   шестидесятu   семидесятu   восьмидесятu   девяност)   сто   стаr{   rz   r{   r{   )   двестиu   двухсотu   двумстамr|   u   двумястамиu   двухстах)   тристаu   трёхсотu   трёмстамr}   u   тремястамиu   трёхстах)   четырестаu   четырёхсотu   четырёмстамr~   u   четырьмястамиu   четырёхстах)   пятьсотu   пятисотu   пятистамr   u   пятьюстамиu   пятистах)   шестьсотu   шестисотu   шестистамr   u   шестьюстамиu   шестистах)   семьсотu   семисотu   семистамr   u   семьюстамиu   семистах)   восемьсотu   восьмисотu   восьмистамr   u   восемьюстамиu   восьмистах)   девятьсотu   девятисотu   девятистамr   u   девятьюстамиu   девятистахu   сотu   миллионu   миллиардu   триллионu   квадриллионu   квинтиллионu   секстиллионu   септиллионu   октиллионu   нониллион)	r   r	   r   r   rF   rG   rH   rI   
   )    а   ов)r   r   r   )u   у   амr   r   )rO      амиr   )u   е   ахr   )u   тысяча   тысячи
   тысяч)r   r   r   )   тысяче   тысячамr   )u   тысячуr   r   )u   тысячей   тысячамиr   )r      тысячахr   c                 (    t         |    t        |      S r   )	THOUSANDSr(   )r"   r-   s     r$   get_thousands_elementsr      s    S>,t,--r&   u   тысячнu   нc            	           e Zd Zddddddddd	Zd
 ZeeeefdZ	d Z
d ZeeeefdZd Zd ZddeeeefdZd Zd Zd Zy)Num2Word_RU))u
   рубльu
   рубляu   рублейu   копейкаu   копейкиu   копеек))   евроr   r   u   центu
   центаu   центов))u   долларu   доллараu   долларовr   ))u   гривнаu   гривныu   гривенr   ))
   тенгеr   r   )u   тиынu
   тиынаu   тиынов))u!   белорусский рубльu!   белорусских рубляu#   белорусских рублейr   ))u   сумu   сумаu
   сумов)u
   тийинu   тийинаu   тийинов))u   польский злотыйu   польских слотыхu   польских злотых)u   грошu
   грошаu   грошей)RUBEURUSDUAHKZTBYNUZSPLNc                 B    d| _         d| _        t        dd      | _        y )Nu
   минус)u
   целая
   целыхr   u   целr   )negword	pointwordrV   pointword_ord)selfs    r$   setupzNum2Word_RU.setup  s    #C&x3r&   c           	         t        |      j                  dd      }d|v r|j                  d      \  }}| j                  t	        |      dd      }	| j                  t	        |      dd      d| j                  t	        |      | j                        d|	d| j                  |      S | j                  t	        |      d||||      S )N,.Tr   cardinalr.    r   r-   r   r.   r/   )r*   replacesplit	_int2wordrX   	pluralizer   _Num2Word_RU__decimal_bitness)
r   numberr-   r   r.   r/   r   leftrightdecimal_parts
             r$   to_cardinalzNum2Word_RU.to_cardinal  s    KS)!8''#,KD%>>#e*t14 * 6L s4y4Ds4y$..9&&u-	  >>#a&4d)/*1 " 3 3r&   c                     |d   dk(  r(|dd  dk7  r | j                  dt        |      z  dd      S | j                  dt        |      z  dd	d
      S )N111r   Fr   r   r   T)r   r-   r   )r   len)r   r   s     r$   __decimal_bitnesszNum2Word_RU.__decimal_bitness+  s]    R5C<AbcFdN>>"A,s>KK~~bCFlU%)  + 	+r&   c                 V    |dz  dv r|d   S |dz  dk(  r|d   S |dz  dv r|d   S |d   S )Nd   )            r   r   r   r   )r   r	   r    )r   r   formss      r$   r   zNum2Word_RU.pluralize1  sJ    s7&&8Or6Q;8Or6Y8OQxr&   c                     | j                  |       t        |      j                  dd      }| j                  t	        |      d||||      S )Nr   r   Fr   )verify_ordinalr*   r   r   rX   )r   r   r-   r   r.   r/   r   s          r$   
to_ordinalzNum2Word_RU.to_ordinal:  sM    F#KS)~~c!fu4%+W  > 	>r&   c                 X    |dk(  r| j                  |d      S | j                  |d      S )Nr   r   r.   r
   r   r   r   currencys      r$   _money_verbosezNum2Word_RU._money_verboseA  s0    u>>&>55~~fS~11r&   c                 V    |dv r| j                  |d      S | j                  |d      S )N)r   r   r   r   r   r
   r   r   s      r$   _cents_verbosezNum2Word_RU._cents_verboseF  s1    ,,>>&>55~~fS~11r&   FTc           
         |rd}||||d}|dk  r9dj                  | j                   | j                  t        |      fd|i|g      S |dk(  r$|rt	        t
        dfi |S t	        t        dfi |S g }	t        t        t        |      d            }
|
d   dk(  }t        |
      }|dz
  t        t        |
      D cg c]  \  }}|dk7  s| c}}      z
  }|
D ]J  }g }dz  }|dk(  rt        |      \  }}}|rV|j                   | j                  ||||fi |       |dkD  r|j!                  | j#                  |t%        ||                   n|r||k(  s_|j                   | j&                  ||||fi |       |dkD  r||k(  r|nd	}|j!                  | j#                  |t%        ||                   n\|j                   | j(                  ||||fi |       |dkD  r |j!                  t	        t*        |fi |       d
j                  |      g}|	j                  |       M dj                  |	      S c c}}w )a7  
        n: number
        feminine: not used - for backward compatibility
        cardinal:True - cardinal
                False - ordinal
        case:   'n' - nominative
                'g' - genitive
                'd' - dative
                'a' - accusative
                'i' - instrumental
                'p' - prepositional
        plural: True - plural
                False - singular
        gender: 'f' - masculine
                'm' - feminine
                'n' - neuter
        animate: True - animate
                 False - inanimate
        r   )r-   r   r.   r/   r   r   r   r	   r   r   r   r   )joinr   r   absr%   ONESONES_ORDrR   r   r*   r   max	enumerater   extend_Num2Word_RU__chunk_cardianlappendr   r   _Num2Word_RU__chunk_ordinal _Num2Word_RU__chunk_ordinal_joinTHOUSANDS_ORD)r   r   r   r   r-   r   r.   r/   r#   wordschunksord_joinr   erightest_nonzero_chunk_ixchunk_wordsn1n2n3t_cases                        r$   r   zNum2Word_RU._int2wordK  s   , F&F$& q588T\\>4>>#a& ,DCK,D<B,D E F F 69A?45f5 :"8Q9&9: hs1vq)*":?K#$q53$V,741aQQ7,9 $9  $	&AKFAAv#AJBB"")D))"b"aB6B q5&&q*@D*IJL #;q#@""(D((RQA&A q5%=%BTF&&q*@F*KLN ""-D--b"b!FvF q5&&'qCFCE  "ww{34LL%I$	&L xxO 8s   =H:H:c                    g }|dkD  r |j                  t        t        |fi |       |dkD  r |j                  t        t        |fi |       |dk(  r"|j                  t        t        |fi |       |S |dkD  re|dk(  rt        t
        |fi |}n=|dk(  r'|j                         }d|d<   t        t
        |fi |}nt        t
        |fi |}|j                  |       |S )Nr   r   r   r.   )r   r%   HUNDREDSTWENTIESTENSr   copy)	r   hundredstensones	chunk_numr#   r   w_onesf_kwargss	            r$   __chunk_cardianlzNum2Word_RU.__chunk_cardianl  s    a<LL8FvFG!8LL4B6BC19LLt>v>?  AXA~(t>v>a!;;=%("(t@x@(t>v>LL r&   c                 f   g }|dkD  rJ|dk(  r&|dk(  r!|j                  t        t        |fi |       n|j                  t        t        |             |dkD  rE|dk(  r!|j                  t        t        |fi |       n|j                  t        t
        |             |dk(  r"|j                  t        t        |fi |       |S |dkD  ri|dk(  rt        t        |fi |}n?|dkD  r|dk(  r|dk(  r|dk(  rd }n(|dk(  rt        t        |d      }nt        t        |      }|r|j                  |       |S )Nr   r   r   r   )	r   r%   HUNDREDS_ORDr   TWENTIES_ORDr   TENS_ORDr   r   r   r   r   r   r   r#   r   r   s           r$   __chunk_ordinalzNum2Word_RU.__chunk_ordinal  s   a<qyTQY_\8NvNO_Xx@A!8qy_\4J6JK_Xt<=19LL4B6BC   AXA~(4B6BQ419Q419a(tC@(t4V$r&   c                 f   g }|dkD  r"|j                  t        t        |d             n$|dk(  r|j                  t        t        |             |dk(  r |j                  t        t        |             n&|dkD  r!|j                  t        t        |d             |dk(  r#|j                  t        t        |d             |S |dkD  rk|dk(  rt        t
        |fi |}nA|dkD  r*|dk(  r%|dk7  r |dk(  r|dk(  rd }n%t        t        dd      }nt        t        |d      }|r|j                  |       |S )Nr   r   )r-   rI   r   r   r   )r   r%   r   r   r   r   r   r   s           r$   __chunk_ordinal_joinz Num2Word_RU.__chunk_ordinal_join  s   a<LL8#FG]LL8<=19LL489AXLL4cBC19LLt#>?   AXA~(4B6BQ41919Q!F,T1SAF(t#>V$r&   N)__name__
__module____qualname__CURRENCY_FORMSr   D_CASED_PLURALD_GENDER	D_ANIMATEr   r   r   r   r   r   r   r   r   r   r   r&   r$   r   r      s    







/N:4
 (.h#Y3$+ '-Xh$>2
2
 %*Dv!(IQf0Br&   r   N)+
__future__r   baser   utilsr   r   r+   r(   r  r  r  r  r%   r    r   ONES_ORD_PREFIXESONES_ORD_POSTFIXES_GROUPSrQ   rV   r\   r   updateTENS_PREFIXESTENS_POSTFIXESr   rY   TENS_ORD_PREFIXESr   r   TWENTIES_ORD_PREFIXESTWENTIES_ORD_POSTFIXES_GROUPSr   r   HUNDREDS_ORD_PREFIXESr   THOUSANDS_PREFIXESTHOUSANDS_POSTFIXESr   r   THOUSANDS_ORD_PREFIXESr   r   )r"   rS   rU   r-   s   0000r$   <module>r     s  $ (  ' 
!q	
a	
aqA	
a	 !!1&@!$<a  a q #7 	 !	 "1	 '?	
 
 QA	
Qa 
	> .4H#+Y. R8DD
*	%z:j?YZB@B 	3	qL>)	qL>)
h	*h!7<P	n--	qL>)+ 

Q*%	qL>)	qL>)
h	*h!7<P	n--	qL>)+ 
1 011	Q"4!55	Q"4!55
N	+.>-OQ_ast	q $8#99	Q"4!557 R]Qii=B %
GW\d"|W  !aA!aA! !# &)666B66&V45vvPVGWX424$ HTT
n	-~~P`bpOqrRPR 	(*CD 8\h8O$	mn $**, V .	9w&7
	99 
 %    4A4G4G4I%0S&C.	    /3c @ D$ -1AFV05KPd49KM  %&!aA!$%!' !"7"?A Dyy"}}  " =ENN<L/8sDCC1Ha(*  ""7; *.@EW16NSk/4HNbd /  64<6B<>	 
   ,113  #v ;N
37.g'	.
  . ^,    *<*B*B*D&3C$  ##91=- { 
:^2 	/
sT   .N<;N7N<7O
O	-O;	OOOO
O"
7N<OO