bgadZddlmZddlmZddlmZddlmZer ddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZdZGd d Zdd ZedZdS)z+This module renders Astroid nodes as string) annotations)Iterator) TYPE_CHECKING)nodes)Const) MatchMatchAs MatchCase MatchClass MatchMappingMatchOr MatchSequenceMatchSingleton MatchStar MatchValueUnknownceZdZdZdvdwdZdxdZdyd Zdzd{dZdzd|dZd}dZ dxdZ dxdZ dxdZ dxdZ dxdZdxdZdxdZdxdZdxdZdxdZdxdZdxdZdxdZdxd Zdxd!Zdxd"Zdxd#Zdxd$Zdxd%Zdxd&Zdxd'Zdxd(Zdxd)Z dxd*Z!d~d,Z"dxd-Z#dxd.Z$dxd/Z%dxd0Z&dxd1Z'dxd2Z(dxd3Z)dxd4Z*dxd5Z+dxd6Z,dxd7Z-dxd8Z.dxd9Z/dxd:Z0dxd;Z1dxd<Z2dxd=Z3dxd>Z4dxd?Z5dxd@Z6dxdAZ7dxdBZ8dxdCZ9dxdDZ:dxdEZ;dxdFZdxdIZ?dxdJZ@dxdKZAdxdLZBdxdMZCdxdNZDdxdOZEdxdPZFdxdQZGdxdRZHdxdSZIdxdTZJdxdUZKdxdVZLdxdWZMdxdXZNdd[ZOdd]ZPdd_ZQeRddaZSddcZTddeZUddgZVddiZWddkZXddmZYdnZZdoZ[dpZ\dqZ]drZ^ddtZ_duS)AsStringVisitorz?Visitor to render an Astroid node as a valid python code string indentstrc||_dSNr)selfrs h/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/astroid/nodes/as_string.py__init__zAsStringVisitor.__init__(s ! returnc^||tdS)z.Makes this visitor behave as a simple function )acceptreplace DOC_NEWLINErnodes r__call__zAsStringVisitor.__call__+s${{4  ((d;;;rdoc_node Const | Nonec||sdSd|j|jdtS)z7Stop newlines in docs being indented by self._stmt_listz {}"""{}"""r")formatrvaluer$r%)rr)s r _docs_dedentzAsStringVisitor._docs_dedent/s@ 2$$ K//kBB   rTstmtslistboolcddfd|DD}|s|Sj|ddjzzS)z return a list of nodes to stringr"c3K|]}||V dSr).0nstrs r z-AsStringVisitor._stmt_list..:s;# # # # # # # # # rc:g|]}|Sr5r#r6nrs r z.AsStringVisitor._stmt_list..;s#<<<ahhtnn<<.~s->>A$>>>>>>r)r>targetsr.r#)rr'lhss` r visit_assignzAsStringVisitor.visit_assign|sOjj>>>>>>>>>33$*++D11333rc|j|d|jd|j|S)z*return an astroid.AugAssign node as string )targetr#opr.r&s rvisit_augassignzAsStringVisitor.visit_augassigns@+$$T**PPTWPPtz7H7H7N7NPPPrc|j|}|j|}|j|d|S|d|d|j|S)z*Return an astroid.AugAssign node as stringN: rk)rrr# annotationr.)rr'rrrws rvisit_annassignzAsStringVisitor.visit_annassignsv##D))_++D11 : ,, ,, ,DDJDD4:+<+g|]}|Sr5rG)r6r<r'rs rr=z0AsStringVisitor.visit_boolop..s,MMMAT,,T1557MMMrrq)valuesrsr>)rr'rs`` r visit_boolopzAsStringVisitor.visit_boolops@MMMMMMMMDG$$V,,,rcdS)z&return an astroid.Break node as stringbreakr5r&s r visit_breakzAsStringVisitor.visit_breakswrc||j}fd|jD}|jrfd|jD}ng}|||dd|dS)z%return an astroid.Call node as stringc:g|]}|Sr5r:)r6argrs rr=z.AsStringVisitor.visit_call..s%666S 4  666rc:g|]}|Sr5r:)r6kwargrs rr=z.AsStringVisitor.visit_call..s%FFFu T**FFFrrCrarD)rGfuncargskeywordsextendr>)rr'expr_strrrs` r visit_callzAsStringVisitor.visit_calls**4;;6666DI666 = FFFF FFFHHH H//TYYt__////rc  |jr|jnd}fd|jD}|jrD|s0|d|jz|fd|jDz }|rdd|dnd}|j }d ||j || |j S) z)return an astroid.ClassDef node as stringr,c:g|]}|Sr5r:r;s rr=z2AsStringVisitor.visit_classdef..s#3331333rz metaclass=c:g|]}|Sr5r:r;s rr=z2AsStringVisitor.visit_classdef..s#777A$777rrCrarDz {}class {}{}:{} {} ) decoratorsr#bases _metaclasshas_metaclass_hackappendrr>r/r)r-rgr@body)rr'decoraterargs_strdocss` rvisit_classdefzAsStringVisitor.visit_classdefs37?J4?))$///3333 333 ? E4#:#:#<#< E KK t'='=d'C'CC D D D 77777777-19)tyy))))r  //*11 di41K1K   rcdfdjD}jd|S)z(return an astroid.Compare node as stringrqc3XK|]$\}}|d|dV%dS)rqFrzNr)r6rsexprr'rs rr8z0AsStringVisitor.visit_compare..s^  D H HD++D$+FF H H      r)r>opsrGr|)rr'rhs_strs`` r visit_comparezAsStringVisitor.visit_comparesl((      H     ))$ ::FFWFFFrcdfd|jD}d|jd|j|}|jrdnd|S)z.return an astroid.Comprehension node as stringr,c3HK|]}d|VdS) if Nr:r;s rr8z6AsStringVisitor.visit_comprehension..s6@@!-QXXd^^--@@@@@@rzfor z in rR)r>ifsrrr#iteris_async)rr'r generateds` rvisit_comprehensionz#AsStringVisitor.visit_comprehensionsgg@@@@tx@@@@@V4;--d33VV9I9I$9O9OVQTVV "m3((@Y@@@rcJ|jturdSt|jS)z&return an astroid.Const node as stringz...)r.Ellipsisreprr&s r visit_constzAsStringVisitor.visit_consts$ : ! !5DJrcdS)z)return an astroid.Continue node as stringcontinuer5r&s rvisit_continuezAsStringVisitor.visit_continueszrcVddfd|jDS)z'return an astroid.Delete node as stringzdel rac3BK|]}|VdSrr:r6rFrs rr8z/AsStringVisitor.visit_delete..s/MMu T 2 2MMMMMMr)r>rmr&s` r visit_deletezAsStringVisitor.visit_deletes4OdiiMMMM MMMMMOOOrc,||S)z(return an astroid.DelAttr node as stringr\r&s r visit_delattrzAsStringVisitor.visit_delattrr_rc|jS)z(return an astroid.DelName node as stringrfr&s r visit_delnamezAsStringVisitor.visit_delnamerircVddfd|jDzS)z+return an astroid.Decorators node as stringz@%s z @c3BK|]}|VdSrr:)r6itemrs rr8z3AsStringVisitor.visit_decorators..s/#M#M$DKK$5$5#M#M#M#M#M#Mr)r>rr&s` rvisit_decoratorsz AsStringVisitor.visit_decoratorss1#M#M#M#M$*#M#M#MMMMMrcXdd||zS)z%return an astroid.Dict node as string{%s}ra)r> _visit_dictr&s r visit_dictzAsStringVisitor.visit_dicts' $"2"24"8"89999r Iterator[str]c#K|jD]F\}}||}||}|dkr||zV=|d|VGdS)Nr{rv)itemsr#)rr'keyr.s rrzAsStringVisitor._visit_dicts* ( (JC**T""CLL&&Ed{{Ek!!!!'''''''' ( (rcdS)Nr{r5r&s rvisit_dictunpackz AsStringVisitor.visit_dictunpackstrcd|j|jdfd|jDS)z)return an astroid.DictComp node as stringz {{{}: {} {}}}rqc3BK|]}|VdSrr:r;s rr8z1AsStringVisitor.visit_dictcomp..s-==QXXd^^======r)r-rr#r.r> generatorsr&s` rvisit_dictcompzAsStringVisitor.visit_dictcompse%% HOOD ! ! J  d # # HH====T_=== = =   rc6|j|S)z(return an astroid.Discard node as stringrNr&s r visit_exprzAsStringVisitor.visit_exprz  &&&rcdS)z'dummy method for visiting an Empty noder,r5r&s rvisit_emptynodezAsStringVisitor.visit_emptynoderrcrd}tt|ddtjrd}|jrb|jr;|d|j|d|j|}n#|d|j|}n|}|d||jS)Nexceptparentzexcept*rq as : ) isinstancegetattrrTryStartypergr#r@r)rr'r<excss rvisit_excepthandlerz#AsStringVisitor.visit_excepthandlers  gdHd33U] C C A 9 y 7RRdi..t44RR$):J:J4:P:PRR66di..t44666D774??4955777rcdS)zreturn an Empty node as stringr,r5r&s r visit_emptyzAsStringVisitor.visit_emptyrrcd|j||j|||j}|jr|d||j}|S)z$return an astroid.For node as stringzfor {} in {}: {} else: )r-rrr#rr@rorelse)rr'forss rrVzAsStringVisitor.visit_fors")) K  t $ $di&6&6t&<&X>X   ; DCCT__T[%A%ACCD rcvdd|jpdz|jzt|jS)z+return an astroid.ImportFrom node as stringzfrom {} import {}.r)r-levelmodname_import_stringnamesr&s rvisit_importfromz AsStringVisitor.visit_importfroms;")) 4:? #dl 2N4:4N4N   rc|dfd|jD}dD]}||vrn d|z|z|zS)Nr,c3K|]u}t|jdkrDt|jddddddn|VvdS)r{z{{}z}}N)r__name__rr.r$r#)r6r.rs rr8z2AsStringVisitor.visit_joinedstr..#s   E{{#w..   ad # WS$  T 2 2 25:LL4F4F       r)'""""z'''f)r>r)rr'stringquotes` rvisit_joinedstrzAsStringVisitor.visit_joinedstr"s|           ".  EF""#U{V#e++rc|j|}|jr%|jdkr|dt|jzz }|jr(|d|j|ddzz }d|zS)Nr!:rr)r.r# conversionchr format_spec)rr'results rvisit_formattedvaluez$AsStringVisitor.visit_formattedvalue:s""4(( ? 1t!33 cC000 0F   @ cD,33D99!B$?? ?Frc V|jr|j|nd}||j}d}|jr!d|jz}|dz}d}||||j|j|||||j fzS)z z %s%s %s(%s)%s%s %s) rr#r/r)returns as_stringrgrr@r)rr'keywordrrtrailerreturn_annotation def_formats rhandle_functiondefz"AsStringVisitor.handle_functiondefEs37?J4?))$///  // < . &)?)?)A)A A '#-G,    I I  T " "   OODI & &   rc.||dS)z,return an astroid.FunctionDef node as stringdefr r&s rvisit_functiondefz!AsStringVisitor.visit_functiondefXs&&tU333rc.||dS)z.return an astroid.AsyncFunction node as stringz async defr r&s rvisit_asyncfunctiondefz&AsStringVisitor.visit_asyncfunctiondef\s&&t[999rcd|jdfd|jDS)z-return an astroid.GeneratorExp node as stringz({} {})rqc3BK|]}|VdSrr:r;s rr8z5AsStringVisitor.visit_generatorexp..c-+T+TqAHHTNN+T+T+T+T+T+Trr-eltr#r>rr&s` rvisit_generatorexpz"AsStringVisitor.visit_generatorexp`Q HOOD ! !388+T+T+T+TDO+T+T+T#T#T   rc|||j}|rd|d}|d|jS)z(return an astroid.Getattr node as stringrCrDr)rGrisdigitattrname)rr'r|s rr]zAsStringVisitor.visit_attributefsL&&tTY77 <<>> t;;;D(((((rc<dd|jS)z'return an astroid.Global node as stringzglobal rar>rr&s r visit_globalzAsStringVisitor.visit_globalms04:..000rcd|j|d||jg}|r3|d||jdn7|jr0|d||jd|S)z#return an astroid.If node as stringzif relFrelse: r")rcr#r@rhas_elif_blockrrr>)rr'rs rvisit_ifzAsStringVisitor.visit_ifqsLTY%%d++LL 0J0JLLM     A JJHDOODKOFFHH I I I I [ A JJ?!=!=?? @ @ @yy~~rc d|||jd|||jd|||jdS)z&return an astroid.IfExp node as stringz{} if {} else {}TrzF)r-rGrrcrr&s r visit_ifexpzAsStringVisitor.visit_ifexpzsh!((  # #D$)T # B B  # #D$)T # B B  # #D$+u # E E   rc0dt|jS)z'return an astroid.Import node as stringzimport )rrr&s r visit_importzAsStringVisitor.visit_imports5 33555rc|jd|j|S|jd|j|S)z(return an astroid.Keyword node as stringNr{=)rr.r#r&s r visit_keywordzAsStringVisitor.visit_keywordsN 8 1 ))$//11 1(66TZ..t44666rc|j|}|j|}|rd|d|Sd|S)z'return an astroid.Lambda node as stringzlambda rvzlambda: )rr#r)rr'rrs r visit_lambdazAsStringVisitor.visit_lambdasXy%%y%%  ,+T++T++ + $   rcXddfd|jDdS)z%return an astroid.List node as string[rac3BK|]}|VdSrr:rs rr8z-AsStringVisitor.visit_list../GGEU\\$//GGGGGGr]r>eltsr&s` r visit_listzAsStringVisitor.visit_lists7J499GGGGTYGGGGGJJJJrcd|jdfd|jDS)z)return an astroid.ListComp node as stringz[{} {}]rqc3BK|]}|VdSrr:r;s rr8z1AsStringVisitor.visit_listcomp..rrrr&s` rvisit_listcompzAsStringVisitor.visit_listcomprrc|jrd|jjdnd}|dfd|jDzdzS)z'return an astroid.Module node as stringrz""" r,r"c3BK|]}|VdSrr:r;s rr8z/AsStringVisitor.visit_module..s-BB1BBBBBBrz )r)r.r>r)rr'rs` r visit_modulezAsStringVisitor.visit_modulesX59]J1T](1111diiBBBB BBBBBBVKKrc|jS)z%return an astroid.Name node as stringrfr&s r visit_namezAsStringVisitor.visit_namerircx|j|}|j|}|d|S)z.Return an assignment expression node as stringz := )rrr#r.)rr'rrr.s rvisit_namedexprzAsStringVisitor.visit_namedexprs@##D)) !!$''%%e%%%rc<dd|jS)z)return an astroid.Nonlocal node as stringz nonlocal rarr&s rvisit_nonlocalzAsStringVisitor.visit_nonlocals2499TZ00222rcdS)z%return an astroid.Pass node as stringpassr5r&s r visit_passzAsStringVisitor.visit_passsvrc|jr\|jr8d|j|d|j|Sd|j|SdS)z&return an astroid.Raise node as stringzraise z from raise)exccauser#r&s r visit_raisezAsStringVisitor.visit_raisesl 8 4z WV 5 5VVTZ=N=Nt=T=TVVV3DHOOD1133 3wrc|rMt|jjdkr0fd|jjD}dd|S|jrd|jSdS)z'return an astroid.Return node as stringrc:g|]}|Sr5r:rs rr=z0AsStringVisitor.visit_return..s%DDD5ELL&&DDDrzreturn rar )is_tuple_returnlenr.r2r>r#)rr'r2s` r visit_returnzAsStringVisitor.visit_returns    ! ! /c$*/&:&:Q&>&>DDDDDJODDDD.TYYt__.. . : 76TZ..t4466 6xrcVddfd|jDzS)z$return an astroid.Set node as stringrrac3BK|]}|VdSrr:rs rr8z,AsStringVisitor.visit_set..s/!L!L%,,t"4"4!L!L!L!L!L!Lrr1r&s` r visit_setzAsStringVisitor.visit_sets1 !L!L!L!L$)!L!L!LLLLLrcd|jdfd|jDS)z(return an astroid.SetComp node as stringz {{{} {}}}rqc3BK|]}|VdSrr:r;s rr8z0AsStringVisitor.visit_setcomp..rrrr&s` r visit_setcompzAsStringVisitor.visit_setcompsQ!! HOOD ! !388+T+T+T+TDO+T+T+T#T#T   rc|jr|j|nd}|jr|j|nd}|jr|j|nd}|r |d|d|S|d|S)z&return an astroid.Slice node as stringr,r)lowerr#upperstep)rr'rTrUrVs r visit_slicezAsStringVisitor.visit_slices+/:= !!$'''2+/:= !!$'''2)-:ty%%%  -,,e,,d,, ,!!%!!!rc4|j}|jjdkr|j}||}|jjdkr|jr |dd}|||jd|dS)z*return an astroid.Subscript node as stringindextuplerrr-r0)slice __class__rrTr.r#r2rG)rr'idxidxstrs rvisit_subscriptzAsStringVisitor.visit_subscriptsj = ! ' ' ) )W 4 4)CD!! = ! ' ' ) )W 4 4 4AbD\F))$ ;;GGfGGGGrc:d||jg}|jD]*}|||+|jr0|d||jd|S)z*return an astroid.TryExcept node as stringtry: r r")r@rhandlersrr#rr>rr'tryshandlers rvisit_tryexceptzAsStringVisitor.visit_tryexcepts533556} . .G KKt,, - - - - ; B KK@$//$+">">@@ A A Ayyrcd||j||jS)z+return an astroid.TryFinally node as stringztry: {} finally: {})r-r@r finalbodyr&s rvisit_tryfinallyz AsStringVisitor.visit_tryfinallys;'.. OODI & &(G(G   rcd||jg}|jD]*}|||+|jr0|d||j|jr0|d||jd|S)z(return an astroid.TryStar node as stringrar z finally: r")r@rrbrr#rrhr>rcs r visit_trystarzAsStringVisitor.visit_trystars533556} . .G KKt,, - - - - ; B KK@$//$+">">@@ A A A > H KKFT__T^%D%DFF G G Gyyrct|jdkr$d|jddSddfd|jDdS)z&return an astroid.Tuple node as stringrrCrz, )rac3BK|]}|VdSrr:rs rr8z.AsStringVisitor.visit_tuple..r/rrD)rKr2r#r>r&s` r visit_tuplezAsStringVisitor.visit_tupleso ty>>Q  5ty|**400555 5J499GGGGTYGGGGGJJJJrcj|jdkrd}n|j}||||jS)z(return an astroid.UnaryOp node as stringnotznot )rsrGoperand)rr'operators r visit_unaryopzAsStringVisitor.visit_unaryops@ 7e  HHwHID33D$,GGIIIrcd|j|d||j}|jr|d||j}|S)z&return an astroid.While node as stringzwhile rr)rcr#r@rr)rr'whiless r visit_whilezAsStringVisitor.visit_whilesfQ$)**400QQT__TY5O5OQQ ; HGG)E)EGGF rcdfd|jD}d|d|jS)z%return an astroid.With node as stringrac3K|]:\}}||rd|pdzV;dS)rr,Nr:)r6rvrs rr8z-AsStringVisitor.visit_with..sl  a{{4  "a&C,C188D>>,C,C&Ir J      rzwith r)r>rr@r)rr'rs` rrSzAsStringVisitor.visit_withsd     :     >u==!;!;===rc|jrd|j|znd}d|z}|jjr|Sd|dS)z!yield an ast.Yield node as stringrqr,yieldrCrDr.r#r is_statementrr'yi_valrs r visit_yieldzAsStringVisitor.visit_yieldsR48JF# ))$////B ; # K4{{{rc|jrd|j|znd}d|z}|jjr|Sd|dS)z+Return an astroid.YieldFrom node as string.rqr,z yield fromrCrDr|r~s rvisit_yieldfromzAsStringVisitor.visit_yieldfrom(sR48JF# ))$////Bf$ ; # K4{{{rc<d|j|zS)zreturn Starred node as string*rNr&s r visit_starredzAsStringVisitor.visit_starred1sTZ&&t,,,,rr'rcrd|j|d||jS)z'Return an astroid.Match node as string.zmatch r)subjectr#r@casesr&s r visit_matchzAsStringVisitor.visit_match5s6S ++D11SSdoodj6Q6QSSSrr c|jrd|j|nd}d|j||d||jS)z+Return an astroid.MatchCase node as string.rr,zcase r)guardr#patternr@r)rr' guard_strs rvisit_matchcasezAsStringVisitor.visit_matchcase9st8< J44:,,T22444  ,DL''-- ,y , ,ty)) , , rrc6|j|S)z,Return an astroid.MatchValue node as string.rNr&s rvisit_matchvaluez AsStringVisitor.visit_matchvalueArrrc*t|jS)z0Return an astroid.MatchSingleton node as string.)rr.)r's rvisit_matchsingletonz$AsStringVisitor.visit_matchsingletonEs4:rrcj|jdSddfd|jDdS)z/Return an astroid.MatchSequence node as string.Nz[]r-rac3BK|]}|VdSrr:r6prs rr8z6AsStringVisitor.visit_matchsequence..Ns-CCQXXd^^CCCCCCrr0)patternsr>r&s` rvisit_matchsequencez#AsStringVisitor.visit_matchsequenceJsD = 4F499CCCCT]CCCCCFFFFrr c:g}|jr@|jr9|fdt|j|jD|jr0|d|jdd|dS)z.Return an astroid.MatchMapping node as string.c3xK|]4\}}|d|V5dS)rvNr:)r6rrrs rr8z5AsStringVisitor.visit_matchmapping..Ts_##C::d##77qxx~~77######rr{rrar)keysrrziprestrr#r>)rr'mapping_stringss` rvisit_matchmappingz"AsStringVisitor.visit_matchmappingPs%' 9    " "####!$)T];;###    9 B  " "#@ (8(8(>(>#@#@ A A A8tyy1183888rr c|jt|dg}|jr&|fd|jD|jrT|jrMt |j|jD]2\}}||d|3|jdd |dS)z,Return an astroid.MatchClass node as string.Nz does not have a 'cls' nodec3BK|]}|VdSrr:rs rr8z3AsStringVisitor.visit_matchclass..bs- G GA$ G G G G G Grr(rCrarD) clsAssertionErrorrr kwd_attrs kwd_patternsrrr#r>)rr' class_stringsattrrs` rvisit_matchclassz AsStringVisitor.visit_matchclass\s 8  D!E!E!EFF F#% = H  G G G G G G G G G G > Gd/ G!$T^T5F!G!G G G g$$%E%Ew~~d/C/C%E%EFFFF(//$''EE$))M*B*BEEEErrcNd|jr|j|ndS)z+Return an astroid.MatchStar node as string.r_)rgr#r&s rvisit_matchstarzAsStringVisitor.visit_matchstarhs,ATY?49##D)))CAAArr c"ddlm}m}m}t |j|||fr#|jr|j|ndS|jr|j|nd|jrd|j|ndS)z)Return an astroid.MatchAs node as string.r)r r rrrr,) astroid.nodes.node_classesr r rrrrgr#r)rr'r r rs r visit_matchaszAsStringVisitor.visit_matchasls WVVVVVVVVV dkM<#L M M @-1Y?49##D)))C ?,0LAt|""4(((c F26)C.di&&t,,... F F rr c|jt|ddfd|jDS)z)Return an astroid.MatchOr node as string.Nz does not have pattern nodesz | c3BK|]}|VdSrr:rs rr8z0AsStringVisitor.visit_matchor..}s-@@Q!((4..@@@@@@r)rrr>r&s` r visit_matchorzAsStringVisitor.visit_matchorysK =  D!F!F!FGG Gzz@@@@$-@@@@@@rc6|j|Srrr#r&s rvisit_frozensetzAsStringVisitor.visit_frozenset{!!$'''rc6|j|Srrr&s r visit_superzAsStringVisitor.visit_superrrc t|Srrr&s rvisit_uninferablez!AsStringVisitor.visit_uninferable4yyrc6|j|Sr)functionr#r&s rvisit_propertyzAsStringVisitor.visit_property}##D)))rc6|j|Sr)originalr#r&s rvisit_evaluatedobjectz%AsStringVisitor.visit_evaluatedobjectrrrc t|Srrr&s r visit_unknownzAsStringVisitor.visit_unknownrrN)r)rrr r)r)r*r r)T)r0r1rr2r r)rAr2r r)rAr2r r2)r r)r'rr r)r'r r r)r'rr r)r'rr r)r'rr r)r'r r r)r'r r r)r'rr r)r'r r r)r'r r r)r'rr r)`r __module__ __qualname____doc__rr(r/r@rGrErOrTrWrZr^rdrhrortrxr~rrrrrrrrrrrrrrrrrrrrrVrrrr rrrr]rr"r$r&r)r+r3r6r9r;r=r?rBrGrLrOrRrWr_rfrirkrnrsrvrSrrrrrr staticmethodrrrrrrrrrrrrrr5rrrr%sII"""""<<<<    IIIII"""""022220000////""""****2222 4444 QQQQEEEE++++----  0 0 0 0     GGGGAAAA     PPPP****NNNN::::((((    '''' 8 8 8 8    ,,,,0        &4444::::    ))))1111    66667777 !!!!KKKK    LLLL &&&& 3333    MMMM    """" H H H H       KKKK JJJJ>>>>----TTTT    ''''\GGGG 9 9 9 9 F F F FBBBB     AAAA((((((******rrr rcg}|D]7\}}|||d|"||8d|S)z5return a list of (name, asname) formatted as a stringNrra)rr>)r_namesrgasnames rrrsj F  f   MMT//v// 0 0 0 0 MM$     99V  rrNr)r __future__rcollections.abcrtypingrastroidr astroid.nodesrrrr r r r r rrrrrr%rrto_coder5rrrsR 21""""""$$$$$$ ######                            l l l l l l l l ^ /& ! !r