U
    ‰d‰  ã                   @   s0   d Z G dd„ deƒZdd„ ZG dd„ deƒZdS )zCustom maps, sequences, etc.c                   @   s$   e Zd ZdZdZdd„ Zdd„ ZdS )Ú	HashedSeqzjHashed Sequence.

    Type used for hash() to make sure the hash is not generated
    multiple times.
    Ú	hashvaluec                 G   s   || d d …< t |ƒ| _d S ©N)Úhashr   )ÚselfÚseq© r   ú;/tmp/pip-unpacked-wheel-hqfrjlvz/kombu/utils/collections.pyÚ__init__   s    zHashedSeq.__init__c                 C   s   | j S r   )r   )r   r   r   r   Ú__hash__   s    zHashedSeq.__hash__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r	   r
   r   r   r   r   r      s   r   c                 C   s,   z
|   ¡ W S  tk
r&   t| ƒ Y S X dS )zCall ``obj.__eqhash__``.N)Z
__eqhash__ÚAttributeErrorr   )Úor   r   r   Úeqhash   s    
r   c                       s8   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  ZS )ÚEqualityDictz&Dict using the eq operator for keying.c                    s&   t |ƒ}|| kr|  |¡S tƒ  |¡S r   )r   Ú__missing__ÚsuperÚ__getitem__)r   ÚkeyÚh©Ú	__class__r   r   r       s    
zEqualityDict.__getitem__c                    s   t ƒ  t|ƒ|¡S r   )r   Ú__setitem__r   )r   r   Úvaluer   r   r   r   &   s    zEqualityDict.__setitem__c                    s   t ƒ  t|ƒ¡S r   )r   Ú__delitem__r   )r   r   r   r   r   r   )   s    zEqualityDict.__delitem__)r   r   r   r   r   r   r   Ú__classcell__r   r   r   r   r      s   r   N)r   Úlistr   r   Údictr   r   r   r   r   Ú<module>   s   