
    B                         d dl Z d dlZd dlZd dlZd dlmZ ej                  rd dlZnd dl	m
Z 	 d dlmZ  eedej                         Z G d dej$                        Z G d de      Zeeu r[yy# e$ r eZY Dw xY w)	    N)reload_module)OrderedDict	iteritemsc                   D    e Zd ZdZeZd Zd Zd Zd Z	d Z
d Zd Zd	 Zy
)
frozendictz
    An immutable wrapper around dictionaries that implements the complete :py:class:`collections.Mapping`
    interface. It can be used as a drop-in replacement for dictionaries where immutability is desired.
    c                 @     | j                   |i || _        d | _        y N)dict_cls_dict_hash)selfargskwargss      &lib/third_party/frozendict/__init__.py__init__zfrozendict.__init__"   s     "T]]D3F3

    c                      | j                   |   S r	   r   r   keys     r   __getitem__zfrozendict.__getitem__&   s    zz#r   c                     || j                   v S r	   r   r   s     r   __contains__zfrozendict.__contains__)   s    djj  r   c                 (     | j                   | fi |S r	   )	__class__)r   add_or_replaces     r   copyzfrozendict.copy,   s    t~~d5n55r   c                 ,    t        | j                        S r	   )iterr   r   s    r   __iter__zfrozendict.__iter__/   s    DJJr   c                 ,    t        | j                        S r	   )lenr   r    s    r   __len__zfrozendict.__len__2   s    4::r   c                 P    d| j                   j                  d| j                  dS )N< >)r   __name__r   r    s    r   __repr__zfrozendict.__repr__5   s     NN33TZZ@@r   c                     | j                   6d}t        | j                        D ]  \  }}|t        ||f      z  } || _         | j                   S )Nr   )r   r   r   hash)r   hr   values       r   __hash__zfrozendict.__hash__8   sL    ::A'

3
UT3,'' 4DJzzr   N)r)   
__module____qualname____doc__dictr
   r   r   r   r   r!   r$   r*   r/    r   r   r   r      s7    
 H!6 Ar   r   c                       e Zd ZdZeZy)FrozenOrderedDictz8
    A frozendict subclass that maintains key order
    N)r)   r0   r1   r2   r   r
   r4   r   r   r6   r6   A   s     Hr   r6   )	functoolsoperatorsyssix	six.movesr   PY2collectionscollections_abccollections.abcabcr   ImportErrorNotImplementedgetattrr3   itemsr   Mappingr   r6   r4   r   r   <module>rF      s      
 
 #77) .!'
 D+tzz2	$(( $N
  .  !m  ! K!s   A0 0A:9A: