+
    UBi                       ^ RI Ht ^ RIt^ RIt^RIHtHt ^RIHt ^RIH	t	H
t
 ^RIHt ^RIHt ^RIHt ]P"                  '       d   ^R	IHtHt ^R
IHt ^RIHt ^RIHt ]P4                  . ]3,          t]P4                  R]]]P8                  ],          .]P8                  ],          3,          t]P4                  R]].]P8                  ],          3,          t]P4                  R]3,          t ! R R4      t R R lt!R# )    )annotationsN)DependencyExceptionDependencyMethodsprocess_method_kw)BuiltinDependencySystemDependency)CMakeDependency)ExtraFrameworkDependency)PkgConfigDependency)DependencyObjectKWsExternalDependency)ConfigToolDependency)Environment)MachineChoicer   .c                  t    ] tR t^/tRtRRRRR]RRR]RRR	RR
]R]R]	/
R R llt
]R R l4       tR R ltRtR# )DependencyFactorya  Factory to get dependencies from multiple sources.

This class provides an initializer that takes a set of names and classes
for various kinds of dependencies. When the initialized object is called
it returns a list of callables return Dependency objects to try in order.

:name: The name of the dependency. This will be passed as the name
    parameter of the each dependency unless it is overridden on a per
    type basis.
:methods: An ordered list of DependencyMethods. This is the order
    dependencies will be returned in unless they are removed by the
    _process_method function
:*_name: This will overwrite the name passed to the corresponding class.
    For example, if the name is 'zlib', but cmake calls the dependency
    'Z', then using `cmake_name='Z'` will pass the name as 'Z' to cmake.
:*_class: A *type* or callable that creates a class, and has the
    signature of an ExternalDependency
:system_class: If you pass DependencyMethods.SYSTEM in methods, you must
    set this argument.
extra_kwargsNpkgconfig_namepkgconfig_class
cmake_namecmake_classconfigtool_classframework_nameframework_classbuiltin_classsystem_classc               H    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/# )   namestrmethodszT.List[DependencyMethods]r   zT.Optional[DependencyObjectKWs]r   zT.Optional[str]r   z'T.Type[PkgConfigDependency]'r   r   z7'T.Union[T.Type[CMakeDependency], CmakeDependencyFunc]'r   z*'T.Optional[T.Type[ConfigToolDependency]]'r   r   z"'T.Type[ExtraFrameworkDependency]'r   z'T.Type[BuiltinDependency]'r   z'T.Type[SystemDependency]' )formats   "D/usr/lib/python3.14/site-packages/mesonbuild/dependencies/factory.py__annotate__DependencyFactory.__annotate__F   s     d dS d+D d>d!0d #@d -	d
 Vd $Nd "1d #Ed !<d  :d    c       
        	   \         P                  V9   d   V'       g   \        R 4      hT;'       g    / V n        W n        \         P
                  \        P                  ! Y;'       g    T4      \         P                  \        P                  ! YT;'       g    T4      \         P                  \        P                  ! Yv;'       g    T4      \         P                  \        P                  ! W4      \         P                  \        P                  ! W4      \         P                  R/V n        Ve4   \        P                  ! W4      V P                  \         P                  &   R# R# )z%A configtool must have a custom classN)r   CONFIG_TOOLr   r   r"   EXTRAFRAMEWORK	functoolspartial	PKGCONFIGCMAKESYSTEMBUILTINclasses)selfr    r"   r   r   r   r   r   r   r   r   r   r   s   &&&$$$$$$$$$$r%   __init__DependencyFactory.__init__F   s    ((G3<L%&MNN(..B ,,i.?.?QgQgcg.h''):):?LbLb^b)c##Y%6%6{DVDVRV%W$$i&7&7&K%%y'8'8'M))4	
 	 ':C:K:KL\:cDLL*667 (r(   c               (    V ^8  d   QhRRRRRRRR/# )	r   methodr   env'Environment'for_machiner   returnboolr#   )r$   s   "r%   r&   r'   h   s+       1  Ta fj r(   c                    V \         P                  J d*   VP                  V,          P                  4       '       g   R# R# )a  Report whether a method is valid or not.

If the method is valid, return true, otherwise return false. This is
used in a list comprehension to filter methods that are not possible.

By default this only remove EXTRAFRAMEWORK dependencies for non-mac platforms.
FT)r   r+   machines	is_darwin)r7   r8   r:   s   &&&r%   _process_method!DependencyFactory._process_methodg   s1     '666LL-7799r(   c               (    V ^8  d   QhRRRRRRRR/# 	r   r8   r9   r:   r   kwargsr   r;   zT.List['DependencyGenerator']r#   )r$   s   "r%   r&   r'   v   s*     > >M > >,>1N>r(   c                2   \        V P                  V4      pV P                  P                  4       pVP	                  V4       V Uu. uFE  pV P                  WaV4      '       g   K  \        P                  ! V P                  V,          W4      NKG  	  up# u upi )zBReturn a list of Dependencies with the arguments already attached.)	r   r"   r   copyupdater@   r,   r-   r2   )r3   r8   r:   rD   r"   nwargsms   &&&&   r%   __call__DependencyFactory.__call__v   s     $DLL&9""'')fIP >A''< @	!!$,,q/3? > 	> >s   B%,B)r2   r   r"   )__name__
__module____qualname____firstlineno____doc__r   r
   r   r   r	   r4   staticmethodr@   rJ   __static_attributes__r#   r(   r%   r   r   /   s    *dAEd37d CVd 04	d
 Yhd QUd 48d H`d ?Pd =MdB  > >r(   r   c                    V ^8  d   QhRRRR/# )r   r"   zT.Set[DependencyMethods]r;   z1T.Callable[['FactoryFunc'], 'WrappedFactoryFunc']r#   )r$   s   "r%   r&   r&      s      5 :k r(   c                   a  R V 3R llpV# )as  Decorator for handling methods for dependency factory functions.

This helps to make factory functions self documenting
>>> @factory_methods([DependencyMethods.PKGCONFIG, DependencyMethods.CMAKE])
>>> def factory(env: Environment, for_machine: MachineChoice, kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']:
>>>     pass
c                    V ^8  d   QhRRRR/# )r   funcz'FactoryFunc'r;   z'WrappedFactoryFunc'r#   )r$   s   "r%   r&   %factory_methods.<locals>.__annotate__   s      M &: r(   c                P   <a  \         P                  ! S 4      R  V V3R ll4       pV# )c               (    V ^8  d   QhRRRRRRRR/# rC   r#   )r$   s   "r%   r&   4factory_methods.<locals>.inner.<locals>.__annotate__   s4     	V 	V 	V] 	VL_ 	V  eB 	Vr(   c           	     ,   < S! WV\        SV4      4      # )Nr   )r8   r:   rD   rV   r"   s   &&&r%   wrapped/factory_methods.<locals>.inner.<locals>.wrapped   s    &2CGV2TUUr(   )r,   wraps)rV   r\   r"   s   f r%   innerfactory_methods.<locals>.inner   s-    			V 	V 
	V r(   r#   )r"   r_   s   f r%   factory_methodsra      s      Lr(   )"
__future__r   r,   typingTbaser   r   r   r   r	   cmaker
   	frameworkr   	pkgconfigr   TYPE_CHECKINGr   r   
configtoolr   environmentr   mesonlibr   CallableDependencyGeneratorListFactoryFuncWrappedFactoryFuncCmakeDependencyFuncr   ra   r#   r(   r%   <module>rs      s   
 #   8 # 5 " / *???=0)(**R);%;<**FF$%		
 	
"#	$K 	

 	
"#	$ **S/%9:O> O>dr(   