o
    [h                     @   s   d dl Zd dlmZ d dlmZ d dl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&d'd(ddd)d*Zd+ed,ed-ed.efd/d0Z	d1d2 Z
d3d4 Zd5d6 Zd7d8 ZdS )9    N)FULL_DECIMAL_PLACES)settingsAEDARS$AUDBRLzR$CADCHFCNYu   元CZKu   KčDKKkrZEGPu	   ج.م.‏EURu   €GBP   £HKDzHK$HUFZFtILSu   ₪INRu   ₹JPYu   円u   원ZRMu   złu   ₽SGDTHBu   ₺R)KRWMXNMYRNOKPLNRUBSEKr   r   TRYTWDUSDZARlcLOCURreturnc                 C   sL  | dkr<|dv r
dS |dkrdS |dkrdS |dkrd	S |d
kr"dS |dkr(dS |dkr.dS |dkr4dS |dkr:dS dS | dkrZ|dkrFdS |dkrLdS |dkrRdS |d
krXdS dS | dkrr|dkrj|dkrhdS dS |dkrpdS dS | d kr|d!kr|d"S |dkrdS |d#krdS d$S | d%kr|d&kr|dkrdS d$S |dkrdS dS | d'kr|d(krd)S |dkrdS dS | d*kr|d+krd,S dS | d-kr|d.krd/S d$S | d0kr|d1krd2S d$S | d3kr|dkrdS d$S | d4kr|dkrdS d$S | d5kr|d6krd7S d$S | d8kr
|d9krd:S d$S | d;kr|dkrdS d$S | d<kr&|dkr$dS dS | d=kr4|dkr2dS dS | d>krB|d?kr@d@S dS | dAkrP|dBkrNdCS dS | dDkr^|dEkr\dFS d$S | dGkrl|dHkrjdIS d$S | dJkrz|dKkrxdLS d$S | dMkr|dNkrdOS dS | dPkr|dQkrdRS d$S | dSkr|dkrdTS dS d$S )UzQbecause of all the if statements, this has very low code coverage
    but it's oken)r#   r	   r   z$#r   u   £#r   u   €#r   u   ₹ #r   r   u   #元r   u   #円r   u   #원r$   zR#u   ¤#zhr   zHK$#r"   zSGD#deATu   € #u   # €r
   zCHF #u   ¤ #esr   z$ #r   u   # ¤nlZBEptr   zR$#arr   u   د.إ.‏ #csr   u   # Kčdar   z# kr.fifrher   u   # ₪hur   z# Ftitjakomsr   zRM#nbr   zkr #plr   u   # złrur   u   # ₽svr    z# krthr   u   ฿#trr!   u   # ₺hiu   ₺# )r%   r&   r'   rB   rB   q/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/otree/i18n.pyget_currency_format0   s
  	























rD   c                C   sv   |t u rd}t| }d|v r|d\}}n
|}|du r|S d}|dur*||d}|dkr0|S |tj |d|  S )a  we don't use locale.setlocale because e.g.
    only english locale is installed on heroku

    This is a complex function because it's is used by many different things.
    - currency
    - formatting any number (random floats, etc)
    - forms
    - to0, to1, to2

    N. 0r   )r   strsplitljustr   ZDECIMAL_SEPARATOR)numberZplacesZ
str_numberlhsrhsrB   rB   rC   format_number   s   rN   c                 c   @    t | ddD ]\}}td| D ]	}|d|g fV  qqdS )
Deprecated   startz \{\{\s?trans ['"](.*)['"]\s?\}\}ZtransN	enumeraterefindalldecodefileobjkeywordsZcomment_tagsoptionslinenolinemsgrB   rB   rC   extract_otreetemplate   s   r`   c                 c   rO   )z6babel custom extractor for |gettext in otree templatesrQ   rR   z#\{\{\s?['"](.*)['"]\|gettext\s?\}\}gettextNrT   rY   rB   rB   rC   extract_otreetemplate_internal   s   rb   c                 C   s   t d| S )Ndjango)gettext_libdgettext)r_   rB   rB   rC   core_gettext  s   rf   )ra   rd   Zotree.commonr   Zotreer   rV   ZCURRENCY_SYMBOLSrH   rD   rN   r`   rb   rf   rB   rB   rB   rC   <module>   sx    
% "
