o
    ph/]                  &   @   s  d dl mZmZmZ d dlmZ ddlmZ dZdZ	dZ
dZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZe
eeeeeeeeeeeeeedZddddZe
dededededed ed!ed"ed#ed$ed%ed&ed'ed(ie
d)ed*ed+ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ie
d7ed8ed9ed:ed;ed<ed=ed>ed?ed@edAed&edBed(ie
dCedDedEedFedGedHedIedJedKedLedMedNedOedPie
dQedRedSedTedUedVedWedXedYedZed[ed4ed\ed6ie
d]ed^ed_ed`edaedbedceddedeedfedgedhediedjie
dkedledmednedoedpedqedredsedteduedvedwedxie
dyedzed{ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ie
d|ed}ed~edededededededededhededjie
dedededededededededededededie
dedededededededededededededidZdd ed D ed< ded e< d5ed e< d6ed e< ed  ed< ded e
< ed  ed< ded e
< dd ZG dd deZG dd dej Z!dS )    )divisionprint_functionunicode_literals)OrderedDict   )lang_EU)senttiu   senttiä)centavocentavoa
                                             )
nominativegenitive
accusative	partitiveinessiveelativeillativeadessiveablativeallativeessivetranslativeinstructiveabessive
comitative   ä   öy)aou)iit)inien)iaeja)issaeissa)istaeista)iineihin)illaeilla)iltaeilta)illeeille)inaeina)iksieiksi)einrE   )ittaeitta)einerH   )r/   et)enr2   )ear3   )essar5   )estar7   )eenr9   )ellar;   )eltar=   )eller?   )enarA   )eksirC   )r1   r1   )ettarF   )inerU   )erI   )rJ   )ejenrE   )rK   r4   )rL   r6   )rM   r8   )rN   r:   )rO   r<   )rP   r>   )rQ   r@   )rR   rB   )rS   rD   )rT   rG   )tadat)dan)tojentain)taatoja)dassadoissa)dastadoista)taantoihin)dalladoilla)daltadoilta)dalledoille)tanatoina)daksidoiksi)doinro   )dattadoitta)toinerr   )r,   at)an)r2   ain)aar3   )assar5   )astar7   )aanr9   )allar;   )altar=   )aller?   )anarA   )aksirC   )attarF   )sidet)den)sientten)ttasia)dessasissa)destasista)teensiin)dellasilla)deltasilta)dellesille)tenasina)deksisiksi)sinr   )dettasitta)siner   )ksihdet)hdenksien)htaksia)hdessaksissa)hdestaksista)hteenksiin)hdellaksilla)hdeltaksilta)hdelleksille)htenaksina)hdeksiksiksi)ksinr   )hdettaksitta)ksiner   ) rI   )rJ   )r2   ten)rX   r3   )nenset)sen)stenr   )star   )sessar   )sestar   )seenr   )sellar   )seltar   )seller   )senar   )seksir   )settar   )snnet)nnennsien)r   nsia)nnessansissa)nnestansista)nteennsiin)nnellansilla)nneltansilta)nnellensille)ntenansina)nneksinsiksi)nsinr   )nnettansitta)nsiner   )tr   )r   )r   nten)         m   r             &   -   .   c                 C   s.   i | ]}|t d  | d t d | d fqS )r   r   r   r   )
KOTUS_TYPE).0c r   ]/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/num2words/lang_FI.py
<dictcomp>L  s     r   r   l   )rJ   r1   n   )rt   rs   r      )rJ   rI   c                 C   s   t | ts| g} d}| D ]q}t |ts||7 }q|j}t|dkr3|jtkr-|js-|d }|d d }|\}}t| | |j }t |tr`t|t|j	pNt @ }t|dkr\|
 }n|d }ttt|@ swt D ]
\}	}
||	|
}ql||| 7 }q|S )Nr         r   r   )
isinstancelisttuplecaselenNOMpluralr   r   preferpopBACK_TO_FRONTitemsreplace)partsoptionsoutparttmp_casestem
kotus_typesuffixcommonbackfrontr   r   r   inflect]  s0   



r  c                   @   s   e Zd Zdd ZdddZdS )Optionsc                 C   s   || _ || _|| _|| _d S N)ordinalr   r   r   selfr  r   r   r   r   r   r   __init__  s   
zOptions.__init__Nc                 C   sH   t |d ur|n| j|d ur|n| j|d ur|n| j|d ur |S | jS r  )r  r  r   r   r   r  r   r   r   	variation  s   
zOptions.variation)NNNN)__name__
__module____qualname__r  r  r   r   r   r   r    s    r  c                       s|  e Zd Zdefdddefddddd	d
efdddefdZdD ]Zdee< qdD ]Zdefee< q'dD ]Zdee< q2i 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/d0d1d2d3d4d5d6d7d8d9d:d;Z fd<d=Zd>d? Z	d@dA Z
dBdC ZdDdE Z fdFdGZdHdI Zd^dMdNZd^dOdPZd_dQdRZd`dTdUZ	W	Kda fdXdY	ZdZd[ Zd\d] Z  ZS )bNum2Word_FI)realrealia))frangifrangia)rappenrappenia))juanjuania)fenu   feniä)euroeuroa))markkamarkkaa)penniu   penniä))rupiarupiaa)paisapaisaa))jeniu   jeniä)r   u   seniä)wonwonia)jeonjeonia)r+  )chonchonia)pesopesoa))ruplaruplaa)kopeekka	kopeekkaa))liiraliiraa)u   kuruşu   kuruşia)randirandia)BRLCHFCNYEURFIMINRJPYKRWKPWMXNRUBTRYZAR)DKKISKNOKSEK))kruunukruunua)u   äyriu   äyriä)AUDCADHKDNZDSGDUSD)dollaridollaria)GBP))puntapuntaa)pennyu   pennyärO  
Australianr<  	BrasilianrP  Kanadanr=  SveitsinrI  Tanskanr@  SuomenrW  	EnglanninrQ  
HongkonginrA  IntianrJ  IslanninrC  u   Etelä-KoreanrD  zPohjois-KoreanrE  MeksikonrK  NorjanrR  zUuden-SeelanninrF  u	   VenäjänrL  Ruotsin
SingaporenTurkinYhdysvaltainu   Etelä-Afrikan)rS  rG  rT  rH  c                    s   t  | _tt|   d S r  )r   ordssuperr  r  r  	__class__r   r   r    s   zNum2Word_FI.__init__c                 C   s0   |  | j | | j| j | | j| j d S r  )set_high_numwordshigh_numwordsset_mid_numwordsmid_numwordsmid_ordsset_low_numwordslow_numwordslow_ordsrm  r   r   r   set_numwords  s   zNum2Word_FI.set_numwordsc           
      C   s\  g d}g }t |D ]i\}}|dr|dkr|dd}nA|dr2|dkr2d|tdd   }n-|drH||d  }d	|tdd   }n|d
r_||d  }d|td
d d   }|D ]}||d |d }qa|| q
dt| }t|t|ddD ](\}}	|	dkrd| jd< d| jd< |d df| jd|	 < |d df| jd|	 < qd S )N))qukv)xks)r   k)kentsentsexsextseseptseptenoctoiduodenoveunder   r      i)miljardr   i ʚ;)miljardir   iljoonr   iljoonar   )		enumerate
startswithr   r   appendziprangecardsrk  )
r  highreplacements
translatedr/   numwordreplmaxwordnr   r   r   rp    s0   



zNum2Word_FI.set_high_numwordsc                 C   4   |D ]	\}}|| j |< q|D ]	\}}|| j|< qd S r  r  rk  r  r  rk  keyvalr   r   r   rr    
   zNum2Word_FI.set_mid_numwordsc                 C   r  r  r  r  r   r   r   ru    r  zNum2Word_FI.set_low_numwordsc                    s  t t|   d| _d| _ddg| _dddddd	tfgfd
ddd	tfgfdddd	tfgfdddd	tfgfdddd	tfgfdddd	tfgfdddd	tfgfg	| _dddddgfd
ddgfdddgfdddgfdddgfdddgfdddgfg	| _d d!dd	tfgfd"dd#gfd$dd#gfd%dd#gfd&dd#gfd'dd#gfd(dd#gfd)dd#gfd*d!d#gfd+d,d#gfd-d.d/d0d1d2d3d4d5d6d7g| _	d d8dgfd"dd#gfd$dd#gfd%dd#gfd&dd#gfd'dd#gfd(dd#gfd)dd#gfd*d8d#gfd+d9d#gfd:d;d<d=d>d?d@dAdBdCdDg| _
d S )ENzmiinus pilkkumiinus)  )tuhar   )d   )sar   Z   yhdeksr   kymmenr   P   kahdeksr   F   seitsemr   <   kuur   2   viir   (   neljr      kolmr   )r  )tuhanner   )r  )sadar   u   yhdeksär   kymmener   kahdeksar   u	   seitsemär   kuuder   viider   u   neljär   kolmar   r   kar   r   toistar   r   r   r   r   r   r   r   r+   r   )r   )r  r   )	   r  )r   r  )r   r  )r  r  )r   r  )   r  )r   r  )r   r  )r   r  )r   )nollr   kahder   )yhder   )r   r  )r  r  )r   r  )r   r  )r  r  )r   r  )r  r  )r   r  )r   )toir   )r   )u	   ensimmäir   )r   )nollar   )rl  r  setupnegword	pointwordexclude_titlePTVrs  rt  rv  rw  rm  rn  r   r   r    s   



























zNum2Word_FI.setupc           
      C   s   |\}}|\}}d}|dkrt ||}||fS ||kr5t ||}t ||}|dkr+d}|||f || fS ||k rm|jrH|dkrBd}t ||}n|j}	|jtkrU|jsUt}	t ||j|	d}t ||}|||f || fS d S )Nz%s%sr   r  z%s %sr   r  )r   )r  r  r   r   r   r  r  )
r  lpairrpairr  ltextlnumrtextrnumfmtrcaser   r   r   merge\  s0   



zNum2Word_FI.merger   FNc           
   
   C   s   t | }td|||}z
t||ksJ W n tttfy.   |tkr'td| | Y S w d}|dk r<t	|}| j
}|| jkrKt| j|| jf | ||}| ||\}}	| || S )NFzTCases other than nominative are not implemented for cardinal floating point numbers.r   r   )NAME_TO_CASEr  int
ValueError	TypeErrorAssertionErrorr   NotImplementedErrorto_cardinal_floatabsr  MAXVALOverflowErrorerrmsg_toobigsplitnumcleantitle)
r  valuer   r   r   r  r  r  wordsnumr   r   r   to_cardinal~  s(   
zNum2Word_FI.to_cardinalc           	      C   sd   t | }td|||}| | || jkrt| j|| jf | ||}| ||\}}| |S NT)	r  r  verify_ordinalr  r  r  r  r  r  )	r  r  r   r   r   r  r  r  r  r   r   r   
to_ordinal  s   


zNum2Word_FI.to_ordinalc                 C   s   t | }tr  )r  r  )r  r  r   r   r   r   r   to_ordinal_num  s   zNum2Word_FI.to_ordinal_numTc                 C   s6   |pd}|dk rt |}|pd}| |dd| S )Nr   r   z ennen ajanlaskun alkua )r  r  r   )r  r  r  longvalr   r   r   to_year  s
   zNum2Word_FI.to_yearr?   jac                    s   t t| j|||||dS )N)currencycents	separator	adjective)rl  r  to_currency)r  r  r  r  r  r  rn  r   r   r    s   
zNum2Word_FI.to_currencyc                 C   s   |j r| jn| j}|D ]X}||krqg }|dkrd\}}nt||\}}|dkr2||d df n||krC|||  || fg  S || || ||| |f |r`|| || |  S d S )Nr   )r   r   r   )r  rk  r  divmodr  r  )r  r  r  elemselemr  divmodr   r   r   r    s$   
zNum2Word_FI.splitnumc                 C   s   |}t |dkreg }|d d \}}t|tr6t|tr6|| ||| |dd  r5||dd   n'|D ]$}t|trWt |dkrM||d  q8|| || q8|| q8|}t |dks|d S )Nr   r   r   )r   r   r   r  r  r   r  )r  r  r  r  leftrightr  r   r   r   r    s$   
zNum2Word_FI.clean)r   FN)r   Fr  )r?  Tr   F)r  r  r  GENERIC_CENTAVOSGENERIC_CENTSCURRENCY_FORMS	curr_codeCURRENCY_ADJECTIVESr  rx  rp  rr  ru  r  r  r  r  r  r  r  r  r  __classcell__r   r   rn  r   r    s    


	
0O
"


r  N)"
__future__r   r   r   collectionsr   r   r   r  r  r   GENACCr  INEELAILLADEABLALLESSTRANSLINSTRUCABECOMr  r   r   copyr  objectr  Num2Word_EUr  r   r   r   r   <module>   s     
%