)L i3 dZddlmZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z mZmZmZmZdd lmZgd Zej*Dcic]%\}}|j-|j/d 'c}}Zdd Zedddddddddd ZddZddZej:dZGddeZej@Z!GddeZ"e dZ#ddZ$ddZ%GddeZ&ycc}}w)z- Tool for creating styles from a dictionary. ) annotationsN)Enum)HashableTypeVar) SimpleCache)ANSI_COLOR_NAMESANSI_COLOR_NAMES_ALIASES DEFAULT_ATTRSAttrs BaseStyle) NAMED_COLORS)Style parse_colorPriority merge_styles#cn|tvr|S|tvr t|S t|jS#t$rYnwxYw|dddk(rX|dd}|tvr|S|tvr t|St |dk(r|St |dk(r |ddz|ddzz|ddzzS|dvr|St d |) z Parse/validate color format. Like in Pygments, but also support the ANSI color names. (These will map to the colors of the 16 color palette.) rrrN)defaultzWrong color format )r r _named_colors_lowercaselowerKeyErrorlen ValueError)textcols a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/prompt_toolkit/styles/style.pyrr!s   '''-- &tzz|44     AayC12h " "J , ,+C0 0X]JX]q6A:A *SVaZ7 7   *4(3 44s4 AA colorbgcolorbold underlinestrikeitalicblinkreversehiddendimcg}|jd}tdt|dzD]3}|jdj |d|j 5|S)z Split a single class name at the `.` operator, and build a list of classes. E.g. 'a.b.c' becomes ['a', 'a.b', 'a.b.c'] .rN)splitrangerappendjoinr) classnameresultpartsis r!_expand_classnamer7_s` F OOC E 1c%j1n %3 chhuRay)//123 Mcd|vrt}nt}|jD]I}|dk(r |dk(r|jd}"|dk(r|jd}:|dk(r|jd}R|d k(r|jd}j|d k(r|jd }|d k(r|jd }|d k(r|jd}|dk(r|jd}|dk(r|jd}|dk(r|jd}|dk(r|jd}|dk(r|jd},|dk(r|jd}E|dk(r|jd}^|dk(r|jd}w|dk(r|jd}|dvr|j dr|j dr|j dr|j d r |jt |d!d"#}|j d$r |jt |d!d"%}/|jt |%}L|S)&zd Take a style string, e.g. 'bg:red #88ff00 class:title' and return a `Attrs` instance. noinheritr%T)r%noboldFr()r(noitalicr&)r& nounderliner')r'nostriker))r)noblinkr*)r* noreverser+)r+nohiddenr,)r,nodim)romansansmonozborder:[]zbg:rN)r$zfg:)r#)r _EMPTY_ATTRSr/_replace startswithendswithr) style_strattrsparts r!_parse_style_strrOns^ i!7< ;   V^NNN-E X NNN.E X NN$N/E Z NN%N0E [ NNTN2E ] "NNUN3E X NN$N/E Z NN%N0EW_NNN.E Y NNN/E Y NN4N0E [ NN5N1E X NN$N/E Z NN%N0E U]NNtN,E W_NNuN-E. .  __Y ' __S !dmmC&8 __U #NN;tABx+@NAE __U #NNT!"X)>N?ENNT):N;Eo73.6. Rules at the end will override rules at the beginning. - `MOST_PRECISE`: keys that are defined with most precision will get higher priority. (More precise means: more elements.) KEY_ORDER MOST_PRECISEN)__name__ __module__ __qualname____doc__DICT_KEY_ORDERrRr8r!rrs !N!Lr8rcheZdZdZddZed dZeef d dZ e f d dZ d dZ y) ra Create a ``Style`` instance from a list of style rules. The `style_rules` is supposed to be a list of ('classnames', 'style') tuples. The classnames are a whitespace separated string of class names and the style string is just like a Pygments style definition, but with a few additions: it supports 'reverse' and 'blink'. Later rules always override previous rules. Usage:: Style([ ('title', '#ff0000 bold underline'), ('something-else', 'reverse'), ('class1 class2', 'reverse'), ]) The ``from_dict`` classmethod is similar, but takes a dictionary as input. c g}|D]o\}}tj|sJt|t|j j }t |}|j||fq||_||_ yN) CLASS_NAMES_REmatchrepr frozensetrr/rOr1 _style_rulesclass_names_and_attrs)self style_rulesra class_namesrLclass_names_setrMs r!__init__zStyle.__init__s "'2 C "K!'' 4 Gd;6G G4( (9(9(;(A(A(CDO$Y/E ! ( (/5)A B C(%:"r8c|jSr[)r`rbs r!rczStyle.style_ruless   r8c|tjk(r%dd}|t|j|S|t |jS)za :param style_dict: Style dictionary. :param priority: `Priority` value. cHtd|djDS)Nc3PK|]}t|jd yw)r.N)rr/).0r6s r! z/Style.from_dict..key.. sF3qwws|,Fs$&r)sumr/)items r!keyzStyle.from_dict..key sFd1gmmoFFFr8)rp)roztuple[str, str]returnint)rrRsorteditemslist)cls style_dictpriorityrps r! from_dictzStyle.from_dictsN x,, , Gvj..0c:; ;tJ,,./0 0r8c |g}t}|jD]\}}|r |j||jD]3}|j drg}|ddj jdD]} |j t| |D]} t} | jt| gtdt|dzD];} tj|| D] } | jt| | fz"=|jD]\}}|| vs |j||j| t|}|j|6t|S)z9 Get `Attrs` for the given style string. zclass:rN,r)setrar1r/rJrextendr7addr_r0r itertools combinationsrO _merge_attrs)rbrLr list_of_attrsrdnamesattrrNnew_class_namespnew_namecomboscountc2 inline_attrss r!get_attrs_for_style_strzStyle.get_attrs_for_style_strs ! #  55 +KE4$$T* + OO% 3Dx("$ab)//4AA#**+!?D"+"8"8e"LDB"JJyxk1A'BCDD (,'A'A7 t F?)0067 OOH-.$ 05 $$\2; 3>M**r8c,t|jSr[)idrarhs r!invalidation_hashzStyle.invalidation_hashBs$,,--r8N)rclist[tuple[str, str]]rqNonerqr)rwzdict[str, str]rxrrqrrLstrrr rqr rqr) rSrTrUrVrfpropertyrc classmethoddefault_priorityryr rrrXr8r!rrsw*;$!!>N1'13;1 11$0=/+/+',/+ /+b.r8r_Tcdd}t|dg|Dcgc]}|jc}|dg|Dcgc]}|jc}|dg|Dcgc]}|jc}|dg|Dcgc]}|jc}|dg|Dcgc]}|j c}|dg|Dcgc]}|j c}|dg|Dcgc]}|jc}|dg|Dcgc]}|jc}|dg|Dcgc]}|jc}|dg|Dcgc]}|jc} Scc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}w)z Take a list of :class:`.Attrs` instances and merge them into one. Every `Attr` in the list can override the styling of the previous one. So, the last one has highest priority. c4|dddD]}||cSt)z/Take first not-None value, starting at the end.N)r)valuesvs r!_orz_merge_attrs.._orPs+" A} r8rFr")rrrqr) r r#r$r%r&r'r(r)r*r+r,)rras r!rrIsL "87A78B<];!));<  9-8Q!&&8 9eCMBqq{{BC5=m<AHH<=5=m<AHH<=%;M:q177:;E? >1QYY>?5=m<AHH<=  7 616 7  7;8B<<:><6s:EEE2EE$2E)E.2E3E82E= _MergedStylecF|Dcgc]}|| }}t|Scc}w)z) Merge multiple `Style` objects. )r)stylesss r!rres+ 1A1=a 1F 1  2scZeZdZdZddZed dZed dZef d dZ d dZ y) rz Merge multiple `Style` objects into one. This is supposed to ensure consistency: if any of the given styles changes, then this style will be updated. c4||_td|_y)Nr)maxsize)rr_style)rbrs r!rfz_MergedStyle.__init__}s 4?4J r8cddfd }jjj|S)z=The `Style` object that has the other styles merged together.c.tjSr[)rrcrhsr!getz'_MergedStyle._merged_style..gets))* *r8rqr)rrr)rbrs` r! _merged_stylez_MergedStyle._merged_styles( +{{t557==r8cbg}|jD]}|j|j|Sr[)rr}rc)rbrcrs r!rcz_MergedStyle.style_ruless2  .A   q}} - .r8c:|jj||Sr[)rr)rbrLrs r!rz$_MergedStyle.get_attrs_for_style_strs!!99)WMMr8c:td|jDS)Nc3<K|]}|jywr[)r)rlrs r!rmz1_MergedStyle.invalidation_hash..s@qQ((*@s)tuplerrhs r!rz_MergedStyle.invalidation_hashs@DKK@@@r8N)rlist[BaseStyle]rqrrrrr) rSrTrUrVrfrrrcr rrrXr8r!rrmsaK>>0=NN',N N Ar8)rrrqr)r3rrqz list[str])rLrrqr )rz list[Attrs]rqr )rrrqr)'rV __future__rrreenumrtypingrrprompt_toolkit.cacherbaser r r r r named_colorsr__all__rtrlstriprrrHr7rOcompiler\rrWrrrrrr)krs00r!rs # $,' AS @R@R@TU11779ahhsm3U+5`            EP/0"t".**p.Ip.f T]8 *A9*A_ Vs*C-