Ë
    V.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y)
zA
Nestedcompleter for completion of hierarchical data structures.
é    )Úannotations)ÚAnyÚIterableÚMappingÚSetÚUnion)ÚCompleteEventÚ	CompleterÚ
Completion)ÚWordCompleter)ÚDocumentÚNestedCompleterNc                  óT   — e Zd ZdZ	 d	 	 	 	 	 dd„Zd	d„Zed
d„«       Z	 	 	 	 	 	 dd„Zy)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.
    c                ó    — || _         || _        y )N©ÚoptionsÚignore_case)Úselfr   r   s      úbC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/completion/nested.pyÚ__init__zNestedCompleter.__init__   s   € ð ˆŒØ&ˆÕó    c                ó<   — d| j                   ›d| j                  ›d�S )NzNestedCompleter(z, ignore_case=Ú)r   )r   s    r   Ú__repr__zNestedCompleter.__repr__%   s$   € Ø! $§,¡,Ð!1°À×@PÑ@PÐ?SÐSTÐUÐUr   c                ó>  — i }|j                  «       D ]�  \  }}t        |t        «      r|||<   Œt        |t        «      r| j	                  |«      ||<   ŒAt        |t
        «      r(| j	                  t        j                  |«      «      ||<   Œy|�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)ÚclsÚdatar   Ú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ÓI�˜’à�}Ð$�}Ø#�˜’ð 'ñ �7‹|Ðr   c              #  ón  K  — |j                   j                  «       }t        |j                   «      t        |«      z
  }d|v rœ|j                  «       d   }| j                  j                  |«      }|�k|t        |«      d  j                  «       }t        |«      t        |«      z
  |z   }t        ||j                  |z
  ¬«      }	|j                  |	|«      E d {  –—†  y y t        t        | j                  j                  «       «      | j                  ¬«      }|j                  ||«      E d {  –—†  y 7 ŒY7 Œ­w)NÚ r   )Úcursor_position)r   )Útext_before_cursorÚlstripÚlenÚsplitr   Úgetr   r(   Úget_completionsr   ÚlistÚkeysr   )
r   ÚdocumentÚcomplete_eventÚtextÚstripped_lenÚ
first_termÚ	completerÚremaining_textÚmove_cursorÚnew_documents
             r   r.   zNestedCompleter.get_completionsO   s!  è ø€ ð ×*Ñ*×1Ñ1Ó3ˆÜ˜8×6Ñ6Ó7¼#¸d»)ÑCˆð �$‰;ØŸ™› a™ˆJØŸ™×(Ñ(¨Ó4ˆIð Ð$Ø!%¤c¨*£oÐ&7Ð!8×!?Ñ!?Ó!A�Ü! $›i¬#¨nÓ*=Ñ=ÀÑL�ä'Ø"Ø$,×$<Ñ$<¸{Ñ$Jô �ð
 %×4Ñ4°\À>ÓR×RÑRð %ô &Ü�T—\‘\×&Ñ&Ó(Ó)°t×7GÑ7GôˆIð !×0Ñ0°¸>ÓJ×JÑJð Søð Kús%   ‚CD5ÃD1ÃAD5Ä+D3Ä,D5Ä3D5N)T)r   zdict[str, Completer | None]r   ÚboolÚreturnÚNone)r;   Ústr)r#   Ú
NestedDictr;   r   )r1   r   r2   r	   r;   zIterable[Completion])	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úclassmethodr   r.   © r   r   r   r      sg   „ ñ	ð IMð'Ø2ð'ØAEð'à	ó'óVð ò$ó ð$ðLKØ ðKØ2?ðKà	ôKr   )rB   Ú
__future__r   Útypingr   r   r   r   r   Úprompt_toolkit.completionr	   r
   r   Ú(prompt_toolkit.completion.word_completerr   Úprompt_toolkit.documentr   Ú__all__r=   r>   r   rD   r   r   Ú<module>rK      s\   ðñõ #ç 5Õ 5ç JÑ JÝ BÝ ,àÐ
€ð �S˜%  S¨¡X¨t°YÐ >Ñ?Ð?Ñ@€
ôZK�iõ ZKr   