
    -PhAL                        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 ddlm	Z	 dd	l
mZmZmZ dd
lmZ ddlmZmZmZ ddlmZmZmZmZ d dlZej        rddlmZ ddlmZmZ ddlmZ  G d de          Z dS )    )annotations   )extract_required_kwarg   )mlog)dependencies)build)WrapMode)extract_as_liststringlistifyversion_compare_many)	OptionKey)
DependencyDependencyExceptionNotFoundDependency)MesonInterpreterObject
FeatureNewInterpreterExceptionInvalidArgumentsN)Interpreter)TYPE_nkwargs	TYPE_nvar)SubprojectHolderc                       e Zd Z	 	 d5d6 fdZd7dZd8dZd9dZd9dZd9dZd9dZ	d:dZ
d;d Zd<d"Zd=d%Zd>d(Zd?d)Zd@d+ZedAd/            ZdBd1ZdCdDd4Z xZS )EDependencyFallbacksHolderNinterpreter'Interpreter'namesT.List[str]allow_fallbackT.Optional[bool]default_optionsT.Optional[T.Dict[str, str]]returnNonec                T   t                                          |j                   || _        |j        | _        |j        | _        |j        | _        |j        | _        |j        j        | _        || _        d | _	        d | _
        d|pi i| _        g | _        d| _        d| _        |D ]d}|st          d          d|v sd|v sd|v rt!          d          || j        v rt          d	|d
          | j                            |           e| j        r| j        d         nd| _        d S )N)
subprojectr"   Fz1dependency_fallbacks empty name '' is not allowed<>=zCharacters <, > and = are forbidden in dependency names. To specifyversion
 requirements use the 'version' keyword argument instead.zdependency_fallbacks name z is duplicatedr   z(anonymous))super__init__r'   r   coredatar	   environmentwrap_resolverr    subproject_namesubproject_varnamesubproject_kwargsr   forcefallback
nofallbackr   r   append_display_name)selfr   r   r    r"   name	__class__s         j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/interpreter/dependencyfallbacks.pyr,   z"DependencyFallbacksHolder.__init__   s\   
 	K$:;;;&%0#, &
&2(4B,0437"3_5J!K"$
#( % 	$ 	$D b*+`aaad{{cTkkSD[[& (n o o otz!!*+^+^+^+^___Jd####.2jKTZ]]m    fbinfo%T.Optional[T.Union[T.List[str], str]]c                ~   |d S | j         t          d          t          |          }t          |          dk    r	d| _         d S t          |          dk    r&t	          j        dd| j                   |d         d }}n(t          |          dk    r|\  }}nt          d          |                     ||           d S )	Nz@"fallback" and "allow_fallback" arguments are mutually exclusiver   Fr   zFallback without variable namez0.53.0r   z)Fallback info must have one or two items.)	r    r   r   lenr   
single_user'   r   _subproject_impl)r7   r<   	subp_namevarnames       r:   set_fallbackz&DependencyFallbacksHolder.set_fallback8   s    >F*"#efffv&&v;;!"'DFv;;!!"BHdo^^^!'DwII[[A!'Iww&'RSSSi11111r;   rB   strrC   c                4    | j         J || _         || _        d S N)r0   r1   )r7   rB   rC   s      r:   rA   z*DependencyFallbacksHolder._subproject_implL   s'    #+++(")r;   kwargsr   	func_argsr   func_kwargsT.Optional[Dependency]c                p    |d         }|                      ||          }|r|                     |           |S Nr   )_get_cached_dep_verify_fallback_consistency)r7   rH   rI   rJ   r8   
cached_deps         r:   _do_dependency_cachez.DependencyFallbacksHolder._do_dependency_cacheQ   sB    |))$77
 	:--j999r;   c                L   |d         }|                      |           t          j        || j        |          }|                                rW| j                            |          }t          j        ||          }| j        j	        |         
                    ||           |S d S rM   )_handle_featurenew_dependenciesr   find_external_dependencyr.   foundr   machine_from_native_kwargget_dep_identifierr-   depsput)r7   rH   rI   rJ   r8   depfor_machine
identifiers           r:   _do_dependencyz(DependencyFallbacksHolder._do_dependencyX   s    
 |,,T2223D$:JFSS99;; 	*DDVLLK%8vFFJM{+//
C@@@Jtr;   c                    |d         }| j         }|r,|                     |          r|                     |||          S d S rM   )r1   _get_subproject_get_subproject_dep)r7   rH   rI   rJ   rB   rC   s         r:   _do_existing_subprojectz1DependencyFallbacksHolder._do_existing_subprojectg   sO    aL	) 	H--i88 	H++IwGGGtr;   c                V   | j         r.t          j        dt          j        | j                  d           nb| j        r/t          j        dt          j        | j                  d           d S t          j        dt          j        | j                             |                    d          }i }|"|rdnd}t          j        d|            ||d<   | j        }| j        }|	                    d	g            | j
                            |||
           |                     |||          S )Nz4Looking for a fallback subproject for the dependencyz0because:
Use of fallback dependencies is forced.z8Not looking for a fallback subproject for the dependencyz2because:
Use of fallback dependencies is disabled.staticsharedz2Building fallback subproject with default_library=default_libraryversion)extra_default_options)r3   r   logboldr6   r4   getr0   r1   
setdefaultr   do_subprojectr`   )	r7   rH   rI   rJ   rc   rg   re   rB   rC   s	            r:   _do_subprojectz(DependencyFallbacksHolder._do_subprojectn   sT    		4HKYt1224gi i i i_ 	4HOYt1224ik k k4HKYt1224 4 4
 H%% "*0>hhhOH[/[[\\\7F!"34 (	)y"---&&y+Uj&kkk''	7FCCCr;   T.Optional[SubprojectHolder]c                t    | j         j                            |          }|r|                                r|S d S rG   )r   subprojectsrj   rU   )r7   rB   subs      r:   r_   z)DependencyFallbacksHolder._get_subproject   s<    *..y99 	399;; 	Jtr;   c                   |                      |          }|sit          j        dt          j        | j                  dt          j        |          dt          j        d          t          j        d                     d S d }| j        D ]}|                     ||          }|r n|r| 	                    |           |S |s)| j        D ]!}| j
                            ||          }|r n"|st          j        d|d| j        d           t          j        dt          j        | j                  dt          j        |j                  dt          j        d                     |                                 S |                     ||          p|                                 }|                                s[t          j        dt          j        | j                  dt          j        |j                  dt          j        d                     |S t#          |                    d	g                     }|                                }	|                     ||	          st          j        dt          j        | j                  dt          j        |j                  dt          j        d          d
t          j        |	          dt          j        d                    d |D                                 
  
         |                                 S t          j        dt          j        | j                  dt          j        |j                  dt          j        d          |	rt          j        |	          nd            |S )Nr   zfrom subprojectfound:NOz (subproject failed to configure)zSubproject z did not override z* dependency and no variable name specifiedrf   rU   	but need:, c                    g | ]}d | d 	S ' .0es     r:   
<listcomp>zADependencyFallbacksHolder._get_subproject_dep.<locals>.<listcomp>   s     )C)C)Cq(a((()C)C)Cr;   YES)r_   r   rh   ri   r6   redbluer   rN   rO   r/   get_varnamewarningsubdir_notfound_dependency_get_subproject_variablerU   r   rj   get_version_check_versionnormal_cyanjoingreen)
r7   rB   rC   rH   r'   rP   r8   var_depwantedrU   s
             r:   r`   z-DependencyFallbacksHolder._get_subproject_dep   s   )))44
 	H\49T-?#@#@BSYy))8TXd^^YABBD D D 4 
J 	 	D--dF;;J 
  	--j999  	 
  ,88DII E 	/L  Gy  G  GdFX  G  G  G  H  H  HH\49T-?#@#@BSYz0118TXd^^M M M,,...//
GDDcHaHaHcHc}} 	H\49T-?#@#@BSYz0118TXd^^M M MNvzz)R8899##%%""6511 	/H\49T-?#@#@BSYz0118TXd^^d.u55{Ytyy)C)CF)C)C)CDDEEG G G ,,...ty);<<>O:,--xE9J9J,1;!%(((t	= 	= 	= r;   r8   c                   | j                             |          }t          j        ||          }t	          |                    dg                     }| j        j        |                             |          }|rzt          j	        |j
        rdnd          g}|j        }|                                s@t          j        dt          j        | j                  dt          j        d          g|R   |S nK| j        r
| j        rd }n:t          j	        d          g}| j        j        |                             |          }|r|                                }	|                     ||	          s|sd S t          j        dt          j        |          dt          j        d          dt          j        |	          dt          j        d	                    d
 |D                                 g|R   |                                 S |	rt          j        |	          g|}t          j        dt          j        | j                  dt          j        d          g|R   |S d S )Nrf   z(overridden)z(cached)r   rs   rt   rU   ru   rv   c                    g | ]}d | d 	S rx   rz   r{   s     r:   r~   z=DependencyFallbacksHolder._get_cached_dep.<locals>.<listcomp>   s     -L-L-L1h!hhh-L-L-Lr;   r   )r   rV   r   rW   r   rj   r	   dependency_overridesr   r   explicitrZ   rU   rh   ri   r6   r   r3   r0   r-   rX   r   r   r   r   r   r   )
r7   r8   rH   r[   r\   wanted_versoverrideinforP   
found_verss
             r:   rN   z)DependencyFallbacksHolder._get_cached_dep   sw   
 &@@HH!4T6BB
#FJJy"$=$=>>:2;?CCJOO 	II0AQnnzRRSD!J ##%% "ty1C'D'D!48D>>:48: : : :!!"  	ID$8 	IJJIj))*D+K8<<ZHHJ 	#//11J&&{J?? 
3    4ty!48D>> $"2:">">499-L-L-L-L-L#M#MNN  	       
 00222 =(44<t<H\49T-?#@#@tz%009379 9 9 9tr;   r'   r   c                    	 |                     |gi           }n# t          $ r d }Y nw xY wt          |t                    s't	          j        d|d|j        d|dnd           d S |S )Nz	Variable z in the subproject z isz	not foundznot a dependency object)get_variable_methodr   
isinstancer   r   r   r   )r7   r'   rC   r   s       r:   r   z2DependencyFallbacksHolder._get_subproject_variable   s    	 44gYCCGG 	 	 	GGG	':.. 	L[W[[:CT[[[(/=VX X X4s    ))rP   r   c                    | j         }| j        }|                     |          }|rM|rM|                     ||          }|r7|                                r%||k    r!t          j        d|           d S d S d S d S d S d S )NzSInconsistency: Subproject has overridden the dependency with another variable than )r0   r1   r_   r   rU   r   r   )r7   rP   rB   rC   r'   r   s         r:   rO   z6DependencyFallbacksHolder._verify_fallback_consistency  s    (	))))44
 	@' 	@33JHHG @:++-- @'Z2G2G~sz~~	@ 	@ 	@ 	@@ @ @ @2G2Gr;   c                d   |dk    rt          j        dd| j                   dS |dk    rt          j        dd| j                   dS |dk    rt          j        dd| j                   dS |dk    rt          j        d	d
| j                   dS |dk    rt          j        dd| j                   dS dS )z:Do a feature check on dependencies used by this subprojectmpizMPI Dependencyz0.42.0pcapzPcap DependencyvulkanzVulkan DependencylibwmfzLibWMF Dependencyz0.44.0openmpzOpenMP Dependencyz0.46.0N)r   r@   r'   )r7   r8   s     r:   rS   z9DependencyFallbacksHolder._handle_featurenew_dependencies  s    5==!"2HdoNNNNNV^^!"3XtOOOOOX!"5xQQQQQX!"5xQQQQQX!"5xQQQQQ r;   r   c                T    t          | j        r| j        d         nd| j                  S )Nr    )r   r   r.   )r7   s    r:   r   z.DependencyFallbacksHolder._notfound_dependency  s&    !4:"E$*Q--2tGWXXXr;   r   rU   boolc                F    | sdS |dk    pt          ||           d           S )NT	undefinedr   )r   )r   rU   s     r:   r   z(DependencyFallbacksHolder._check_version!  s6     	4[(V0DUF0S0STU0V,VWWr;   uT.List[T.Tuple[T.Callable[[TYPE_nkwargs, TYPE_nvar, TYPE_nkwargs], T.Optional[Dependency]], TYPE_nvar, TYPE_nkwargs]]c                   g }| j         D ] }|                    | j        |gi f           !| j        r(|                    | j        | j        g| j        f           | j        r| j        s(| j         D ] }|                    | j        |gi f           !| j        r(|                    | j        | j        g| j        f           |S rG   )	r   r5   rQ   r0   ra   r2   r3   r]   rm   )r7   
candidatesr8   s      r:   _get_candidatesz)DependencyFallbacksHolder._get_candidates'  s    
J 	G 	GDt84&"EFFFF 	nt;d>R=SUYUklmmm! 	E)= 	E
 E E!!4#6"CDDDD 	et2T5I4JDLbcdddr;   Fforce_fallbackc                   t          |d          }|r@| xj        d                    d                    d |D                                 z  c_        t	          || j                  \  }}}|rUt          j        dt          j        | j                  dt          j        |          d           | 	                                S t          j        | j        j                            t          d                              }| j        j                            t          d	                    t!          t"                    s
J d
            |t          j        k    | _        |p8|t          j        k    p(t)          fd| j        D                       p| j        v | _        | j        s| j        durz| j        D ]r}| j                            |          \  }	}
|	rQ| xj        |	v z  c_        | j        s | j        du s|s|                     |	          r|                     |	|
            ns|                                 }|s|rt;          d          t=          |          dz
  }t?          |          D ]\  }}|\  }}}|o||k    |d<   |o||k    |d<    ||||          }|r|                                 r| j        D ]y}| j!        "                    |          }tG          j$        ||          }|| j%        j&        |         vr4tK          j'        || j!        j(        d          | j%        j&        |         |<   z|c S |r |s||k    rtS          d| j        d          |r|c S | 	                                S )Nmodulesz (modules: {})rv   c              3  4   K   | ]}t          |          V  d S rG   )rE   )r|   is     r:   	<genexpr>z3DependencyFallbacksHolder.lookup.<locals>.<genexpr>;  s(      CYCYqCFFCYCYCYCYCYCYr;   r   zskipped: featuredisabled	wrap_modeforce_fallback_forzfor mypyc              3      K   | ]}|v V  	d S rG   rz   )r|   r8   r   s     r:   r   z3DependencyFallbacksHolder.lookup.<locals>.<genexpr>I  s)      !T!T$*<"<!T!T!T!T!T!Tr;   FTz-Dependency is required but has no candidates.r   required)r   zDependency z is required but not found.)*r   r6   formatr   r   r'   r   rh   ri   r   r
   from_stringr-   optstoreget_value_forr   r   listr4   r3   anyr   r0   r    r/   find_dep_providerr_   rA   r   r   r?   	enumeraterU   r   rV   r   rW   r	   r   DependencyOverridecurrent_noder   )r7   rH   r   modsr   r   featurer   r8   rB   rC   r   lastr   itemfuncrI   rJ   rZ   r[   r\   r   s                        @r:   lookupz DependencyFallbacksHolder.lookup8  s   vy11 	["2"9"9$))CYCYTXCYCYCY:Y:Y"Z"ZZ&<VT_&U&U#(G 	/H\49T-?#@#@BTVZV_`gVhVhjtuuu,,... ()?)M)MiXcNdNd)e)eff	!]3AA)L`BaBabb,d33??Z???#x'::, I'8+AAI!!T!T!T!T!T!T!TTTI #26HH 	 # 	(;5(H(H
  %)%7%I%I$%O%O"	7 &&)7I*II&&) BT-@D-H-HH-HX\XlXlmvXwXw-H--iAAAE	 ))++
  	Th 	T"#RSSS :" ,, 	 	GAt+/(D)[&.&>AIK
#!)!9qDyF:$vy+66C syy{{  !J i iD"&"2"L"LV"T"TK!-!@v!N!NJ!)H)UUU!4S$:J:Wbghhh 
7DZP


 s a4ii **i8J*i*i*ijjj 


 ((***r;   )NN)
r   r   r   r   r    r!   r"   r#   r$   r%   )r<   r=   r$   r%   )rB   rE   rC   rE   r$   r%   )rH   r   rI   r   rJ   r   r$   rK   )rB   rE   r$   rn   )rB   rE   rC   rE   rH   r   r$   rK   )r8   rE   rH   r   r$   rK   )r'   r   rC   rE   r$   rK   )rP   r   r$   r%   )r8   rE   r$   r%   )r$   r   )r   r   rU   rE   r$   r   )r$   r   )F)rH   r   r   r   r$   r   )__name__
__module____qualname__r,   rD   rA   rQ   r]   ra   rm   r_   r`   rN   r   rO   rS   r   staticmethodr   r   r   __classcell__)r9   s   @r:   r   r      s        59AE	L L L L L L L<2 2 2 2(* * * *
         D D D D8   = = = =~, , , ,\	 	 	 	@ @ @ @R R R RY Y Y Y X X X \X
   "B+ B+ B+ B+ B+ B+ B+ B+ B+r;   r   )!
__future__r   interpreterobjectsr   r   r   r   r	   wrapr
   mesonlibr   r   r   optionsr   r   r   r   interpreterbaser   r   r   r   typingTTYPE_CHECKINGr   r   r   r   r   r   rz   r;   r:   <module>r      s  
 # " " " " " 6 6 6 6 6 6                         K K K K K K K K K K       N N N N N N N N N NG G G G G G G G G G G G    ? 5((((((99999999444444a+ a+ a+ a+ a+ 6 a+ a+ a+ a+ a+r;   