o
    uvXjF  ã                   @   s6   d dl mZ d dlmZ d dlmZ 		d	dd„ZdS )
é    )ÚDecimal)Úsettings)Ú	mark_safeNÚ Fc                 C   sì  |s	|du ot jot j}|p|}|o|dk}t| tƒr#|s#|s#t| ƒS d}t| tƒr]|  ¡ \}	}
}t|ƒt	|
ƒ dkrWd 
| ¡} |  d¡\}}t
|||||||ƒ}d 
||¡S d 
| ¡}nt| ƒ}|d d	krod	}|d
d… }d|v r…| d¡\}}|dur„|d|… }n|d}}|dur˜|d|t	|ƒ   }|o�|| }|rðzt|ƒ}W n ty³   |dg}Y nw | d¡}d}d}|ddd… D ]$}|rà||krà|rÕ| d¡pÔ|}||ddd… 7 }d}||7 }|d
7 }qÄ|ddd… }|| | S )aT  
    Get a number (as a number or string), and return it as a string,
    using formats defined as arguments:

    * decimal_sep: Decimal separator symbol (for example ".")
    * decimal_pos: Number of decimal positions
    * grouping: Number of digits in every group limited by thousand separator.
        For non-uniform digit grouping, it can be a sequence with the number
        of digit group sizes following the format used by the Python locale
        module in locale.localeconv() LC_NUMERIC grouping (e.g. (3, 2, 0)).
    * thousand_sep: Thousand separator symbol (for example ",")
    Nr   r   éÈ   z{:e}Úez{}e{}z{:f}ú-é   Ú.Ú0éÿÿÿÿ)r   ÚUSE_L10NÚUSE_THOUSAND_SEPARATORÚ
isinstanceÚintr   r   Úas_tupleÚabsÚlenÚformatÚsplitÚstrÚlistÚ	TypeErrorÚpop)ÚnumberÚdecimal_sepÚdecimal_posÚgroupingÚthousand_sepÚforce_groupingÚuse_l10nÚuse_groupingÚsignÚ_ÚdigitsÚexponentÚcoefficientÚ
str_numberÚint_partÚdec_partÚ	intervalsÚactive_intervalÚint_part_gdÚcntÚdigit© r/   úV/var/www/html/myproject/venv/lib/python3.10/site-packages/django/utils/numberformat.pyr      sb   

þ€
þ

r   )Nr   r   FN)Údecimalr   Údjango.confr   Údjango.utils.safestringr   r   r/   r/   r/   r0   Ú<module>   s    ÿ