
    e?                       U 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mZmZmZmZmZmZ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jF                  rAd dl$m%Z%m&Z& ddlm'Z' ddlm(Z( ddl)m*Z* ddlm+Z+  G d de&      Z, G d de&      Z- G d de&      Z. ed ee/e0      g d      Z1de2d<    ed ee/e0      g d      Z3de2d <   d!g d"iZ4 G d# d$e      Z5d&d%Z6y)'    )annotations)pathN   )ExtensionModuleModuleReturnValue
ModuleInfo   )build)mesonlib)mlog)CT_BUILD_BY_DEFAULTCT_INPUT_KWINSTALL_TAG_KW	OUTPUT_KWINSTALL_DIR_KW
INSTALL_KWNoneTypein_set_validator)
FeatureNew)ContainerTypeInfo	KwargInfo	noPosargstyped_kwargstyped_pos_args)ExternalProgram)read_linguas)Literal	TypedDict)ModuleState)Target)Interpreter)TYPE_varc                  r    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<   y)	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__     9/usr/lib/python3/dist-packages/mesonbuild/modules/i18n.pyr$   r$   &   sA     	 $$$$''r:   r$   c                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   y
)Gettextr/   r0   r1   r)   r+   r,   r-   	languagespresetNr4   r9   r:   r;   r=   r=   6   s%    $$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<   y)ItsJoinFiler%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   	its_fileszOT.List[T.Union[build.BuildTarget, build.CustomTarget, build.CustomTargetIndex]]
mo_targetsNr4   r9   r:   r;   rA   rA   ?   s6     	 $$$$ccr:   rA   r0   TdefaultlistifyzKwargInfo[T.List[str]]_ARGSr1   
_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 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j)                  d      ej)                  d	       ed
ed       eded eddh                  d"d                     Z ede       e
deej)                  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j)                          ed eee             ed eeej@                        d      
      d$d                     Z! xZ"S )%
I18nModulei18nc                    t         |   |       | j                  j                  | j                  | j
                  | j                  d       d d d d d d| _        y )N)
merge_filegettextitstool_join)itstoolmsgfmtmsginitmsgmergexgettext)super__init__methodsupdaterN   rO   rP   tools)selfinterpreter	__class__s     r;   rW   zI18nModule.__init__   sY    %//|| --
 	 [

r:   c                    t        j                  | j                  j                         | j                        }|D cg c]  }t        j                  ||       c}S c c}w )z,Returns source directories of relative paths)r   joinenvironmentget_source_dirsubdir)statedirssrc_dirds       r;   _get_data_dirszI18nModule._get_data_dirs   sF     ))E--<<>M/34!		'1%444s   Azi18n.merge_filez0.37.0r-   z0.51.0)sincez0.41.0r2   T)requiredr3   xmldesktop)rE   	validatorc                D   | j                   d   | j                   d   j                         s8|j                  dt        j                  j
                        | j                   d<   t        | j                   d   t              rh	 | j                   d   j                         }|d   dk(  rdnd}t        j                  ||      s(d| d	|d   z   d
| dz   }t        j                  |      t        j                  |j                  |j                  |d         }| j                  ||d         }	|	rddj                  |	      z   nd }
g }|j!                  |j"                  j%                                |j!                  ddd| j                   d   j'                         z   g       |
r|j)                  |
       |j!                  dd|d   |g       |d   r%|j)                  d       |j!                  |d          |d   }||d   }|d   |d   gnd }t+        j,                  d|j                  |j.                  |j"                  ||d   |d   g||d   |d   |d   gnd |d      }t1        ||g      S # t        j                  $ r}t        j                  d      |d }~ww xY w) NrR   for_machinez#i18n.merge_file requires GNU msgfmtr3   rk   z>=0.19z>=0.19.7z$i18n.merge_file requires GNU msgfmt z to produce files of type: z (got: )r2   r1   --datadirs=:
--internalmsgfmthelperz	--msgfmt=@INPUT@@OUTPUT@r0   --r*   r+   r.    r&   r(   r-   Merging translations for {})r*   r+   r-   r.   description)rZ   foundfind_programr   MachineChoiceBUILD
isinstancer   get_versionMesonExceptionversion_comparer   r_   build_to_srcrb   rg   extendr`   get_build_commandget_pathappendr
   CustomTarget
subprojectr   )r[   rc   r0   kwargshave_versionewant_versionmsgpodirddirsdatadirscommandr*   r.   cts                  r;   rN   zI18nModule.merge_file   s     ::h'tzz(/C/I/I/K#(#5#5hHLbLbLhLh#5#iDJJx djj*O<\#zz(3??A (.f~'B8
L++L,G<\NJefiopviww  }D  EQ  DR  RS  {T  T--c22		%,,ellF8<LM##E6++>?6;=388E?2 _a 	u((::<=.$**X.7799
 	 NN8$	:vf~uEF&>NN4 NN6&>*!"45#%i0171F1Rvm,-X\LL7OH-9%39-3H3T./Z^#5
 !bT**] ** \--.STZ[[\s   I1 1JJJzi18n.gettextz0.36.0)rE   z0.50.0r>   rD   r?   )rl   rh   c                   dD ]  \  }}| j                   |   9|j                  |dt        j                  j                        | j                   |<   | j                   |   j                         rl|r0t        j                  dd|j                         t        d g       c S t        j                  |ddd|j                          |d	   }d
| }|d   }|rddj                  |      z   nd }	dj                  | j                  ||d               }
|
rd|
 nd }|d   }g }g }|d   }|r*t        |   }t        t        j                  ||z               }|rddj                  |      z   nd }t        j                  |j                   |j"                        }|j$                  r+t        j&                  |j$                  |j"                        nd }|j(                  j+                         ddd|gz   }|j-                  d|        |r|j-                  d|        |r|j-                  |       |r|j-                  |       | j                   d   j                         r/|j-                  d| j                   d   j/                         z          t1        j2                  |dz   |g |j$                  |j4                  |j(                  d      }|j-                  |       |d   }|d   xs8 |j(                  j6                  j9                  t        j:                  d             }t=        |t>              sJ d!       |s=tA        t        j                  |j(                  jB                  |j$                              }|D ]  }t        jD                  jG                  |j(                  jB                  |j$                  |d"z         }t1        jH                  | d#| d$t        j                  |j$                  |d%      |j4                  |j(                  | j                   d&   d'd(d)g|g| d$g|t        j                  ||d%      gd*gd+,      }|j-                  |       |j-                  |        t1        jJ                  |d-z   ||j$                  |j4                  |j(                        }|j-                  |       |j(                  j+                         ddd.|gz   }|j-                  d|        |r|j-                  d|        |	r|j-                  |	       |r|j-                  |       |r|j-                  |       d/D ]S  }| j                   |   j                         s!|j-                  d0| d1| j                   |   j/                         z          U t1        j2                  |d2z   |g |j$                  |j4                  |j(                  d      }|j-                  |       t        |||g|      S )3N))rR   T)rS   F)rT   F)rU   FF)ri   ro   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=r>   z--langs=z@@rr   r1   rq   r0   r?   z--extra-args=)startrs   rO   potz--source-root=z	--subdir=rU   z--xgettext=z-pot)default_envr+   r-   	localedirzfor mypyz.po-z.moLC_MESSAGESrR   -orv   ru   rL   zBuilding translation {})r+   r-   r.   rz   z-gmo	update_po)rS   rT   rw   =z
-update-po)&rZ   r|   r   r}   r~   r{   r   warningcurrent_noder   r_   rg   PRESET_ARGSlist
OrderedSetr   source_rootroot_subdirrb   relpathr`   r   r   r   r
   	RunTargetr   coredata
get_option	OptionKeyr   r'   r   
source_dirFilefrom_source_filer   AliasTarget)r[   rc   r0   r   toolstrictpackagenamepkg_argr>   lang_arg	_datadirsr   
extra_argstargets
gmotargetsr?   preset_args	extra_argr   rb   potargs	pottargetr+   r-   lpo_file	gmotargetallgmotargetupdatepoargsupdatepotargets                                 r;   rO   zI18nModule.gettext   sq     m 	VLD&zz$'#(#5#5dUX`XnXnXtXt#5#u

4 ::d#))+LL!c&*U5G5GI,T266LLD8+W!X&*%%BTBTV	V 1g{m,;'	8A:		) 44tHHT00{8KLM	09[,tF^
$&35
!%f-Kh11+
2JKLJ?IOdii
&;;t	ii 1 153D3DEHMell%2C2CDZ^##557<TY[b:cc}56NNYvh/0NN8$NN9%::j!'')NN=4::j+A+J+J+LLMOOK&$8'2u||UZUeUe$)$5$55J	y!#]+uu/@/@/I/I/T/TU]UgUghsUt/u+s+7Z7+$TYYu/@/@/K/KU\\%Z[I 	)Amm44U5F5F5Q5Q5:\\1U7LG**-q3'		%,,=9  !!H%tZC	=$%
 "YY{A}EF#H5I" NN9%i(+	). ((v)=z5<<Y^YiYi).):):<|$((::<iYdfm?nnn[M:;)F8 45))	*+ 	PDzz$%%'##baL4::d3C3L3L3N$NO	P |)C\SUW\WcWcejeueu).):):O~& *i!H'RRr:   zi18n.itstool_joinz0.62.0rB   rC   c                0   | j                   d   8|j                  dt        j                  j                        | j                   d<   |d   }|j                  dg       }g }|D ]F  }|j                  t        j                  |j                         |j                         d                H g }|j                  |j                  j                                | j                   d   j                         }	|j                  ddddd	d
dddj                  d |	D              z   g       |rd|D ]_  }
t        j                  |
      s5t        j                  |j                  j                   |j"                  |
      }
|j                  d|
g       a |j                  |       |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 )NrQ   rn   rC   rB   r   rs   r_   z-iru   r   rv   z
--itstool= c              3  F   K   | ]  }t        j                  |        y wN)shlexquote).0cs     r;   	<genexpr>z*I18nModule.itstool_join.<locals>.<genexpr>s  s     #HqEKKN#Hs   !z--itsr*   r+   r.   rx   r&   r(   r-   ry   )r*   extra_dependsr+   r-   r.   rz   )rZ   r|   r   r}   r~   getr   r   r_   
get_subdirget_outputsr   r`   r   get_commandisabsr   rb   r
   r   r   r   )r[   rc   r0   r   rC   rB   	mo_fnamestargetr   itstool_cmdfnamer*   r.   r   s                 r;   rP   zI18nModule.itstool_joinQ  s,    ::i ($)$6$6yhNdNdNjNj$6$kDJJy!L)
JJ{B/		  	VFTYYv'8'8':F<N<N<PQR<STU	V _a 	u((::<=jj+779)V)*388#HK#HHH	
 	 " 1zz%( IIe&7&7&B&BELLRWXE/01 	y!!"45#%i0171F1Rvm,-X\LL7OH-$9%39-3H3T./Z^#5
  !bT**r:   )r\   'Interpreter')rc   'ModuleState'rd   zT.Iterable[str]returnr/   )rc   r   r0   T.List['TYPE_var']r   z'MergeFile'r   r   )rc   r   r0   zT.Tuple[str]r   z	'Gettext'r   r   )rc   r   r0   r   r   z'ItsJoinFile'r   r   )#r5   r6   r7   r   INFOrW   staticmethodrg   r   r   r   r   r   r   r'   r   r   r   r   rG   evolverH   r   rN   r   r   r   r   setr   rO   r
   r   rP   __classcell__)r]   s   @r;   rK   rK      s   fD
 5 5
 !8,-#x18$)(C$/&#u8H%QZI[8\]4+  -4+l NC()
$'H-+0s;RQUV(O&s;'78		
cS )cSJ #X.-#x1+0s;<, 1$8J8J KVZ[3+  /3+r:   rK   c                    t        |       S r   )rK   )interps    r;   
initializer     s    fr:   )r   r   r   rK   )7
__future__r   osr   r   typingTrx   r   r   r   r
   r   r   interpreter.type_checkingr   r   r   r   r   r   r   r   interpreterbaser   interpreterbase.decoratorsr   r   r   r   r   programsr   scripts.gettextr   TYPE_CHECKINGtyping_extensionsr   r   r   r    r\   r!   r"   r$   r=   rA   r   r'   rG   r8   rH   r   rK   r   r9   r:   r;   <module>r      s    #    < <    \  \  \ ( n n & *??4)*(I (  )  di d !*
dC 	!  &/dC 	&
"    FS+ S+lr:   