o
    ld!                     @  s8  d dl mZ ddlmZ ddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZmZ d d	lZd d	lZd d
lmZ d dlmZ ejr_d dlmZ ddlmZ ejddddZG dd dee Zejee e!e"e#df Z$ej%ejej&e$f  Z'ej(eejej&e$f f Z)ejdej*dej+f dZ,ejee e!ej%ej+ ej(eej+f f Z-eje-edf Z.eje.ej&f Z/ej(ee.f Z0ej(ee/f Z1ej*ej&gef Z2e3deZ4G dd dZ5G dd de5Z6G dd dZ7ee e!ee"e#fZ8eje-ef Z9ejde9dZ:G dd  d e5ej;e: Z<G d!d" d"ed#Z=G d$d% d%e6eZ>d	S )&    )annotations   )mparser   )InvalidCodeInvalidArguments)flattenresolve_second_level_holders)MesonOperator)HoldableObjectMesonBugExceptionN)ABCMeta)AbstractContextManager)Protocol)Interpreter__TTYPE_varT)boundcontravariantc                   @  s   e Zd ZdddZdS )	OperatorCallotherr   return
'TYPE_var'c                 C  s   d S N selfr   r   r   home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/interpreterbase/baseobjects.py__call__$   s    zOperatorCall.__call__N)r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r   #   s    r   InterpreterObjectTV_func.)r   MesonInterpreterObject
SubProjectc                   @  sX   e Zd Zddd"ddZd#d
dZd$ddZd%ddZd&ddZd'ddZd'd d!Z	dS )(r"   N
subprojectr'   T.Optional['SubProject']r   Nonec                C  sF   i | _ i | _i | _d | _|ptd| _| jtj| j	tj
| ji d S )N )methods	operatorstrivial_operatorsZcurrent_noder%   r'   updater
   ZEQUALS	op_equalsZ
NOT_EQUALSop_not_equalsr   r'   r   r   r   __init__6   s   	
zInterpreterObject.__init__strc                 C  s
   t | jS r   )typer   r   r   r   r   display_nameO   s   
zInterpreterObject.display_namemethod_nameargsT.List[TYPE_var]kwargsTYPE_kwargsr   c                 C  sn   || j v r&| j | }t|ddst|}t|dds!t||\}}|||S td| d|  dt| j d)Nzno-args-flatteningFz!no-second-level-holder-flatteningzUnknown method "z" in object 	 of type .)r+   getattrr   r	   r   r4   r   )r   r7   r8   r:   methodr   r   r   method_callR   s   


"zInterpreterObject.method_calloperatorr
   r   c              
   C  s   || j v rT| j | }|d d u r*|d ur*td|j d|   d| dt|j |d d urNt||d sNtd|j d|   dt|j d	| d
	|d |S || jv r`| j| |S t	d|  d|   d|j d)Nr   zThe unary operator `z` of z was passed the object r<   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   valuer6   r4   r   
isinstancer   r,   r   )r   rA   r   opr   r   r   operator_calla   s   

,.
"zInterpreterObject.operator_callopt_type
T.NoReturnc              
   C  s,   t td|   dt|j d| d)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dedentr6   r4   r   )r   r   rG   r   r   r   _throw_comp_exceptionn   s   z'InterpreterObject._throw_comp_exceptionboolc                 C  s$   t | t |kr| |d | |kS Nz==r4   rK   r   r   r   r   r/   v   s   zInterpreterObject.op_equalsc                 C  s$   t | t |kr| |d | |kS Nz!=rN   r   r   r   r   r0   ~   s   zInterpreterObject.op_not_equals)r'   r(   r   r)   r   r3   )r7   r3   r8   r9   r:   r;   r   r   )rA   r
   r   r   r   r   )r   r   rG   r3   r   rH   r   r   r   rL   )
r   r    r!   r2   r6   r@   rF   rK   r/   r0   r   r   r   r   r"   5   s    




c                   @     e Zd ZdZdS )r$   zO All non-elementary objects and non-object-holders should be derived from this Nr   r    r!   __doc__r   r   r   r   r$          c                   @  rR   )MutableInterpreterObjectz0 Dummy class to mark the object type as mutable NrS   r   r   r   r   rV      rU   rV   InterpreterObjectTypeVarc                      sF   e Zd Zd fddZdd
dZdddZdddZdddZ  ZS )ObjectHolderobjrW   interpreter'Interpreter'r   r)   c                   sV   t  j|jd tjst|tsJ dt|j dt d|| _	|| _
| j
j| _d S )Nr&   z.This is a bug: Trying to hold object of type `z` that is not in ``)superr2   r'   TTYPE_CHECKINGrD   HoldableTypesr4   r   held_objectrZ   environmentenv)r   rY   rZ   	__class__r   r   r2      s   &zObjectHolder.__init__r3   c                 C  s   t | jjS r   )r4   ra   r   r5   r   r   r   r6      s   zObjectHolder.display_namer   r   rL   c                 C  s(   t | jt |kr| |d | j|kS rM   r4   ra   rK   r   r   r   r   r/      s   
zObjectHolder.op_equalsc                 C  s(   t | jt |kr| |d | j|kS rO   rf   r   r   r   r   r0      s   
zObjectHolder.op_not_equalsc                 C  s(   dt | j dt | jj d| jdS )Nz<[z	] holds [z]: >)r4   r   ra   r5   r   r   r   __repr__   s   (zObjectHolder.__repr__)rY   rW   rZ   r[   r   r)   rP   rQ   )	r   r    r!   r2   r6   r/   r0   rh   __classcell__r   r   rd   r   rX      s    


rX   c                   @  s.   e Zd ZdZdddZdddZdd
dZdS )IterableObjectzFBase class for all objects that can be iterated over in a foreach loopr   T.Optional[int]c                 C     t d| jj )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   re   r   r5   r   r   r   iter_tuple_size   s   zIterableObject.iter_tuple_size5T.Iterator[T.Union[TYPE_var, T.Tuple[TYPE_var, ...]]]c                 C  rl   )Nziter not implemented for rm   r5   r   r   r   	iter_self      zIterableObject.iter_selfintc                 C  rl   )Nzsize not implemented for rm   r5   r   r   r   size   rq   zIterableObject.sizeN)r   rk   )r   ro   )r   rr   )r   r    r!   rT   rn   rp   rs   r   r   r   r   rj      s
    

rj   )	metaclassc                      s   e Zd Zd fddZ  ZS )ContextManagerObjectr'   'SubProject'r   r)   c                   s   t  j|d d S )Nr&   )r]   r2   r1   rd   r   r   r2      rq   zContextManagerObject.__init__)r'   rv   r   r)   )r   r    r!   r2   ri   r   r   rd   r   ru      s    ru   )?
__future__r   r*   r   
exceptionsr   r   helpersr   r	   rA   r
   Zmesonlibr   r   rI   typingr^   abcr   
contextlibr   r_   typing_extensionsr   rZ   r   TypeVarr   r   Unionr3   rr   rL   listdictZ	TV_fw_varListZBaseNodeZ
TV_fw_argsDictZTV_fw_kwargsCallableAnyr#   ZTYPE_elementaryr   Z	TYPE_nvarr;   ZTYPE_nkwargsZTYPE_key_resolverNewTyper%   r"   r$   rV   r`   ZTYPE_HoldableTypesrW   GenericrX   rj   ru   r   r   r   r   <module>   sF   (N