ZL i" dZddlZddlZddlZddlmZmZddlmZm Z m Z m Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZmZGd d eZdee deefdZ d'de dee defdZ!de dede"fdZ#dede fdZ$Gdde%Z&de de'e(e(fde"dejRfdZ*de dejRfdZ+de de de fd Z,dejRdee fd!Z-dejRd"eejRd#ejRdee fd$Z.dejRd"eejRdee fd%Z/dej`deejRfd&Z1y)(z/ Parse Python code and perform AST validation. N) CollectionIterator)VERSION_TO_FEATURESFeature TargetVersionsupports_feature)syms)pygram)driver)Grammar) ParseError) TokenError)LeafNodeceZdZdZy) InvalidInputz7Raised when input source code fails all parse attempts.N__name__ __module__ __qualname____doc__S/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/black/parsing.pyrrsArrtarget_versionsreturnc|s/tjtjtjgSg}t |t j s9t |t js|jtjt |t js|jtjtd|Dr|jtj|S)Nc3NK|]}tjt|vywN)rPATTERN_MATCHINGr).0vs r zget_grammars...s! W!7 # #':1'= = Ws#%) r python_grammar_async_keywordspython_grammarpython_grammar_soft_keywordsrrASYNC_IDENTIFIERSr appendASYNC_KEYWORDSany)rgrammarss r get_grammarsr,s   0 0  ! !  / /   H 22 0H0HI<<= OW-C-C D--. W WW;;< Orsrc_txtc :|jds|dz }tt|}|r"t|d}d|j }nd}i}|D]+}t j |} |j|d}n"t!|dk\sJ|t|}|d t#|t$rt't(j*|g}|S#t$rk} | jd\} } |j} | | dz } n#t$rd} YnwxYwtd |d | d | d | ||j<Yd } ~ d } ~ wt$rN}|jd\} } td |d | d | d |jd ||j<Yd }~@d }~wwxYw)z4Given a string with source, return the lib2to3 Node. c|jSr)value)tvs rzlib2to3_parse..@s RXXr)keyz for target version Fzz Cannot parsez: :Nr)endswithr,setmaxprettyr Driver parse_stringr context splitlines IndexErrorrversionrargslen isinstancerrr file_input)r-rr+max_tvtv_strerrorsgrammardrvresultpelinenocolumnlines faulty_lineteexcs r lib2to3_parserS7s   D !4C01H_*=>' '89 FmmG$ %%gu5F  46{aS[!t&$doox0 M5 ZZ]NFF&&(E @#FQJ/  @?  @&2vhb&K=I'F7?? # WWQZNFF&2vhb&BGGAJ<H'F7?? # sI.C F"E=DE DED'E F AFFrIctj|} |j|dy#ttt f$rYywxYw)NFT)r r<r=r rIndentationError)r-rIrJs rmatches_grammarrVisF -- C %(  $4 5s*AAnodect|}|S)z7Given a lib2to3 node, return its string representation.)str)rWcodes rlib2to3_unparser[ss t9D KrceZdZdZy)ASTSafetyErrorzDRaised when Black's generated code is not equivalent to the old AST.Nrrrrr]r]ysNrr]srcrA type_commentscd}tj5tjdttjdtt j ||||cdddS#1swYyxYw)Nz ignore)feature_versionr_)warningscatch_warnings simplefilter SyntaxWarningDeprecationWarningastparse)r^rAr_filenames r_parse_single_versionrk}s`H  " h 6h(:;yy 7-    s A A..A7cptdtjddzDcgc]}d|f}}d}t|dD]} t ||dcSt|dD]} t ||dcSt |cc}w#t $r}|s t |}Yd}~bd}~wwxYw#t $rYSwxYw)Nr6r5T)reverse)r_F)rangesys version_infosortedrk SyntaxErrorrY)r^minorversions first_errorrAes r parse_astrxs(-a1A1A!1Dq1H(IJuE JHJK(D1% %(gTJ J%(D1 (gUK K k ""#K  %!!f  %   s/ B B% B) B& B!!B&) B54B5lineendr1c|jDcgc]}|j}}|j|}|jScc}wr)r?stripjoin)ryr1istripped normalizeds r _normalizersK/4.>.>.@A1779AHAh'J     BsA ct|gS)z=Simple visitor generating strings to compare ASTs by content.)_stringify_ast)rWs r stringify_astrs $ ##r parent_stack new_parentc#zK|j|t||Ed{|jy7wr)r(rpop)rWrrs r_stringify_ast_with_new_parentrs7 #dL1112s !;9;c#\Kt|tjr0t|jtr|j dk(rd|_dt |z|jjdt|jD]}t|tjrn t||}dt |dzz|dt|tr|D]}|dk(rZt|tjr@t|tj r&t#|D]}t%|||Ed{bt|tj&s}t%|||Ed{t|tj&rt%|||Ed{t|tjrM|dk(rHt|tr8t |dk\r*t|d tj(r t+d |}n(|d k(r!t|tr|j-}n|}dt |dzz|d |jjdt |zd |jjy#t$rYwxYw7f767w)Nuz (r6=targetsr1r/ type_commentz, # z) # /)rDrhConstantr1rYkindrC __class__rrr_fields TypeIgnoregetattrAttributeErrorlistDeleteTuple_unwrap_tuplesrASTExprrrstrip)rWrfieldr1itemeltrs rrrsm4& tzz3 ' II   c,' ' ()@)@(A CC %7 dCNN +  #D%0E3|,q0125';; eT " XY&"44"43-d3#At$  cgg.=dLRVWWW X sww '5e\4P P P 4.W$uc* %*|B/: (e4 .(Zs-C"\\^ " S.234ZNCOO,,-/ i7rc,' ' (t~~/F/F.G HHe    X QsbB*J,- J9BJ,=J# >!J, J,0J&11J,"J)#C0J, J J,J  J,&J,)J,c#K|jD]4}t|tjrt |Ed{1|6y7 wr)eltsrDrhrr)rWrs rrrs=yy c399 %%c* * *I  *s8A A A )r)2rrhrprccollections.abcrr black.moderrrr black.nodesr blib2to3r blib2to3.pgen2r blib2to3.pgen2.grammarr blib2to3.pgen2.parser blib2to3.pgen2.tokenizerblib2to3.pytreerr ValueErrorrr9rr,rYrSboolrVr[ Exceptionr]tupleintrrkrxrrrrrrrrrrs 0TT!*+.&B:B#m"4g@@B/ /#-m#</ /dS7t$3 OYO    S#X  :>  WW  #3#377#,CC$$HSM$  ''!%cgg