o
    bz*                     @   s  d Z ddl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lmZ g d	Zd
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dd Zdd Zdd ZeeeZeeeZ dd  Z!dNd!d"Z"d#d$ Z#dNd%d&Z$dNd'd(Z%dNd)d*Z&d+d, Z'd-d. Z(G d/d0 d0eZ)d1d2 Z*d3d4 Z+d5d6 Z,d7d8 Z-d9d: Z.dOd<d=Z/d>d? Z0d;d@dAdBZ1dCdD Z2dEdF Z3dGdH Z4edIZ5dJdK Z6dLdM Z7dS )Pz
Internationalization support.
    N)ContextDecorator)ROUND_UPDecimal)autoreload_startedfile_changed)RemovedInDjango40Warning)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ugettextugettext_lazyugettext_noopngettextngettext_lazy	ungettextungettext_lazypgettextpgettext_lazy	npgettextnpgettext_lazyLANGUAGE_SESSION_KEYZ	_languagec                   @   s   e Zd ZdS )TranslatorCommentWarningN)__name__
__module____qualname__ r)   r)   `/var/www/secure340b-portal/env/lib/python3.10/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r&d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.   )Zdispatch_uid)
trans_null)Zdjango.confr,   ZUSE_I18NZdjango.utils.translationr-   Z!django.utils.translation.reloaderr.   r/   r   connectr   r0   setattrgetattr)selfZ	real_namer,   Ztransr.   r/   r)   r)   r*   __getattr__7   s   
zTrans.__getattr__N)r&   r'   r(   __doc__r5   r)   r)   r)   r*   r+   *   s    r+   c                 C   
   t | S N)_transr   messager)   r)   r*   r   L      
r   c                 C      t jdtdd t| S )zx
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of gettext_noop() since Django 2.0.
    zkdjango.utils.translation.ugettext_noop() is deprecated in favor of django.utils.translation.gettext_noop().   
stacklevel)warningswarnr   r   r:   r)   r)   r*   r   P   
   r   c                 C   r7   r8   )r9   r   r:   r)   r)   r*   r   ]   r<   r   c                 C   r=   )zs
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of gettext() since Django 2.0.
    zadjango.utils.translation.ugettext() is deprecated in favor of django.utils.translation.gettext().r>   r?   )rA   rB   r   r   r:   r)   r)   r*   r   a   rC   r   c                 C   s   t | ||S r8   )r9   r   singularpluralnumberr)   r)   r*   r   n   s   r   c                 C      t jdtdd t| ||S )zt
    A legacy compatibility wrapper for Unicode handling on Python 2.
    Alias of ngettext() since Django 2.0.
    zcdjango.utils.translation.ungettext() is deprecated in favor of django.utils.translation.ngettext().r>   r?   )rA   rB   r   r   rD   r)   r)   r*   r   r   
   r   c                 C      t | |S r8   )r9   r    )contextr;   r)   r)   r*   r          r    c                 C   s   t | |||S r8   )r9   r"   rK   rE   rF   rG   r)   r)   r*   r"         r"   c                 C   r=   )z
    A legacy compatibility wrapper for Unicode handling on Python 2. Has been
    Alias of gettext_lazy since Django 2.0.
    zkdjango.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy().r>   r?   )rA   rB   r   r   r:   r)   r)   r*   r      rC   r   c                    s~   t trd< tdi }|S  G fddd t fdd di }fdd|_|S )NrG   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 )NrE   )boolr4   kwargsr)   r*   __bool__   rL   z/lazy_number.<locals>.NumberAwareString.__bool__c                    s&   z|  W S  t y   t d  w )Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.)KeyError)r4   valuesrG   r)   r*   _get_number_value   s   
z8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |d<  di S )NrG   r)   r)   )r4   number_value)funcrR   r)   r*   
_translate   s   z1lazy_number.<locals>.NumberAwareString._translatec                    s0   |r	 r	|  |n|d }| |j|i |S )Nr   )rW   rZ   format)r4   argsrR   rX   rV   r)   r*   r[      s   z-lazy_number.<locals>.NumberAwareString.formatc                    sL   t |tr r| |}n|}| |}z|| }W |S  ty%   Y |S w r8   )
isinstancedictrW   rZ   	TypeError)r4   rhsrX   Z
translatedrV   r)   r*   __mod__   s   

z.lazy_number.<locals>.NumberAwareString.__mod__N)r&   r'   r(   rS   rW   rZ   r[   ra   r)   )rY   rR   rG   r)   r*   NumberAwareString   s    
rb   c                     s     S r8   r)   rQ   )rb   r)   r*   <lambda>   s    zlazy_number.<locals>.<lambda>c                      s   t  ffS r8   )_lazy_number_unpickler)   )rY   rG   original_kwargsresultclassr)   r*   rc      s    r)   )r]   intr   copy
__reduce__)rY   rf   rG   rR   proxyr)   )rb   rY   rR   rG   re   rf   r*   lazy_number   s   
)#rk   c                 C   s   t | |fd|i|S )NrG   )rk   )rY   rf   rG   rR   r)   r)   r*   rd      s   rd   c                 C   s   t tt| ||dS )NrD   )rk   r   strrD   r)   r)   r*   r      s   r   c                 C   rH   )z}
    A legacy compatibility wrapper for Unicode handling on Python 2.
    An alias of ungettext_lazy() since Django 2.0.
    zmdjango.utils.translation.ungettext_lazy() is deprecated in favor of django.utils.translation.ngettext_lazy().r>   r?   )rA   rB   r   r   rD   r)   r)   r*   r      rI   r   c                 C   s   t tt| |||dS )NrM   )rk   r"   rl   rM   r)   r)   r*   r#      s   r#   c                 C   r7   r8   )r9   r
   )languager)   r)   r*   r
      r<   r
   c                   C      t  S r8   )r9   r   r)   r)   r)   r*   r         r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r   Fc                 C   s   || _ || _d S r8   )rm   r   )r4   rm   r   r)   r)   r*   __init__   s   
zoverride.__init__c                 C   s*   t  | _| jd urt| j d S t  d S r8   )r   old_languagerm   r
   r   rP   r)   r)   r*   	__enter__   s   

zoverride.__enter__c                 C   s2   | j d u r
t  d S | jrt  d S t| j  d S r8   )rq   r   r   r
   )r4   exc_type	exc_value	tracebackr)   r)   r*   __exit__   s
   


zoverride.__exit__NF)r&   r'   r(   rp   rr   rv   r)   r)   r)   r*   r      s    
r   c                   C   rn   r8   )r9   r   r)   r)   r)   r*   r      ro   r   c                   C   rn   r8   )r9   r   r)   r)   r)   r*   r     ro   r   c                 C   r7   r8   )r9   r   )	lang_coder)   r)   r*   r     r<   r   c                 C   sB   |  d}|dkr| d|  d | |d d   S |  S )z8Turn a locale name (en_US) into a language name (en-us)._r   N-   )findlower)localepr)   r)   r*   r   	  s   
(r   c                 C   sd   |   d\} }}|s| S |d\}}}t|dkr | n| }|r,|d| 7 }| d | S )z8Turn a language name (en-us) into a locale name (en_US).rz   r>   ry   )r}   	partitionlentitleupper)rm   ry   Zcountrytailr)   r)   r*   r     s   r   Fc                 C   rJ   r8   )r9   r   )request
check_pathr)   r)   r*   r   "  rL   r   c                 C   r7   r8   )r9   get_language_from_path)pathr)   r)   r*   r   &  r<   r   )strictc                C   rJ   r8   )r9   get_supported_language_variant)rx   r   r)   r)   r*   r   *  rL   r   c                 K   s   ddl m} || fi |S )Nr{   )r   )templater   )srcrR   r   r)   r)   r*   r   .  s   r   c                   C   rn   r8   )r9   r   r)   r)   r)   r*   r   3  ro   r   c                 C   s   ddl m} z||  }d|v rd|vrt|d d }n|}W n0 tyO   d| vr0td|  | dd }z|| }W n tyL   td| |f w Y nw |rZt|d |d< |S )	Nr   )	LANG_INFOfallbacknamerz   zUnknown language code %s.z Unknown language code %s and %s.Zname_translated)Zdjango.conf.localer   r   rT   splitr   )rx   r   Z	lang_infoinfoZgeneric_lang_coder)   r)   r*   r   7  s*   	r   z\s*\n\s*c                 C   s   t d|  S )N )trim_whitespace_resubstrip)sr)   r)   r*   trim_whitespaceP  rN   r   c                 C   s"   t t| d jtdtdd S )Nr{   0)rounding)rg   r   quantizer   )valuer)   r)   r*   round_away_from_oneT  s   "r   r8   rw   )8r6   rA   
contextlibr   decimalr   r   Zdjango.utils.autoreloadr   r   Zdjango.utils.deprecationr   Zdjango.utils.functionalr   Zdjango.utils.regex_helperr	   __all__r$   SyntaxWarningr%   r+   r9   r   r   r   r   r   r   r    r"   rl   r   r!   r   rk   rd   r   r   r#   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   <module>   s^    


/


	
