
    j
                    z    d Z ddlmZ ddlZddlmZmZmZ  G d de          Z	ee
ef         Zee
eee	f         ZdS )zFrozen dictionaries.    )annotationsN)AnyDictUnionc                      e Zd ZdZdZd"dZd#d	Zd$d
Zd%d&dZd'dZ	d%d&dZ
d(dZed)d            Zd*dZd+dZd,dZd,dZd-dZd.d!ZdS )/
FrozenDictzFrozen dictionary, values are immutable after creation.

    Extended version of ASPN's Python Cookbook Recipe:
    https://code.activestate.com/recipes/414283/

    This version freezes dictionaries used as values within dictionaries.z A frozendict cannot be modified.keyr   returnNonec                *    t          | j                  NAttributeError
_block_msg)selfr	   s     T/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pydot/classes.py__delitem__zFrozenDict.__delitem__       T_---    valuec                *    t          | j                  r   r   )r   r	   r   s      r   __setitem__zFrozenDict.__setitem__   r   r   c                *    t          | j                  r   r   r   s    r   clearzFrozenDict.clear   r   r   Ndefaultc                *    t          | j                  r   r   r   r	   r   s      r   popzFrozenDict.pop    r   r   tuple[Any, Any]c                *    t          | j                  r   r   r   s    r   popitemzFrozenDict.popitem#   r   r   c                *    t          | j                  r   r   r   s      r   
setdefaultzFrozenDict.setdefault&   r   r   EFc                *    t          | j                  r   r   )r   r%   r&   s      r   updatezFrozenDict.update)   r   r   in_argc                n   t          | t                    s| S t          j        |           }|                                D ]t\  }}t          |t                    rt          |t                    rt	          |          ||<   Ct          |t
                    rt          d |D                       ||<   u|S )Nc              3  b   K   | ]*}t          |t                    rt          |          n|V  +d S r   )
isinstancedictr   ).0es     r   	<genexpr>z)FrozenDict._freeze_arg.<locals>.<genexpr>7   sL        DEZ4%8%8?JqMMMa     r   )r,   r-   copyitemsr   listtuple)r)   argkvs       r   _freeze_argzFrozenDict._freeze_arg,   s    &$'' 	MiIIKK 	 	DAq!Z(( At$$ #AAAt$$   IJ    A 
r   argskwc                     t                                          } fd|D             }t          j        |g|R i                      |           |S )Nc                :    g | ]}                     |          S  )r8   )r.   r5   clss     r   
<listcomp>z&FrozenDict.__new__.<locals>.<listcomp>>   s%    666#%%666r   )r-   __new____init__r8   )r>   r9   r:   newargs_s   `    r   r@   zFrozenDict.__new__<   s^    ll36666666c9E999S__R%8%8999
r   c                    d S r   r=   )r   r9   r:   s      r   rA   zFrozenDict.__init__B   s    r   otherboolc                z    t          || j                  r t          |           t          |          k    S t          S r   )r,   	__class__hashNotImplementedr   rE   s     r   __eq__zFrozenDict.__eq__E   s3    eT^,, 	-::e,,r   c                    | |k     S r   r=   rK   s     r   __ne__zFrozenDict.__ne__J   s    5=  r   intc                    	 | j         S # t          $ r= t          t          |                                                     | _         | j         cY S w xY wr   )_cached_hashr   rI   r4   r2   r   s    r   __hash__zFrozenDict.__hash__M   sZ    	%$$ 	% 	% 	% $U4::<<%8%8 9 9D$$$$	%s   	 AAAstrc                B    t                               |           }d| dS )NzFrozenDict())r-   __repr__)r   	dict_reprs     r   rV   zFrozenDict.__repr__T   s$    MM$''	)Y))))r   )r	   r   r
   r   )r	   r   r   r   r
   r   )r
   r   r   )r	   r   r   r   r
   r   )r
   r    )r%   r   r&   r   r
   r   )r)   r   r
   r   )r9   r   r:   r   r
   r   )r9   r   r:   r   )rE   r   r
   rF   )r
   rO   )r
   rS   )__name__
__module____qualname____doc__r   r   r   r   r   r"   r$   r(   staticmethodr8   r@   rA   rL   rN   rR   rV   r=   r   r   r   r      sU       M M 4J. . . .. . . .. . . .. . . . .. . . .. . . . .. . . .    \         
! ! ! !% % % %* * * * * *r   r   )r[   
__future__r   r1   typingr   r   r   r-   r   rS   AttributeDictrO   floatEdgeEndpointr=   r   r   <module>rb      s   
   " " " " " "  # # # # # # # # # #I* I* I* I* I* I* I* I*Z S#XS#uj01r   