B
    ™i‚\µ	  ã               @   s4   d Z ddlmZ ddlZddlZG dd„ deƒZdS )z3Proxy dictionary for objects stored in a container.é    )Úabsolute_importNc                   sh   e Zd ZdZdd„ Zdd„ Z‡ fdd„Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Z‡  ZS )Ú	ProxyDictz?A dictionary which uses a container object to store its values.c             C   s   t  |¡| _d S )N)ÚweakrefÚrefÚcontainerref)ÚselfÚ	container© r	   ú4lib/python3.7/site-packages/tables/misc/proxydict.pyÚ__init__   s    zProxyDict.__init__c             C   s    || krt |ƒ‚|  |  ¡ |¡S )N)ÚKeyErrorZ_get_value_from_containerÚ_get_container)r   Úkeyr	   r	   r
   Ú__getitem__#   s    zProxyDict.__getitem__c                s   t t| ƒ |d ¡ d S )N)Úsuperr   Ú__setitem__)r   r   Úvalue)Ú	__class__r	   r
   r   *   s    zProxyDict.__setitem__c             C   s
   t  | ¡S )N)ÚobjectÚ__repr__)r   r	   r	   r
   r   .   s    zProxyDict.__repr__c                s*   d‰ ‡ fdd„t  | ¡D ƒ}dd |¡ S )Nz%r: %rc                s   g | ]}ˆ | ‘qS r	   r	   )Ú.0Úitem)Ú
itemFormatr	   r
   ú
<listcomp>4   s    z%ProxyDict.__str__.<locals>.<listcomp>z{%s}z, )ÚsixÚ	iteritemsÚjoin)r   Z	itemReprsr	   )r   r
   Ú__str__1   s    zProxyDict.__str__c             C   s*   g }x t  | ¡D ]}| | | ¡ qW |S )N)r   ÚiterkeysÚappend)r   Z	valueListr   r	   r	   r
   Úvalues7   s    zProxyDict.valuesc             c   s&   xt  | ¡D ]}| | V  qW t‚d S )N)r   r   ÚStopIteration)r   r   r	   r	   r
   Ú
itervalues>   s    zProxyDict.itervaluesc             C   s.   g }x$t  | ¡D ]}| || | f¡ qW |S )N)r   r   r   )r   ZitemListr   r	   r	   r
   ÚitemsD   s    zProxyDict.itemsc             c   s*   x t  | ¡D ]}|| | fV  qW t‚d S )N)r   r   r!   )r   r   r	   r	   r
   r   K   s    zProxyDict.iteritemsc             C   s   |   ¡ }|d krtdƒ‚|S )Nz)the container object does no longer exist)r   Ú
ValueError)r   r   r	   r	   r
   r   Q   s    zProxyDict._get_container)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r    r"   r#   r   r   Ú__classcell__r	   r	   )r   r
   r      s   
r   )r(   Z
__future__r   r   r   Údictr   r	   r	   r	   r
   Ú<module>   s   