o
    DfY                     @  sj   d dl mZ d dl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G dd de	ZdS )	    )annotations)CallableIterableMappingPattern)CompleteEvent	Completer
Completion)Document)AnyFormattedTextWordCompleterc                   @  s4   e Zd ZdZ							ddddZdddZdS )r   a  
    Simple autocompletion on a list of words.

    :param words: List of words or callable that returns a list of words.
    :param ignore_case: If True, case-insensitive completion.
    :param meta_dict: Optional dict mapping words to their meta-text. (This
        should map strings to strings or formatted text.)
    :param WORD: When True, use WORD characters.
    :param sentence: When True, don't complete by comparing the word before the
        cursor, but by comparing all the text before the cursor. In this case,
        the list of words is just a list of strings, where each string can
        contain spaces. (Can not be used together with the WORD option.)
    :param match_middle: When True, match not only the start, but also in the
                         middle of the word.
    :param pattern: Optional compiled regex for finding the word before
        the cursor to complete. When given, use this regex pattern instead of
        default one (see document._FIND_WORD_RE)
    FNwords#list[str] | Callable[[], list[str]]ignore_casebooldisplay_dict%Mapping[str, AnyFormattedText] | None	meta_dictWORDsentencematch_middlepatternPattern[str] | NonereturnNonec	           	      C  sH   |r|rJ || _ || _|pi | _|pi | _|| _|| _|| _|| _d S )N)r   r   r   r   r   r   r   r   )	selfr   r   r   r   r   r   r   r    r   a/home/ubuntu/webapp/venv/lib/python3.10/site-packages/prompt_toolkit/completion/word_completer.py__init__"   s   


zWordCompleter.__init__documentr
   complete_eventr   Iterable[Completion]c                 #  s     j }t|r| } jr|jn	|j j jd jr" d
 fdd}|D ] }||rL j	
||} j
|d}t|t ||d	V  q,d S )N)r   r   wordstrr   r   c                   s&    j r|  }  jr| v S | S )z-True when the word before the cursor matches.)r   lowerr   
startswith)r"   r   word_before_cursorr   r   word_matchesK   s
   
z3WordCompleter.get_completions.<locals>.word_matches )textstart_positiondisplaydisplay_meta)r"   r#   r   r   )r   callabler   text_before_cursorget_word_before_cursorr   r   r   r$   r   getr   r	   len)r   r   r    r   r(   ar,   r-   r   r&   r   get_completions8   s0   
zWordCompleter.get_completions)FNNFFFN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r
   r    r   r   r!   )__name__
__module____qualname____doc__r   r4   r   r   r   r   r      s    N)
__future__r   typingr   r   r   r   prompt_toolkit.completionr   r   r	   prompt_toolkit.documentr
   prompt_toolkit.formatted_textr   __all__r   r   r   r   r   <module>   s    