U
    |e"                     @   s  d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZ ddd	d
dddddddddddddddddgZG dd deZG dd dZe Z[d d Zd!d Zd"d Zd#d Zd$d Ze
eeZe
eeZdCd&d'Zd(d) ZdDd*dZdEd+dZd,d Zd-d ZG d.d	 d	eZ d/d Z!d0d Z"d1d Z#d2d Z$d3d Z%dFd5dZ&d6d7 Z'd4d8d9d:Z(d;d Z)d<d
 Z*d=d Z+ed>Z,d?d@ Z-dAdB Z.d%S )Gz
Internationalization support.
    )ContextDecorator)ROUND_UPDecimal)autoreload_startedfile_changed)lazy)_lazy_re_compileactivate
deactivateoverridedeactivate_allget_languageget_language_from_requestget_language_infoget_language_bidicheck_for_languageto_language	to_locale
templatizegettextgettext_lazygettext_noopngettextngettext_lazypgettextpgettext_lazy	npgettextnpgettext_lazyc                   @   s   e Zd ZdS )TranslatorCommentWarningN)__name__
__module____qualname__ r"   r"   ^/var/www/website-v5/atlas_env/lib/python3.8/site-packages/django/utils/translation/__init__.pyr   $   s   r   c                   @   s   e Zd ZdZdd ZdS )Transa  
    The purpose of this class is to store the actual translation function upon
    receiving the first call to that function. After this is done, changes to
    USE_I18N will have no effect to which function is served upon request. If
    your tests rely on changing USE_I18N, you can delete all the functions
    from _trans.__dict__.

    Note that storing the function with setattr will have a noticeable
    performance effect, as access to the function goes the normal path,
    instead of using __getattr__.
    c                 C   st   ddl m} |jrLddlm} ddlm}m} tj	|dd t
j	|dd nddlm} t| |t|| t||S )Nr   )settings)
trans_real)translation_file_changedwatch_for_translation_changesr'   )dispatch_uid)
trans_null)django.confr%   USE_I18Ndjango.utils.translationr&   Z!django.utils.translation.reloaderr'   r(   r   connectr   r*   setattrgetattr)selfZ	real_namer%   Ztransr'   r(   r"   r"   r#   __getattr__>   s      zTrans.__getattr__N)r   r    r!   __doc__r2   r"   r"   r"   r#   r$   1   s   r$   c                 C   s
   t | S N)_transr   messager"   r"   r#   r   Z   s    c                 C   s
   t | S r4   )r5   r   r6   r"   r"   r#   r   ^   s    c                 C   s   t | ||S r4   )r5   r   singularpluralnumberr"   r"   r#   r   b   s    c                 C   s   t | |S r4   )r5   r   )contextr7   r"   r"   r#   r   f   s    c                 C   s   t | |||S r4   )r5   r   r<   r9   r:   r;   r"   r"   r#   r   j   s    Nc                    st   t tr$d< tf }nL G fddd t fdd f }fdd|_|S )Nr;   c                       sJ   e Zd ZfddZfddZ fddZfddZfd	d
ZdS )z&lazy_number.<locals>.NumberAwareStringc                    s   t  d S )Nr9   )boolr1   kwargsr"   r#   __bool__z   s    z/lazy_number.<locals>.NumberAwareString.__bool__c                    s0   z
|  W S  t k
r*   t d  Y nX d S )Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.)KeyError)r1   valuesr;   r"   r#   _get_number_value}   s    
z8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |d<  f S Nr;   r"   )r1   number_value)funcrA   r"   r#   
_translate   s    z1lazy_number.<locals>.NumberAwareString._translatec                    s,   |r r|  |n|d }| |j||S )Nr   )rF   rJ   format)r1   argsrA   rH   rE   r"   r#   rK      s    z-lazy_number.<locals>.NumberAwareString.formatc                    sN   t |tr r| |}n|}| |}z||; }W n tk
rH   Y nX |S r4   )
isinstancedictrF   rJ   	TypeError)r1   rhsrH   Z
translatedrE   r"   r#   __mod__   s    
z.lazy_number.<locals>.NumberAwareString.__mod__N)r   r    r!   rB   rF   rJ   rK   rQ   r"   )rI   rA   r;   r"   r#   NumberAwareStringy   s
   
rR   c                     s     S r4   r"   r@   )rR   r"   r#   <lambda>       zlazy_number.<locals>.<lambda>c                      s   t  ffS r4   )_lazy_number_unpickler"   )rI   r;   original_kwargsresultclassr"   r#   rS      s    
)rM   intr   copy
__reduce__)rI   rW   r;   rA   proxyr"   )rR   rI   rA   r;   rV   rW   r#   lazy_numberr   s    
%r\   c                 C   s   t | |fd|i|S rG   )r\   )rI   rW   r;   rA   r"   r"   r#   rU      s    rU   c                 C   s   t tt| ||dS )Nr8   )r\   r   strr8   r"   r"   r#   r      s    c                 C   s   t tt| |||dS )Nr=   )r\   r   r]   r=   r"   r"   r#   r      s         c                 C   s
   t | S r4   )r5   r	   )languager"   r"   r#   r	      s    c                   C   s   t  S r4   )r5   r
   r"   r"   r"   r#   r
      s    c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r   Fc                 C   s   || _ || _d S r4   )r^   r
   )r1   r^   r
   r"   r"   r#   __init__   s    zoverride.__init__c                 C   s(   t  | _| jd k	rt| j nt  d S r4   )r   old_languager^   r	   r   r?   r"   r"   r#   	__enter__   s    
zoverride.__enter__c                 C   s.   | j d krt  n| jr t  n
t| j  d S r4   )r`   r   r
   r	   )r1   exc_type	exc_value	tracebackr"   r"   r#   __exit__   s
    
zoverride.__exit__N)F)r   r    r!   r_   ra   re   r"   r"   r"   r#   r      s   
c                   C   s   t  S r4   )r5   r   r"   r"   r"   r#   r      s    c                   C   s   t  S r4   )r5   r   r"   r"   r"   r#   r      s    c                 C   s
   t | S r4   )r5   r   )	lang_coder"   r"   r#   r      s    c                 C   sF   |  d}|dkr:| d|  d | |d d   S |  S dS )z8Turn a locale name (en_US) into a language name (en-us)._r   N-   )findlower)Zlocalepr"   r"   r#   r      s    
(c                 C   s|   |   d\}}}|s4| dd   | dd  S |d\}}}t|dkrX| n| }|rp|d| 7 }|d | S )z8Turn a language name (en-us) into a locale name (en_US).rh   N      rg   )rk   	partitionlentitleupper)r^   Zlangrg   Zcountrytailr"   r"   r#   r      s    Fc                 C   s   t | |S r4   )r5   r   )requestZ
check_pathr"   r"   r#   r      s    c                 C   s
   t | S r4   )r5   get_language_from_path)pathr"   r"   r#   ru      s    ru   )strictc                C   s   t | |S r4   )r5   get_supported_language_variant)rf   rw   r"   r"   r#   rx      s    rx   c                 K   s   ddl m} || f|S )Nri   )r   )templater   )srcrA   r   r"   r"   r#   r     s    c                   C   s   t  S r4   )r5   r   r"   r"   r"   r#   r     s    c                 C   s   ddl m} z2||  }d|kr8d|kr8t|d d }n|}W nh tk
r   d| krbtd|  | dd }z|| }W n$ tk
r   td| |f Y nX Y nX |rt|d |d< |S )	Nr   )	LANG_INFOfallbacknamerh   zUnknown language code %s.z Unknown language code %s and %s.Zname_translated)Zdjango.conf.localer{   r   rC   splitr   )rf   r{   Z	lang_infoinfoZgeneric_lang_coder"   r"   r#   r     s&    
z\s*\n\s*c                 C   s   t d|  S )N )trim_whitespace_resubstrip)sr"   r"   r#   trim_whitespace(  s    r   c                 C   s"   t t| d jtdtdd S )Nri   0)Zrounding)rX   r   Zquantizer   )valuer"   r"   r#   round_away_from_one,  s    r   )N)N)N)F)/r3   
contextlibr   Zdecimalr   r   Zdjango.utils.autoreloadr   r   django.utils.functionalr   django.utils.regex_helperr   __all__SyntaxWarningr   r$   r5   r   r   r   r   r   r]   r   r   r\   rU   r   r   r	   r
   r   r   r   r   r   r   r   ru   rx   r   r   r   r   r   r   r"   r"   r"   r#   <module>   sv   #


4

	
