
    fk                    t    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 G d de
      Zy)	    )annotations)CallableIterableMappingPatternSequence)CompleteEvent	Completer
Completion)Document)AnyFormattedTextWordCompleterc                  ^    e Zd ZdZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)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)
    Nc	                    |r|rJ || _         || _        |xs i | _        |xs i | _        || _        || _        || _        || _        y )N)wordsignore_casedisplay_dict	meta_dictWORDsentencematch_middlepattern)	selfr   r   r   r   r   r   r   r   s	            c/var/www/cvtools/html/venv/lib/python3.12/site-packages/prompt_toolkit/completion/word_completer.py__init__zWordCompleter.__init__"   sS     X&&
&(.B"b	 (    c              #     K    j                   }t        |      r |       } j                  r|j                  n'|j	                   j
                   j                         j                  rj                         d fd}|D ]^  } ||      s j                  j                  ||      } j                  j                  |d      }t        |t               ||       ` y w)N)r   r   c                ~    j                   r| j                         } j                  r| v S | j                        S )z-True when the word before the cursor matches.)r   lowerr   
startswith)wordr   word_before_cursors    r   word_matchesz3WordCompleter.get_completions.<locals>.word_matchesK   s;    zz|  )T11'9::r    )textstart_positiondisplaydisplay_meta)r!   strreturnbool)r   callabler   text_before_cursorget_word_before_cursorr   r   r   r   r   getr   r   len)	r   documentcomplete_eventr   r#   ar'   r(   r"   s	   `       @r   get_completionszWordCompleter.get_completions8   s      

E?GE ==!)!<!<!)!@!@YY "A " !3!9!9!;	;  		AA++//15#~~11!R8 $'(:$;#;#!-	 			s   BC*AC*)FNNFFFN)r   z+Sequence[str] | Callable[[], Sequence[str]]r   r+   r   %Mapping[str, AnyFormattedText] | Noner   r5   r   r+   r   r+   r   r+   r   zPattern[str] | Noner*   None)r1   r   r2   r	   r*   zIterable[Completion])__name__
__module____qualname____doc__r   r4    r   r   r   r      s    , ">B;?"'+:  <	
 9    % 
,& &2?&	&r   N)
__future__r   typingr   r   r   r   r   prompt_toolkit.completionr	   r
   r   prompt_toolkit.documentr   prompt_toolkit.formatted_textr   __all__r   r;   r   r   <module>rB      s4    " A A J J , : 
PI Pr   