
    <`	                     ,    d Z dgZ G d de          ZdS )zMisc dict tools.hashdictc                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )r   a<  
    hashable dict implementation, suitable for use as a key into
    other dicts.

        >>> h1 = hashdict({"apples": 1, "bananas":2})
        >>> h2 = hashdict({"bananas": 3, "mangoes": 5})
        >>> h1+h2
        hashdict(apples=1, bananas=3, mangoes=5)
        >>> d1 = {}
        >>> d1[h1] = "salad"
        >>> d1[h1]
        'salad'
        >>> d1[h2]
        Traceback (most recent call last):
        ...
        KeyError: hashdict(bananas=3, mangoes=5)

    based on answers from
       http://stackoverflow.com/questions/1151658/python-hashable-dicts

    c                 ^    t          t          |                                                     S N)tuplesorteditemsselfs    8lib/python3.11/site-packages/fontTools/misc/dictTools.py__keyzhashdict.__key   s     VDJJLL))***    c                     d                     | j        j        d                    d |                                 D                                 S )Nz{0}({1})z, c              3      K   | ]@}d                      t          |d                   t          |d                             V  AdS )z{0}={1}       N)formatstrrepr).0is     r   	<genexpr>z$hashdict.__repr__.<locals>.<genexpr>!   sg       A A./  &&!IId1Q4jj* * A A A A A Ar   )r   	__class____name__join_hashdict__keyr	   s    r   __repr__zhashdict.__repr__   s`      !8II A A37::<<A A A A AB B 	Br   c                 D    t          |                                           S r   )hashr   r	   s    r   __hash__zhashdict.__hash__$   s    DJJLL!!!r   c                 Z    t          d                    | j        j                            Nz${0} does not support item assignment	TypeErrorr   r   r   )r
   keyvalues      r   __setitem__zhashdict.__setitem__&   )    > &!899; ; 	;r   c                 Z    t          d                    | j        j                            r!   r"   )r
   r$   s     r   __delitem__zhashdict.__delitem__)   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r	   s    r   clearzhashdict.clear,   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r
   argskwargss      r   popzhashdict.pop/   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   popitemzhashdict.popitem2   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   
setdefaultzhashdict.setdefault5   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   updatezhashdict.update8   r'   r   c                 Z    t          |           }t                              ||           |S r   )r   dictr6   )r
   rightresults      r   __add__zhashdict.__add__>   s&    $FE"""r   N)r   
__module____qualname____doc__r   r   r   r&   r)   r+   r0   r2   r4   r6   r;    r   r   r   r      s         *+ + +B B B
" " "; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;    r   N)r>   __all__r8   r   r?   r   r   <module>rA      sH      ,: : : : :t : : : : :r   