o
    uJAf                     @  s   d dl mZ d dlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ejr1ddlmZ ddlmZ G dd deejeef  eZdS )	    )annotationsN   )
ObjectHolderIterableObjectMesonOperatortyped_operatornoKwargs	noPosargsnoArgsFlatteningtyped_pos_argsTYPE_varInvalidArguments)Interpreter)TYPE_kwargsc                      s   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ee	de
d-ddZeed.ddZeee	d e
egd!d/d$d%Zeeje
d0d'd(Z  ZS )1
DictHolderobjT.Dict[str, TYPE_var]interpreter'Interpreter'returnNonec                   s   t  ||  j j j jd  jtj	t
 fddftjt
 fddftjt
 fddftjt fddftjt fddfi  jtj ji d S )N)Zhas_keykeysgetc                   s   i  j | S Nheld_objectxself K/usr/lib/python3.10/site-packages/mesonbuild/interpreter/primitives/dict.py<lambda>&   s    z%DictHolder.__init__.<locals>.<lambda>c                   s
    j | kS r   r   r   r   r    r!   r"   )      
 c                   s
    j | kS r   r   r   r   r    r!   r"   *   r#   c                   s
   |  j v S r   r   r   r   r    r!   r"   +   r#   c                   s
   |  j vS r   r   r   r   r    r!   r"   ,   r#   )super__init__methodsupdatehas_key_methodkeys_method
get_methodtrivial_operatorsr   PLUSdictEQUALS
NOT_EQUALSINstrNOT_IN	operatorsINDEXop_index)r   r   r   	__class__r   r!   r%      s    
zDictHolder.__init__r1   c                 C     dS )Nr-   r    r   r    r    r!   display_name4      zDictHolder.display_nameintc                 C  r8   )N   r    r   r    r    r!   iter_tuple_size7   r:   zDictHolder.iter_tuple_size"T.Iterator[T.Tuple[str, TYPE_var]]c                 C  s   t | j S r   )iterr   itemsr   r    r    r!   	iter_self:   s   zDictHolder.iter_selfc                 C  
   t | jS r   )lenr   r   r    r    r!   size=   s   
zDictHolder.sizezdict.has_keyargsT.Tuple[str]kwargsr   boolc                 C  s   |d | j v S )Nr   r   r   rE   rG   r    r    r!   r(   @   s   zDictHolder.has_key_methodT.List[TYPE_var]T.List[str]c                 C  rB   r   )sortedr   rI   r    r    r!   r)   E   s   
zDictHolder.keys_methodzdict.get)optargs"T.Tuple[str, T.Optional[TYPE_var]]r   c                 C  sD   |d | j v r| j |d  S |d d ur|d S td|d d)Nr      Key  is not in the dictionary.r   r   rI   r    r    r!   r*   J   s
   zDictHolder.get_methodotherc                 C  s$   || j vrtd| d| j | S )NrP   rQ   rR   )r   rS   r    r    r!   r5   T   s   

zDictHolder.op_index)r   r   r   r   r   r   )r   r1   )r   r;   )r   r>   )rE   rF   rG   r   r   rH   )rE   rJ   rG   r   r   rK   )rE   rN   rG   r   r   r   )rS   r1   r   r   )__name__
__module____qualname__r%   r9   r=   rA   rD   r   r   r1   r(   r	   r)   r
   objectr*   r   r   r4   r5   __classcell__r    r    r6   r!   r      s$    




r   )
__future__r   typingTinterpreterbaser   r   r   r   r   r	   r
   r   r   r   TYPE_CHECKINGr   r   r   Dictr1   r   r    r    r    r!   <module>   s   0$