
    ]Mhq	                     ,    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    X/var/www/html/test/jupyter/venv/lib/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>$   sF      TT!i&&s1Q4yy$qt**==TTTTTTr   )r   	__class____name__join_hashdict__keyr	   s    r   __repr__zhashdict.__repr__!   sH      N#IITTtzz||TTTTT
 
 	
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__*   *    299$.:QRR
 
 	
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.clear4   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r
   argskwargss      r   popzhashdict.pop9   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   popitemzhashdict.popitem>   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   
setdefaultzhashdict.setdefaultC   r'   r   c                 Z    t          d                    | j        j                            r!   r"   r-   s      r   updatezhashdict.updateH   r'   r   c                 Z    t          |           }t                              ||           |S r   )r   dictr6   )r
   rightresults      r   __add__zhashdict.__add__P   s&    $FE"""r   N)r   
__module____qualname____doc__r   r   r   r&   r)   r+   r0   r2   r4   r6   r;    r   r   r   r      s         ,+ + +
 
 
" " "
 
 


 
 


 
 


 
 


 
 


 
 


 
 
    r   N)r>   __all__r8   r   r?   r   r   <module>rA      sP     ,L L L L Lt L L L L Lr   