Mpj&4 lUddlZddlZddlmZddlmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZddlZddlZddlZddlmZddlmZmZej6dZej:ed<ej?ej@ejCejDe#Z$e d Z%d?d ed e ed e ed efdZ&dedee'efded efdZ(e ddZ)GddZ*Gdde*Z+ ddl,Z,dZ-ej^dk\r ddl0m1Z2ddl3m4Z5nddl2Z2ddl5Z5ejldZ7de'd ee e8e8fe e8ffdZ9edGd d!eeZ:eed"fZ;eee:eefZd%e'd&ee'd e?fd'Z@d%e'd e?fd(ZAd%e'd e?fd)ZBd*ee%d e e%fd+ZCGd,d-e*ZDd.ZE ddlFZFdZGGd/d0ZHGd1d2eIZJd ed3ed efd4ZKd5ed6ed efd7ZLd8ZMd ede e+d efd9ZNd:e8d;e8d e e e8e8ffd<ZOGd=d>ee%ZPy#e.$rdZ-Y"wxYw#e.$rdZGYqwxYw)@N)product)deque) CallableIteratorListOptionalTupleTypeTypeVarUnionDictAnySequenceIterable AbstractSet) dataclass)GenericAnyStrlarkloggerTseqkeyvaluereturnci}|D]/}|||n|}|||n|} ||j|1|S#t$r |g||<YEwxYwN)appendKeyError)rrrditemkvs X/mnt/ssd/data/Dropbox/adrian/scripts/msg_venv/lib/python3.12/site-packages/lark/utils.pyclassifyr%slA/CI!-E$KD  aDKKN  H 3AaD s9A  A data namespacememoc Dt|trYd|vr||d}|j||Sd|vr||dS|jDcic]\}}|t |||c}}St|t r|Dcgc]}t |||c}S|Scc}}wcc}w)N__type__@) isinstancedict deserializeitems _deserializelist)r&r'r(class_rrs r$r0r0%s$  tJ/0F%%dD1 1 D[S ? "KO::<XZS%L 488XX D$ BFG UIt4GG KYGs B>B_T Serialize)boundc teZdZdZdedefdZd deeeffdZ e de e deeefd ee efde fd Zy) r4alSafe-ish serialization interface that doesn't rely on Pickle Attributes: __serialize_fields__ (List[str]): Fields (aka attributes) to serialize. __serialize_namespace__ (list): List of classes that deserialization is allowed to instantiate. Should include all field types that aren't builtin types. types_to_memoizercZt|}|j||jfSr)SerializeMemoizer serialize)selfr7r(s r$memo_serializezSerialize.memo_serialize=s( !12~~d#T^^%555Nc <|r.|j|rd|jj|iSt|d}|Dcic]}|t t|||}}t |j |d<t|dr|j |||Scc}w)Nr+__serialize_fields__r* _serialize)in_typesmemoizedgetgetattrr@type__name__hasattr)r;r(fieldsfress r$r:zSerialize.serializeAs DMM$'**401 156>DEq*WT1-t44EEt*--J 4 & OOC & FsBclsr&r(c jt|dg}|Dcic]}|j|}}t|d}d|vr||dS|j|}|D]} t||t |||| t |dr|j |Scc}w#t $r}t d||d}~wwxYw)N__serialize_namespace__r?r+zCannot find key for classr0)rDrF__new__setattrr0rrG) rKr&r(r'crHinstrIes r$r.zSerialize.deserializeLsC!:B? +45aQZZ\5 545 $;S ? "{{3 DA Dad1gy$!GH D 4 (     #6 D:CCC DsBB B2 B--B2r)rF __module__ __qualname____doc__rrr<r strr: classmethodr r3intr.r=r$r4r44ss6t66 S#X bc3htCH~RTr=c eZdZdZdZdeddfdZdedefdZ de e e ffd Z ed e e e fd e ee fd e e e fde e e ffd Zy)r9z:3tCH~3$sCx.3PTUXZ]U]P^3cghkmphpcq33r=r9TF) z\\p{[A-Za-z_]+}exprc,trtjtd|}n(tjt|r t d||} t j|jDcgc] }t|c}Scc}w#tj$ruts t|tj|}tt dtj }|j#ddt|fcYSdt|fcYSwxYw)NAzD`regex` module must be installed in order to use Unicode categories.MAXWIDTHr) _has_regexresub categ_patternsearch ImportError sre_parseparsegetwidthrX sre_constantserror ValueErrorregexcompilerD MAXREPEATmatch)rg regexp_finalxrPrjs r$get_regexp_widthrsvvmS$7 99]D )dfjk k ( ) = F F HI1AIII   (T" " l+Ay*m6M6MNHwwr{"#h-''#h-''(s+ %B 1BB B A6D DD)frozencleZdZUdZeed<eed<eed<dZed dZ dZ dZ d efd Z d efd Z y ) TextSliceaA view of a string or bytes object, between the start and end indices. Never creates a copy. Lark accepts instances of TextSlice as input (instead of a string), when the lexer is 'basic' or 'contextual'. Args: text (str or bytes): The text to slice. start (int): The start index. Negative indices are supported. end (int): The end index. Negative indices are supported. Raises: TypeError: If `text` is not a `str` or `bytes`. AssertionError: If `start` or `end` are out of bounds. Examples: >>> TextSlice("Hello, World!", 7, -1) TextSlice(text='Hello, World!', start=7, end=12) >>> TextSlice("Hello, World!", 7, None).count("o") 1 textstartendcLt|jttfs t d|j dkrHt j|d|j t|jz|j dk\sJ|j+t j|dt|jy|jdkr\t j|d|jt|jz|jt|jksJyy)Nztext must be str or bytesrrr) r,rrVbytes TypeErrorrobject __setattr__lenrrbs r$ __post_init__zTextSlice.__post_init__s$))c5\278 8 ::>   tWdjj3tyy>.I J::> !> 88    tUC N ; XX\   tUDHHs499~,E F88s499~- --r=cLt|tr|S||dt|SNr)r,rr)rKrs r$ cast_fromzTextSlice.cast_froms$ dI &K4CI&&r=ch|jdk(xr"|jt|jk(Sr)rrrrrbs r$is_complete_textzTextSlice.is_complete_texts&zzQ=488s499~#==r=c4|j|jz Sr)rrrbs r$__len__zTextSlice.__len__sxx$**$$r=substrcd|jj||j|jSr)rcountrrr;rs r$rzTextSlice.counts!yyvtzz488<%=F=>V>r=rr)LuLlLtLmLoMnMcPc)NdNls categoriesct|dk7rtfd|DS|dk(xstj|vS)Nrlc36K|]}t|ywr)_test_unicode_category).0charrs r$ z)_test_unicode_category..sJ)$ ;Js_)rall unicodedatacategory)rrs `r$rrs> 1v{JJJJ 8 <{++A.*<ttj|S)zGiven a list (l) will removing duplicates from the list, preserving the original order of the list. Assumes that the list entries are hashable.)r1r-fromkeys)rs r$ dedup_listrs  a !!r=c<eZdZddZdefdZdZdeeeffdZ y)r]rNci|_yr)enumsrbs r$r^zEnumerator.__init__ s %' r=c||jvr"t|j|j|<|j|Sr)rrr;r!s r$rCzEnumerator.get s3 tzz !"4::DJJt zz$r=c,t|jSr)rrrbs r$rzEnumerator.__len__s4::r=c|jjDcic]\}}|| }}}t|t|jk(sJ|Scc}}wr)rr/r)r;r"r#rs r$razEnumerator.reversedsN"jj..0 1daQT 1 11vTZZ((( 2s A)rN) rFrSrTr^rXrCrr rrarYr=r$r]r]s,( 3 $sCx.r=r]c`|sggStd|DsJ|tt|S)a Accepts a list of alternatives, and enumerates all their possible concatenations. Examples: >>> combine_alternatives([range(2), [4,5]]) [[0, 4], [0, 5], [1, 4], [1, 5]] >>> combine_alternatives(["abc", "xy", '$']) [['a', 'x', '$'], ['a', 'y', '$'], ['b', 'x', '$'], ['b', 'y', '$'], ['c', 'x', '$'], ['c', 'y', '$']] >>> combine_alternatives([]) [[]] c3 K|]}|ywrrY)rrs r$rz'combine_alternatives..+s Qq s )rr1r)listss r$combine_alternativesrs6 t  % '%'   r=cVeZdZeej j ZeddZy)FSc btrd|vrtj|f|dd|St||fi|S)NwT)mode overwrite)_has_atomicwrites atomicwrites atomic_writeopen)namerkwargss r$rzFS.open7s; ,,TWWPVW Wd-f- -r=N)r)rFrSrT staticmethodospathexistsrrYr=r$rr4s& "''.. )F..r=rceZdZdZy)fzsetcFddjtt|zS)Nz{%s}, )joinmapreprrbs r$__repr__zfzset.__repr__@s #dD/222r=N)rFrSrTrrYr=r$rr?s3r=rpredcjg}|Dcgc]}||s|j|s| }}||fScc}wr)r)rr false_elemselem true_elemss r$ classify_boolrDs>K#&Q4$t* 8J8J48P$QJQ { ""Rs00initialexpandc#Ktt|}t|}|rL|j}|||D])}||vs|j ||j |+|rKyywr)rr1setpopleftaddr)rropen_qvisitednode next_nodes r$bfsrJsi 4= !F&kG ~~  )I' I& i( ) sAA1&A1/A1c#~Ktt|}|r#|j}||||z }|r"yyw)zVbfs, but doesn't keep track of visited (aka seen), because there can be no repetitionsN)rr1r)rrrrs r$bfs_all_uniquerUs; 4= !F ~~ &, s8==c dt|tr|j|St|tr|Dcgc]}t ||c}St|t r t|St|t r.|jDcic]\}}|t ||c}}S|Scc}wcc}}wr)r,r4r:r1r@ frozensetr-r/)rr(rrs r$r@r@^s%#t$$ E4 3894 4&99 E9 %E{ E4 >JAx :q" %;a|1 q5J  J/Aq6(: :;/*Q..5r=cveZdZdZddeefdZdedefdZ defdZ de efdZ defd Z d Zdefd Zd Zy ) OrderedSetzkA minimal OrderedSet implementation, using a dictionary. (relies on the dictionary being ordered) r/c8tj||_yr)r-rr )r;r/s r$r^zOrderedSet.__init__su%r=r!rc||jvSrr rs r$ __contains__zOrderedSet.__contains__stvv~r=c"d|j|<yrrrs r$rzOrderedSet.addst r=c,t|jSr)iterr rbs r$__iter__zOrderedSet.__iter__DFF|r=c|j|=yrrrs r$removezOrderedSet.removes FF4Lr=c,t|jSr)rdr rbs r$__bool__zOrderedSet.__bool__r r=c,t|jSr)rr rbs r$rzOrderedSet.__len__s466{r=crt|jddjtt|dS)N(r))rErFrrrrbs r$rzOrderedSet.__repr__s0t*%%&a #d4.(A'B!DDr=N)rY)rFrSrTrUrrr^rrdrrrr r rrXrrrYr=r$rrsi&hqk&(1+1Er=r)NN)Qrr itertoolsr collectionsrtypingrrrrr r r r r rrrrsysrnlogging dataclassesrrr getLoggerrLoggerr addHandler StreamHandlersetLevelCRITICALrNO_VALUErr%rVr0r3r4r9ryrmrr version_info re._parser_parserrs re._constants _constantsrvrzrprXrrr LarkInputrrrdrrrrr]rrrrrrrrrr@rrrYr=r$r's ~~~~!"***622'''')*  ! 8 CL  (  (!3  8HCU  ae   s tCH~ T c  T%,,^3 3(Jw") -. (3(5sCx$s))C#D(< $<><><>~F//0 &)F+S0 1 > =( =c=x}== 3c3d303040"(1+"$q'"&!&..3I3 #x#x#C# ) )8 ) ) c *;!<  /S/c/d5c?.C/0EQEWJns$=H;H)H&%H&)H32H3