
    hq	                     $    S r S/r " S S\5      rg)zMisc dict tools.hashdictc                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)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                 F    [        [        U R                  5       5      5      $ N)tuplesorteditemsselfs    J/var/www/html/env/lib/python3.13/site-packages/fontTools/misc/dictTools.py__keyhashdict.__key   s    VDJJL)**    c                     SR                  U R                  R                  SR                  S U R	                  5        5       5      5      $ )Nz{0}({1})z, c              3   v   #    U  H/  nS R                  [        US   5      [        US   5      5      v   M1     g7f)z{0}={1}       N)formatstrrepr).0is     r   	<genexpr>$hashdict.__repr__.<locals>.<genexpr>$   s0     T|!i&&s1Q4y$qt*==|s   79)r   	__class____name__join_hashdict__keyr
   s    r   __repr__hashdict.__repr__!   s:      NN##IITtzz|TT
 	
r   c                 4    [        U R                  5       5      $ r   )hashr   r
   s    r   __hash__hashdict.__hash__'   s    DJJL!!r   c                 ^    [        SR                  U R                  R                  5      5      eNz${0} does not support item assignment	TypeErrorr   r   r   )r   keyvalues      r   __setitem__hashdict.__setitem__*   '    299$..:Q:QR
 	
r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   )r   r)   s     r   __delitem__hashdict.__delitem__/   r-   r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   r
   s    r   clearhashdict.clear4   r-   r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   r   argskwargss      r   pophashdict.pop9   r-   r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   r5   s      r   popitemhashdict.popitem>   r-   r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   r5   s      r   
setdefaulthashdict.setdefaultC   r-   r   c                 ^    [        SR                  U R                  R                  5      5      er&   r'   r5   s      r   updatehashdict.updateH   r-   r   c                 F    [        U 5      n[        R                  X!5        U$ r   )r   dictrA   )r   rightresults      r   __add__hashdict.__add__P   s    $F"r    N)r   
__module____qualname____firstlineno____doc__r   r   r#   r+   r/   r2   r8   r;   r>   rA   rG   __static_attributes__rI   r   r   r   r      s>    ,+
"












r   N)rM   __all__rD   r   rI   r   r   <module>rP      s    ,Lt Lr   