B
    18\U                 @   st  d dl Z d dlZd dlZd dlZdddddddd	d
ddddddddg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d=d#d$Zd%d& Zd'd( Zd)d* ZG d+d dZG d,d deZd>d.dZi Zd?d/dZd@d0dZi ai ad1adAd2dZdBd3d	Z dCd4d
Z!d5d Z"d6d Z#d7d Z$d8d Z%d9d Z&d:d Z'd;d Z(d<d Z)eZ*dS )D    NNullTranslationsGNUTranslationsCatalogfindtranslationinstall
textdomainbindtextdomainbind_textdomain_codesetdgettext	dngettextgettextlgettext	ldgettext
ldngettext	lngettextngettext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   sT   xHt t| D ]8}|j}|dkr"q||}|dkr@td| |V  qW dV  d S )NZWHITESPACESZINVALIDz invalid token in plural form: %s )refinditer_token_pattern	lastgroupgroup
ValueError)pluralmoZkindvalue r   K/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/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!=)<>z<=z>=)+-)*/%c             C   s    i | ]\}}|D ]
}||qqS r   r   ).0iZopsopr   r   r    
<dictcomp>o   s    r-      orandz//)z||z&&r(   c             C   s  d}t | }x|dkr(|d7 }t | }qW |dkr\t| \}}d||f }|dkrtdnP|dkrrd	||f }n:yt|d
}W n tk
r   t|d Y nX d||f }t | }d}xh|tkr t| }||k rP |dkr|dkrd| }t||}t| |d \}	}d|||	f }|}qW ||  kr:dkrFn nd| }|dkr|dkrt| d\}
}|dkrzt|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)r.   z%s %s %sr9   ?r   :z%s if %s else %s)next_parser   intr"   _binary_ops	_c2py_opsget)tokenspriorityresultnexttoksubr   jr+   r,   rightZif_trueZif_falser   r   r    r=   r   sP    



r=   c             C   sZ   yt | }W n( tk
r4   td| jjf d Y nX dd l}|d| jjf td | S )Nz'Plural value must be an integer, got %sr   r9   )round	TypeError	__class____name__warningswarnDeprecationWarning)r5   r+   rM   r   r   r    _as_int   s    
rP   c             C   s   t | dkrtdy~tt| \}}|r2t|d}x>|D ]6}|dkrb|d7 }|dkrrtdq<|dkr<|d8 }q<W d	ti}td
| | |d S  tk
r   tdY nX d S )Ni  z"plural form expression is too longr   r3   r.      z%plural form expression is too complexr4   rP   zif True:
            def func(n):
                if not isinstance(n, int):
                    n = _as_int(n)
                return int(%s)
            func)lenr   r=   r!   r"   rP   execRecursionError)r   rD   rE   depthcnsr   r   r    c2py   s(    

rY   c             C   s8  t | } d}d}d}d}| d}|dkrN| |d  }| d | } ||O }nd}| d}|dkr| |d  }| d | } ||O }nd}| d}|dkr| |d  }| d | } ||O }nd}| }	g }
x`t|d D ]P}|| @ s|	}||@ r||7 }||@ r||7 }||@ r||7 }|
| qW |
  |
S )	Nr.      r9   r   @r   ._)r   	normalizer   rangeappendreverse)locZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERmaskposZmodifiercodesetZ	territoryZlanguageZretr+   valr   r   r    _expand_lang   sJ    







 
 
 rg   c               @   sp   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dZdS )r   Nc             C   s.   i | _ d | _d | _d | _|d k	r*| | d S )N)_info_charset_output_charset	_fallbackr=   )selffpr   r   r    __init__   s    zNullTranslations.__init__c             C   s   d S )Nr   )rl   rm   r   r   r    r=     s    zNullTranslations._parsec             C   s   | j r| j | n|| _ d S )N)rk   add_fallback)rl   fallbackr   r   r    ro   	  s    zNullTranslations.add_fallbackc             C   s   | j r| j |S |S )N)rk   r   )rl   messager   r   r    r     s    zNullTranslations.gettextc             C   s2   | j r| j |S | jr$|| jS |t S )N)rk   r   rj   encoder   getpreferredencoding)rl   rq   r   r   r    r     s
    zNullTranslations.lgettextc             C   s*   | j r| j |||S |dkr"|S |S d S )Nr.   )rk   r   )rl   msgid1msgid2r5   r   r   r    r     s
    zNullTranslations.ngettextc             C   sH   | j r| j |||S |dkr$|}n|}| jr:|| jS |t S )Nr.   )rk   r   rj   rr   r   rs   )rl   rt   ru   r5   tmsgr   r   r    r   #  s    zNullTranslations.lngettextc             C   s   | j S )N)rh   )rl   r   r   r    info.  s    zNullTranslations.infoc             C   s   | j S )N)ri   )rl   r   r   r    charset1  s    zNullTranslations.charsetc             C   s   | j S )N)rj   )rl   r   r   r    output_charset4  s    zNullTranslations.output_charsetc             C   s
   || _ d S )N)rj   )rl   rx   r   r   r    set_output_charset7  s    z#NullTranslations.set_output_charsetc             C   sv   dd l }| j|jd< t|drrd|kr6|jd |jd< d|krJ| j|jd< d|kr^| j|jd< d|krr| j|jd< d S )Nr   r]   __contains__r   r   r   r   )builtinsr   __dict__hasattrr   r   r   )rl   namesr|   r   r   r    r   :  s    
zNullTranslations.install)N)N)rL   
__module____qualname__rn   r=   ro   r   r   r   r   rw   rx   ry   rz   r   r   r   r   r    r      s   
c               @   sH   e 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S )r   l   * l   $< )r   r.   c             C   s   |d? |d@ fS )N   i  r   )rl   versionr   r   r    _get_versionsP  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krt	ddt| |xtd|	D ]}||||
|
d  \}}|| }|||||d  \}}|| }||k rd||k rd||| }||| }nt	dd||dkrXd }x|dD ]}|  }|sqd  }}d|kr|dd\}}|  }| }|| j|< |}n|r| j|  d| 7  < |dkr"|dd | _n0|dkr|d}|d dd }t|| _qW | jpbd}d|kr|d\}} |d}t||}x>t|D ]\}}!t|!||||f< qW nt|||t||< |
d7 }
|d7 }qW d S )Nr   )unpacknamer   c             S   s   t | dkS )Nr.   )r>   )r5   r   r   r    <lambda>]      z(GNUTranslations._parse.<locals>.<lambda>z<Ir9   z<4IrQ   z<IIz>4Iz>IIzBad magic numberzBad version number    zFile is corrupt   
r;   r.   
zcontent-typezcharset=zplural-forms;zplural=ascii    )structr   getattr_catalogr   readrS   LE_MAGICBE_MAGICOSErrorr   VERSIONSstrr_   splitdecodestriplowerrh   ri   rY   	enumerate)"rl   rm   r   filenameZcatalogbufZbuflenmagicr   ZmsgcountZ	masteridxZtransidxZiiZmajor_versionZminor_versionr+   ZmlenZmoffZmendZtlenZtoffZtendmsgrv   ZlastkZb_itemitemkvr   rx   rt   ru   xr   r   r    r=   T  sr    














zGNUTranslations._parsec             C   sR   t  }| j||}||kr2| jr.| j|S |}| jrD|| jS |t S )N)	objectr   rA   rk   r   rj   rr   r   rs   )rl   rq   missingrv   r   r   r    r     s    zGNUTranslations.lgettextc             C   sv   y| j || |f }W n< tk
rT   | jr>| j|||S |dkrL|}n|}Y nX | jrh|| jS |t S )Nr.   )	r   r   KeyErrorrk   r   rj   rr   r   rs   )rl   rt   ru   r5   rv   r   r   r    r     s    
zGNUTranslations.lngettextc             C   s6   t  }| j||}||kr2| jr.| j|S |S |S )N)r   r   rA   rk   r   )rl   rq   r   rv   r   r   r    r     s    zGNUTranslations.gettextc             C   sZ   y| j || |f }W n< tk
rT   | jr>| j|||S |dkrL|}n|}Y nX |S )Nr.   )r   r   r   rk   r   )rl   rt   ru   r5   rv   r   r   r    r     s    
zGNUTranslations.ngettextN)rL   r   r   r   r   r   r   r=   r   r   r   r   r   r   r   r    r   H  s   V	Fc             C   s   |d krt }|d krTg }x(dD ] }tj|}|r|d}P qW d|krT|d g }x0|D ](}x"t|D ]}||krl|| qlW q^W |rg }	nd }	xL|D ]D}|dkrP tj||dd|  }
tj	|
r|r|	|
 q|
S qW |	S )N)ZLANGUAGELC_ALLLC_MESSAGESZLANGr;   Cr   z%s.mo)
_default_localedirosenvironrA   r   r`   rg   pathjoinexists)domain	localedir	languagesallZenvarrf   ZnelangsZlangZnelangrD   mofiler   r   r    r     s8    




c          
   C   s   |d krt }t| ||dd}|sB|r*t S ddlm} t|d| d }x|D ]}	|tj|	f}
t	
|
}|d krt|	d}t	|
||}W d Q R X dd l}||}|r|| |d kr|}qL|| qLW |S )NT)r   r   )ENOENTz$No translation file found for domainrb)r   r   r   errnor   FileNotFoundErrorr   r   abspath_translationsrA   open
setdefaultcopyrz   ro   )r   r   r   Zclass_rp   re   Zmofilesr   rD   r   keytrm   r   r   r   r    r     s0    



c             C   s   t | |d|d}|| d S )NT)rp   re   )r   r   )r   r   re   r   r   r   r   r    r   &  s    Zmessagesc             C   s   | d k	r| a t S )N)_current_domain)r   r   r   r    r   4  s    c             C   s   |d k	r|t | < t | tS )N)_localedirsrA   r   )r   r   r   r   r    r	   ;  s    c             C   s   |d k	r|t | < t | S )N)_localecodesetsrA   )r   re   r   r   r    r
   B  s    c             C   s@   y t | t| d t| d}W n tk
r4   |S X ||S )N)re   )r   r   rA   r   r   r   )r   rq   r   r   r   r    r   I  s    c             C   sR   t | }yt| t| d |d}W n" tk
rF   ||pBt S X ||S )N)re   )	r   rA   r   r   r   rr   r   rs   r   )r   rq   re   r   r   r   r    r   Q  s    
c             C   sT   y t | t| d t| d}W n$ tk
rD   |dkr<|S |S Y nX ||||S )N)re   r.   )r   r   rA   r   r   r   )r   rt   ru   r5   r   r   r   r    r   Y  s    
c             C   sh   t | }yt| t| d |d}W n4 tk
rX   |dkrB|}n|}||pTt S X ||||S )N)re   r.   )	r   rA   r   r   r   rr   r   rs   r   )r   rt   ru   r5   re   r   rv   r   r   r    r   d  s    
c             C   s
   t t| S )N)r   r   )rq   r   r   r    r   p  s    c             C   s
   t t| S )N)r   r   )rq   r   r   r    r   s  s    c             C   s   t t| ||S )N)r   r   )rt   ru   r5   r   r   r    r   v  s    c             C   s   t t| ||S )N)r   r   )rt   ru   r5   r   r   r    r   y  s    )r1   )NNF)NNNFN)NNN)N)N)N)+r   r   r   sys__all__r   r   base_prefixr   compileVERBOSEDOTALLr   r!   r"   r?   r   r@   r=   rP   rY   rg   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>1   sV   



1$*K 
& 
#



