a
    ӗaj                     @   s  d Z ddlZddlZddlZg dZejejddZe	dej
ejB Zdd Zd	d
 ZdZdd eedD ZddddZdGddZdd Zdd Zdd ZG dd dZG dd deZdHd!d"Zi Zd#gZdddd efd$d%Zdedfd&d'Zi ai ad(adId)d*Z dJd+d,Z!dKd-d.Z"d/d0 Z#d1d2 Z$d3d4 Z%d5d6 Z&d7d8 Z'd9d: Z(d;d< Z)d=d> Z*d?d@ Z+dAdB Z,dCdD Z-dEdF Z.eZ/dS )La  Internationalization and localization support.

This module provides internationalization (I18N) and localization (L10N)
support for your Python programs by providing an interface to the GNU gettext
message catalog library.

I18N refers to the operation by which a program is made aware of multiple
languages.  L10N refers to the adaptation of your program, once
internationalized, to the local language and cultural habits.

    N)NullTranslationsGNUTranslationsCatalogfindtranslationinstall
textdomainbindtextdomainbind_textdomain_codesetdgettext	dngettextgettextlgettext	ldgettext
ldngettext	lngettextngettextpgettext	dpgettext	npgettext
dnpgettextZsharelocalea  
        (?P<WHITESPACES>[ \t]+)                    | # spaces and horizontal tabs
        (?P<NUMBER>[0-9]+\b)                       | # decimal integer
        (?P<NAME>n\b)                              | # only n is allowed
        (?P<PARENTHESIS>[()])                      |
        (?P<OPERATOR>[-*/%+?:]|[><!]=?|==|&&|\|\|) | # !, *, /, %, +, -, <, >,
                                                     # <=, >=, ==, !=, &&, ||,
                                                     # ? :
                                                     # unary and bitwise ops
                                                     # not allowed
        (?P<INVALID>\w+|.)                           # invalid token
    c                 c   sP   t t| D ]8}|j}|dkr q||}|dkr>td| |V  qdV  d S )NZWHITESPACESZINVALIDz invalid token in plural form: %s )refinditer_token_pattern	lastgroupgroup
ValueError)pluralZmokindvalue r"   */home/manager/Python-3.9.10/Lib/gettext.py	_tokenizeV   s    
r$   c                 C   s   | rt d|  S t dS d S )Nz#unexpected token in plural form: %szunexpected end of plural form)r   )r!   r"   r"   r#   _errora   s    r%   ))||)&&)z==z!=)<>z<=z>=)+-)*/%c                 C   s    i | ]\}}|D ]
}||qqS r"   r"   ).0iopsopr"   r"   r#   
<dictcomp>o       r3      orandz//)r&   r'   r-   c                 C   s  d}t | }|dkr&|d7 }t | }q|dkrXt| \}}d||f }|dkrtdnN|dkrnd	||f }n8zt|d
}W n ty   t|d Y n0 d||f }t | }d}|tv rt| }||k rАq|dv r|dv rd| }t||}t| |d \}	}d|||	f }|}q||  kr2dkr>n nd| }|dkr|dkrt| d\}
}|dkrrt|t| \}}d|
||f }|dkrd| }||fS )Nr   !znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s
   z%s%dd   )      z(%s)r5   z%s %s %sr@   ?r   :z%s if %s else %s)next_parser   intr%   _binary_ops	_c2py_opsget)ZtokensZpriorityresultnexttoksubr!   jr0   r2   rightZif_trueZif_falser"   r"   r#   rD   r   sP    




rD   c                 C   sX   zt | }W n& ty2   td| jjf d Y n0 dd l}|d| jjf td | S )Nz'Plural value must be an integer, got %sr   r@   )round	TypeError	__class____name__warningswarnDeprecationWarning)r<   r0   rR   r"   r"   r#   _as_int   s    rU   c                 C   s   t | dkrtdz|tt| \}}|r2t|d}|D ]6}|dkr`|d7 }|dkrptdq:|dkr:|d8 }q:d	ti}td
| | |d W S  ty   tdY n0 dS )zGets a C expression as used in PO files for plural forms and returns a
    Python function that implements an equivalent expression.
    i  z"plural form expression is too longr   r:   r5      z%plural form expression is too complexr;   rU   zif True:
            def func(n):
                if not isinstance(n, int):
                    n = _as_int(n)
                return int(%s)
            funcN)lenr   rD   r$   r%   rU   execRecursionError)r   rI   rJ   Zdepthcnsr"   r"   r#   c2py   s.    


r]   c                 C   s>  dd l }|| } d}d}d}d}| d}|dkrV| |d  }| d | } ||O }nd}| d}|dkr| |d  }| d | } ||O }nd}| d}|dkr| |d  }	| d | } ||O }nd}	| }
g }t|d D ]R}|| @ s|
}||@ r||	7 }||@ r||7 }||@ r&||7 }|| q|  |S )	Nr   r5      r@   @r   ._)r   Z	normalizer   rangeappendreverse)locr   ZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERmaskposZmodifiercodesetZ	territoryZlanguageretr0   valr"   r"   r#   _expand_lang   sF    







rk   c                   @   s   e Zd Zddd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dd Zdd Zdd Zdd ZdddZdS ) r   Nc                 C   s.   i | _ d | _d | _d | _|d ur*| | d S N)_info_charset_output_charset	_fallbackrD   selffpr"   r"   r#   __init__   s    zNullTranslations.__init__c                 C   s   d S rl   r"   rq   r"   r"   r#   rD     s    zNullTranslations._parsec                 C   s   | j r| j | n|| _ d S rl   )rp   add_fallback)rr   fallbackr"   r"   r#   ru   
  s    zNullTranslations.add_fallbackc                 C   s   | j r| j |S |S rl   )rp   r   )rr   messager"   r"   r#   r     s    zNullTranslations.gettextc                 C   s   dd l }|dtd dd l}| jrf| * |ddt | j|W  d    S 1 s\0    Y  | jrx|	| jS |	|
 S )Nr   /lgettext() is deprecated, use gettext() insteadr^   ignore.*\blgettext\b.*)rR   rS   rT   r   rp   catch_warningsfilterwarningsr   ro   encodegetpreferredencoding)rr   rw   rR   r   r"   r"   r#   r     s    
*zNullTranslations.lgettextc                 C   s*   | j r| j |||S |dkr"|S |S d S Nr5   )rp   r   )rr   msgid1msgid2r<   r"   r"   r#   r   #  s
    zNullTranslations.ngettextc                 C   s   dd l }|dtd dd l}| jrj| . |ddt | j|||W  d    S 1 s`0    Y  |dkrx|}n|}| jr|	| jS |	|
 S )Nr   1lngettext() is deprecated, use ngettext() insteadr^   ry   .*\blngettext\b.*r5   )rR   rS   rT   r   rp   r{   r|   r   ro   r}   r~   rr   r   r   r<   rR   r   tmsgr"   r"   r#   r   +  s"    
.zNullTranslations.lngettextc                 C   s   | j r| j ||S |S rl   )rp   r   )rr   contextrw   r"   r"   r#   r   =  s    zNullTranslations.pgettextc                 C   s,   | j r| j ||||S |dkr$|S |S d S r   )rp   r   )rr   r   r   r   r<   r"   r"   r#   r   B  s
    zNullTranslations.npgettextc                 C   s   | j S rl   )rm   rr   r"   r"   r#   infoJ  s    zNullTranslations.infoc                 C   s   | j S rl   )rn   r   r"   r"   r#   charsetM  s    zNullTranslations.charsetc                 C   s   dd l }|dtd | jS )Nr   zoutput_charset() is deprecatedr^   rR   rS   rT   ro   )rr   rR   r"   r"   r#   output_charsetP  s
    zNullTranslations.output_charsetc                 C   s    dd l }|dtd || _d S )Nr   z"set_output_charset() is deprecatedr^   r   )rr   r   rR   r"   r"   r#   set_output_charsetV  s
    z#NullTranslations.set_output_charsetc                 C   sJ   dd l }| j|jd< |d urFh d}|t|@ D ]}t| ||j|< q0d S )Nr   ra   >   r   r   r   r   r   r   )builtinsr   __dict__setgetattr)rr   namesr   Zallowednamer"   r"   r#   r   \  s    zNullTranslations.install)N)N)rQ   
__module____qualname__rt   rD   ru   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      s   
r   c                   @   s\   e Zd ZdZdZdZd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dS )r   l   * l   $< z%s%s)r   r5   c                 C   s   |d? |d@ fS )z/Returns a tuple of major version, minor version   i  r"   )rr   versionr"   r"   r#   _get_versionsr  s    zGNUTranslations._get_versionsc           "      C   s  ddl m} t|dd}i  | _}dd | _| }t|}|d|dd	 d }|| jkr||d
|d	d \}}	}
}d}n6|| jkr|d|d	d \}}	}
}d}nt	dd|| 
|\}}|| jvrt	ddt| |td|	D ]}||||
|
d  \}}|| }|||||d  \}}|| }||k r`||k r`||| }||| }nt	dd||dkrld}|dD ]}|  }|sq|dr|drqd }}d|v r |dd\}}|  }| }|| j|< |}n|r| j|  d| 7  < |dkr8|dd | _n0|dkr|d}|d dd }t|| _q| jpvd}d|v r|d\}} |d}t||}t|D ]\}}!t|!||||f< qnt|||t||< |
d7 }
|d7 }qdS )z8Override this method to support alternative .mo formats.r   )unpackr   r   c                 S   s   t | dkS r   )rE   )r<   r"   r"   r#   <lambda>  r4   z(GNUTranslations._parse.<locals>.<lambda>z<INr@   z<4IrV   z<IIz>4Iz>IIzBad magic numberzBad version number    zFile is corrupt   
z	#-#-#-#-#rB   r5   
zcontent-typezcharset=zplural-forms;zplural=ascii    )Zstructr   r   _catalogr   readrX   LE_MAGICBE_MAGICOSErrorr   VERSIONSstrrb   splitdecodestrip
startswithendswithlowerrm   rn   r]   	enumerate)"rr   rs   r   filenameZcatalogZbufZbuflenmagicr   ZmsgcountZ	masteridxZtransidxZiiZmajor_versionZminor_versionr0   ZmlenZmoffZmendZtlenZtoffZtendmsgr   ZlastkZb_itemitemkvr   r   r   r   xr"   r"   r#   rD   v  sv    














zGNUTranslations._parsec                 C   sp   dd l }|dtd dd l}t }| j||}||u rP| jrL| j|S |}| j	rb|
| j	S |
| S )Nr   rx   r^   )rR   rS   rT   r   objectr   rH   rp   r   ro   r}   r~   )rr   rw   rR   r   missingr   r"   r"   r#   r     s    zGNUTranslations.lgettextc                 C   s   dd l }|dtd dd l}z| j|| |f }W n> tyt   | jr^| j||| Y S |dkrl|}n|}Y n0 | j	r|
| j	S |
| S )Nr   r   r^   r5   )rR   rS   rT   r   r   r   KeyErrorrp   r   ro   r}   r~   r   r"   r"   r#   r     s     
zGNUTranslations.lngettextc                 C   s6   t  }| j||}||u r2| jr.| j|S |S |S rl   )r   r   rH   rp   r   )rr   rw   r   r   r"   r"   r#   r     s    zGNUTranslations.gettextc                 C   s\   z| j || |f }W n> tyV   | jr@| j||| Y S |dkrN|}n|}Y n0 |S r   )r   r   r   rp   r   )rr   r   r   r<   r   r"   r"   r#   r     s    
zGNUTranslations.ngettextc                 C   sF   | j ||f }t }| j||}||u rB| jr>| j||S |S |S rl   )CONTEXTr   r   rH   rp   r   )rr   r   rw   ctxt_msg_idr   r   r"   r"   r#   r     s    zGNUTranslations.pgettextc              	   C   sl   | j ||f }z| j|| |f }W n@ tyf   | jrP| j|||| Y S |dkr^|}n|}Y n0 |S r   )r   r   r   r   rp   r   )rr   r   r   r   r<   r   r   r"   r"   r#   r     s    
zGNUTranslations.npgettextN)rQ   r   r   r   r   r   r   r   rD   r   r   r   r   r   r   r"   r"   r"   r#   r   f  s   Y	
r   Fc                 C   s   |d u rt }|d u rRg }dD ]"}tj|}|r|d} q@qd|vrR|d g }|D ]$}t|D ]}||vrf|| qfqZ|rg }	nd }	|D ]J}|dkr qtj||dd|  }
tj	|
r|r|	|
 q|
  S q|	S )N)ZLANGUAGELC_ALLLC_MESSAGESZLANGrB   Cr   z%s.mo)
_default_localedirosenvironrH   r   rc   rk   pathjoinexists)domain	localedir	languagesallZenvarrj   ZnelangsZlangZnelangrI   mofiler"   r"   r#   r     s8    


r   Zunspecifiedc              	   C   sD  |d u rt }t| ||dd}|sB|r*t S ddlm} t|d| d }|D ]}	|tj|	f}
t	
|
}|d u rt|	d }t	|
||}W d    n1 s0    Y  dd l}||}|tur$dd l}|dtd |r$| ( |d	d
t || W d    n1 s0    Y  |d u r4|}qJ|| qJ|S )NT)r   r   )ENOENTz$No translation file found for domainrbzparameter codeset is deprecatedr^   ry   z.*\bset_output_charset\b.*)r   r   r   errnor   FileNotFoundErrorr   r   abspath_translationsrH   open
setdefaultcopy_unspecifiedrR   rS   rT   r{   r|   r   ru   )r   r   r   Zclass_rv   rh   Zmofilesr   rI   r   keytrs   r   rR   r"   r"   r#   r   G  sD    
.


*
r   c                 C   s   t | |d|d}|| d S )NT)rv   rh   )r   r   )r   r   rh   r   r   r"   r"   r#   r   r  s    r   Zmessagesc                 C   s   | d ur| a t S rl   )_current_domain)r   r"   r"   r#   r     s    r   c                 C   s   |d ur|t | < t | tS rl   )_localedirsrH   r   )r   r   r"   r"   r#   r	     s    r	   c                 C   s0   dd l }|dtd |d ur&|t| < t| S )Nr   z'bind_textdomain_codeset() is deprecatedr^   )rR   rS   rT   _localecodesetsrH   )r   rh   rR   r"   r"   r#   r
     s    r
   c                 C   s8   zt | t| d }W n ty,   | Y S 0 ||S rl   )r   r   rH   r   r   )r   rw   r   r"   r"   r#   r     s
    
r   c                 C   s   dd l }|dtd dd l}t| }zP| 4 |ddt t| t	| d |d}W d    n1 sl0    Y  W n$ t
y   ||p|  Y S 0 | ( |ddt ||W  d    S 1 s0    Y  d S )Nr   z1ldgettext() is deprecated, use dgettext() insteadr^   ry   .*\bparameter codeset\b.*rh   rz   )rR   rS   rT   r   r   rH   r{   r|   r   r   r   r}   r~   r   )r   rw   rR   r   rh   r   r"   r"   r#   r     s&    

8
r   c                 C   sP   zt | t| d }W n* ty@   |dkr4| Y S | Y S Y n0 ||||S r   )r   r   rH   r   r   )r   r   r   r<   r   r"   r"   r#   r     s    r   c           	      C   s   dd l }|dtd dd l}t| }zP| 4 |ddt t| t	| d |d}W d    n1 sl0    Y  W n6 t
y   |dkr|}n|}||p|  Y S 0 | , |ddt ||||W  d    S 1 s0    Y  d S )	Nr   z3ldngettext() is deprecated, use dngettext() insteadr^   ry   r   r   r5   r   )rR   rS   rT   r   r   rH   r{   r|   r   r   r   r}   r~   r   )	r   r   r   r<   rR   r   rh   r   r   r"   r"   r#   r     s,    

8
r   c                 C   s:   zt | t| d }W n ty,   | Y S 0 |||S rl   )r   r   rH   r   r   )r   r   rw   r   r"   r"   r#   r     s
    
r   c                 C   sR   zt | t| d }W n* ty@   |dkr4| Y S | Y S Y n0 |||||S r   )r   r   rH   r   r   )r   r   r   r   r<   r   r"   r"   r#   r     s    r   c                 C   s
   t t| S rl   )r   r   )rw   r"   r"   r#   r     s    r   c                 C   sZ   dd l }|dtd | ( |ddt tt| W  d    S 1 sL0    Y  d S )Nr   rx   r^   ry   z.*\bldgettext\b.*)rR   rS   rT   r{   r|   r   r   )rw   rR   r"   r"   r#   r     s    
r   c                 C   s   t t| ||S rl   )r   r   )r   r   r<   r"   r"   r#   r     s    r   c                 C   s^   dd l }|dtd | , |ddt tt| ||W  d    S 1 sP0    Y  d S )Nr   r   r^   ry   z.*\bldngettext\b.*)rR   rS   rT   r{   r|   r   r   )r   r   r<   rR   r"   r"   r#   r     s    
r   c                 C   s   t t| |S rl   )r   r   )r   rw   r"   r"   r#   r     s    r   c                 C   s   t t| |||S rl   )r   r   )r   r   r   r<   r"   r"   r#   r     s    r   )r8   )NNF)N)N)N)0__doc__r   r   sys__all__r   r   base_prefixr   compileVERBOSEDOTALLr   r$   r%   rF   r   rG   rD   rU   r]   rk   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"   r#   <module>   s\   0

1$+h 9
&
+




	
