[i}> 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% d:de 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/ed0edefd1Z,ej-d2fdedefd3Z. dV>V>\>\>^>^---*      F CN " " C & & & & &BBBBBCC Cc.||dS)NTr)r%names r(z__config_flags.'s388D$+?+?r*c.||dS)NFr,r-s r(r/z__config_flags.(sCHHT5,A,Ar*N)r __module__ __qualname____doc__rlistr __annotations__rr classmethodr)enabledisabler*r(rrsGGJS  L$s)    J D D[ D[?? @ @FkAABBGGGr*r)maxsizelocstrgreturnc|}d|cxkrt|krnn||dz dkrdn||dd|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+sc AC    #a&&     QsQwZ4%7%711S1774QRTWCXCX=XXr*c6|dd|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*c|dd|}|d|}|dkr ||dz|n ||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(linerLJsZ jjq#&&Giic""G*1Q,,4! g% & &D1.getZ9S,// /r*c||<dSrQr9)rSrTr'caches r(set_z&_UnboundedCache.__init__..set_]sE#JJJr*c0dSrQclearrSrZs r(r^z'_UnboundedCache.__init__..clear` KKMMMMMr*)rWobjectrVsizetypes MethodTypesetr^)selfrWr[r^rZrUrVs @@@r(__init__z_UnboundedCache.__init__UsI +1883L 0 0 0 0 0 0           #C..#D$//%eT22 r*Nrr1r2rgr9r*r(rNrNTs#33333r*rNceZdZdZdS) _FifoCachec(i|_tx|_jjfd}fd}fd}t j|||_t j|||_t j|||_dS)Nc|SrQr9rRs r(rWz _FifoCache.__init__..getqrXr*c||<tkr:tttk8dSdSrQ)rAnextiter)rSrTr'rZ cache_poprbs r(r[z!_FifoCache.__init__..set_tsZE#Je**t## $tE{{++,,,e**t######r*c0dSrQr]r_s r(r^z"_FifoCache.__init__..clearzr`r*) rbrarVrWpoprcrdrer^) rfrbrWr[r^rZrUrprVs ` @@@@r(rgz_FifoCache.__init__js +1883LI I  0 0 0 0 0 0 - - - - - - -      #C..#D$//%eT22 r*Nrhr9r*r(rjrjis#33333r*rjc0eZdZdZdZdZdZdZdZdS)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. c0||_i|_i|_dSrQ) _capacity_active_memory)rfcapacitys r(rgzLRUMemo.__init__s!  r*c |j|S#t$r2|j||j|<|j|cYSwxYwrQ)rwKeyErrorrxrrrfrTs r( __getitem__zLRUMemo.__getitem__s^ %<$ $ % % % $ 0 0 5 5DL <$ $ $ $ %s 9A  A cP|j|d||j|<dSrQ)rxrrrw)rfrTr's r( __setitem__zLRUMemo.__setitem__s, d###! Sr*c |j|}t|jd|jdz }|D]}|j|||j|<dS#t $rYdSwxYwNr )rwrrr4rxrvr{)rfrTr' oldest_keys key_to_deletes r( __delitem__zLRUMemo.__delitem__s &L$$S))Et|,,-D!1C/D-DEK!, 0 0    //// %DL        DD sA,, A:9A:cj|j|jdSrQ)rwr^rxrfs r(r^z LRUMemo.clears0  r*N) rr1r2r3rgr}rrr^r9r*r(rtrtsi %%%""" & & &r*rtceZdZdZdZdS) UnboundedMemoz< A memoizing mapping that retains all deleted items cdSrQr9r|s r(rzUnboundedMemo.__delitem__s r*N)rr1r2r3rr9r*r(rrs-     r*rrCcdD] }||t|z}!|dd}|dd}t|S)Nz\^-[]r@z\n z\t)replace_bslashr )rCcs r(_escape_regex_range_charsrs[ && IIa1 % % $A $A q66Mr*c*eZdZdZddZdedefdZdS)_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|_dS)Nr)prev itertoolsrFcounterr'rs r(rgz_GroupConsecutive.__init__s#  ((  r*charct|}||jc|_}||z dkrt|j|_|jSr)ordrrnrr')rfrc_intrs r(__call__z_GroupConsecutive.__call__sDD  4 4N)rr1r2r3rgr intrr9r*r(rrsT. SSr*rcbt||rdS t|dS#|$rYdSwxYw)NFT) isinstancero)obj _str_type_iter_exceptions r( _is_iterablersT#y!!u S t uus %..rc|dvrd|n|S)Nz\^-][\r9)rs r(_escape_re_range_charrsH}}8888!+r*T re_escapec|rtndg}tt|}t|dkrt j|t D]\}}t|x}}tj t5|^}}dddn #1swxYwY||kr| |q|tt|dzkr,| ||| |d|nfd|D}d|S) 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 -c&g|] }|Sr9r9).0rescape_re_range_chars r( z._collapse_string_to_ranges..Es%8881##A&&888r*)rsortedrerArgroupbyrrn contextlibsuppressr$appendchrrjoin) rCrrets_charsrScharsfirstlastrs @r(_collapse_string_to_rangesrsP-4,} C AG 7||a")'7H7J7JKKK  HAu ;; &ED$Z00 ! ! D ! ! ! ! ! ! ! ! ! ! ! ! ! ! !}} //667777SZZ!^,,,, 22599W;O;OPT;U;UWWXXXX  ++E22QQ5I5I$5O5OQQ) <9888888 773<<sB$$B( +B( llcg}|D]z}t|tr||-t|tr#|t |e||{|SrQ)rr rrextend_flatten)rris r(rrJs~ C    a    JJqMMMM 8 $ $  JJx{{ # # # # JJqMMMM Jr*c|dkrdS|r0t|dkrtt|dS|dr%tt|dddS|S)N0r)uxr )isdigitrArr startswithrCs r(!_convert_escaped_numerics_to_charrYsyCxxtyy{{#s1vv{{3q!99~~ j ! !#3qub>>""" Hr*rnon_capturing_groups_level word_list max_levelrrc dttfd}|dkr%|stdd|vrtdn|sdSti|}|dkrpt d|Dr4d t d |Dtd Sd dd|DdSg}d}|rdnd}|t |D]2\}} ||d }tj |}d} d| vrd} | dt| dkrLtd| Dr;||d dd| Dd| ||krCtt | |||dz} ||d|| d| td| Dr<||d dd| Dd| T| td ||d|d d| Dd| | rmtj | d} t| dkr#| r!||d|| d| ||| | ||4d|S)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. namelistc3Kt|dkrDtj|dD]*\}}|td|DtdfV+dS|dd|dddgfVdS)Nr c|ddSrr9rs r(r/zOmake_compressed_re..get_suffixes_from_common_prefixes..tsaPRQRPRer*rc"g|] }|dd Sr Nr9rrCs r(rzQmake_compressed_re..get_suffixes_from_common_prefixes..us %>%>%>ae%>%>%>r*TrTreverser)rArrr)rprefixsuffixess r(!get_suffixes_from_common_prefixesz=make_compressed_re..get_suffixes_from_common_prefixesrs x==1  $-$5hOO$T$T$T W W f%>%>X%>%>%>CQUVVVVVVVV W W1+a.8A;qrr?"33 3 3 3 3 3r*r z&no words given to make_compressed_re()rz%word list cannot contain empty stringrc3<K|]}t|dkVdSrrArwds r( z%make_compressed_re..s,//rs2ww{//////r*|c6g|]}tj|Sr9reescapers r(rz&make_compressed_re..s :::" " :::r*Tr[c34K|]}t|VdSrQrrs r(rz%make_compressed_re..s+QQ8<<QQQQQQr*]z?:?c3<K|]}t|dkVdSrrrs r(rz%make_compressed_re..s,1113q66Q;111111r*c34K|]}t|VdSrQrrs r(rz%make_compressed_re..s+(X(X!)B1)E)E(X(X(X(X(X(Xr*r()c3<K|]}t|dkVdSrrrs r(rz%make_compressed_re..s,9913q66Q;999999r*c34K|]}t|VdSrQrrs r(rz%make_compressed_re..s,0`0`RS1J11M1M0`0`0`0`0`0`r*c3>K|]}tj|VdSrQrrs r(rz%make_compressed_re..s*:Z:ZA29Q<<:Z:Z:Z:Z:Z:Zr*)r4r r$fromkeysanyrrrArrrremoveallmake_compressed_resort) rrrrrrsepncgroupinitialrtrailing suffix_resuffixs r(rrcs4DI4444{{ GEFF F ??DEE E  2R[[++,,IA~~ //Y/// / / U88:: :::TRRR UrwwQQyQQQQQTTT T C C*2ddG>>vi?P?PQQ+$+$ 3)G$$ >>H OOB    x==1  1111111  ee(X(Xx(X(X(X!X!Xee[ceeI%% 2x((!-A%z !!!I JJ'KKGKYKKKKLLLL9999999 &mm0`0`W_0`0`0`)`)`mmckmm! #t <<< &ggg#((:Z:ZQY:Z:Z:Z2Z2Zgg]egg $8A;//v;;??x?JJ'HHGHVHHhHHIIIIJJ'=6=8==>>>> 7#### 773<<r* compat_namefncNtddgttjjddkrt fd}nt fd}djd|_|_j|_ttj r j |_ n>ttr"tdrjj |_ nd|_ j|_t#t$|S) N__func__rfr chtjdjtd|g|Ri|SNz deprecated - use rrrrrr )rfargskwargsrrs r(_innerz replaced_by_pep8.._innersW MCCBKCC+     2d,T,,,V,, ,r*c`tjdjtd|i|Srr)r r rrs r(r z replaced_by_pep8.._innersL MCCBKCC+     2t&v&& &r*z6 .. deprecated:: 3.0.0 Use :class:`z` instead rg)r!r4inspect signature parametersrrr3r5rrc FunctionType__kwdefaults__typehasattrrgr2r r)rrr s`` r(replaced_by_pep8rsO Z $ $B x4)"--899"1"=== r - - - - -  - - r ' ' ' ' '  '     FN"FO/F"e())% " 1 B  %'"j"9"9% " : $/F 6??r*z([a-z])([A-Z])cV|d|}|S)Nz\1_\2)sublower)rC_re_sub_patterns r( _to_pep8_namers%Ha((A 7799r*r)new_namer arg_namerc||vr3|pt|}tj|d|tdn|||<||S)Nz argument is deprecated, use r)categoryr)rrrr )r r default_valuers r(deprecate_argumentrsm66}X66  D D D D0     )x ( r*)T)rrQ)0rr functoolsrrr rrctypingrrrrr r rr r rrrrrr rDrGrLrNrjrtdictrrrbytes Exceptionrrboolrr4rrrrcompilerrr9r*r(r's &&&&&&&& @@@@@@@@@@@@@@@@MMMMMMMM #b'' GCx   CCCCCCCC4 3 YS Y Y Y Y Y Y  3 ( (3 (3 ( ( ( ( 3PcPPPPPP33333333*333333332%%%%%%%%P     D   """"""""J"%e i    ,S,S,,,, 59UU S(3-  U-1UUUUUp  d          \"& \\\}\\ \  \  \\\\~*#*1*****Z+5"*5F*G*GSC :>RT cN&)LOr*