Mpj}> ddlZddlZddlmZmZddlZddlZddlZddlm Z m Z m Z m Z m Z mZddlZddlmZmZedZe de ZGd d Zed d ededefdZed d ededefdZed d ededefdZGddZGddZGddZGddeZdedefdZ GddZ!ee"fe#fdZ$d edefd!Z% d9de ee efd#e&defd$Z'd%e de(fd&Z)dedefd'Z* d:d"dd(d)e ed*ed+e&d,edef d-Z+d.ed/edefd0Z,ejZd1fdedefd2Z. d;d3d4d5eeefd6ed7edefd8Z/y)<N) lru_cachewraps)CallableUnionIterableTypeVarcastAny)PyparsingDeprecationWarningPyparsingDiagnosticWarning\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 configurationcH||jvr^tj|jd|d|jdt t ||jdtdy||jvrt|||ytd|jd|)N. z is z and cannot be overridden stacklevelzno such ) rwarningswarn__name__ _type_descstrgetattrupperr rsetattr ValueError)clsdnamevalues \/mnt/ssd/data/Dropbox/adrian/scripts/msg_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. rr  )lenrfind)r<r=ss r(colrD+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)r<r=s r(linenorG<s ::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)rBfind)r<r=last_crnext_crs r(linerLJsM jjq#&Giic"G*1Q,4! g &OD1.getZS,/ /r*c||<yrQr9)rSrTr'caches r(set_z&_UnboundedCache.__init__..set_]s E#Jr*c&jyrQclearrSrZs r(r^z'_UnboundedCache.__init__..clear` KKMr*)rWobjectrVsizetypes MethodTypesetr^)selfrWr[r^rZrUrVs @@@r(__init__z_UnboundedCache.__init__UstII +183L 0   ##C.##D$/%%eT2 r*Nrr1r2rgr9r*r(rNrNTs3r*rNceZdZdZy) _FifoCachec8i|_tx|_jjfd}fd}fd}t j |||_t j |||_t j |||_y)Nc|SrQr9rRs r(rWz _FifoCache.__init__..getqrXr*c||<tkDr*tttkDr)yyrQ)rAnextiter)rSrTr'rZ cache_poprbs r(r[z!_FifoCache.__init__..set_ts7E#Je*t#$tE{+,e*t#r*c&jyrQr]r_s r(r^z"_FifoCache.__init__..clearzr`r*) rbrarVrWpoprcrdrer^) rfrbrWr[r^rZrUrprVs ` @@@@r(rgz_FifoCache.__init__js} +183LII II  0 -  ##C.##D$/%%eT2 r*Nrhr9r*r(rjrjis3r*rjc.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|_yrQ) _capacity_active_memory)rfcapacitys r(rgzLRUMemo.__init__s!  r*c |j|S#t$r:|jj||j|<|j|cYSwxYwrQ)rwKeyErrorrxrrrfrTs r( __getitem__zLRUMemo.__getitem__sQ %<<$ $ % $ 0 0 5DLL <<$ $ %sAAAcZ|jj|d||j|<yrQ)rxrrrw)rfrTr's r( __setitem__zLRUMemo.__setitem__s$ d#! Sr*c |jj|}t|jd|jdz }|D]}|jj|||j|<y#t $rYywxYwNr )rwrrr4rxrvr{)rfrTr' oldest_keys key_to_deletes r( __delitem__zLRUMemo.__delitem__s &LL$$S)Et||,-D!1C/DEK!, 0    / 0 %DLL     sA55 BBcl|jj|jjyrQ)rwr^rxrfs r(r^z LRUMemo.clears"  r*N) rr1r2r3rgr}rrr^r9r*r(rtrts  %" &r*rtceZdZdZdZy) UnboundedMemoz< A memoizing mapping that retains all deleted items cyrQr9r|s r(rzUnboundedMemo.__delitem__s r*N)rr1r2r3rr9r*r(rrs  r*rrCcdD]}|j|t|z}|jdd}|jdd}t|S)Nz\^-[]r@z\n z\t)replace_bslashr )rCcs 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']) r>NcRd|_tj|_d|_y)Nr)prev itertoolsrFcounterr'rs r(rgz_GroupConsecutive.__init__s  (  r*charct|}||jc|_}||z dkDrt|j|_|jSr)ordrrnrr')rfrc_intrs r(__call__z_GroupConsecutive.__call__sBD  4 4N)rr1r2r3rgr intrr9r*r(rrs. SSr*rcLt||ry t|y#|$rYywxYw)NFT) isinstancero)obj _str_type_iter_exceptions r( _is_iterablers4#y! S  s ##rc|dvrd|S|S)Nz\^-][\r9)rs r(_escape_re_range_charrsH}as8+!+r*T re_escapec~|rt}nd}g}tt|}t|dkDrt j |t D]\}}t|x}}tjt5|^}}ddd||k(r|j||W|tt|dzk(r"|j|||||j||d||n|D cgc] } ||  }} dj|S#1swYxYwcc} w)a( Take a string or list of single-character strings, and return a string of the consecutive characters in that string collapsed into groups, as might be used in a regular expression '[a-z]' character set:: 'a' -> '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]' c|SrQr9)sss r(r/z,_collapse_string_to_ranges..s"r*rTNr -)rsortedrerArgroupbyrrn contextlibsuppressr$appendchrrjoin) rCrescape_re_range_charrets_charsrScharsfirstlastrs r(_collapse_string_to_rangesrsBP4, C AG 7|a"))'7H7JK HAu ; &ED$$Z0 ! D !} /67SZ!^,, 259:;OPT;U:VWX  +E2315I$5O4PQ) <1881#A&88 773<7 ! !29s<D. D:.D7 llcg}|D]`}t|tr|j|%t|tr|j t |P|j|b|SrQ)rr rrextend_flatten)rris r(rrJsY C   a  JJqM 8 $ JJx{ # JJqM  Jr*c|dk(ry|jr#t|dk(rtt|dS|j drtt|dddS|S)N0r)uxr )isdigitrArr startswithrCs r(!_convert_escaped_numerics_to_charrYsWCxyy{s1v{3q!9~ j !3qub>"" Hr*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 |ddSrr9rs r(r/zOmake_compressed_re..get_suffixes_from_common_prefixes..tsaPRQRer*rTrTreverser)rArrr)rprefixsuffixesrCs r(!get_suffixes_from_common_prefixesz=make_compressed_re..get_suffixes_from_common_prefixesrs 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 NrA.0wds r( z%make_compressed_re..s/rs2w{/|Tr[c32K|]}t|ywrQrrs r(rz%make_compressed_re..sQ8<Q]z?:?c38K|]}t|dk(ywrrrrCs r(rz%make_compressed_re..s113q6Q;1rc32K|]}t|ywrQrrs r(rz%make_compressed_re..s(X!)B1)E(Xrr()c38K|]}t|dk(ywrrrs r(rz%make_compressed_re..s913q6Q;9rc32K|]}t|ywrQrrs r(rz%make_compressed_re..s0`RS1J11M0`rc3FK|]}tj|ywrQ)reescapers r(rz%make_compressed_re..s:ZA299Q<:Zs!)r4r r$fromkeysanyrrrrrArremoveallmake_compressed_resort)rrrrrrrsepncgroupinitialrtrailing suffix_resuffixs r(rrcs4DI4{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_namefncBtddgttjjddk(rt fd}nt fd}dj d|_|_j|_ttjrj|_ n?ttr(tdrjj|_ nd|_ j |_t#t$|S) N__func__rfr crtjdjtd|g|i|SNz deprecated - use rrrrrr )rfargskwargsrrs r(_innerz replaced_by_pep8.._inners? MM/!3BKK?C+  d,T,V, ,r*cjtjdjtd|i|Srr)rrrrs r(rz replaced_by_pep8.._inners: MM/!3BKK?C+  t&v& &r*z6 .. deprecated:: 3.0.0 Use :class:`z` instead rg)r!r4inspect signature parametersrrr3r5rrc FunctionType__kwdefaults__typehasattrrgr2r 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*z([a-z])([A-Z])cF|jd|}|jS)Nz\1_\2)sublower)rC_re_sub_patterns r( _to_pep8_namers Ha(A 779r*r)new_namerarg_namerc||vr5|xs t|}tj|d|td||S|||<||S)Nz argument is deprecated, use r)categoryr)rrrr )rr default_valuers r(deprecate_argumentrs`66}X6 l7| D0  ( )x ( r*)T)rrQ)0rr functoolsrrr rrctypingrrrrr r rr r rrrrrr rDrGrLrNrjrtdictrrrbytes Exceptionrrboolrr4rrrrcompilerrr9r*r(r$si & @@M b' Cx CC4 3 YS Y Y Y Y  3 ( (3 (3 ( ( 3PcPPPP33*332%%P D ""J"%e i ,S,S, 59U S(3-  U-1UUp  d    \"& \}\\ \  \  \~*#*1**Z+5"**5F*GSC :>RT cN&)LOr*