ó
    ÌÅLg   ã                   ó2   • S r SSKJr  SSKr " S S\5      rg)zDNS name dictionaryé    )ÚMutableMappingNc                   ód   ^ • \ rS rSrSr/ SQrU 4S jrS rS rS r	S r
S	 rS
 rS rS rSrU =r$ )ÚNameDicté$   z«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U ]  5         [        5       U l        SU l        SU l        U R                  [        U0 UD65        g )Nr   )ÚsuperÚ__init__ÚdictÚ_NameDict__storer   r   Úupdate)ÚselfÚargsÚkwargsÚ	__class__s      €Ú./usr/lib/python3/dist-packages/dns/namedict.pyr   ÚNameDict.__init__-   s<   ø€ Ü‰ÑÔÜ“vˆŒàˆŒà ˆÔØ�‰”D˜$Ð) &Ñ)Õ*ó    c                 óÂ   • [        U5      U R                  :X  a  U R                  S-   U l        g [        U5      U R                  :”  a  [        U5      U l        SU l        g g )Né   )Úlenr   r   ©r   Úkeys     r   Ú__update_max_depthÚNameDict.__update_max_depth6   sM   € Üˆs‹8�t—~‘~Ó%Ø#'×#7Ñ#7¸!Ñ#;ˆDÕ Ü�‹X˜Ÿ™Ó&Ü  ›XˆDŒNØ#$ˆDÕ ð 'r   c                 ó    • U R                   U   $ ©N©r   r   s     r   Ú__getitem__ÚNameDict.__getitem__=   s   € Ø�|‰|˜CÑ Ð r   c                 óª   • [        U[        R                  R                  5      (       d  [	        S5      eX R
                  U'   U R                  U5        g )NzNameDict key must be a name)Ú
isinstanceÚdnsÚnameÚNameÚ
ValueErrorr   Ú_NameDict__update_max_depth)r   r   Úvalues      r   Ú__setitem__ÚNameDict.__setitem__@   s=   € Ü˜#œsŸx™xŸ}™}×-Ñ-ÜÐ:Ó;Ð;Ø!�‰�SÑØ×Ñ Õ$r   c                 ó  • U R                   R                  U5        [        U5      U R                  :X  a  U R                  S-
  U l        U R                  S:X  a,  SU l        U R                    H  nU R                  U5        M     g g )Nr   r   )r   Úpopr   r   r   r)   )r   r   Úks      r   Ú__delitem__ÚNameDict.__delitem__F   sm   € Ø�‰×Ñ˜ÔÜˆs‹8�t—~‘~Ó%Ø#'×#7Ñ#7¸!Ñ#;ˆDÔ Ø×Ñ 1Ó$ØˆDŒNØ—\”\�Ø×'Ñ'¨Ö*ò "ð %r   c                 ó,   • [        U R                  5      $ r   )Úiterr   ©r   s    r   Ú__iter__ÚNameDict.__iter__O   s   € Ü�D—L‘LÓ!Ð!r   c                 ó,   • [        U R                  5      $ r   )r   r   r4   s    r   Ú__len__ÚNameDict.__len__R   s   € Ü�4—<‘<Ó Ð r   c                 ó   • XR                   ;   $ r   r    r   s     r   Úhas_keyÚNameDict.has_keyU   s   € Ø—l‘lÑ"Ð"r   c                 óD  • [        U5      nX R                  :”  a  U R                  n[        U* S5       H1  n[        R                  R                  XS 5      nX@;   d  M+  X@U   4s  $    U [        R                  R                     n[        R                  R                  U4$ )as  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_matchÚNameDict.get_deepest_matchX   s�   € ô �D“	ˆØ—>‘>Ó!Ø—N‘NˆEÜ˜�v˜qÖ!ˆAÜ—‘—‘˜d 2˜hÓ'ˆAØ�yØ ™7�|Ò#ñ "ð ”—‘—‘Ñ ˆÜ—‘—‘ Ð"Ð"r   )r	   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r   r)   r!   r+   r0   r5   r8   r;   rD   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   $   sA   ø† ñò <€Iõ+ò%ò!ò%ò+ò"ò!ò#÷#ð #r   r   )rJ   Úcollections.abcr   Údns.namer%   r   © r   r   Ú<module>rQ      s    ðñ8 õ +ã ôI#ˆ~õ I#r   