+
    UBi}                        ^ RI Ht ^RIHtHtHt ^RIHtHtH	t	H
t
HtHt ^RIHt ^RIHt ^ RIt^ RIt]P(                  '       d   ^RIHt ^RIHt ^R	IHt  ! R
 R]4      tR# )    )annotations)ExternalDependencyDependencyExceptionDependencyTypeName)listify
Popen_safePopen_safe_logged
split_argsversion_compareversion_compare_many)find_external_program)mlogN)Environment)PkgConfigDefineType)DependencyObjectKWsc                    a  ] tR t^t$ RtRtR]R&   RtR]R&   RtRt	R]R&   R	t
]P                  ! R
4      tR%R V 3R llltR R ltR R ltR&R R lltR R ltR R ltR R lt]R R l4       tRRRRRRRRRRR RR!R/R" R# lltR$tV ;t# )'ConfigToolDependencya5  Class representing dependencies found using a config tool.

Takes the following extra keys in kwargs that it uses internally:
:tools List[str]: A list of tool names to use
:version_arg str: The argument to pass to the tool to get its version
:skip_version str: The argument to pass to the tool to ignore its version
    (if ``version_arg`` fails, but it may start accepting it in the future)
    Because some tools are stupid and don't accept --version
:returncode_value int: The value of the correct returncode
    Because some tools are stupid and don't return 0
NT.Optional[T.List[str]]toolsT.Optional[str]	tool_namez	--versionskip_versionFz^[0-9][0-9.]+c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )   namestrenvironmentz'Environment'kwargsr   languager   exclude_pathsr    )formats   "G/usr/lib/python3.14/site-packages/mesonbuild/dependencies/configtool.py__annotate__!ConfigToolDependency.__annotate__(   s6      S } FY et   Md     c                	  < \         S	V `  \        R 4      W#VR7       Wn        \	        VP                  RV P                  4      4      V n        V P                  '       g   V P                  ^ ,          V n        RV9   d   VR,          V n        VP                  R. 4      pV P                  WcP                  R^ 4      VR7      w  rxWpn
        V P                  W4      V n        V P                  '       g
   RV n
        R# Wn        R# )config-tool)r   r   version_argversionreturncode_value)r    N)super__init__r   r   r   getr   r   r)   find_configconfigreport_configis_foundr*   )
selfr   r   r   r   r    req_versiontoolr*   	__class__s
   &&&&&&   r#   r-   ConfigToolDependency.__init__(   s    +M:KZbc	VZZ<=
~~~!ZZ]DNF"%m4DjjB/((jjASUV6Wgt(u**7@}}}DKr&   c                    V ^8  d   QhRRRR/# )r   r*   r   returnr!   )r"   s   "r#   r$   r%   ;   s        r&   c                    V P                   P                  V4      pV'       d!   VP                  ^ 4      P                  R4      # V# )z3Remove any non-numeric, non-point version suffixes..)$_ConfigToolDependency__strip_versionmatchgrouprstrip)r3   r*   ms   && r#   _sanitize_version&ConfigToolDependency._sanitize_version;   s;      &&w/ 771:$$S))r&   c               $    V ^8  d   QhRRRRRR/# )r   r5   T.List[str]
returncodeintr9   z!T.Tuple[bool, T.Union[str, None]]r!   )r"   s   "r#   r$   r%   D   s"      ; C Lm r&   c                L   \        WP                  .,           4      R,          w  r4RpVP                  V8w  dL   V P                  '       d8   \        WP                  .,           4      ^ ,          pVP                  V8w  d   RpMRpV P	                  VP                  4       4      pWV3# )z4Check whether a command is valid and get its version:Nr   NTF)r   r)   rE   r   rA   strip)r3   r5   rE   poutvalidr*   s   &&&    r#   _check_and_get_version+ConfigToolDependency._check_and_get_versionD   s    D$4$4#556r:<<:%   t'8'8&99:1=<<:-!E((5~r&   c               (    V ^8  d   QhRRRRRRRR/# )	r   versionsrD   rE   rF   r    r   r9   z1T.Tuple[T.Optional[T.List[str]], T.Optional[str]]r!   )r"   s   "r#   r$   r%   S   s*     ' 'K 'S 'Ul '@'r&   c           
     f   Vf   . MTpRp\        V P                  V P                  V P                  V P                  V P                  VV P
                  R7       F  pVP                  4       '       g   K  VP                  4       p V P                  Wb4      w  rxT'       g   KI  T'       g   TR3u # T'       d   \        Y4      ^ ,          p	T	'       g   RpT^,          '       d0   \        TRP                  T^,          4      4      '       d   Yh3pK  K  Yh3pK  	  V#   \        \        3 d     K  i ; i)zHelper method that searches for config tool binaries in PATH and
returns the one that best matches the given version requirements.
N)r    allow_default_for_crossz> {}NN)r   envfor_machiner   r   rQ   foundget_commandrL   FileNotFoundErrorPermissionErrorr   r   r"   )
r3   rO   rE   r    
best_matchpotential_binr5   rK   r*   r2   s
   &&&&      r#   r/    ConfigToolDependency.find_configS   s   
 ,3HT
2$**DNN

-(,(D(DFM !&&(( ,,.D!%!<!<T!N 
 d|#/B1E  D!}}"7FMM*Q-,HII"&J J #_
=F@ / &7 s   DD0/D0c               $    V ^8  d   QhRRRRRR/# )r   r*   r   r4   rD   r9   boolr!   )r"   s   "r#   r$   r%   |   s"     ' '_ '; 'SW 'r&   c                   \         P                  ! V P                  4      R.pV P                  fj   VP	                  \         P
                  ! R4      4       Ve#   V'       d   VP	                  RV: RV: 24       MfV'       d   VP	                  RV: 24       MHV\         P                  ! R4      RP                  R	P                  V P                  4      4      V.,          p\         P                  ! V!   V P                  RJ# )
z/Helper method to print messages about the tool.zfound:NNOzfound z
 but need zneed YESz({}) )
r   boldr   r0   appendredgreenr"   joinlog)r3   r*   r4   	found_msgs   &&& r#   r1   "ConfigToolDependency.report_config|   s     @Dyy?XZb>c	;;TXXd^,"{  6'J{o!NO  5!89$**U+V]]388DKK;P-QSZ[[I){{$&&r&   c               $    V ^8  d   QhRRRRRR/# )r   argsrD   stager   r9   r!   )r"   s   "r#   r$   r%      s!      [   r&   c                	    \        V P                  V,           4      w  r4pVP                  ^ 8w  d3   V P                  '       d   \	        RV RV P
                   RV 24      h. # \        V4      # )r   zCould not generate z for z.
)r	   r0   rE   requiredr   r   r
   )r3   rk   rl   rI   rJ   errs   &&&   r#   get_config_value%ConfigToolDependency.get_config_value   sc    'd(:;<<1}}}),?weDII;VYZ]Y^*_``I#r&   c                    V ^8  d   QhRRRR/# )r   variable_namer   r9   rD   r!   )r"   s   "r#   r$   r%      s     & &s &{ &r&   c                	    R V 2.# )z--r!   )r3   rs   s   &&r#   get_variable_args&ConfigToolDependency.get_variable_args   s    ]O$%%r&   c                   V ^8  d   QhRR/# )r   r9   r   r!   )r"   s   "r#   r$   r%      s      s r&   c                 	    R # )r(   r!   r!   r&   r#   	log_triedConfigToolDependency.log_tried   s    r&   cmake	pkgconfig
configtoolinternalsystemdefault_valuepkgconfig_definec               8    V ^8  d   Qh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   r9   r   r!   )r"   s   "r#   r$   r%      sZ     n n_ n n!0nCRn,nDSn (;n GJnr&   c               	   V'       dn   \        V P                  V P                  V4      ,           4      w  rp
VP                  ^ 8X  d/   V	P	                  4       p\
        P                  ! RV RV 24       V# Ve   V# \        RV : 24      h)r   zGot config-tool variable z : z?Could not get config-tool variable and no default provided for )r   r0   ru   rE   rH   r   debugr   )r3   r{   r|   r}   r~   r   r   r   rI   rJ   _variables   &$$$$$$$    r#   get_variable!ConfigToolDependency.get_variable   s     "4;;1G1G
1S#STIAA||q 99;

6zl#hZPQ$  !$cdhck"lmmr&   )r0   r2   r   r   r   r*   r)   rR   )r   N)__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r)   r   rQ   recompiler<   r-   rA   rL   r/   r1   rp   ru   staticmethodry   r   __static_attributes____classcell__)r6   s   @r#   r   r      s    
 &*E")!%I%K$(L/(#jj!12O &'R'$&  nt nZ^ n37nUYn/3nVZn >Bn nr&   r   )
__future__r   baser   r   r   mesonlibr   r   r	   r
   r   r   programsr    r   r   typingTTYPE_CHECKINGr   r   interpreter.type_checkingr   r   r   r!   r&   r#   <module>r      sE    # M M p p ,  	 ???)?)Vn- Vnr&   