U
    f                     @   sR   zd dl mZ W n  ek
r0   d dlmZ Y nX d dlmZ G dd deZdS )    )MutableMapping)chainc                   @   sf   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd ZeZdd ZeZdS )ChainedDictNc                 K   s   || _ t | _|| _d S N)_ChainedDict__parentset_ChainedDict__deleted_keys_ChainedDict__data)selfparentkwargs r   </tmp/pip-unpacked-wheel-2893xuzv/utils/dicts/chained_dict.py__init__
   s    zChainedDict.__init__c                 C   s2   | j d k	r(|| jks|| j ko&|| jkS || jkS r   )r   r	   r   r
   keyr   r   r   __contains__   s
    
zChainedDict.__contains__c                 C   sJ   z| j | W S  tk
rD   | jd k	r>|| jkr>| j|  Y S  Y nX d S r   )r	   KeyErrorr   r   r   r   r   r   __getitem__   s    zChainedDict.__getitem__c                 C   s   || j |< | j| d S r   )r	   r   discard)r
   r   valr   r   r   __setitem__    s    
zChainedDict.__setitem__c                 C   sD   || kr8| j | z| j|= W q@ tk
r4   Y q@X nt|d S r   )r   addr	   r   r   r   r   r   __delitem__$   s    zChainedDict.__delitem__c                 C   s   d | jjt|  S )Nz{}({}))format	__class____name__dictitemsr
   r   r   r   __repr__.   s    zChainedDict.__repr__c                 C   s   |   S r   )keysr   r   r   r   __iter__1   s    zChainedDict.__iter__c                 C   s   t t|  S r   )lenlistr!   r   r   r   r   __len__4   s    zChainedDict.__len__c                 c   s^   t | j}| jd kr | j }nt| j | j }|D ]}||krHq:|V  || q:d S r   )r   r   r   r	   r!   r   r   )r
   yieldediterabler   r   r   r   iterkeys7   s    

zChainedDict.iterkeysc                 c   s    |   D ]}|| | fV  qd S r   )r(   r   r   r   r   	iteritemsF   s    zChainedDict.iteritems)N)r   
__module____qualname__r   r   r   r   r   r    r"   r%   r(   r!   r)   r   r   r   r   r   r      s   
	
r   N)collections.abcr   ImportErrorcollections	itertoolsr   r   r   r   r   r   <module>   s
   