§
    Hºi   ã                   ó:   — d Z ddlmZ ddlZ G d„ de¦  «        ZdS )zDNS name dictionaryé    )ÚMutableMappingNc                   óZ   ‡ — e Zd ZdZg d¢Zˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zˆ xZS )ÚNameDictz·A dictionary whose keys are dns.name.Name objects.

    In addition to being like a regular Python dictionary, this
    dictionary can also get the deepest match for a given key.
    )Ú	max_depthÚmax_depth_itemsÚ__storec                 óÈ   •— t          ¦   «                              ¦   «          t          ¦   «         | _        d| _        d| _        |                      t          |i |¤Ž¦  «         d S )Nr   )ÚsuperÚ__init__ÚdictÚ_NameDict__storer   r   Úupdate)ÚselfÚargsÚkwargsÚ	__class__s      €úQ/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/namedict.pyr   zNameDict.__init__-   sX   ø€ Ý‰Œ×ÒÑÔÐÝ‘v”vˆŒàˆŒà ˆÔØ�Š•D˜$Ð) &Ð)Ð)Ñ*Ô*Ð*Ð*Ð*ó    c                 óÂ   — t          |¦  «        | j        k    r| j        dz   | _        d S t          |¦  «        | j        k    rt          |¦  «        | _        d| _        d S d S )Né   )Úlenr   r   ©r   Úkeys     r   Ú__update_max_depthzNameDict.__update_max_depth6   sa   € Ýˆs‰8Œ8�t”~Ò%Ð%Ø#'Ô#7¸!Ñ#;ˆDÔ Ð Ð Ý�‰XŒX˜œÒ&Ð&Ý  ™XœXˆDŒNØ#$ˆDÔ Ð Ð ð 'Ð&r   c                 ó   — | j         |         S ©N©r   r   s     r   Ú__getitem__zNameDict.__getitem__=   s   € ØŒ|˜CÔ Ð r   c                 ó    — t          |t          j        j        ¦  «        st	          d¦  «        ‚|| j        |<   |                      |¦  «         d S )NzNameDict key must be a name)Ú
isinstanceÚdnsÚnameÚNameÚ
ValueErrorr   Ú_NameDict__update_max_depth)r   r   Úvalues      r   Ú__setitem__zNameDict.__setitem__@   sM   € Ý˜#�sœxœ}Ñ-Ô-ð 	<ÝÐ:Ñ;Ô;Ð;Ø!ˆŒ�SÑØ×Ò Ñ$Ô$Ð$Ð$Ð$r   c                 óî   — | j                              |¦  «         t          |¦  «        | j        k    r| j        dz
  | _        | j        dk    r&d| _        | j         D ]}|                      |¦  «         Œd S d S )Nr   r   )r   Úpopr   r   r   r%   )r   r   Úks      r   Ú__delitem__zNameDict.__delitem__F   sŠ   € ØŒ×Ò˜ÑÔÐÝˆs‰8Œ8�t”~Ò%Ð%Ø#'Ô#7¸!Ñ#;ˆDÔ ØÔ 1Ò$Ð$ØˆDŒNØ”\ð +ð +�Ø×'Ò'¨Ñ*Ô*Ð*Ð*ð %Ð$ð+ð +r   c                 ó*   — t          | j        ¦  «        S r   )Úiterr   ©r   s    r   Ú__iter__zNameDict.__iter__O   s   € Ý�D”LÑ!Ô!Ð!r   c                 ó*   — t          | j        ¦  «        S r   )r   r   r.   s    r   Ú__len__zNameDict.__len__R   s   € Ý�4”<Ñ Ô Ð r   c                 ó   — || j         v S r   r   r   s     r   Úhas_keyzNameDict.has_keyU   s   € Ø�d”lÐ"Ð"r   c                 ó.  — t          |¦  «        }|| j        k    r| j        }t          | d¦  «        D ]9}t          j                             ||d…         ¦  «        }|| v r|| |         fc S Œ:| t          j        j                 }t          j        j        |fS )a«  Find the deepest match to *name* in the dictionary.

        The deepest match is the longest name in the dictionary which is
        a superdomain of *name*.  Note that *superdomain* includes matching
        *name* itself.

        *name*, a ``dns.name.Name``, the name to find.

        Returns a ``(key, value)`` where *key* is the deepest
        ``dns.name.Name``, and *value* is the value associated with *key*.
        r   N)r   r   Úranger!   r"   r#   Úempty)r   r"   ÚdepthÚiÚnÚvs         r   Úget_deepest_matchzNameDict.get_deepest_matchX   s˜   € õ �D‘	”	ˆØ�4”>Ò!Ð!Ø”NˆEÝ˜�v˜qÑ!Ô!ð 	$ð 	$ˆAÝ”—’˜d 1 2 2œhÑ'Ô'ˆAØ�DˆyˆyØ˜4 œ7�|Ð#Ð#Ð#ð à•””Ô ˆÝ”” Ð"Ð"r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r%   r   r'   r+   r/   r1   r3   r;   Ú__classcell__)r   s   @r   r   r   $   sÇ   ø€ € € € € ðð ð <Ð;Ð;€Ið+ð +ð +ð +ð +ð%ð %ð %ð!ð !ð !ð%ð %ð %ð+ð +ð +ð"ð "ð "ð!ð !ð !ð#ð #ð #ð#ð #ð #ð #ð #ð #ð #r   r   )r?   Úcollections.abcr   Údns.namer!   r   © r   r   ú<module>rE      sh   ðð8 Ð ð +Ð *Ð *Ð *Ð *Ð *à €€€ðI#ð I#ð I#ð I#ð I#ˆ~ñ I#ô I#ð I#ð I#ð I#r   