K i8 ddlZddlZddlmZmZddlZddlZddlZddlm Z m Z m Z m Z m Z ddlZedZe de ZGddZed d ed ed efdZed d ed ed efdZed d ed ed efdZGddZGddZGddZGddeZded efdZGddZ d,de ee efded efdZ d e d e!fd!Z" d-dd"d#d$e ed%ed&ed'ed ef d(Z#d)ed*ed efd+Z$y).N) lru_cachewraps)CallableUnionIterableTypeVarcast\C)boundcreZdZUdZgZeeed<gZeeed<dZ e dZ e dZ e dZ y) __config_flagsz=Internal class for defining compatibility and debugging flags _all_names _fixed_names configurationc>||jvrYtj|jd|d|jdt t ||jddy||jvrt|||ytd|jd|)N. z is z and cannot be overridden) stacklevelzno such ) rwarningswarn__name__ _type_descstrgetattrupperrsetattr ValueError)clsdnamevalues T/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyparsing/util.py_setz__config_flags._sets C$$ $ MM<<.%#..)9c'#uBU>V>\>\>^=_+-   CNN " C &x'7q BC Cc&|j|dS)NTr$r names r#z__config_flags.$s388D$+?r%c&|j|dS)NFr'r(s r#r*z__config_flags.%sCHHT5,Ar%N)r __module__ __qualname____doc__rlistr__annotations__rr classmethodr$enabledisabler%r#rrsRGJS  L$s)  J D D? @FABGr%r)maxsizelocstrgreturncz|}d|cxkrt|krnn ||dz dk(rdS||jdd|z S)a Returns current column within a string, counting newlines as line separators. The first column is number 1. Note: the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :meth:`ParserElement.parse_string` for more information on parsing strings containing ```` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. r )lenrfind)r7r8ss r#colr@(sG AC #a& QsQwZ4%71XS1774QRTWCX=XXr%c.|jdd|dzS)aReturns current line number within a string, counting newlines as line separators. The first line is number 1. Note - the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :meth:`ParserElement.parse_string` for more information on parsing strings containing ```` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. r<rr;)count)r7r8s r#linenorC9s ::dAs #a ''r%cv|jdd|}|jd|}|dk\r||dz|S||dzdS)zh Returns the line of text containing loc within a string, counting newlines as line separators. r<rr;N)r>find)r7r8last_crnext_crs r#linerHGsM jjq#&Giic"G*1Q,4! g &OD1.getWS,/ /r%c||<yrMr4)rOrPr"caches r#set_z&_UnboundedCache.__init__..set_Zs E#Jr%c&jyrMclearrOrVs r#rZz'_UnboundedCache.__init__..clear] KKMr%)rSobjectrRsizetypes MethodTypesetrZ)selfrSrWrZrVrQrRs @@@r#__init__z_UnboundedCache.__init__RstII +183L 0   ##C.##D$/%%eT2 r%Nrr,r-rcr4r%r#rJrJQs3r%rJceZdZdZy) _FifoCachec8i|_tx|_jjfd}fd}fd}t j |||_t j |||_t j |||_y)Nc|SrMr4rNs r#rSz _FifoCache.__init__..getnrTr%c||<tkDr*tttkDr)yyrM)r=nextiter)rOrPr"rV cache_popr^s r#rWz!_FifoCache.__init__..set_qs7E#Je*t#$tE{+,e*t#r%c&jyrMrYr[s r#rZz"_FifoCache.__init__..clearwr\r%) r^r]rRrSpopr_r`rarZ) rbr^rSrWrZrVrQrlrRs ` @@@@r#rcz_FifoCache.__init__gs} +183LII II  0 -  ##C.##D$/%%eT2 r%Nrdr4r%r#rfrffs3r%rfc.eZdZdZdZdZdZdZdZy)LRUMemoz A memoizing mapping that retains `capacity` deleted items The memo tracks retained items by their access order; once `capacity` items are retained, the least recently used item is discarded. c.||_i|_i|_yrM) _capacity_active_memory)rbcapacitys r#rczLRUMemo.__init__s!  r%c |j|S#t$r:|jj||j|<|j|cYSwxYwrM)rsKeyErrorrtrnrbrPs r# __getitem__zLRUMemo.__getitem__sQ %<<$ $ % $ 0 0 5DLL <<$ $ %sAAAcZ|jj|d||j|<yrM)rtrnrs)rbrPr"s r# __setitem__zLRUMemo.__setitem__s$ d#! Sr%c |jj|}t|jd|jdz }|D]}|jj|||j|<y#t $rYywxYwNr;)rsrnr/rtrrrw)rbrPr" oldest_keys key_to_deletes r# __delitem__zLRUMemo.__delitem__s &LL$$S)Et||,-D!1C/DEK!, 0    / 0 %DLL     sA55 BBcl|jj|jjyrM)rsrZrtrbs r#rZz LRUMemo.clears"  r%N) rr,r-r.rcryr{rrZr4r%r#rprps  %" &r%rpceZdZdZdZy) UnboundedMemoz< A memoizing mapping that retains all deleted items cyrMr4rxs r#rzUnboundedMemo.__delitem__s r%N)rr,r-r.rr4r%r#rrs  r%rr?cdD]}|j|t|z}|jdd}|jdd}t|S)Nz\^-[]r<z\n z\t)replace_bslashr)r?cs r#_escape_regex_range_charsrsN & IIa1 %& $A $A q6Mr%c(eZdZdZddZdedefdZy)_GroupConsecutivea Used as a callable `key` for itertools.groupby to group characters that are consecutive: .. testcode:: from itertools import groupby from pyparsing.util import _GroupConsecutive grouped = groupby("abcdejkmpqrs", key=_GroupConsecutive()) for index, group in grouped: print(tuple([index, list(group)])) prints: .. testoutput:: (0, ['a', 'b', 'c', 'd', 'e']) (1, ['j', 'k']) (2, ['m']) (3, ['p', 'q', 'r', 's']) r9NcRd|_tj|_d|_y)Nr)prev itertoolsrBcounterr"rs r#rcz_GroupConsecutive.__init__s  (  r%charct|}||jc|_}||z dkDrt|j|_|jSr})ordrrjrr")rbrc_intrs r#__call__z_GroupConsecutive.__call__sBD  4 4 'a' -> '[a]' 'bc' -> 'bc' -> '[bc]' 'defgh' -> 'd-h' -> '[d-h]' 'fdgeh' -> 'd-h' -> '[d-h]' 'jklnpqrtu' -> 'j-lnp-rtu' -> '[j-lnp-rtu]' Duplicates get collapsed out:: 'aaa' -> 'a' -> '[a]' 'bcbccb' -> 'bc' -> '[bc]' 'defghhgf' -> 'd-h' -> '[d-h]' 'jklnpqrjjjtu' -> 'j-lnp-rtu' -> '[j-lnp-rtu]' Spaces are preserved:: 'ab c' -> ' a-c' -> '[ a-c]' Characters that are significant when defining regex ranges get escaped:: 'acde[]-' -> r'\-\[\]ac-e' -> r'[\-\[\]ac-e]' rr9c|dvrd|zS|S)Nz\^-][\r4rs r#escape_re_range_charz8_collapse_string_to_ranges..escape_re_range_chars=tax/a/r%c|SrMr4rs r#no_escape_re_range_charz;_collapse_string_to_ranges..no_escape_re_range_charsr%rPNr;-)rsortedrar=rgroupbyrrj contextlibsuppressrappendchrrjoin) r?rrrrets_charsrOcharsfirstlastrs r#_collapse_string_to_rangesrsbN00033 6 C AG 7|a"))'7H7JK HAu ; &ED$$Z0 ! D !} /67SZ!^,, 259:;OPT;U:VWX  +E2315I$5O4PQ) <1881#A&88 773<7 ! !29sE$EE llcg}g|}|rK|jd}t|trt|ts||ddn|j ||rK|S)Nr)rn isinstancerrr)rrto_visitis r#_flattenr9sU CuH  LLO a ":a+=HRaL JJqM  Jr%r;non_capturing_groups_level word_list max_levelrrc dttfd}|dk(r|s tdd|vrtd|sytij|}|dk(rpt d|DrBd j t |Dcgc]}tj|c}td Sd dj d |DdSg}d}|rdnd}|t |D]\} } |j|d }tj| } d} d| vrd} | jdt| dkDr td| Dr0|j| d dj d| Dd| ||kr7tt | |||dz} |j| d|| d| td| Dr1|j| d dj d| Dd| | jtd |j| d|d j d| Dd| b| r^tj| d} t| dkDr| r|j| d|| d| |j| | | |j| dj |Scc}w)z Create a regular expression string from a list of words, collapsing by common prefixes and optional suffixes. Calls itself recursively to build nested sublists for each group of suffixes that have a shared prefix. namelistc 3Kt|dkDrHtj|dD],\}}|t|Dcgc]}|dd c}tdf.y|dd|dddgfycc}ww)Nr;c |ddSr}r4)r?s r#r*zOmake_compressed_re..get_suffixes_from_common_prefixes..VsaPRQRer%rTrPreverser)r=rrr)rprefixsuffixesr?s r#!get_suffixes_from_common_prefixesz=make_compressed_re..get_suffixes_from_common_prefixesTs x=1 $-$5$5hO$T W fX%>ae%>CQUVVV W1+a.8A;qr?"33 3&?s7A2 A- -A2r;z&no words given to make_compressed_re()rz%word list cannot contain empty stringrc38K|]}t|dkDywr;Nr=.0wds r# z%make_compressed_re..js/rs2w{/|Tr[c32K|]}t|ywrMrrs r#rz%make_compressed_re..osQ8<Q]z?:?c38K|]}t|dk(ywrrrr?s r#rz%make_compressed_re..s113q6Q;1rc32K|]}t|ywrMrrs r#rz%make_compressed_re..s(X!)B1)E(Xrr()c38K|]}t|dk(ywrrrs r#rz%make_compressed_re..s913q6Q;9rc32K|]}t|ywrMrrs r#rz%make_compressed_re..s0`RS1J11M0`rc3FK|]}tj|ywrM)reescapers r#rz%make_compressed_re..s:ZA299Q<:Zs!)r/rrfromkeysanyrrrrr=rremoveallmake_compressed_resort)rrrrrrrsepncgroupinitialrtrailing suffix_resuffixs r#rrEs4DI4{EF F ?DE ER[[+,IA~ /Y/ /88 :" " :TR rwwQyQQRRST T C C*dG>vi?PQ+$ 3))G$ >H OOB  x=1 111 iq(Xx(X!X YYZ[cZdeI% 2x(!-A%z !I JJ'!G9YKq KL999 &iq0`W_0`)`(aabckblm! #t < &iq #((:ZQY:Z2Z1[[\]e\fg8A;/v;?xJJ'!G9VHAhZHIJJ'6(8*=> 7#W+$X 773<k;s;K compat_namefnc<tddgttjjddk(rt fd}nt fd}dj d|_||_j|_ttjrj|_ n?ttr(tdrjj|_ nd|_ j |_t#t$|S) N__func__rbr;c|g|i|SrMr4)rbargskwargsrs r#_innerz replaced_by_pep8.._inners d,T,V, ,r%c|i|SrMr4)rrrs r#rz replaced_by_pep8.._inners t&v& &r%z6 .. deprecated:: 3.0.0 Use :class:`z` instead rc)rr/inspect signature parametersrrr.r0rr_ FunctionType__kwdefaults__typehasattrrcr-r r )rrrs ` r#replaced_by_pep8rs Z $B x4))"-889"1== r -  - r '  '  }%  FN"FO//F"e(() " 1 1 B '"j"9 " : : $//F 6?r%)T)r)%rr functoolsrrrrr_typingrrrrr rrrr rrrr@rCrHrJrfrpdictrrrboolrr/rrrr4r%r#rs & ;; b' Cx CC2 3 YS Y Y Y Y  3 ( (3 (3 ( ( 3PcPPPP33*332%%P D ""L59X S(3-  X-1XXv  d \"& \}\\ \  \  \~(#(1((r%