
    -PhKX                       U d dl mZ d dlmZ d dlmZ d dlZd dlZddl	m
Z
mZmZ ddl	mZ dd	l	mZ dd
lmZ ddl	mZ ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ej)        r~d dl*m+Z+m,Z, ddl	m-Z- ddlm.Z. ddl/m0Z0 ddlm1Z1  G d de,          Z2 G d de,          Z3 G d de,          Z4 G d de,          Z5ej6        e7ej8        ej9        ej:        ej;        f         Z< e!d e e=e7          g d !          Z>d"e?d#<    e!d$ e e=e7          g d !          Z@d"e?d%<   d&g d'iZA G d( d)          ZB G d* d+e
          ZCd0d/ZDdS )1    )annotations)path)PathN   )ExtensionModuleModuleReturnValue
ModuleInfo   )build)mesonlib)	OptionKey)mlog)CT_BUILD_BY_DEFAULTCT_INPUT_KWINSTALL_TAG_KW	OUTPUT_KWINSTALL_DIR_KW
INSTALL_KWNoneTypein_set_validator)
FeatureNew)InvalidArguments)ContainerTypeInfo	KwargInfo	noPosargstyped_kwargstyped_pos_args)ExternalProgram)read_linguas)Literal	TypedDict)ModuleState)Target)Interpreter)TYPE_varc                  t    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   dS )	MergeFileT.List[T.Union[str, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, build.ExtractedObjects, build.GeneratedList, ExternalProgram, mesonlib.File]]inputstroutputboolbuild_by_defaultinstallT.Optional[str]install_dirinstall_tagT.List[str]args	data_dirspo_dirzLiteral['xml', 'desktop']typeN__name__
__module____qualname____annotations__     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/modules/i18n.pyr'   r'      s         	 	 	 	 	$$$$$$$$''''''r=   r'   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
S )Gettextr2   r3   r4   r,   r.   r/   r0   	languagespresetNr7   r<   r=   r>   r@   r@   /   sW         $$$$r=   r@   c                  `    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   dS )ItsJoinFiler(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   	its_fileszOT.List[T.Union[build.BuildTarget, build.CustomTarget, build.CustomTargetIndex]]
mo_targetsNr7   r<   r=   r>   rD   rD   8   sv         	 	 	 	 	$$$$$$$$ccccccr=   rD   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	S )
XgettextProgramTr2   r3   r,   	recursiver.   r/   r0   r1   Nr7   r<   r=   r>   rH   rH   F   sH         $$$$$$$$$$r=   rH   r3   TdefaultlistifyzKwargInfo[T.List[str]]_ARGSr4   
_DATA_DIRSglib)z--from-code=UTF-8z--add-commentsz--keyword=_z--keyword=N_z--keyword=C_:1c,2z--keyword=NC_:1c,2z--keyword=g_dcgettext:2z--keyword=g_dngettext:2,3z--keyword=g_dpgettext2:2c,3z--flag=N_:1:pass-c-formatz--flag=C_:2:pass-c-formatz--flag=NC_:2:pass-c-formatz"--flag=g_dngettext:2:pass-c-formatz!--flag=g_strdup_printf:1:c-formatz!--flag=g_string_printf:2:c-formatz(--flag=g_string_append_printf:2:c-formatz--flag=g_error_new:3:c-formatz--flag=g_set_error:4:c-formatz)--flag=g_markup_printf_escaped:1:c-formatz--flag=g_log:3:c-formatz--flag=g_print:1:c-formatz--flag=g_printerr:1:c-formatz--flag=g_printf:1:c-formatz--flag=g_fprintf:2:c-formatz--flag=g_sprintf:2:c-formatz--flag=g_snprintf:3:c-formatc                  ^    e Zd ZU i Zded<   d'dZd(dZd)dZd*dZd+d"Z	e
d,d%            Zd&S )-XgettextProgramzT.Dict[str, build.CustomTarget]	pot_filesxgettextr   interpreterr$   c                "    || _         || _        d S N)rS   rT   )selfrS   rT   s      r>   __init__zXgettextProgram.__init__   s     &r=   namer*   sourcesT.List[SourcesType]r3   r2   rI   r,   r.   r0   r/   r1   returnbuild.CustomTargetc                   |                     d          s|dz  }|                     |          }| j        j        |z   }	|	                    d| j        j                                                    |	                    d| j        j                                                    |	                    d           |r"t          | 
                    |                    ng }
|                     |||
|	          }|r(|g}t          |          }|	                    d           n+t          |          |
z   }d }
d }|	                    d           t          j        d| j        j        | j        j        | j        j        |	||g||
||r|gnd |r|gnd d          }|                     |          D ]}|| j        |<   || j        |                                <   | j                            |j        |           |S )	Nz.potz--directory=z--output=@OUTPUT@z--files-from=@INPUT@@INPUT@ zExtracting translations to {})depend_filesextra_dependsr.   r0   r1   description)endswith_get_source_filesrS   commandappendrT   environmentget_source_dirget_build_dirlist_get_depends_get_rsp_filer   CustomTargetsubdir
subproject_get_source_idrR   get_id
add_targetrY   )rW   rY   rZ   r3   rI   r.   r0   r1   source_filesrf   dependsrsp_fileinputsra   ct	source_ids                   r>   extractzXgettextProgram.extract   s    }}V$$ 	FND--g66-'$.Ud&6&B&Q&Q&S&SUUVVVTd&6&B&P&P&R&RTTUUU*+++6?G$t((11222R%%dL'7KK 	&ZF--LNN12222,'''1FGLNN9%%%#'(F'#+6@;--D+6@;--D9
 
 
  ,,W55 	+ 	+I(*DN9%%&(ryy{{###BGR000	r=   T.Iterable[SourcesType]T.Set[mesonlib.File]c                   t                      }|D ];}t          |t          j                  r|                    |           3t          |t
                    r]t          j        |           |                    t          j                            | j        j	        | j        j
        |                     t          |t          j                  r(|                    |                                           t          |t          j                  r:|                    |                    d                                                     =|S )Nshared)set
isinstancer   Fileaddr*   check_direntry_issuesfrom_source_filerT   source_rootro   r   BuildTargetupdateget_sourcesBothLibrariesget)rW   rZ   rt   sources       r>   re   z!XgettextProgram._get_source_files   s'   uu 		H 		HF&(-00 H  ((((FC(( H.v666  !?!?@P@\^b^n^uw}!~!~FE$566 H##F$6$6$8$89999FE$788 H##FJJx$8$8$D$D$F$FGGGr=   T.Set[build.CustomTarget]c                   t                      }|D ]}t          |t          j                  rT|                     |                                          D ]+}|| j        v r |                    | j        |                    ,pt          |t          j                  r=|	                                }|| j        v r |                    | j        |                    |S rV   )
r   r   r   r   rq   get_dependenciesrR   r   rn   rr   )rW   rZ   ru   r   ry   s        r>   rl   zXgettextProgram._get_depends   s    %% 		; 		;F&%"344 ;!%!4!4V5L5L5N5N!O!O ? ?I DN22DN9$=>>>? FE$677 ;"MMOO	..KKy 9:::r=   rt   T.Iterable[mesonlib.File]ru   T.Iterable[build.CustomTarget]	argumentsT.Optional[mesonlib.File]c                   d                     d |D                       }|D ]4}|dt          j         |j        |                                          z   z  }5t	          |          t          d |D                       z   dz   }|t          j                    k     rd S t          | j	        j
        j        | j	        j        |dz             }|                    |d           t          j                            | j	        j        |j                  S )N
c              3  >   K   | ]}|                                 V  d S rV   )relative_name).0r   s     r>   	<genexpr>z0XgettextProgram._get_rsp_file.<locals>.<genexpr>   s.      RR6 4 4 6 6RRRRRRr=   c              3  :   K   | ]}t          |          d z   V  dS )r   N)len)r   args     r>   r   z0XgettextProgram._get_rsp_file.<locals>.<genexpr>   s,      9\9\3#c((Q,9\9\9\9\9\9\r=   r   z.rspzutf-8)encoding)joinr   ro   get_filenamer   sumr   get_rsp_thresholdr   rT   rh   	build_dir
write_textr   from_built_filerY   )	rW   rY   rt   ru   r   source_listdepestimated_cmdline_lengthrv   s	            r>   rm   zXgettextProgram._get_rsp_file   s
   
 iiRR\RRRRR 	L 	LC4$)CJ8H8H8J8J"K"KKKKK#&{#3#3c9\9\R[9\9\9\6\6\#\_`#` #h&@&B&BBB4(4>@P@WY]^dYdeeK':::},,T-=-DhmTTTr=   9T.Iterable[T.Union[SourcesType, build.CustomTargetIndex]]T.Iterable[str]c              #  N  K   | D ]}t          |t          j                  r|                                V  3t          |t          j                  rR|                    d                                          V  |                    d                                          V  d S )Nstaticr~   )r   r   r#   rr   r   r   )rZ   r   s     r>   rq   zXgettextProgram._get_source_id   s       	4 	4F&%,// 4mmoo%%%%FE$788 4jj**1133333jj**1133333	4 	4r=   N)rS   r   rT   r$   )rY   r*   rZ   r[   r3   r2   rI   r,   r.   r,   r0   r/   r1   r/   r\   r]   )rZ   r{   r\   r|   )rZ   r{   r\   r   )
rY   r*   rt   r   ru   r   r   r2   r\   r   )rZ   r   r\   r   )r8   r9   r:   rR   r;   rX   rz   re   rl   rm   staticmethodrq   r<   r=   r>   rQ   rQ      s         13I3333' ' ' '5 5 5 5n      U U U U$ 4 4 4 \4 4 4r=   rQ   c                  t    e Zd Z ed          Zd; fdZed<d            Z edd          e	 e
dee edeef          eeee                    d          e                    d           eded           eded eddh                              d=d                                    Z ede           e
dee                    d            ej        d!           ej        d"           ed# eee          g d$           ed%eef e ee                    d&                    d>d)                        Z ed*d+          e	 e
d*ee edeef          eeee                                 ed, eee                     ed- eeej                   d          
  
        d?d/                                    Z! ed0d1           ed0eee"j#        ej$        ej%        ej         fd23           e
d0e ed4e&d5!          eee          d@d:                                    Z' xZ(S )A
I18nModulei18nrT   'Interpreter'c                    t                                          |           | j                            | j        | j        | j        | j        d           d d d d d d| _        d S )N)
merge_filegettextitstool_joinrS   )itstoolmsgfmtmsginitmsgmergerS   )	superrX   methodsr   r   r   r   rS   tools)rW   rT   	__class__s     r>   rX   zI18nModule.__init__   sy    %%%/| -	
 
 	 	 	 [
 [



r=   state'ModuleState'dirsr   r\   r2   c                    t          j        | j                                        | j                  fd|D             S )z,Returns source directories of relative pathsc                :    g | ]}t          j        |          S r<   )r   r   )r   dsrc_dirs     r>   
<listcomp>z-I18nModule._get_data_dirs.<locals>.<listcomp>  s%    444!	'1%%444r=   )r   r   rh   ri   ro   )r   r   r   s     @r>   _get_data_dirszI18nModule._get_data_dirs  sA     )E-<<>>MM4444t4444r=   zi18n.merge_filez0.37.0r0   z0.51.0)sincez0.41.0r5   T)requiredr6   xmldesktop)rK   	validatorr3   T.List['TYPE_var']kwargs'MergeFile'r   c                   |d         r|d         st          d          | j        d         | j        d                                         s.|                    dt          j        j                  | j        d<   t          | j        d         t                    r	 | j        d         	                                }n,# t          j
        $ r}t	          j
        d          |d }~ww xY w|d         dk    rd	nd
}t	          j        ||          s*d| d|d         z   d| dz   }t	          j
        |          t          j        |j        |j        |d                   }|                     ||d                   }	|	rdd                    |	          z   nd }
g }|                    |j                                                   |                    ddd| j        d                                         z   g           |
r|                    |
           |                    dd|d         |g           |d         r0|                    d           |                    |d                    |d         }||d         }|d         	|d         gnd }t-          j        d|j        |j        |j        ||d         |d         g||d         |d         	|d         gnd |d           }t3          ||g          S )!Nr.   r0   zSi18n.merge_file: "install_dir" keyword argument must be set when "install" is true.r   for_machinez#i18n.merge_file requires GNU msgfmtr6   r   z>=0.19z>=0.19.7z$i18n.merge_file requires GNU msgfmt z to produce files of type: z (got: )r5   r4   --datadirs=:
--internalmsgfmthelperz	--msgfmt=r_   @OUTPUT@r3   --r-   r1   r`   r)   r+   Merging translations for {})r-   r.   r0   r1   rc   )r   r   foundfind_programr   MachineChoiceBUILDr   r   get_versionMesonExceptionversion_comparer   r   build_to_srcro   r   extendrh   get_build_commandget_pathrg   r   rn   rp   r   )rW   r   r3   r   have_versionewant_versionmsgpodirddirsdatadirsrf   r-   r1   rx   s                  r>   r   zI18nModule.merge_file  sT     ) 	zVM%: 	z"#xyyy:h'tz(/C/I/I/K/K'#(#5#5hHLbLh#5#i#iDJx dj*O<< 	3\#z(3??AA* \ \ \-.STTZ[[\'-f~'B'B88
L+L,GG 3f\fffiopviww  {T  EQ  {T  {T  {T  T-c222	%,elF8<LMM##E6++>??6;E=388E??22 _a 	u(::<<===.$*X.77999
 	 	 	  	%NN8$$$	:vf~uEFFF&> 	+NN4   NN6&>***!"45#%i0171F1Rvm,--X\L7OH-9%39-3H3T.//Z^#5
 
 
 !bT***s   B; ;C$
CC$zi18n.gettextz0.36.0)rK   z0.50.0rA   rJ   rB   )r   r   T.Tuple[str]	'Gettext'c                   dD ]\  }}| j         |         /|                    |dt          j        j                  | j         |<   | j         |                                         sP|r.t          j        dd|j                   t          d g           c S t          j        |ddd|j                   |d	         }d
| }|d         }|rdd
                    |          z   nd }	d
                    |                     ||d                             }
|
rd|
 nd }|d         }g }g }|d         }|r1t          |         }t          t          j        ||z                       }|rdd
                    |          z   nd }t          j
        |j        |j                  }|j        r t          j        |j        |j                  nd }|j                                        ddd|gz   }|                    d|            |r|                    d|            |r|                    |           |r|                    |           | j         d                                         r5|                    d| j         d                                         z              t1          j        |dz   |g |j        |j        |j        d          }|                    |           |d         }|d         p0|j        j        j                            t=          d                     }t?          |t@                    s
J d!            |s1tC          t          j
        |j        j"        |j                            }|D ]}t          j#        $                    |j        j"        |j        |d"z             }t1          j%        | d#| d$t          j
        |j        |d%          |j        |j        | j         d&         d'd(d)g|g| d$g|t          j
        ||d%          gd*gd+,          }|                    |           |                    |           t1          j&        |d-z   ||j        |j        |j                  }|                    |           |j                                        ddd.|gz   }|                    d|            |r|                    d|            |	r|                    |	           |r|                    |           |r|                    |           d/D ]Z}| j         |                                         r9|                    d0| d1| j         |                                         z              [t1          j        |d2z   |g |j        |j        |j        d          }|                    |           t          |||g|          S )3N))r   T)r   F)r   F)rS   FFr   r   z@Gettext not found, all translation (po) targets will be ignored.T)oncelocationz, not found, maintainer targets will not work)r   fatalr   r   z
--pkgname=rA   z--langs=z@@r   r4   r   r3   rB   z--extra-args=)startr   r   potz--source-root=z	--subdir=rS   z--xgettext=z-pot)default_envr.   r0   	localedirzfor mypyz.po-z.moLC_MESSAGESr   -or   r_   r   zBuilding translation {})r.   r0   r1   rc   z-gmo	update_po)r   r   r   =z
-update-po)'r   r   r   r   r   r   r   warningcurrent_noder   r   r   PRESET_ARGSrk   
OrderedSetr   r   root_subdirro   relpathrh   r   rg   r   r   	RunTargetrp   coredataoptstoreget_value_forr   r   r*   r   
source_dirr   r   rn   AliasTarget)rW   r   r3   r   toolstrictpackagenamepkg_argrA   lang_arg	_datadirsr   
extra_argstargets
gmotargetsrB   preset_args	extra_argr   ro   potargs	pottargetr.   r0   lpo_file	gmotargetallgmotargetupdatepoargsupdatepotargets                                 r>   r   zI18nModule.gettext[  sf     m 	V 	VLD&z$'#(#5#5dUX`XnXt#5#u#u
4 :d#))++ V VL!c&*U5GI I I I,T266666LD!X!X!X&*%%BTV V V V1g,{,,;'	8AK:		) 4 444tHHT00{8KLLMM	09C,,,,tF^
$&35
! 	M%f-Kh1+
2JKKLLJ?ISOdii
&;&;;;t	i 153DEEHM^el%2CDDDDZ^#5577<TY[b:cc555666 	1NN/v//000 	%NN8$$$ 	&NN9%%%:j!'')) 	NNN=4:j+A+J+J+L+LLMMMOK&$8'2u|UZUe$)$55J J J	y!!!#]+xu/@/I/R/`/`ajkvawaw/x/x+s++77Z777 	\$TYu/@/KU\%Z%Z[[I 	) 	)Am44U5F5Q5:\1U7L LG*'''''	%,=99 !H%tZC	$$$%
 "Y{A}EEF#H5  I" NN9%%%i(((((v)=z5<Y^Yi).):< <|$$$(::<<iYdfm?nn:[::;;; 	6 4F 4 4555 	*))) 	*))) 	+	***+ 	P 	PDz$%%'' P##LLLL4:d3C3L3L3N3N$NOOO|)C\SUW\Wcejeu).):O O O~&&& *i!H'RRRr=   zi18n.itstool_joinz0.62.0rE   rF   'ItsJoinFile'c                   |d         r|d         st          d          | j        d         .|                    dt          j        j                  | j        d<   |d         }|                    dg           }g }|D ]T}|                    t          j	        |
                                |                                d                              Ug }|                    |j                                                   | j        d                                         }	|                    d	dd
dddddd	                    d |	D                       z   g           |rU|D ]R}
t          j        |
          s%t          j	        |j        j        |j        |
          }
|                    d|
g           S|                    |           |d         }||d         }|d         	|d         gnd }t'          j        d|j        |j        |j        ||d         |d         g|||d         |d         	|d         gnd |d          }t-          ||g          S )Nr.   r0   zUi18n.itstool_join: "install_dir" keyword argument must be set when "install" is true.r   r   rF   rE   r   r   r   z-ir_   r   r   z
--itstool= c              3  >   K   | ]}t          j        |          V  d S rV   )shlexquote)r   cs     r>   r   z*I18nModule.itstool_join.<locals>.<genexpr>  s*      #H#HqEKNN#H#H#H#H#H#Hr=   z--itsr-   r1   r`   r)   r+   r   )r-   rb   r.   r0   r1   rc   )r   r   r   r   r   r   r   rg   r   r   
get_subdirget_outputsr   rh   r   get_commandisabsr  ro   r   rn   rp   r   )rW   r   r3   r   rF   rE   	mo_fnamestargetrf   itstool_cmdfnamer-   r1   rx   s                 r>   r   zI18nModule.itstool_join  s    ) 	|VM%: 	|"#z{{{:i ($)$6$6yhNdNj$6$k$kDJy!L)
JJ{B//		  	V 	VFTYv'8'8':':F<N<N<P<PQR<STTUUUU _a 	u(::<<===j+7799)V)*388#H#HK#H#H#HHHH	
 	 	 	  	1" 1 1z%(( Y Ie&7&BELRWXXE/0000y!!!!"45#%i0171F1Rvm,--X\L7OH-$9%39-3H3T.//Z^#5
 
 
  !bT***r=   zi18n.xgettextz1.8.0r   )varargsmin_varargsrI   Fr"   !T.Tuple[str, T.List[SourcesType]]rH   r]   c                z   d}| j         |         | j         |                                         s/|                    |dt          j        j                  | j         |<   |d         r|d         st          d          t          t          j	        d| j         |                   | j
                  } |j        |i |S )NrS   Tr   r.   r0   zQi18n.xgettext: "install_dir" keyword argument must be set when "install" is true.r   )r   r   r   r   r   r   r   rQ   TcastrT   rz   )rW   r   r3   r   toolnamexgettext_programs         r>   rS   zI18nModule.xgettext  s     :h'tz(/C/I/I/K/K'#(#5#5h[c[q[w#5#x#xDJx ) 	xVM%: 	x"#vwww*162CTZPXEY+Z+Z\`\lmm''8888r=   )rT   r   )r   r   r   r   r\   r2   )r   r   r3   r   r   r   r\   r   )r   r   r3   r   r   r   r\   r   )r   r   r3   r   r   r  r\   r   )r   r"   r3   r*  r   rH   r\   r]   ))r8   r9   r:   r	   INFOrX   r   r   r   r   r   r   r   r   r*   r   r   r   r   rM   evolverN   r   r   r   r   r   rk   r   r   r   r   rn   r   r   r   r   r   r,   rS   __classcell__)r   s   @r>   r   r      s       :fD
 
 
 
 
 
  5 5 5 \5
 Z!8,,\	-#x118$$))	(C$///	&#u8H8H%QZI[8\8\]]] 7+ 7+ 7+  Y -,7+r ^NC((\))
$'''H---	+00s;;RQUVVV	(O&&ss;'7'788		
 	
 	
 cS cS cS  )(cSJ Z#X..\	-#x11	+00s;;<<	, 1 1$8J K KVZ[[[ 6+ 6+ 6+  Y /.6+p Z))^OS3uGXZ_Zmot  pB  3C  QR  S  S  S\	+tU333 	9 	9 	9  S  S *)	9 	9 	9 	9 	9r=   r   interpr   r\   c                     t          |           S rV   )r   )r3  s    r>   
initializer5  +  s    fr=   )r3  r   r\   r   )E
__future__r   osr   pathlibr   r  typingr,  r`   r   r   r	   r   r   optionsr   r   interpreter.type_checkingr   r   r   r   r   r   r   r   interpreterbaser   interpreterbase.exceptionsr   interpreterbase.decoratorsr   r   r   r   r   programsr   scripts.gettextr   TYPE_CHECKINGtyping_extensionsr    r!   r"   r#   rT   r$   r%   r'   r@   rD   rH   Unionr*   r   r   r   rn   SourcesTyperk   rM   r;   rN   r   rQ   r   r5  r<   r=   r>   <module>rE     s   # " " " " " "                  < < < < < < < < < <                         \  \  \  \  \  \  \  \  \  \  \  \  \  \  \  \  \  \  \  \ ( ( ( ( ( ( 9 9 9 9 9 9 n n n n n n n n n n n n n n & & & & & & * * * * * *? 7j44444444))))))******( ( ( ( (I ( ( (          )      d d d d di d d d% % % % %9 % % % '#x}e.?ATV[VhhiK !*	
dC  	! ! !     &/YdC  	& & &
         Ft4 t4 t4 t4 t4 t4 t4 t4no9 o9 o9 o9 o9 o9 o9 o9d	     r=   