Ë
    V.jŒ  ã                  ól   — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZ dgZ G d	„ de«      Zy
)z"
Completer for a regular grammar.
é    )Úannotations)ÚIterable)ÚCompleteEventÚ	CompleterÚ
Completion)ÚDocumenté   )ÚMatchÚ_CompiledGrammarÚGrammarCompleterc                  óT   — e Zd ZdZ	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d	d„Zd
d„Zy)r   af  
    Completer which can be used for autocompletion according to variables in
    the grammar. Each variable can have a different autocompleter.

    :param compiled_grammar: `GrammarCompleter` instance.
    :param completers: `dict` mapping variable names of the grammar to the
                       `Completer` instances to be used for each variable.
    c                ó    — || _         || _        y ©N)Úcompiled_grammarÚ
completers)Úselfr   r   s      úuC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/contrib/regular_languages/completion.pyÚ__init__zGrammarCompleter.__init__   s   € ð !1ˆÔØ$ˆ�ó    c              #  ó²   K  — | j                   j                  |j                  «      }|r*| j                  | j	                  ||«      «      E d {  –—†  y y 7 Œ­wr   )r   Úmatch_prefixÚtext_before_cursorÚ_remove_duplicatesÚ_get_completions_for_match)r   ÚdocumentÚcomplete_eventÚms       r   Úget_completionsz GrammarCompleter.get_completions#   sY   è ø€ ð ×!Ñ!×.Ñ.¨x×/JÑ/JÓKˆáØ×.Ñ.Ø×/Ñ/°°>ÓBó÷ ñ ð ðús   ‚AAÁAÁAc           	   #  óH  K  — |j                  «       D �]
  }|j                  }|j                  }| j                  j	                  |«      }|sŒ:|j
                  }| j                  j                  ||«      }t        |t        |«      «      }	|j                  |	|«      D ]  }
|dt        |«      |
j                  z    |
j                  z   }t        | j                  j                  ||«      |t        |j                  «      z
  |
j                   |
j"                  ¬«      –— Œ� �Œ y­w)z°
        Yield all the possible completions for this input string.
        (The completer assumes that the cursor position was at the end of the
        input string.)
        N)ÚtextÚstart_positionÚdisplayÚdisplay_meta)Ú	end_nodesÚvarnameÚstartr   ÚgetÚvaluer   Úunescaper   Úlenr   r!   r    r   ÚescapeÚstringr"   r#   )r   Úmatchr   Úmatch_variabler%   r&   Ú	completerr    Úunwrapped_textr   Ú
completionÚnew_texts               r   r   z+GrammarCompleter._get_completions_for_match-   s  è ø€ ð $Ÿo™o×/ˆNØ$×,Ñ,ˆGØ"×(Ñ(ˆEàŸ™×+Ñ+¨GÓ4ˆIâØ%×+Ñ+�ð "&×!6Ñ!6×!?Ñ!?ÀÈÓ!N�ô $ N´C¸Ó4GÓH�ð #,×";Ñ";¸HÀnÖ"U�Jà&Ð'N¬¨T«°Z×5NÑ5NÑ)NÐOØ$Ÿ/™/ñ*ð ô %Ø!×2Ñ2×9Ñ9¸'À8ÓLØ',¬s°5·<±<Ó/@Ñ'@Ø *× 2Ñ 2Ø%/×%<Ñ%<ô	ó ò #Vñ! 0ùs   ‚A
D"ÁCD"c              #  óz   K  — dd„}t        «       }|D ]$  } ||«      }||vsŒ|j                  |«       |–— Œ& y­w)zÇ
        Remove duplicates, while keeping the order.
        (Sometimes we have duplicates, because the there several matches of the
        same grammar, each yielding similar completions.)
        c                ó2   — | j                   | j                  fS r   )r    r!   )r1   s    r   Úhash_completionz<GrammarCompleter._remove_duplicates.<locals>.hash_completionZ   s   € Ø—?‘? J×$=Ñ$=Ð=Ð=r   N)r1   r   Úreturnztuple[str, int])ÚsetÚadd)r   Úitemsr5   Úyielded_so_farr1   Ú
hash_values         r   r   z#GrammarCompleter._remove_duplicatesS   sD   è ø€ ó	>ô 03«uˆãˆJÙ(¨Ó4ˆJà Ò/Ø×"Ñ" :Ô.Ø Ó ñ  ùs   ‚ ;£;N)r   r   r   zdict[str, Completer]r6   ÚNone)r   r   r   r   r6   úIterable[Completion])r-   r
   r   r   r6   r=   )r9   r=   r6   r=   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   © r   r   r   r      sd   „ ñð%Ø 0ð%Ø>Rð%à	ó%ðØ ðØ2?ðà	óð$Øð$Ø,9ð$à	ó$ôL!r   N)rA   Ú
__future__r   Útypingr   Úprompt_toolkit.completionr   r   r   Úprompt_toolkit.documentr   Úcompilerr
   r   Ú__all__r   rB   r   r   Ú<module>rI      s8   ðñõ #å ç JÑ JÝ ,ç -ð ð€ô
Q!�yõ Q!r   