
    dQR                        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j	        dej
        ej        z            Zd Zd Zd	Zd
  eed          D             ZddddZd)dZd Zd Zd Z G d d          Z G d de          Zd*dZi Z	 	 d+dZd,dddZi adad,dZd,d Zd! Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'eZ(dS )-a  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bindtextdomainfindtranslationinstall
textdomaindgettext	dngettextgettextngettextpgettext	dpgettext	npgettext
dnpgettext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              #      K   t          j        t          |           D ]A}|j        }|dk    r|                    |          }|dk    rt          d|z            |V  BdV  d S )NWHITESPACESINVALIDz invalid token in plural form: %s )refinditer_token_pattern	lastgroupgroup
ValueError)pluralmokindvalues         /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/gettext.py	_tokenizer$   V   s|      k.&11  |=  9?%GHHH
HHHHH    c                 H    | rt          d| z            S t          d          S )Nz#unexpected token in plural form: %szunexpected end of plural form)r   )r"   s    r#   _errorr'   b   s-     ;?%GHHH9:::r%   ))||)&&)z==z!=)<>z<=z>=)+-)*/%c                 $    i | ]\  }}|D ]}||S  r2   ).0iopsops       r#   
<dictcomp>r7   q   s+    KKKCsKKr1KKKKr%      orandz//)r(   r)   r/   c                 B   d}t          |           }|dk    r|dz  }t          |           }|dk    |dk    r0t          |           \  }}|d|d}|dk    rt          d          nD|dk    r||}n7	 t          |d          }n# t          $ r t	          |          d w xY wd	||fz  }t          |           }d
}|t
          v rgt
          |         }||k     rnS|dv r	|dv rd|z  }t                              ||          }t          | |dz             \  }	}|d|d|	}|}|t
          v g||cxk    rdk    rn nd|z  }|dk    rU|dk    rOt          | d          \  }
}|dk    rt	          |          t          |           \  }}|
d|d|}|dk    rd|z  }||fS )Nr   !znot ()z%unbalanced parenthesis in plural formn
   z%s%dd   )      z(%s)r8    rD   ?r   :z if z else )next_parser   intr'   _binary_ops	_c2py_opsget)tokenspriorityresultnexttoksubr"   jr4   r6   rightif_trueif_falses               r#   rI   rI   u   s0   F6llG
S..&v,, S.. #~~f~~W#VVSSS)c>>DEEE 	C!677+	,$$EE 	, 	, 	,//t+	,65/)6llGA
[
 
  x<<;;1;;f_F]]7G,,A..w%vvrrr551 [
 
  	H&#~~(a--!&!,,c>>//!"6NN''.wwAq==f_F7?s   6B B"c                     	 t          |           }n+# t          $ r t          d| j        j                  d w xY wdd l}|                    d| j        j        t          d           | S )Nz%Plural value must be an integer, got r   rD   )round	TypeError	__class____name__warningswarnDeprecationWarning)r@   r4   r\   s      r#   _as_intr_      s    ;!HH ; ; ;i--0 1 16:	;; OOOMMM;''*$a) ) ) Hs    (:c                    t          |           dk    rt          d          	 t          t          |                     \  }}|rt	          |          d}|D ].}|dk    r|dz  }|dk    rt          d          #|dk    r|dz  }/d	t
          i}t          d
|z  |           |d         S # t          $ r t          d          w xY w)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>   r8      z%plural form expression is too complexr?   r_   zif True:
            def func(n):
                if not isinstance(n, int):
                    n = _as_int(n)
                return int(%s)
            func)lenr   rI   r$   r'   r_   execRecursionError)r   rP   rQ   depthcnss         r#   c2pyri      s   
 6{{T=>>>B 6!2!233 	"//! 	 	ACxx
2:: %%LMMM  c
! 
 
 	 	 	 &z B B B@AAABs   BB+ +Cc                 b   dd l }|                    |           } d}d}d}d}|                     d          }|dk    r| |d          }| d |         } ||z  }nd}|                     d          }|dk    r| |d          }| d |         } ||z  }nd}|                     d          }|dk    r| |d          }	| d |         } ||z  }nd}	| }
g }t          |dz             D ]=}|| z  s5|
}||z  r||	z  }||z  r||z  }||z  r||z  }|                    |           >|                                 |S )	Nr   r8      rD   @r   ._)r   	normalizer   rangeappendreverse)locr   COMPONENT_CODESETCOMPONENT_TERRITORYCOMPONENT_MODIFIERmaskposmodifiercodeset	territorylanguageretr4   vals                 r#   _expand_langr      s   MMM


3

C   D
((3--C
axxstt9$3$i""
((3--C
axxcdd)$3$i!!
((3--C
axxI	$3$i##	H
C46]]  TE	 	C&&8y(8$$6w%%7xJJsOOOKKMMMJr%   c                   N    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZddZdS )r   Nc                 b    i | _         d | _        d | _        ||                     |           d S d S N)_info_charset	_fallbackrI   selffps     r#   __init__zNullTranslations.__init__  s6    
>KKOOOOO >r%   c                     d S r   r2   r   s     r#   rI   zNullTranslations._parse
  s    r%   c                 Z    | j         r| j                             |           d S || _         d S r   )r   add_fallback)r   fallbacks     r#   r   zNullTranslations.add_fallback  s3    > 	&N''11111%DNNNr%   c                 H    | j         r| j                             |          S |S r   )r   r   )r   messages     r#   r   zNullTranslations.gettext  s'    > 	3>))'222r%   c                 \    | j         r| j                             |||          S |dk    r|S |S Nr8   )r   r   )r   msgid1msgid2r@   s       r#   r   zNullTranslations.ngettext  s9    > 	>>**661===66MMr%   c                 J    | j         r| j                             ||          S |S r   )r   r   )r   contextr   s      r#   r   zNullTranslations.pgettext   s)    > 	=>**7G<<<r%   c                 ^    | j         r| j                             ||||          S |dk    r|S |S r   )r   r   )r   r   r   r   r@   s        r#   r   zNullTranslations.npgettext%  s<    > 	H>++GVVQGGG66MMr%   c                     | j         S r   )r   r   s    r#   infozNullTranslations.info-  s
    zr%   c                     | j         S r   )r   r   s    r#   charsetzNullTranslations.charset0  s
    }r%   c                     dd l }| j        |j        d<   |1h d}|t          |          z  D ]}t	          | |          |j        |<   d S d S )Nr   rn   >   r   r   r   r   )builtinsr   __dict__setgetattr)r   namesr   allowednames        r#   r	   zNullTranslations.install3  sq    !%#FFFG#e**, > >*1$*=*=!$'' > >r%   r   )r[   
__module____qualname__r   rI   r   r   r   r   r   r   r   r	   r2   r%   r#   r   r     s             & & &  
    
      > > > > > >r%   r   c                   B    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d	 Zd
 ZdS )r   l   * l   $< z%s%s)r   r8   c                     |dz	  |dz  fS )z/Returns a tuple of major version, minor version   i  r2   )r   versions     r#   _get_versionszGNUTranslations._get_versionsH  s    2w/00r%   c                 >   ddl m} t          |dd          }i x| _        }d | _        |                                }t          |          } |d|dd                   d         }|| j        k    r |d	|dd
                   \  }}	}
}d}n8|| j        k    r |d|dd
                   \  }}	}
}d}nt          dd|          | 
                    |          \  }}|| j        vr!t          ddt          |          z   |          t          d|	          D ]} ||||
|
dz                      \  }}||z   } |||||dz                      \  }}||z   }||k     r||k     r|||         }|||         }nt          dd|          |dk    rjd}|                    d          D ]Q}|                                                                }|s,|                    d          r|                    d          rWdx}}d|v r`|                    dd          \  }}|                                                                }|                                }|| j        |<   |}n|r| j        |xx         d|z   z  cc<   |dk    r"|                    d          d         | _        |dk    rJ|                    d          }|d                             d          d         }t-          |          | _        S| j        pd}d|v rh|                    d          \  }} |                    d          }t          ||          }t/          |          D ]\  }}!t          |!|          |||f<   n!t          ||          |t          ||          <   |
dz  }
|dz  }dS )z8Override this method to support alternative .mo formats.r   )unpackr   r   c                 (    t          | dk              S r   )rJ   )r@   s    r#   <lambda>z(GNUTranslations._parse.<locals>.<lambda>U  s    AF r%   z<INrD   z<4Ira   z<IIz>4Iz>IIzBad magic numberzBad version number    zFile is corrupt   
z	#-#-#-#-#rG   r8   
zcontent-typezcharset=zplural-forms;zplural=ascii    )structr   r   _catalogr   readrc   LE_MAGICBE_MAGICOSErrorr   VERSIONSstrrp   splitdecodestrip
startswithendswithlowerr   r   ri   	enumerate)"r   r   r   filenamecatalogbufbuflenmagicr   msgcount	masteridxtransidxiimajor_versionminor_versionr4   mlenmoffmendtlentofftendmsgtmsglastkb_itemitemkvr   r   r   r   xs"                                     r#   rI   zGNUTranslations._parseL  s    	"!!!!!2vr** #%$++ggiiStS!W%%a(DM!!5;VE3qt95M5M2GXy(BBdm##5;VE3qt95M5M2GXy(BB!/:::'+'9'9''B'B$}--!2S5G5GGRRR q(## 9	 9	AC	)A+(=$>??JD$$;DC!(;$<==JD$$;Df}}$t)n49~a!2H===qyy"jj// 3 3F!==??0022D ! {33 !k8R8R !  LAd{{#zz#q111GGIIOO--GGII()
1 ! 9
5)))TD[8)))N**()
(;(;A(>n,,GGCLL!"1I!6!6q!9&*6ll m.wG#~~!$7!3!3zz'**VW--%dOO ; ;DAq+.q'??GVQK((; .1w-?-?C))*NIMHHs9	 9	r%   c                    t                      }| j                            ||          }||u r0| j                            ||                     d          f|          }||ur|S | j        r| j                            |          S |S r   )objectr   rM   r   r   r   )r   r   missingr   s       r#   r   zGNUTranslations.gettext  s    ((}  '227??=$$gt{{1~~%>HHDwK> 	3>))'222r%   c                     	 | j         ||                     |          f         }n@# t          $ r3 | j        r| j                            |||          cY S |dk    r|}n|}Y nw xY w|S r   )r   r   KeyErrorr   r   )r   r   r   r@   r   s        r#   r   zGNUTranslations.ngettext  s    	=&$++a..!9:DD 	 	 	~ B~..vvqAAAAAAvv	 s   "% -A"A"!A"c                 (   | j         ||fz  }t                      }| j                            ||          }||u r0| j                            ||                     d          f|          }||ur|S | j        r| j                            ||          S |S r   )CONTEXTr   r   rM   r   r   r   )r   r   r   ctxt_msg_idr   r   s         r#   r   zGNUTranslations.pgettext  s    lgw%77((}  g667??=$$k4;;q>>%BGLLDwK> 	=>**7G<<<r%   c                     | j         ||fz  }	 | j        ||                     |          f         }nA# t          $ r4 | j        r| j                            ||||          cY S |dk    r|}n|}Y nw xY w|S r   )r   r   r   r   r   r   )r   r   r   r   r@   r   r   s          r#   r   zGNUTranslations.npgettext  s    lgv%66	=dkk!nn!<=DD 	 	 	~ L~//KKKKKAvv	 s   "1 .A/!A/.A/N)r[   r   r   r   r   r   r   r   rI   r   r   r   r   r2   r%   r#   r   r   <  s        HH G H1 1 1W W Wr	 	 	
 
 

 
 
    r%   r   Fc                    |t           }|Xg }dD ]:}t          j                            |          }|r|                    d          } n;d|vr|                    d           g }|D ]-}t          |          D ]}||vr|                    |           .|rg }	nd }	|D ]j}|dk    r nat          j                            ||dd| z            }
t          j        	                    |
          r|r|	                    |
           f|
c S k|	S )N)LANGUAGELC_ALLLC_MESSAGESLANGrG   Cr   z%s.mo)
_default_localedirosenvironrM   r   rq   r   pathjoinexists)domain	localedir	languagesallenvarr~   nelangslangnelangrP   mofiles              r#   r   r     sc   &		B 	 	E*..''C IIcNN	 iS!!!G ' '"4(( 	' 	'FW$$v&&&	'    3;;Ei}g>NOO7>>&!! 	 f%%%%		
 Mr%   c                    |t           }t          | ||d          }|s'|rt                      S ddlm} t          |d|           d }|D ]}|t          j                            |          f}	t          
                    |	          }
|
Lt          |d          5 }t                              |	 ||                    }
d d d            n# 1 swxY w Y   dd l}|                    |
          }
||
}|                    |
           |S )NT)r   r   )ENOENTz$No translation file found for domainrb)r   r   r   errnor   FileNotFoundErrorr   r   abspath_translationsrM   open
setdefaultcopyr   )r   r   r   class_r   mofilesr   rP   r   keytr   r  s                r#   r   r     st   ~ 69iT:::G P 	&#%%%       FP P 	P F # #rwv../c""9fd## >r!,,S&&**==> > > > > > > > > > > > > > > 	IIaLL>FF""""Ms   %C

C	C	)r   c                T    t          | |d          }|                    |           d S )NT)r   )r   r	   )r   r   r   r  s       r#   r	   r	   !  s.    FI555AIIer%   messagesc                     | | a t           S r   )_current_domain)r   s    r#   r
   r
   ,  s     r%   c                 Z    |
|t           | <   t                               | t                    S r   )_localedirsrM   r   )r   r   s     r#   r   r   3  s'    'F??6#5666r%   c                     	 t          | t                              | d                     }n# t          $ r |cY S w xY w|                    |          S r   )r   r  rM   r   r   )r   r   r  s      r#   r   r   :  s\     = =>>   99W   ), ;;c                     	 t          | t                              | d                     }n# t          $ r |dk    r|cY S |cY S w xY w|                    |||          S r   )r   r  rM   r   r   )r   r   r   r@   r  s        r#   r   r   B  st     = =>>   66MMMMMM	
 ::ffa(((   ), A AAc                     	 t          | t                              | d                     }n# t          $ r |cY S w xY w|                    ||          S r   )r   r  rM   r   r   )r   r   r   r  s       r#   r   r   M  s^     = =>>   ::gw'''r  c                     	 t          | t                              | d                     }n# t          $ r |dk    r|cY S |cY S w xY w|                    ||||          S r   )r   r  rM   r   r   )r   r   r   r   r@   r  s         r#   r   r   U  sv     = =>>   66MMMMMM	
 ;;w222r  c                 ,    t          t          |           S r   )r   r  )r   s    r#   r   r   `  s    OW---r%   c                 0    t          t          | ||          S r   )r   r  )r   r   r@   s      r#   r   r   d  s    _ffa888r%   c                 .    t          t          | |          S r   )r   r  )r   r   s     r#   r   r   h  s    _gw777r%   c                 2    t          t          | |||          S r   )r   r  )r   r   r   r@   s       r#   r   r   l  s    owBBBr%   )r;   )NNF)NNNFr   ))__doc__r   r   sys__all__r   r   base_prefixr   compileVERBOSEDOTALLr   r$   r'   rK   r   rL   rI   r_   ri   r   r   r   r   r  r   r	   r  r  r
   r   r   r   r   r   r   r   r   r   r   r2   r%   r#   <module>r      s  
 
` 
			 				 



   W\\#/7HEE    
BI	 	 	 	; ; ; LK99[!#<#<KKKu400	/ / / /d
 
 
!B !B !BH' ' 'T7> 7> 7> 7> 7> 7> 7> 7>tW W W W W& W W Wv! ! ! !J  37&+   DT         7 7 7 7  ) ) )( ( (3 3 3. . .9 9 98 8 8C C C$ r%   