)L i. dZddlmZddlmZmZddlmZmZddl m Z ddl m Z gdZ Gdd e ZGd d eZGd deZy)z) Base classes for prompt_toolkit lexers. ) annotations)ABCMetaabstractmethod)CallableHashable)Document)StyleAndTextTuples)Lexer SimpleLexer DynamicLexerc*eZdZdZeddZddZy)r z$ Base class for all lexers. cy)aT Takes a :class:`~prompt_toolkit.document.Document` and returns a callable that takes a line number and returns a list of ``(style_str, text)`` tuples for that line. XXX: Note that in the past, this was supposed to return a list of ``(Token, text)`` tuples, just like a Pygments lexer. N)selfdocuments `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/prompt_toolkit/lexers/base.py lex_documentzLexer.lex_documentsct|S)zz When this changes, `lex_document` could give a different output. (Only used for `DynamicLexer`.) )id)rs rinvalidation_hashzLexer.invalidation_hash$s $xrNrrreturnz#Callable[[int], StyleAndTextTuples]rr)__name__ __module__ __qualname____doc__rrrrrrr r s   rr ) metaclassc"eZdZdZdddZddZy)r z Lexer that doesn't do any tokenizing and returns the whole input as one token. :param style: The style string for this lexer. c||_yN)style)rr#s r__init__zSimpleLexer.__init__4s  rc0|jdfd }|S)NcL j|fgS#t$rgcYSwxYw)z%Return the tokens for the given line.)r# IndexError)linenolinesrs rget_linez*SimpleLexer.lex_document..get_line:s2 U6]344   s  ##)r(intrr )r))rrr*r)s` @rrzSimpleLexer.lex_document7s rN))r#strrNoner)rrrrr$rrrrr r ,s rr c(eZdZdZddZddZddZy) r z Lexer class that can dynamically returns any Lexer. :param get_lexer: Callable that returns a :class:`.Lexer` instance. c0||_t|_yr") get_lexerr _dummy)rr1s rr$zDynamicLexer.__init__Ks"!m rc`|jxs |j}|j|Sr")r1r2r)rrlexers rrzDynamicLexer.lex_documentOs( /DKK!!(++rcT|jxs |j}t|Sr")r1r2r)rr4s rrzDynamicLexer.invalidation_hashSs! /DKK%yrN)r1zCallable[[], Lexer | None]rr.rr)rrrrr$rrrrrr r Ds $,rr N)r __future__rabcrrtypingrrprompt_toolkit.documentr"prompt_toolkit.formatted_text.baser __all__r r r rrrr<sF#'%,A g0%05r