§
    ŒŸj  ã                  ó´   — d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZ dgZeeeeee         def         f         Z G d	„ de¦  «        ZdS )
zA
Nestedcompleter for completion of hierarchical data structures.
é    )Úannotations)ÚAnyÚIterableÚMappingÚSetÚUnion)ÚCompleteEventÚ	CompleterÚ
Completion)ÚWordCompleter)ÚDocumentÚNestedCompleterNc                  óF   — e Zd ZdZ	 ddd	„Zdd„Zedd„¦   «         Zdd„ZdS )r   a“  
    Completer which wraps around several other completers, and calls any the
    one that corresponds with the first word of the input.

    By combining multiple `NestedCompleter` instances, we can achieve multiple
    hierarchical levels of autocompletion. This is useful when `WordCompleter`
    is not sufficient.

    If you need multiple levels, check out the `from_nested_dict` classmethod.
    TÚoptionsúdict[str, Completer | None]Úignore_caseÚboolÚreturnÚNonec                ó"   — || _         || _        d S )N©r   r   )Úselfr   r   s      úm/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/prompt_toolkit/completion/nested.pyÚ__init__zNestedCompleter.__init__   s   € ð ˆŒØ&ˆÔÐÐó    Ústrc                ó(   — d| j         ›d| j        ›d�S )NzNestedCompleter(z, ignore_case=ú)r   )r   s    r   Ú__repr__zNestedCompleter.__repr__%   s    € ØU $¤,ÐUÐUÀÔ@PÐUÐUÐUÐUr   ÚdataÚ
NestedDictc                ó€  — i }|                      ¦   «         D ]�\  }}t          |t          ¦  «        r|||<   Œ t          |t          ¦  «        r|                      |¦  «        ||<   ŒNt          |t
          ¦  «        r1|                      t                               |¦  «        ¦  «        ||<   Œ”|�J ‚d||<   Œž | |¦  «        S )a²  
        Create a `NestedCompleter`, starting from a nested dictionary data
        structure, like this:

        .. code::

            data = {
                'show': {
                    'version': None,
                    'interfaces': None,
                    'clock': None,
                    'ip': {'interface': {'brief'}}
                },
                'exit': None
                'enable': None
            }

        The value should be `None` if there is no further completion at some
        point. If all values in the dictionary are None, it is also possible to
        use a set instead.

        Values in this data structure can be a completers as well.
        N)ÚitemsÚ
isinstancer
   ÚdictÚfrom_nested_dictÚsetÚfromkeys)Úclsr    r   ÚkeyÚvalues        r   r&   z NestedCompleter.from_nested_dict(   sÅ   € ð2 02ˆØŸ*š*™,œ,ð 		$ð 		$‰JˆC�Ý˜%¥Ñ+Ô+ð $Ø$�˜‘�Ý˜E¥4Ñ(Ô(ð $Ø"×3Ò3°EÑ:Ô:�˜‘�Ý˜E¥3Ñ'Ô'ð $Ø"×3Ò3µD·M²MÀ%Ñ4HÔ4HÑIÔI�˜‘�à�}�}�}Ø#�˜‘�àˆs�7‰|Œ|Ðr   Údocumentr   Úcomplete_eventr	   úIterable[Completion]c              #  ó¬  K  — |j                              ¦   «         }t          |j         ¦  «        t          |¦  «        z
  }d|v rº|                     ¦   «         d         }| j                             |¦  «        }|�‚|t          |¦  «        d …                              ¦   «         }t          |¦  «        t          |¦  «        z
  |z   }t          ||j        |z
  ¬¦  «        }	|                     |	|¦  «        E d {V —† d S d S t          t          | j                             ¦   «         ¦  «        | j        ¬¦  «        }|                     ||¦  «        E d {V —† d S )Nú r   )Úcursor_position)r   )Útext_before_cursorÚlstripÚlenÚsplitr   Úgetr   r1   Úget_completionsr   ÚlistÚkeysr   )
r   r,   r-   ÚtextÚstripped_lenÚ
first_termÚ	completerÚremaining_textÚmove_cursorÚnew_documents
             r   r7   zNestedCompleter.get_completionsO   sm  è è € ð Ô*×1Ò1Ñ3Ô3ˆÝ˜8Ô6Ñ7Ô7½#¸d¹)¼)ÑCˆð �$ˆ;ˆ;ØŸš™œ aœˆJØœ×(Ò(¨Ñ4Ô4ˆIð Ð$Ø!%¥c¨*¡o¤oÐ&7Ð&7Ô!8×!?Ò!?Ñ!AÔ!A�Ý! $™iœi­#¨nÑ*=Ô*=Ñ=ÀÑL�å'Ø"Ø$,Ô$<¸{Ñ$Jð ñ  ô  �ð
 %×4Ò4°\À>ÑRÔRÐRÐRÐRÐRÐRÐRÐRÐRÐRð %Ð$õ &Ý�T”\×&Ò&Ñ(Ô(Ñ)Ô)°tÔ7Gðñ ô ˆIð !×0Ò0°¸>ÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   N)T)r   r   r   r   r   r   )r   r   )r    r!   r   r   )r,   r   r-   r	   r   r.   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úclassmethodr&   r7   © r   r   r   r      s‘   € € € € € ð	ð 	ð IMð'ð 'ð 'ð 'ð 'ðVð Vð Vð Vð ð$ð $ð $ñ „[ð$ðLKð Kð Kð Kð Kð Kr   )rD   Ú
__future__r   Útypingr   r   r   r   r   Úprompt_toolkit.completionr	   r
   r   Ú(prompt_toolkit.completion.word_completerr   Úprompt_toolkit.documentr   Ú__all__r   r!   r   rF   r   r   ú<module>rM      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ BÐ BÐ BÐ BÐ BÐ BØ ,Ð ,Ð ,Ð ,Ð ,Ð ,àÐ
€ð �S˜%  S¨¤X¨t°YÐ >Ô?Ð?Ô@€
ðZKð ZKð ZKð ZKð ZK�iñ ZKô ZKð ZKð ZKð ZKr   