
    <hN)                    b   % S SK Jr  SSKJr  SSKJrJr  SSKJrJ	r	  SSK
Jr  SSKJrJr  S S	KrS S	KrS S
KJr  S SKJr  \R,                  (       a  S SKJr  SSKJr  \R6                  " S\R8                  S\R:                  4   S9r\R>                  \ \!\"\RF                  S   \RH                  \ S4   4   r%S\&S'   \R>                  \%\S\RF                  S   \RH                  \ S4   4   r'S\&S'   \R>                  \'\RP                  4   r)\RH                  \ \'4   r*\RH                  \ \)4   r+\R8                  \RP                  /\ 4   r,\R6                  " SSSS9r-\R8                  \-\-/\'4   r.\R8                  S\R^                  \'   \*/\'4   r0\Rb                  " S\ 5      r2 " S S5      r3 " S S\35      r4 " S S5      r5 " S S\45      r6 " S  S!\45      r7\\!\"\ \8\94r:\R>                  \'\4   r;\R6                  " S"\;S9r< " S# S$\3\Rz                  \<   5      r> " S% S&\S'9r? " S( S)\4\5      r@g	)*    )annotations   )mparser   )InvalidCodeInvalidArguments)flattenresolve_second_level_holders)MesonOperator)HoldableObjectMesonBugExceptionN)ABCMeta)AbstractContextManager)	TypeAlias)InterpreterTV_func.)boundTYPE_elementaryr   MesonInterpreterObjectTYPE_varTYPE_op_argT)r   contravariantInterpreterObject
SubProjectc                     ^  \ rS rSr% 0 rS\S'   0 rS\S'   0 rS\S'   SU 4S jjr\	SS	 j5       r
\	SS
 j5       rSS.SS jjrSS jr        SS jrSS jrSS jrSS jrSS jrSrU =r$ )r   '   zST.Dict[MesonOperator, T.Tuple[T.Union[T.Type, T.Tuple[T.Type, ...]], TYPE_op_func]]TRIVIAL_OPERATORSz#T.Dict[MesonOperator, TYPE_op_func]	OPERATORSzT.Dict[str, TYPE_method_func]METHODSc                  > [         TU ]  " S0 UD6  U R                  n0 U l        0 U l        0 U l        [        U R                  5       SS  5       H  nU[        L aY  U R                  R                  [        R                  [        R                  [        R                  [        R                  05        Me  [        U[        5      (       d  M|  U R                  R                  UR                  5        U R                  R                  UR                  5        U R                  R                  UR                  5        M     U R                  R!                  5        HY  u  pE[#        US5      (       a  XPR                  UR$                  '   [#        US5      (       d  MA  XPR                  UR&                  '   M[     U R                  R                  U5        g )Nr   meson_methodmeson_operator )super__init_subclass__r   r   r   reversedmror   updater   EQUALS	op_equals
NOT_EQUALSop_not_equals
issubclass__dict__itemshasattrr!   r"   )clskwargssaved_trivial_operators
superclassnamemethod	__class__s         ڇ/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/interpreterbase/baseobjects.pyr%   #InterpreterObject.__init_subclass__7   sc   !+F+"%"7"7 "
 #3779QR=1J.. $$!((*;*E*E!,,.?.M.M& 
 J(9::"":#5#56$$Z%9%9:%%,,Z-I-IJ 2  LL..0LDv~..39F//0v/007=f334	 1
 	$$%<=    c                   ^  SU 4S jjnU$ )z_Decorator that tags a Python method as the implementation of a method
for the Meson interpreterc                   > TU l         U $ N)r!   )fr5   s    r8   	decorator+InterpreterObject.method.<locals>.decorator[   s    !ANHr:   r>   r   returnr   r#   )r5   r?   s   ` r8   r6   InterpreterObject.methodW       	 r:   c                   ^  SU 4S jjnU$ )z[Decorator that tags a method as the implementation of an operator
for the Meson interpreterc                   > TU l         U $ r=   )r"   )r>   ops    r8   r?   -InterpreterObject.operator.<locals>.decoratord   s    !AHr:   rA   r#   )rG   r?   s   ` r8   operatorInterpreterObject.operator`   rD   r:   N
subprojectc               D    S U l         U=(       d    [        S5      U l        g )N )current_noder   rL   )selfrL   s     r8   __init__InterpreterObject.__init__i   s     04$6
2r:   c                ,    [        U 5      R                  $ r=   )type__name__rP   s    r8   display_nameInterpreterObject.display_namep   s    Dz"""r:   c           
        XR                   ;   aT  U R                   U   n[        USS5      (       d  [        U5      n[        USS5      (       d  [        X#5      u  p#U" XU5      $ [	        SU SU  S[        U 5      R                   S35      e)Nzno-args-flatteningFz!no-second-level-holder-flatteningzUnknown method "z" in object 	 of type .)r   getattrr	   r
   r   rT   rU   )rP   method_nameargsr2   r6   s        r8   method_callInterpreterObject.method_calls   s     ,,&\\+.F6#7??t}6#FNN;DI$f--,[MdV9UYZ^U_UhUhTiijkllr:   c                D   XR                   ;   a  U R                   U   nUS   cE  UbB  [        SUR                   SU R                  5        SU S[	        U5      R
                   35      eUS   bV  [        X#S   5      (       dC  [        SUR                   SU R                  5        S[	        U5      R
                   S	U S
3	5      eUS   " X5      $ XR                  ;   a  U R                  U   " X5      $ [        SU  SU R                  5        SUR                   S35      e)Nr   zThe unary operator `z` of z was passed the object rZ   zThe `z` operator of z! does not accept objects of type z ()r   zObject z does not support the `z` operator.)
r   r   valuerW   rT   rU   
isinstancer   r   r   )rP   rI   otherrG   s       r8   operator_callInterpreterObject.operator_call   s   ---''1B!u}!2'*>x~~>NeTXTeTeTgShh  AF  @G  GP  QU  V[  Q\  Qe  Qe  Pf  )g  h  h!u Ea5)A)A&x~~.>nTM^M^M`La  bC  DH  IN  DO  DX  DX  CY  Y[  \a  [b  bc  (d  e  ea5%%~~%>>(+D88GD643D3D3F2GG^_g_m_m^nnyz{{r:   c                    [        [        R                  " SU R                  5        S[	        U5      R
                   SU S35      5      e)Nz>
                Trying to compare values of different types (z, z) using zv.
                This was deprecated and undefined behavior previously and is as of 0.60.0 a hard error.
            )r   textwrapdedentrW   rT   rU   )rP   re   opt_types      r8   _throw_comp_exception'InterpreterObject._throw_comp_exception   sW    x>>B>O>O>Q=RRTUYZ_U`UiUiTjjrs{r| } 
  	r:   c                \    [        U 5      [        U5      La  U R                  US5        X:H  $ Nz==rT   rl   rP   re   s     r8   r*   InterpreterObject.op_equals   s,     :T%[(&&ud3}r:   c                \    [        U 5      [        U5      La  U R                  US5        X:g  $ Nz!=rp   rq   s     r8   r,   InterpreterObject.op_not_equals   s*    :T%[(&&ud3}r:   )rO   rL   )r1   zT.Type[InterpreterObject]r2   zT.AnyrB   None)r5   strrB   T.Callable[[TV_func], TV_func])rG   r   rB   rx   )rL   zT.Optional['SubProject']rB   rv   rB   rw   )r]   rw   r^   zT.List[TYPE_var]r2   TYPE_kwargsrB   r   )rI   r   re   r   rB   r   )re   r   rk   rw   rB   z
T.NoReturnre   r   rB   bool)rU   
__module____qualname____firstlineno__r   __annotations__r   r   r%   staticmethodr6   rI   rQ   rW   r_   rf   rl   r*   r,   __static_attributes____classcell__r7   s   @r8   r   r   '   s     	    68I27
 	   
>@     BF 7#m m 'm $	m
 m| r:   c                      \ rS rSrSrSrg)r      zNAll non-elementary objects and non-object-holders should be derived from this r#   NrU   r}   r~   r   __doc__r   r#   r:   r8   r   r      s    Yr:   c                      \ rS rSrSrSrg)MutableInterpreterObject   z/Dummy class to mark the object type as mutable r#   Nr   r#   r:   r8   r   r      s    :r:   r   c                      \ rS rSrSrSrg)UnknownValue   zThis class is only used for the rewriter/static introspection tool and
indicates that a value cannot be determined statically, either because of
limitations in our code or because the value differs from machine to
machine.r#   Nr   r#   r:   r8   r   r      s    r:   r   c                      \ rS rSrSrSrg)UndefinedVariable   zThis class is only used for the rewriter/static introspection tool and
represents the `value` a meson-variable has if it was never written to.r#   Nr   r#   r:   r8   r   r      s    Or:   r   InterpreterObjectTypeVarc                     ^  \ rS rSrSU 4S jjrS	S jr\R                  \R                  5      S
S j5       r
\R                  \R                  5      S
S j5       rS	S jrSrU =r$ )ObjectHolder   c                   > [         TU ]  UR                  S9  [        R                  (       d:  [        U[        5      (       d%   S[        U5      R                   S[         S35       eXl	        X l
        U R                  R                  U l        g )NrK   z.This is a bug: Trying to hold object of type `z` that is not in ``)r$   rQ   rL   TTYPE_CHECKINGrd   HoldableTypesrT   rU   held_objectinterpreterenvironmentenv)rP   objr   r7   s      r8   rQ   ObjectHolder.__init__   s    K$:$:; c=11  [5cdhildmdvdvcw  xJ  KX  JY  YZ  4[  [1&##//r:   c                @    [        U R                  5      R                  $ r=   )rT   r   rU   rV   s    r8   rW   ObjectHolder.display_name   s    D$$%...r:   c                    [        U R                  5      [        U5      La  U R                  US5        U R                  U:H  $ ro   rT   r   rl   rq   s     r8   r*   ObjectHolder.op_equals   s<       !e4&&ud35((r:   c                    [        U R                  5      [        U5      La  U R                  US5        U R                  U:g  $ rt   r   rq   s     r8   r,   ObjectHolder.op_not_equals   s:      !e4&&ud35((r:   c                    S[        U 5      R                   S[        U R                  5      R                   SU R                  < S3$ )Nz<[z	] holds [z]: >)rT   rU   r   rV   s    r8   __repr__ObjectHolder.__repr__   sD    DJ''(	$t7G7G2H2Q2Q1RRUVZVfVfUiijkkr:   )r   r   r   )r   r   r   z'Interpreter'rB   rv   ry   r{   )rU   r}   r~   r   rQ   rW   r   rI   r   r)   r*   r+   r,   r   r   r   r   s   @r8   r   r      sc    	0/  4 45) 6)  8 89) :)
l lr:   r   c                  6    \ rS rSrSrSS jrS	S jrS
S jrSrg)IterableObject   zFBase class for all objects that can be iterated over in a foreach loopc                F    [        SU R                  R                   35      e)zaReturn the size of the tuple for each iteration. Returns None if only a single value is returned.z$iter_tuple_size not implemented for r   r7   rU   rV   s    r8   iter_tuple_sizeIterableObject.iter_tuple_size   s     "Ft~~G^G^F_ `aar:   c                F    [        SU R                  R                   35      e)Nziter not implemented for r   rV   s    r8   	iter_selfIterableObject.iter_self        ";DNN<S<S;T UVVr:   c                F    [        SU R                  R                   35      e)Nzsize not implemented for r   rV   s    r8   sizeIterableObject.size   r   r:   r#   N)rB   zT.Optional[int])rB   z5T.Iterator[T.Union[TYPE_var, T.Tuple[TYPE_var, ...]]])rB   int)	rU   r}   r~   r   r   r   r   r   r   r#   r:   r8   r   r      s    PbWWr:   r   )	metaclassc                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ContextManagerObject   c                    > [         TU ]  US9  g )NrK   )r$   rQ   )rP   rL   r7   s     r8   rQ   ContextManagerObject.__init__   s    J/r:   r#   )rL   z'SubProject'rB   rv   )rU   r}   r~   r   rQ   r   r   r   s   @r8   r   r      s    0 0r:   r   )A
__future__r   rN   r   
exceptionsr   r   helpersr	   r
   rI   r   mesonlibr   r   ri   typingr   abcr   
contextlibr   r   typing_extensionsr   r   r   TypeVarCallableAnyr   Unionrw   r   r|   SequenceDictr   r   r   BaseNode	TYPE_nvarrz   TYPE_nkwargsTYPE_key_resolverr   TYPE_op_funcListTYPE_method_funcNewTyper   r   r   r   r   r   listdictr   TYPE_HoldableTypesr   Genericr   r   r   r#   r:   r8   <module>r      sY   #  5 : # 8    -??+ * ))IQZZQUU
%;
<WWS#tQZZ@Q5RTUTZTZ[^`q[qTr%rs sggo~?WYZYcYcdnYoqrqwqwx{  ~H  yH  rI  I  J)  JGGHg.../	ffS(]#vvc9n%JJ 0 01367 iiZtLzz;4h>?::2AFF84DkRT\\]  YY|S)
| ||Z. Z; ;) O. O  dCt<WWX~56 99%?GYZ l$aii0H&I lBWw W013I 0r:   